トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP/CALL TRANSACTION の変更点

Top/ABAP/CALL TRANSACTION

[[トランザクションコード>SAPのオブジェクト/トランザクションコード]]を呼び出す[[ABAP]]命令。

* 概要 [#nf42dce1]
[[SUBMIT>ABAP/SUBMIT]]と違い、[[トランザクションコード>SAPのオブジェクト/トランザクションコード]]で呼び出すのが特徴。

[[アドオン]]からの伝票照会や[[バッチインプット>SAPの拡張手段/バッチインプット]]によるSAPへのデータ登録/更新処理にも利用される。

なお、呼び出された側から呼び出し元へ処理を戻す場合は、[[LEAVE PROGRAM>ABAP/LEAVE PROGRAM]]命令を利用する。関連する命令[[LEAVE TO TRANSACTION>ABAP/LEAVE TO TRANSACTION]]も参照のこと。

** AND SKIP FIRST SCREEN [#p9981b60]
*** 用法 [#q16c5dec]
主に、その[[トランザクションコード>SAPのオブジェクト/トランザクションコード]]の第一画面をすっとばす場合に使用する。

じゃあ画面への入力項目はどうすんだ?って話になるが、それは後述のUSING (iTAB)オプションや[[SET PARAMETER>ABAP/SET PARAMETER]]命令を使ったりする。

*** サンプル [#scc704c3]
 CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

** USING (iTAB) [#c2e8788f]
*** 用法 [#f080f2c4]
画面の入力項目を[[iTAB>ABAP/内部テーブル]]で渡す場合に使用する。
レコードにはプログラム名、[[Dynpro番号>ABAP/Dynpro]]、項目名、設定する値が正しくセットされていなければならず、またその形式はBDCDATA型でなければならない。

*** サンプル [#p34bd2e3]
 DATA :
   L_IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA.
 ...
   CALL TRANSACTION 'XD01' USING L_BDCDATA.

** OPTIONS FROM (Option Structure) [#a7e1ec3a]
*** 用法 [#n7ca699f]
[[バッチインプット>SAPの拡張手段/バッチインプット]]のシステム制御を[[構造>SAPのオブジェクト/構造]]で指定可能となる。
詳細は後述のMOODEオプションに譲るとして一つ制約があり、Structureの型がCTU_PARAMSの必要がある。

なお、省略ないし指定しなかった場合は[[フォアグラウンド処理>SAPの共通用語/フォアグラウンド処理]]、[[非同期更新>SAPの構成/非同期更新]]、[[CATT>SAPの拡張手段/CATT]]プロシージャなし、[[COMMIT WORK>ABAP/COMMIT WORK]]で正常終了、[[バッチインプット>SAPの拡張手段/バッチインプット]]モード(SY-BINPT='X')となる。

*** サンプル [#ob5534d7]
 DATA :
   L_WA_CTU_PARAMS TYPE CTU_PARAMS.
 
 L_WA_CTU_PARAMS-DISMODE = 'E'.
 
 CALL TRANSACTION 'XK01' OPTION FROM L_WA_CTUPARAMS.

** MODE (Mode) [#kf06f19d]
*** 用法 [#d4c71184]
[[バッチインプット>SAPの拡張手段/バッチインプット]]のシステム制御が指定可能となり、ここでは画面への表示方法を司る。
設定する値の意味は下記の通り。これ以外の値を使用すると、確か[[ダンプる。>SAPの共通用語/ショートダンプ]]

-''A'' すべて画面表示。省略ないし指定しない場合はこれになる。
-''E'' エラーが起きた段階で画面が表示される。
-''N'' 何も表示されない。ブレークポイントが貼られていても止まらない。
-''P'' 何も表示されないが、ブレークポイントが貼られていたら止まる。

*** サンプル [#uf68c381]
 CALL TRANSACTION USING L_IT_BDCDATA
                   MODE 'N'.

時々、このようにベタ書き或いは定数の直接指定をしている輩がいるが、''絶対にやめて頂きたい。''((さらに厳しく言えば、技術者も辞めて頂きたい))

トラブル発生時にトレースするということを全く考えていないために、このような書き方ができてしまうのかと思うが、その想像力が無さは見ているこちらまで情けなくなってくる。

選択画面の隠しパラメータにしておくか(バリアントで隠す、或いはNO-DISPLAYでも可)、CALL TRANSACTIONの直前で

 デフォルトの照会モードをセット
 L_MODE = C_MODE_DEFAULT.
                   
 CALL TRANSACTION USING L_IT_BDCDATA
                   MODE L_MODE.

このように表現するか、とにかくどちらでも構わない。
勿論この命令に限らないが、モノ作りをする時は不具合発生時のトラブルシュートや仕様変更が行いやすいように書くことが肝要。((それは、移行用プログラムのような使い捨てであっても同様。))

新規開発をする際は、何の記述もないソースコードは真っ白なキャンバスのように感じられ、思うがままに書きたくなる。その気持ちはわかるが、プログラムは業務要件やシステム要件を表現するものであって、自慰行為の場ではない。

** UPDATE (Update process) [#od039a31]
*** 用法 [#tfbd9f15]
[[バッチインプット>SAPの拡張手段/バッチインプット]]のシステム制御が指定可能となり、ここではデータベースの更新方法を司る。
設定する値の意味は下記の通り。これ以外の値を使用すると、確か[[ダンプる。>SAPの共通用語/ショートダンプ]]

-A
[[非同期更新>SAPの構成/非同期更新]]。省略ないし指定しなかった場合はこれ。
-S
[[同期更新>SAPの構成/非同期更新#ga63c08c]]
-L
ローカル更新。・・・ってなんぞ?
*** サンプル [#fe5b0e92]
 CALL TRANSACTION USING L_IT_BDCDATA
                  UPDATE 'S'.

** MESSAGE INTO (iTAB) [#c2ea154e]
*** 用法 [#x86fbcae]
[[バッチインプット>SAPの拡張手段/バッチインプット]]の処理結果を受け取るオプションで、実際に画面でたたいた通りのメッセージが格納されることとなる。
ここで受け渡しに使う[[iTAB>ABAP/内部テーブル]]の型は、BDCMSGCOLLでなければならない。

実際には、処理後この[[iTAB>ABAP/内部テーブル]]からTYPE Eのものだけ拾ってログを吐いたりする。
*** サンプル [#pf2ba84b]
 CALL TRANSACTION USING L_IT_BDCDATA
                  MESSAGE INTO L_BDCMSGCOLL.

* その他 [#me2cc2f9]
** 権限チェックについて [#ie1c6d66]
ECC6の動作は不明だが、昔はこの命令から[[トランザクションコード>SAPのオブジェクト/トランザクションコード]]を呼び出すタイミングで[[権限チェック>権限管理]]が行われないという仕様があった。
そのため、[[権限オブジェクト>権限管理/権限オブジェクト]]S_TCODEに許可済みの値を設定することを条件に、この命令の前に[[AUTHORITY-CHECK>ABAP/AUTHORITY-CHECK]]命令や[[汎用モジュール>SAPのオブジェクト/汎用モジュール]]AUTHORITY_CHECK_TCODEによる事前チェックが必要であったとのこと。

** 例外について [#h2ca4bdf]
呼び出した[[トランザクションコード>SAPのオブジェクト/トランザクションコード]]が[[分野メニュー>SAPのオブジェクト/分野メニュー]]の場合はCALL_TRANSACTION_IS_MENU、ロックされている場合はCALL_TRANSACTION_LOCKED、存在しない場合はCALL_TRANSACTION_NOT_FOUND、再帰的な使い方をした場合はCALL_TRANSACTION_USING_NESTEDとなる。

** 関連する命令 [#j03e6758]
その他CALL系の命令には、[[CALL DIALOG>ABAP/ABAP/CALL DIALOG]]、[[CALL SELECTION-SCREEN>ABAP/CALL SELECTION-SCREEN]]、[[CALL SUBSCREEN>ABAP/CALL SUBSCREEN]]、[[CALL FUNCTION>ABAP/CALL FUNCTION]]、[[CALL METHOD>ABAP/CALL METHOD]]、[[CALL SCREEN>ABAP/CALL SCREEN]]、[[CALL TRANSACTION>ABAP/CALL TRANSACTION]]などがある。
その他CALL系の命令には、[[CALL DIALOG>ABAP/CALL DIALOG]]、[[CALL SELECTION-SCREEN>ABAP/CALL SELECTION-SCREEN]]、[[CALL SUBSCREEN>ABAP/CALL SUBSCREEN]]、[[CALL FUNCTION>ABAP/CALL FUNCTION]]、[[CALL METHOD>ABAP/CALL METHOD]]、[[CALL SCREEN>ABAP/CALL SCREEN]]、[[CALL TRANSACTION>ABAP/CALL TRANSACTION]]などがある。


~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)