概要
表示されたALVをダブルクリックしたときに別の画面に切り替わる方法を説明します。
以下のサンプルのように、標準トランザクションに移行したり、別のALVを表示したりすることができます。
今回は一部抜粋を記載していますので、ALVの作成を確認したい方はこちらをご覧ください。
今回は一部抜粋を記載していますので、ALVの作成を確認したい方はこちらをご覧ください。
サンプルコード
FORM call_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
CASE ucomm.
* Double Click
WHEN '&IC1'.
READ TABLE it_data INTO wa_data
INDEX selfield-tabindex.
IF selfield-fieldname = 'BANFN'.
SET PARAMETER ID 'BAN' FIELD wa_data-banfn.
CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.
ELSEIF selfield-fieldname = 'EBELN'.
SET PARAMETER ID 'BES' FIELD wa_data-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM.
説明
汎用モジュール:REUSE_ALV_GRID_DISPLAYを使用する場合は、i_callback_programおよびi_callback_user_commandを設定しましょう。
一般的なALVレポートの場合は、i_callback_programに独自のプログラム名を指定し、i_callback_user_commandに実行するFORM名を指定します。
この例では、FORM:USER_COMMANDは、ALVがダブルクリックされたときに実行されます。 ucomm引数をチェックし、「&IC1」の場合のみ(ダブルクリック)プロセスを実行します。
フォーム:USER_COMMANDはシングルクリックでは実行されませんでしたが、念のためチェックすることをお勧めします。
次に、selfield-tabindexには選択された行番号が含まれるため、その値を使用して、ALVに渡した内部テーブルから値を取得します。
※ソートやフィルタリングを行っても、INDEXをチェックするだけで問題ありません。
※ソートやフィルタリングを行っても、INDEXをチェックするだけで問題ありません。
選択した列名はselfield-fieldnameに入力されますので、選択した列に応じて処理を変更したい場合はチェックしてください。
最近のコメント