Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Updating only Changed Fields in Db table from table control

Former Member
0 Likes
1,583

Hi

I have an table control displayed on module pool screen, and an Internal table which holds table control's

data.

When a person changes anything in table control, after pressing Save button only

the "CHANGED/EDITED FIELDS" should get updated in my Z table.

Which will ensure good performance (i.e system doesn't have to overwrite UNCHANGED FIELDS as well

in Z table)

How can I achive this ? Please provide sample code.

Regards

Tulip

Hi

I have an table control displayed on module pool screen, and an Internal table which holds table control's

data.

When a person changes anything in table control, after pressing Save button only

the "CHANGED/EDITED FIELDS" should get updated in my Z table.

Which will ensure good performance (i.e system doesn't have to overwrite UNCHANGED FIELDS as well

in Z table)

How can I achive this ? Please provide sample code.

Regards

Tulip

3 REPLIES 3
Read only

former_member242255
Active Contributor
0 Likes
951

i think you cannot write the updation of the Ztable fields in a single row for only some fields,you have to write for updating the whole row.

For an internal table you can write by using TRANSPORTING..

Read only

Former Member
0 Likes
951

Hi Tulip,

By default bring all the Data's in the table control in display mode,

have a button called EDIT in PF-status whenever you wants to change anything , cselect the rows and click edit button and after editing the by pressing save button you can update to the DB table,

check below code,

&----


*& Module DISABLE_ENABLE_FIELDS_100 OUTPUT

&----


  • To enable and diable fields n Edit click

----


MODULE disable_enable_fields_100 OUTPUT.

DATA : v_line_sel TYPE i,

v_dummy,

v_line_no(6) VALUE 'LINENO'.

CHECK ok_code = 'EDIT'.

*GET CURSOR FIELD V_LINE_NO LINE v_line_sel.

IF x_assignment-lineno = 'X'.

LOOP AT SCREEN .

IF screen-name = 'X_ASSIGNMENT-EMPLOYEE_ID' OR

screen-name = 'X_ASSIGNMENT-ACTIVITY' OR

screen-name = 'X_ASSIGNMENT-MATERIAL' OR

screen-name = 'X_ASSIGNMENT-ADATE'.

screen-input = 1.

MODIFY SCREEN.

CLEAR x_assignment-lineno .

MODIFY t_assignment FROM x_assignment INDEX tablecontrol-current_line TRANSPORTING lineno.

CLEAR v_line_sel.

ENDIF.

ENDLOOP.

ENDIF.

ENDMODULE.

Read only

Former Member
0 Likes
951

Hi,

You can check out the link:

https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/abap/abap-code-sam...

Refer the sample code:

LOOP AT itab INTO demo_conn WHERE mark = 'X'.

insert into table from itab.

ENDLOOP.

REPORT demo_dynpro_tabcont_loop_at.

CONTROLS flights TYPE TABLEVIEW USING SCREEN 100.

DATA cols LIKE LINE OF flights-cols.

DATA: ok_code TYPE sy-ucomm,

save_ok TYPE sy-ucomm.

DATA: itab TYPE TABLE OF demo_conn.

TABLES demo_conn.

SELECT * FROM spfli INTO TABLE itab.

LOOP AT flights-cols INTO cols WHERE index GT 2.

cols-screen-input = '0'.

MODIFY flights-cols FROM cols INDEX sy-tabix.

ENDLOOP.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.

SET PF-STATUS 'SCREEN_100'.

ENDMODULE.

MODULE cancel INPUT.

LEAVE PROGRAM.

ENDMODULE.

MODULE read_table_control INPUT.

MODIFY itab FROM demo_conn INDEX flights-current_line.

ENDMODULE.

MODULE user_command_0100 INPUT.

save_ok = ok_code.

CLEAR ok_code.

CASE save_ok.

WHEN 'TOGGLE'.

LOOP AT flights-cols INTO cols WHERE index GT 2.

IF cols-screen-input = '0'.

cols-screen-input = '1'.

ELSEIF cols-screen-input = '1'.

cols-screen-input = '0'.

ENDIF.

MODIFY flights-cols FROM cols INDEX sy-tabix.

ENDLOOP.

WHEN 'SORT_UP'.

READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.

IF sy-subrc = 0.

SORT itab STABLE BY (cols-screen-name+10) ASCENDING.

cols-selected = ' '.

MODIFY flights-cols FROM cols INDEX sy-tabix.

ENDIF.

WHEN 'SORT_DOWN'.

READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.

IF sy-subrc = 0.

SORT itab STABLE BY (cols-screen-name+10) DESCENDING.

cols-selected = ' '.

MODIFY flights-cols FROM cols INDEX sy-tabix.

ENDIF.

WHEN 'DELETE'.

READ TABLE flights-cols INTO cols WITH KEY screen-input = '1'.

IF sy-subrc = 0.

LOOP AT itab INTO demo_conn WHERE mark = 'X'.

DELETE itab.

ENDLOOP.

ENDIF.

WHEN 'INSERT'.

READ TABLE flights-cols INTO cols WITH KEY screen-input = '1'.

IF sy-subrc = 0.

LOOP AT itab INTO demo_conn WHERE mark = 'X'.

itab1 = itab.

modify itab1.

ENDLOOP.

ENDIF.

if not itab1 is initial.

INSERT dbtab FROM TABLE itab1.

endif.

ENDCASE.

ENDMODULE.

Hope it helps

Sumana