Abap 未从表控件修改内部表

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.

我有一个表控件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.
        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都没有更改。