2017-07-06 10 views
0

テーブルコントロール(ctrl)と内部テーブル(snctab)があります。 テーブルコントロールからsnctabという項目を追加します。私は追加できますが、snctabのレコードを変更することはできません。ここに私のPBOおよびPAIモジュールです: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 
+0

項目が 'scntab'と' ctrl'の両方にある場合、 'ctrl'の内容はあなたのコードで更新されていませんか?しかし、レコードが 'ctrl'に存在しなければ、' ctrl'にレコードが正常に追加されますか? – gkubed

+0

実際の問題は、アイテムがscntabとctrlの両方にあるときです。私は画面上のこのレコードのいくつかのフィールドを変更していますが、背景にはsnctabとctrlのどちらも変更されていません。 –

答えて

1

このような更新モジュールを更新し、問題を解決しました。

MODULE update INPUT. "my update module 
    MODIFY snctab INDEX ctrl-current_line. 
    IF sy-subrc <> 0. 
     APPEND snctab. 
    ENDIF. 
ENDMODULE. 
0

あなたLOOP文は、アカウントにテーブルコントロールを取りません - あなたはそこにステップループを処理するために使用された時代遅れのバリアントを使用しています。あなたのシステムのデモプログラムDEMO_DYNPRO_TABCONT_LOOPをチェックして、実際の例を見てください。

関連する問題