SAP Knowledge Wiki
ABAP/CALL TRANSACTION
の編集
Top
/
ABAP
/
CALL TRANSACTION
-- 雛形とするページ --
(no template pages)
[[トランザクションコード>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/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)
タイムスタンプを変更しない
[[トランザクションコード>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/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)
テキスト整形のルールを表示する