In my dynpro, I have a table controller, named TC300
, that is showing data from my database table zma_kostl
. When I change some data in the table controller, the data will be modified even in the database table. This is true when I change the data to some other random data. But when I change the data in a cell to a blank value, the change is not propagated to a database table.
Do you have any idea why?? I think there is error somewhere in module save_data
. Do you have any ideas, how to improve the code?
Here is my code:
Top Include:
FUNCTION-POOL zma_ic_screen.
TABLES zma_kostl.
CONTROLS TC300 TYPE TABLEVIEW USING SCREEN 300.
DATA: cols LIKE LINE OF TC300-cols.
DATA it_zma_kostl TYPE TABLE OF zma_kostl.
Dynpro 300:
PROCESS BEFORE OUTPUT.
MODULE data_retrieval.
LOOP AT it_zma_kostl INTO zma_kostl WITH CONTROL TC300.
ENDLOOP.
MODULE SET_LINES.
PROCESS AFTER INPUT.
LOOP AT it_zma_kostl.
MODULE read_table_control_300.
ENDLOOP.
MODULE SAVE_DATA.
Modules:
MODULE data_retrieval OUTPUT.
IF it_zma_kostl IS INITIAL.
SELECT kostl
FROM zma_kostl
INTO CORRESPONDING FIELDS OF TABLE it_zma_kostl.
ENDIF.
ENDMODULE.
MODULE read_table_control_300 INPUT.
MODIFY it_zma_kostl FROM zma_kostl INDEX tc300-current_line.
ENDMODULE.
MODULE save_data INPUT.
MODIFY zma_kostl FROM TABLE it_zma_kostl.
ENDMODULE.
MODULE set_lines OUTPUT.
DATA VLINES TYPE I.
DESCRIBE TABLE it_zma_kostl LINES VLINES.
TC300-LINES = VLINES + 1.
DESCRIBE TABLE it_zma_work_section LINES VLINES.
TC400-LINES = VLINES + 1.
ENDMODULE.