[[トランザクションコード>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)