ABAPのバッチインプット(BDC)で失敗しないための確認点

バッチインプット(BDC)は、SAP GUIの画面へ入力する操作をABAPから再現する方法です。既存トランザクションを使った登録・変更に利用できますが、画面の項目や遷移が変わると動かなくなることがあります。新規開発では、利用可能なBAPIや公開APIを先に確認し、画面操作が必要な場合にBDCを検討します。

主な二つの方式

方式 特徴 確認先
CALL
TRANSACTION
USING
プログラムから対象Tコードを呼び出し、その場で結果を受け取る 戻り値、メッセージ表、登録された伝票
セッション方式 入力データをセッションに蓄え、後で処理する SM35の処理結果・ログ

実装前の確認

  1. 対象トランザクションを手作業で一件登録し、必須項目と画面遷移を確認します。
  2. SHDBなどで操作を記録し、画面プログラム、画面番号、項目名、OKコードを確認します。
  3. BDCDATAを伝票ごとに初期化して組み立て、テストデータを使って前面表示で確認します。
  4. エラー・警告・成功メッセージを保存し、伝票番号や登録結果を実データで検証します。

CALL TRANSACTIONの例

DATA lt_bdc TYPE TABLE OF bdcdata.
DATA lt_msg TYPE TABLE OF bdcmsgcoll.
DATA ls_opt TYPE ctu_params.

" lt_bdc に画面開始行と項目値を設定する
ls_opt-dismode = 'E'.  " エラー時に画面を表示
ls_opt-updmode = 'S'.  " 同期更新
CALL TRANSACTION '対象Tコード'
  USING lt_bdc
  OPTIONS FROM ls_opt
  MESSAGES INTO lt_msg.
IF sy-subrc <> 0.
  " lt_msg を記録し、対象伝票の登録結果も確認する
ENDIF.

表示モードはA(全画面)、E(エラー時)、N(非表示)を状況に応じて選びます。ジョブで実行する場合は対話画面を前提にせず、エラーをログに残して再処理可能にします。成功メッセージだけで完了とみなさず、実際に作成された伝票と更新結果を確認してください。

壊れやすいポイント

  • GUI画面の変更、ユーザー設定、言語、ポップアップの有無で記録時と遷移が異なる。
  • 明細行数やスクロール位置が変わり、画面上の項目位置がずれる。
  • 再実行時に二重登録する。入力データに一意キーを付け、処理済み判定を設ける。
  • 権限不足やロック競合を、単なる入力エラーとして扱ってしまう。

参考・関連記事

関連記事

PAGE TOP