‎2006 Dec 15 6:36 AM
hi ABAPers,
i have a problem while updating the database table using table control,
please,check the code
Code in Top Include:
Tables: MARA,
MAKT.
DATA: BEGIN OF ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
SPRAS LIKE MAKT-SPRAS,
MAKTX LIKE MAKT-MAKTX,
END OF ITAB.
*data:ok_code(20).
CONTROLS TC1 TYPE TABLEVIEW USING SCREEN 2000.
*
*DATA: cols LIKE LINE OF TC1-cols,
lines TYPE i.
Screen_1000:Code in PAI
module USER_COMMAND_1000 input.
CASE SY-UCOMM.
WHEN 'DISPLAY'.
SELECT SPRAS MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE MATNR = MARA-MATNR.
IF SY-DBCNT IS INITIAL.
MESSAGE I127(ZKC_MSGCLS).
ELSE.
SET SCREEN 2000.
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
SET SCREEN 0.
ENDCASE.
endmodule. " USER_COMMAND_1000 INPUT
Screen_2000 PAI Code
module USER_COMMAND_2000 input.
CASE SY-UCOMM.
WHEN 'UPDATE'.
LOOP AT TC1-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 TC1-cols FROM cols INDEX sy-tabix.
ENDLOOP.
WHEN 'EXIT'.
LEAVE PROGRAM.
SET SCREEN 0.
WHEN 'BACK'.
SET SCREEN 1000.
ENDCASE.
endmodule. " USER_COMMAND_2000 INPUT
Screen_2000 Code outside PBO
LOOP AT itab WITH CONTROL TC1 CURSOR TC1-TOP_LINE.
MODULE ctrl_pai.
ENDLOOP.
Screen_2000 Code outside PAI
LOOP AT itab.
ENDLOOP.
regards,
vinod
‎2006 Dec 15 6:47 AM
Hi,
i am sending you one code,just refer that and change your modify statement.
REPORT demo_dynpro_tabcont_loop_at.
CONTROLS flights TYPE TABLEVIEW USING SCREEN 100.
DATA: cols LIKE LINE OF flights-cols,
lines TYPE i.
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 CORRESPONDING FIELDS OF 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'.
DESCRIBE TABLE itab LINES lines.
flights-lines = lines.
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.
ENDCASE.
ENDMODULE.<b>
flow logic:</b>
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
LOOP AT ITAB INTO DEMO_CONN WITH CONTROL FLIGHTS.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
LOOP AT ITAB.
module read_table_control.
ENDLOOP.
module user_command_0100.Regards,
pankaj singh
<b>
reward if helpful</b>