を使用して機器番号のリストを出力するプログラムを作成しましたWRITE
。このトランザクションIE03
により、ユーザーは機器番号を入力して実行し、その機器に関する一連の情報を表示できます。
私がやりたいことは、プログラムが出力する数値の 1 つをダブルクリックして、提供するデータ表示を表示できるようにIE03
することです。
カスタム プログラムを標準表示機能と統合するにはどうすればよいですか?
まず第一に、WRITE
リストの作成には使用しないでください。これは石器時代の技術です。ディクショナリ構造に基づいて内部テーブルにデータを格納し、SALV ライブラリを使用してリストを作成します。サンプル プログラムSALV_DEMO_TABLE_EVENTS
を見て、リストを表示し、ダブルクリックに反応する方法を確認してください。デモ プログラムは非常に多くの異なる機能を示しているため、その多くを捨てることができることに注意してください。
次に、トランザクションに何も「転送」しません。ABAP ステートメントを使用してトランザクションを呼び出すことができますCALL TRANSACTION
(これは明らかです)。また、SPA/GPA パラメーターと追加の複雑な組み合わせを使用して値を渡すこともできます... AND SKIP FIRST SCREEN
。これは、特定の種類のトランザクションに対してのみ機能し、そのようにプログラムされている場合にのみ機能することに注意してください。このためには、次を使用して機器番号をグローバル変数に格納する必要があります。
SET PARAMETER ID 'EQN' FIELD l_my_equipment_number.
次に、トランザクションを呼び出します
CALL TRANSACTION 'IE03' AND SKIP FIRST SCREEN.
このステートメントはデフォルトの権限チェックを実行しないことに注意してください。必要な場合はAUTHORITY_CHECK_TCODE
、キーワード文書で指定されている汎用モジュールを使用してください。
vwegertに与えられたアドバイスを使用するか、次のようにします。
REPORT ztest. 定数: gc_equpment_view_tcode タイプ sytcode 値 'IE03'。 データ: gt_eqkt eqkt のタイプ テーブル、 gs_eqkt TYPE eqkt。 選択開始。 eqkt からテーブル gt_eqkt の対応するフィールドに * を選択します JOIN equi ON ( equi~equnr EQ eqkt~equnr ) 最大 10 行 WHERE eqkt~spras EQ sy-langu. 選択の終わり。 gt_eqkt を gs_eqkt にループします。 WRITE: / gs_eqkt-equnr, gs_eqkt-eqktx. 非表示: gs_eqkt-equnr. エンドループ。 AT LINE-SELECTION。 CALL FUNCTION 'AUTHORITY_CHECK_TCODE' " S_TCODE認証オブジェクトをチェック エクスポート tcode = gc_equpment_view_tcode 例外 わかりました= 1 not_ok = 2 その他 = 3。 IF sy-subrc EQ 1. パラメータ ID 'EQN' フィールド gs_eqkt-equnr を設定します。 "I_TCODE 認証オブジェクトを確認します (IE03 定義を参照) トランザクション gc_equpment_view_tcode を呼び出し、最初の画面をスキップします。 ENDIF。