Abap 未从表控件修改内部表
我有一个表控件ctrl和一个内部表snctab。 我想从表控件添加项snctab。我可以添加但不能修改snctab中的记录。以下是我的PBO和PAI模块:Abap 未从表控件修改内部表,abap,dynpro,Abap,Dynpro,我有一个表控件ctrl和一个内部表snctab。 我想从表控件添加项snctab。我可以添加但不能修改snctab中的记录。以下是我的PBO和PAI模块: PROCESS BEFORE OUTPUT. MODULE status_0100. LOOP AT snctab WITH CONTROL ctrl CURSOR ctrl-current_line. ENDLOOP. PROCESS AFTER INPUT. LOOP AT snctab.
PROCESS BEFORE OUTPUT.
MODULE status_0100.
LOOP AT snctab WITH CONTROL ctrl CURSOR ctrl-current_line.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT snctab.
MODULE update.
ENDLOOP.
MODULE user_command_0100.
MODULE update INPUT. "my update module
READ TABLE snctab INDEX ctrl-current_line.
IF sy-subrc <> 0.
APPEND snctab.
ELSE.
MODIFY snctab INDEX ctrl-current_line.
ENDIF.
ENDMODULE. " UPDATE INPUT
PAI模块中的LOOP语句没有考虑表控件-您使用的是一个过时的变量,用于处理那里的step循环。检查系统中的演示程序demo\u DYNPRO\u TABCONT\u循环以查看工作示例。我像这样更新了更新模块并解决了问题
MODULE update INPUT. "my update module
MODIFY snctab INDEX ctrl-current_line.
IF sy-subrc <> 0.
APPEND snctab.
ENDIF.
ENDMODULE.
只是澄清一下,当一个项目同时在scntab和ctrl中时,ctrl的内容在代码中没有被更新?但如果该记录在ctrl中不存在,它将成功地添加到ctrl?实际问题是,当一个项目同时在scntab和ctrl中时,我在屏幕上更改该记录的一些字段,但在后台snctab和ctrl都没有更改。