動的トランザクションを使用したビジネス・オブジェクトの開発

動的トランザクション機能モジュールは、マッピング・ツールおよび動的コード生成プログラムです。これは、SAP の呼び出しトランザクション API を使用して、SAP アプリケーションにデータを渡します。また、バッチ・データ通信 (BDC) セッションの静的定義を、オブジェクトと動詞の組み合わせごとに保管します。BDC データが呼び出しトランザクションに渡される前に、ビジネス・オブジェクト属性値が BDC セッションにマップされます。呼び出しトランザクションが完了すると、ビジネス・オブジェクトの適切な値に結果であるキー値が設定され、呼び出しトランザクションからのすべてのメッセージが記録されます。

動的トランザクション機能モジュールは BDC セッションを作成し、動的トランザクション表 /CWLD/WIZ_IN で定義されている BDC と、渡されたビジネス・オブジェクトの値とを組み合わせることで、呼び出しトランザクションを実行します。動的トランザクション機能モジュールが呼び出されると、以下のステップが実行されます。

  1. すべてのエントリーは /CWLD/WIZ_IN から検索されます。各項目の説明は以下の通りです。
    object name = objectName and verb = objectVerb
     
  2. フィールド入力値が、属性名に基づいてビジネス・オブジェクトから BDC セッションにマップされます。
  3. BDC セッションが、呼び出しトランザクションを使用して処理されます。
  4. キー値が取り込まれ、呼び出しトランザクション・メッセージが記録され、ビジネス・オブジェクトにキーが設定されます。

ヒント

ビジネス・オブジェクト用の BDC セッションの構成

BDC セッションを構成するには、SAP トランザクションの設計を理解する必要があります。SAP トランザクションでは、同じデータをさまざまな順序で異なる画面から入力できます。通常、各順序またはフローは、追加機能を公開しています。その結果、一定のデータ妥当性検査および入力フィールドの要件が一部の画面には存在し、他の画面には存在しません。必要な作業を最も少ない労力で行うことのできる順序を見つけ出すことは、とても大変です。単純な BDC セッションは、複雑な BDC セッションよりも信頼できます。

SAP トランザクションは、オンラインで実行する代わりにバックグラウンド・プロセスで呼び出しトランザクション方式を使用してアクセスすると、異なる動作を示す場合があります。例えば、異なる画面や追加の画面が表示されたり、オンラインで調査している際に表示されるものとは異なる入力フィールドが画面に表示されたりする場合があります。この矛盾が発生するのは、トランザクションの制御コードが、バックグラウンドで実行した場合と、オンラインで実行した場合とで異なる動作を指示しているためであることがあります。その結果、トランザクションをステップごとにたどっていく際に失敗したオブジェクト・イベントを再処理すると、オンライン・テストでは成功することがありますが、コネクターで同じオブジェクトを処理すると常に失敗します。このような事態が発生したら、バックグラウンドで処理するように BDC を変更してください。BDC を変更すると、BDC はバックグラウンドでは処理できるが、オンラインで処理すると失敗する、という事態が発生する場合があります。

動的トランザクション表で定義した BDC は静的です。そのため、なんらかの入力データが別の画面をポップアップさせたり、実行中に他のフィールドが必須になった場合、トランザクション中には対応できません。一貫性のある動作を予期できるためには、トランザクションの構成を正しく調査することが重要です。トランザクションを複数回試行して、同じ動作が繰り返されるかどうかをガイドラインとすることができます。

画面のフローを決定したら、以下のステップを実行し、収集した情報をスプレッドシートに文書化しておきます。

  1. オブジェクトをサポートするトランザクションに移動し、トランザクション・コードを確認します。
  2. 必要な画面および入力フィールドの BDC 要素を確認します。
  3. 次の画面に処理を継続するために必要なメニュー・コマンドを確認します。
  4. 必要な各画面について、ステップ 2 および 3 を繰り返します。
  5. トランザクションを保管するコマンドを記録して終了します。

表 14 に、動的トランザクション・テーブル /CWLD/WIZ_IN の列名を示します。


表 14. Dynamic Retrieve の /CWLD/WIZ_IN テーブル・エントリー
フィールド名 説明 使用する場合 テクニカル名
Object name IBM WebSphere ビジネス・オブジェクト名 常時 OBJ_NAME
Verb 動詞 (Create、Update、Delete、または Retrieve) 常時 OBJ_VERB
Counter カウンター 常時 POSNR
Program 画面に関連付けられているプログラム BDC 画面識別 PROG_NAME
Screen number 画面に関連付けられている画面番号 BDC 画面識別 DYNPRO
Start 新しい画面を指定 BDC 画面識別 DYNBEGIN
Screen description 画面、フィールド、またはコマンドの自由なテキスト記述 ユーザーの任意 SCR_DESCR
BDC field name BDC 入力フィールド名 BDC 入力フィールド FNAM
Field name in business object 入力値を提供する IBM WebSphere ビジネス・オブジェクト内の属性 BDC 入力フィールド SOURCEFLD
Default value IBM WebSphere ビジネス・オブジェクトでエントリーが提供されない場合、またはコマンド値である BDC_OKCODE を使用している場合に使用する静的なデフォルト値 値が渡されない可能性があるが、トランザクションには必須である場合 DEFLT_VAL
SY Field name デフォルト値として使用される動的システム・フィールド (例えば DATUM) 値が渡されないか、または SAP システム・フィールドによって決定される必要がある場合 SYFIELD
Return トランザクション完了時にキー値を戻すシステム・メッセージ・フィールドを識別する 1 から 4 の数値 (SY-MSGV#) キー値を受け取るビジネス・オブジェクト・キー属性 RETURNFLD
Length 入力に使われる属性値のゼロ位置からの文字長 複合値を含んだ属性を使用する場合のみ LENGTH

ビジネス・オブジェクトのメタデータを定義または変更する (情報を /CWLD/WIZ_IN に転送する) には、以下の手順を行います。

  1. IBM CrossWorlds Station に移動します (トランザクション /n/CWLD/HOME)。
    重要:
    IBM CrossWorlds Station を使用して、ビジネス・オブジェクト定義または ABAP Handler を生成するためには、SAP システムに英語でログオンする必要があります。CrossWorlds Station ログは英語でのみ、使用可能です。
  2. 「Development」タブをクリックします。
  3. 「Transaction based - Inbound」セクションで「Modify BO Metadata」ボタンをクリックします。

ビジネス・オブジェクトのメタデータは簡単に定義できます。各画面で、最初のエントリーは画面を識別し、後続のエントリーは入力フィールドを識別し、最後のエントリーはコマンドです。このグループ化が各画面について繰り返されます。

SAP4_CustomerMaster の例について、「Counter」列を行番号として使いながら、ステップごとに説明します。

100
画面番号 100 のプログラム SAPMF02D から始まります。これは新しい、先頭の画面なので、「Start」列にフラグが立てられています。

110
画面上の 110 では、このビジネス・オブジェクトの Customer_account_group 属性の値を使用し、「BDC field name」列 (値は RF02D-KT0KD) に追加します。デフォルト値を 0001 と指定します。Customer_account_group 属性が CxIgnore の場合、「BDC field name」列はデフォルト値 0001 を受けとります。

120
Customer_Account_Number 属性はキー値なので、呼び出しトランザクション中には設定されません。SAP では、キー値は内部的に割り当てられ、トランザクションが正常に通知された後にのみ使用可能になります。このため、「BDC field name」列はブランクにしておきますが、Customer_Account_Number 属性は呼び出しトランザクションの終了時に戻される際にこのキー値を使用して設定される必要があるため、表にエントリーを設けておきます。また、CustomerNumber の「Program」列に RETURN と入力します。

トランザクションによって、SAP は SY-MSGV1SY-MSGV2SY-MSGV3、または SY-MSGV4 の 4 つのフィールドのうちの、いずれか 1 つにキー値を戻します。特定の属性に戻り値を設定するには、「Return」列に 1 から 4 の数値を入力します。この番号はキー値を持つ SY-MSGV 番号フィールドに対応しています。

130
最初の画面に必要な値の入力が終れば、「Default Value」列にコマンド /00 を入力します。これは、Enter キーを押す操作をシミュレートします。これにより、次のトランザクション画面に移動します。コマンドは、トランザクション・コードを入力する画面入力フィールド BDC_OKCODE に入力します。

140
ここから、次のトランザクション画面の設定に移ります。アドレス情報を入力します。これは新しい画面なので、「Start」列にフラグを立てます。この例では、2 番目の画面は最初の画面と同じプログラムに関連付けられているため、画面番号が 100 から 110 に変わるだけです。これは場合によって異なります。

150 - 210
ビジネス・オブジェクト内の Name_1、Sort_field、City、 P_0_Box_postal_code、Country_key、Language_keys、および Post_office_box の各属性の値を使用して、「BDC field name」列に対応する値を追加します。

220
行 130 と同様です。この画面の処理は完了しました。ただし、単に Enter キーをシミュレートするより、コマンド値 UPDA を入力して、トランザクションを保管してください。これにより、次のトランザクション画面に移動します。

230
ここから、3 番目のトランザクション画面の設定に移るため、「Start」列にフラグを立てます。この例のビジネス・オブジェクトでは、この画面のデータは必要ないので、次の行でこの画面の処理を完了します。

240
行 130 と同様です。この画面の処理は完了しました。コマンド値 /00 を入力して、Enter キーを押す操作をシミュレートします。これにより、最終のトランザクション画面に移動します。

250
ここから、最終のトランザクション画面の設定に移ります。「Start」列にフラグを立てます。

260
行 150 から 210 と同様です。ビジネス・オブジェクト属性 Transport_zone_to_which_or_from_which_the_goods_are_delivered の値を使用して、それに対応する値 (KNA1-LZONE) を「BDC field name」列に追加します。

270
行 220 と同様です。この画面の処理が完了し、トランザクションが完了したため、保管するためのコマンド値 UPDA を入力します。これは、呼び出しトランザクション API が受け取る最後のアクションです。

280
どのビジネス・オブジェクトでも、最後のエントリーは常にトランザクション・コードの指定です。キーワード TCODE は「Program」列に入力され、トランザクション・コードは「BDC field name」列に入力されます。

これにより、SAP4_CustomerMaster ビジネス・オブジェクトの BDC セッションの定義が完了します。

呼び出しトランザクションが失敗してエラー・メッセージを戻した場合、以下に説明する一般的なエラーのいずれかが発生している可能性があります。

動的トランザクションに対する Inbound Wizard の使用

Inbound Wizard は、最初のフィールドをクリックするか、または画面を変更した際に、トランザクションでの移動、アクション、およびフィールド入力を記録します。レコーダーは発生したすべてのアクションを記録しますが、表示されたものすべてを記録するわけではありません。例えば、最初に初期画面が表示された際、レコーダーはトランザクションへの最初の呼び出しを取り込みますが、その画面に表示された入力フィールドのすべてを取り込むわけではありません。入力フィールドを使用できるようにするには、そのフィールドに何らかのデータを入力する必要があります。また、入力フィールドにデフォルト・データが格納されている場合でも、そのデータを手動で入力しない限り記録されません。

新しい WebSphere ビジネス・オブジェクト定義を作成するには、以下の手順を行います。

  1. IBM CrossWorlds Station に移動します (トランザクション /n/CWLD/HOME)。
    重要:
    IBM CrossWorlds Station を使用して、ビジネス・オブジェクト定義または ABAP Handler を生成するためには、SAP システムに英語でログオンする必要があります。CrossWorlds Station ログは英語でのみ、使用可能です。
  2. 「Development」タブで、「Inbound Wizard」ボタンをクリックします。
  3. 以下の情報を入力します。
  4. 「Record」をクリックします。
  5. ビジネス・オブジェクトの機能をサポートするトランザクションを、ステップごとにたどっていきます。必要なすべてのフィールドおよび画面を使用してください。終了したら、トランザクションを保管します。
  6. ビジネス・オブジェクトにメタデータとして組み込むコンポーネントを選択します。カーソルをコンポーネントの上に置き、「Select/Deselect sub-tree」ボタンをクリックします (F9)。デフォルトでは、すべてのコンポーネントが選択されます。
  7. 新しい動的オブジェクトまたはソース・コードを生成します。

Copyright IBM Corp. 2004