SAP ABAP BDC:バッチデータ通信とは?

⚡ スマートサマリー

SAP ABAP BDC(バッチデータ通信)は、標準トランザクションを自動的に実行することで、既存データをR/3に転送します。このページでは、バッチ入力セッション、従来のトランザクション方式とコールトランザクション方式、BDCDATA構造、BDC_OPEN_GROUPワークフロー、およびバッチ入力レコーダーについて説明します。

  • 🔄 主な目的: BDCは、ユーザーが行うのと同様に、すべての画面とビジネス検証を実行し、データセットをトランザクションの画面に自動的に供給します。
  • 🧾 バッチ入力セッション: セッションは、トランザクション呼び出しとその入力データをグループ化し、実行されるまでデータベースに保存されます。
  • 🛠️ 2つの方法: 従来のバッチ入力では BDC_OPEN_GROUP、BDC_INSERT、および BDC_CLOSE_GROUP を使用しますが、トランザクション呼び出し方式では CALL TRANSACTION USING を使用します。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ 方法の選択: 従来のバッチ入力はログと同期して行われますが、トランザクション呼び出しはより高速で非同期であり、単一のトランザクションを処理します。
  • 🗂️ BDCDATA構造: PROGRAM、DYNPRO、DYNBEGIN、FNAM、およびFVALの各フィールドは、各ステップの画面、フィールド、および値を記述します。
  • ⏺️ レコーダー: バッチ入力レコーダーは、手動トランザクションをキャプチャし、後でSM35で実行されるセッションまたは既製のBDCプログラムを生成します。

SAP ABAP BDC バッチデータ通信

バッチインプットの概要

バッチ入力は通常、非 R/3 システムから R/3 システムにデータを転送する場合、または R/3 システム間でデータを転送する場合に使用されます。

これは、データセットをトランザクションに属する画面に自動的に転送し、 SAP システム。バッチ入力はバッチ入力セッションによって制御されます。

バッチインプットセッション

一連のトランザクション呼び出しを入力データおよびユーザーアクションとともにグループ化します。 バッチ入力セッションを使用すると、バッチ入力でダイアログ トランザクションを実行でき、一部またはすべての画面がセッションによって処理されます。 バッチインプットセッションはデータベーステーブルとしてデータベースに保存され、トランザクションにアクセスするときにプログラム内で内部テーブルとして使用できます。

注意点

  • BDIは通常の SAP ユーザーと同じようにトランザクションを実行しますが、トランザクションは自動的に実行されます。すべての画面検証とビジネス ロジック検証は、バッチ データ入力を使用しながら実行されます。
  • 大量のデータを入力する場合に適しています。
  • 手動操作は必要ありません

一括入力の方法

SAP レガシー データを R/3 システムに転送するための XNUMX つの基本的な方法を提供します。

  1. 古典的なバッチ入力方式。
  2. トランザクションメソッドを呼び出します。

従来のバッチインプット方式

この方法では、ABAP/4プログラムは外部データを SAP システムとバッチ入力セッションで保存します。

セッションを作成したら、セッションを実行して SAP その中で取引を行います。

このメソッドでは、汎用モジュール BDC_OPEN、BDC_INSERT、および BDC_CLOSE を使用します。

バッチインプットセッションは3つの方法で処理できます

  1. 前景に
  2. バックグラウンドで
  3. 処理中、エラー表示あり

データ転送をテストする場合は、バッチ入力セッションをフォアグラウンドで処理するか、エラー表示を使用して処理する必要があります。

データ転送を実行したり、そのパフォーマンスをテストしたりする場合は、バックグラウンドでセッションを処理する必要があります。

従来のバッチインプット方式の注意点

  • Sync異常な処理
  • 複数のトランザクションのデータを転送します。
  • Syncデータベースの頻繁な更新。
  • バッチ入力処理ログはセッションごとに生成されます。
  • セッションを並行して生成することはできません。

トランザクションメソッドを呼び出します。

この方法では ABAP/4プログラムはCALL TRANSACTION USING文を使用して SAP トランザクション。

バッチ入力プロセス全体がプログラム内でオンラインで実行されます

Call Transaction メソッド

注意点:

  • データ処理の高速化
  • 非同期処理
  • 単一トランザクションのデータを転送します。
  • バッチインプット処理ログは生成されません。

従来のバッチ入力とトランザクション呼び出しの比較

どちらの方法も同じトランザクションに到達しますが、処理速度、ログ記録、エラー処理の点で異なります。以下の表は、それぞれの方法が適切な場合を示しています。

基準 従来のバッチ入力 コールトランザクション
技術 BDC_OPEN_GROUP、BDC_INSERT、BDC_CLOSE_GROUP トランザクション呼び出し
処理 Sync不気味な、SM35から後で実行 オンラインでプログラムを実行
取引 1回のセッションで多数のトランザクションを実行 1回の呼び出しにつき1つのトランザクション
歳入録 セッションごとにプロセスログが自動的に生成されます。 ログなし、プログラムはメッセージを収集します
速度 速度は遅いが、堅牢で再起動可能 速く
ベスト 監査可能な大規模な一度限りのレガシーデータ 対話型または高速な文書転送

比較した手法を踏まえ、次のセクションではプロジェクトが従う全体的な手順を説明します。

一括入力手順

一括入力手順

組織用のバッチ入力を開発するには、通常、次の手順に従います。

  1. レガシーデータの分析。転送するデータを、 SAP 構造。必要なデータ型またはデータ長の変換にも注意してください。
  2. 生成する SAP エクスポート プログラムで使用するデータ構造。
  3. データをシーケンシャルファイルにエクスポートします。文字形式は定義済みフォーマットで要求されることに注意してください。 SAP バッチ入力プログラム。
  4. Status SAP 付属の BDC プログラムを使用しない場合は、独自のバッチ入力プログラムをコーディングしてください。状況に応じて適切なバッチ入力方法を選択してください。
  5. データを処理して、 SAP システム.
  6. プロセスログを分析します。 CALL TRANSACTION メソッドの場合、適切なログが作成されないため、プログラムによって収集されたメッセージを使用します。
  7. プロセス分析の結果から、誤ったデータを修正して再処理します。

BDCプログラムの作成

BDCプログラムを書くには、次のプロセスに従う必要があります。

  1. トランザクションを分析してバッチ入力データを処理します。
  2. 使用するバッチ入力方法を決定します。
  3. シーケンシャルファイルからデータを読み取る
  4. データ変換やエラーチェックを行います。
  5. データをバッチ入力構造体BDCDATAに格納します。
  6. 従来のバッチ入力のバッチ入力セッションを生成するか、CALL TRANSACTION USING ステートメントを使用してデータを直接処理します。

バッチ入力データ構造

一括入力データ構造の宣言

DATA : BEGIN OF < bdc table>

OCCURS <occurs parameters>.

INCLUDE STRUCTURE BDCDATA.

DATA:END OF <bdc table>.
フィールド名 タイプ 長さ 詳細説明
プログラム CHAR 8 モジュールプール
ダインプロ NUMC 4 ダイプロ番号
ディンベギン CHAR 1 ダイプロを始める
FNAM CHAR 35 フィールド名
FVAL CHAR 80 フィールド値

特定の画面のデータ内のフィールドの順序は重要ではありません。

注意すべき点

  • BDCデータを入力する際は、ユーザー設定を必ず考慮してください。これは特に、数量や金額などの数値を含むフィールドに入力する場合に重要です。グループ分けはユーザー設定によって決まります。ping 数字を表す文字 例: 50,000 という数字は、ユーザー設定に基づいて 50,000.00 または 50.000,00 と表記できます。
  • 金額フィールドと数量フィールドの FVAL フィールドを圧縮して、左揃えにします。
  • BDC データ テーブルにデータを入力するときは、BDC を通じて入力するすべてのフィールドを文字タイプのフィールドとして扱う必要があることに注意してください。
  • 一部の画面では、BDC を使用してテーブル コントロールに値を入力するときに、画面のデフォルト サイズに存在する行数に注意し、同じ数の行をコードする必要があります。 さらに多くの行を入力する必要がある場合は、テーブル コントロールに手動で入力する場合と同様に、「ページダウン」機能をコーディングする必要があります。
  • 上記のシナリオで表示される行数は、ユーザーが使用する画面サイズによって異なります。 そのため、常に標準の画面サイズに合わせてコーディングし、ユーザーが維持する画面サイズに関係なく、BDC が常に標準の画面サイズで動作するようにします。

バッチインプットセッションの作成

  1. 汎用モジュール BDC_OPEN_GROUP を使用してバッチインプットセッションセッションを開きます。
  2. セッション内の各トランザクションについて:
  3. BDCDATA に、トランザクションで処理されるすべての画面とフィールドの値を入力します。
  4. BDC_INSERT を使用してトランザクションをセッションに転送します。
  5. BDC_CLOSE_GROUP を使用してバッチ入力セッションを閉じます。

例:コールトランザクションを使用したBDC

以下のプログラムは、トランザクション呼び出しメソッドの最初から最後までを示しています。トランザクションの2つの画面に対応するBDCDATAテーブルを作成し、エラーテーブルを使用してモードN(表示なし)で実行することで、エラーを報告できるようにします。

REPORT z_bdc_call_transaction.

DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata,
      ls_bdcdata TYPE bdcdata,
      lt_messages TYPE STANDARD TABLE OF bdcmsgcoll.

* Helper that appends one BDCDATA line
FORM bdc_field USING p_fnam p_fval.
  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = p_fnam.
  ls_bdcdata-fval = p_fval.
  APPEND ls_bdcdata TO lt_bdcdata.
ENDFORM.

* Screen 1: start the dynpro, then fill the fields
CLEAR ls_bdcdata.
ls_bdcdata-program  = 'SAPMV45A'.
ls_bdcdata-dynpro   = '0101'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.

PERFORM bdc_field USING 'VBAK-AUART' 'OR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

* Run the transaction: mode N = no display, update S = synchronous
CALL TRANSACTION 'VA01'
  USING         lt_bdcdata
  MODE          'N'
  UPDATE        'S'
  MESSAGES INTO lt_messages.

IF sy-subrc <> 0.
  * Read lt_messages to report the errors that occurred
ENDIF.

💡ヒント: MODEパラメータは表示を制御します。Aはすべての画面を表示し、Eはエラー発生時のみ停止し、Nはサイレントモードで動作します。テスト時にはEを、本番環境ではNを使用してください。

バッチインプットレコーダー

バッチ入力レコーダー (システム > サービス > バッチ入力 > レコーダー) は、手動で入力されたトランザクションを記録し、後で SM35 を使用して実行できるバッチ入力セッションを作成します。

バッチインプットレコーダー

  • バッチインプット第一画面から記録押ボタンを選択して、バッチインプットレコーダーを開始します。
  • 記録名はユーザー定義の名前で、記録から作成できるバッチ入力セッション名と一致します。
  • 入力します SAP 取引を開始し、取引の投稿を開始します。
  • 投稿が完了したら SAP トランザクションの場合は、「トランザクションを取得して保存」を選択して記録を終了するか、「次のトランザクション」を選択して別のトランザクションを投稿します。
  • 記録を保存したら、記録からバッチインプットセッションを作成したり、記録からバッチインプットプログラムを生成したりできます。
  • 作成したバッチインプットセッションは、他のバッチインプットセッションと同様に分析できるようになりました。
  • バッチインプットレコーダの機能によって生成されるプログラムは、データインターフェースプログラマにとって強力なツールです。 顧客の要件に応じて変更できる強固なベースを提供します。

⚠️ 警告: 録画機能は画面のシーケンスを発生どおりに正確に記録するため、入力漏れポップアップなど、特定のデータでのみ表示される画面は記録されません。生成されたプログラムは、必ずすべてのオプション画面が表示されるデータを使用してテストしてください。

よくあるご質問

BDC_OKCODEには、ユーザーがボタンやキーで実行する機能コードが格納されます。例えば、Enterキーの場合は/00、保存キーの場合は=SAVEなどです。このコードは、入力フィールドに入力された後に画面が実行するアクションを指示します。

SM35はバッチ入力モニタです。従来のバッチ入力によって作成されたセッションを一覧表示し、フォアグラウンドまたはバックグラウンドで実行し、失敗したトランザクションを分析して再処理できるようにプロセスログを表示します。

BDC は、トランザクションの画面検証を再利用するため、BAPI が存在しない場合でも引き続き使用されます。LSMW は、BDC、レコーディング、および BAPI を 1 つの移行ツールにラップし、 BAPI 安定したAPIが利用可能な場合は、こちらの方が望ましい。

はい。ABAP開発ツールのAIアシスタントは、録画データまたは画面リストを基に、BDCDATAへのデータ投入、CALL TRANSACTIONブロック、およびメッセージ処理を自動生成します。開発者はソースファイルをマッピングし、ロードテストを実行します。

AIツールは、既存ファイルのプロファイリングを行い、ロード前に必須フィールドの欠落やフォーマットの不一致を検出し、その後バッチ入力ログを要約することで、エラーのあるレコードをより迅速に修正および再処理できるようにします。