動的トランザクション機能モジュールは、マッピング・ツールおよび動的コード生成プログラムです。これは、SAP の呼び出しトランザクション API を使用して、SAP アプリケーションにデータを渡します。また、バッチ・データ通信 (BDC) セッションの静的定義を、オブジェクトと動詞の組み合わせごとに保管します。BDC データが呼び出しトランザクションに渡される前に、ビジネス・オブジェクト属性値が BDC セッションにマップされます。呼び出しトランザクションが完了すると、ビジネス・オブジェクトの適切な値に結果であるキー値が設定され、呼び出しトランザクションからのすべてのメッセージが記録されます。
動的トランザクション機能モジュールは BDC セッションを作成し、動的トランザクション表 /CWLD/WIZ_IN で定義されている BDC と、渡されたビジネス・オブジェクトの値とを組み合わせることで、呼び出しトランザクションを実行します。動的トランザクション機能モジュールが呼び出されると、以下のステップが実行されます。
- すべてのエントリーは /CWLD/WIZ_IN から検索されます。各項目の説明は以下の通りです。
object name = objectName and verb = objectVerb
- フィールド入力値が、属性名に基づいてビジネス・オブジェクトから BDC セッションにマップされます。
- BDC セッションが、呼び出しトランザクションを使用して処理されます。
- キー値が取り込まれ、呼び出しトランザクション・メッセージが記録され、ビジネス・オブジェクトにキーが設定されます。
- 初期画面で入力したデータがすべての行項目のデフォルトになり、入力しなければならない行項目が少なくなる場合があります。
- 追加の入力が必要な詳細画面にドリルダウンしなくても、行項目の概要画面で必要な項目を入力できる場合があります。
- 通常 BDC では、例えば、Are you sure you want to save? のような確認メッセージに応答する必要はありません。
- カウンターは、オブジェクトと動詞の各組み合わせについて、変更モードで表の保守を開始および終了するたびに、10 ずつ増やされます。
- 実行中、呼び出しトランザクションでは日付の書式設定にユーザーの設定が使用されます。WebSphere Business Integration システムでは YYYY-MM-DD が標準の日付形式であるため、コネクターのユーザーが必ずこの日付形式のバリエーションを使用するようにセットアップしてください。同様に、トランザクションをステップごとにたどることでビジネス・オブジェクトを再処理するには、自分のユーザー設定を変更してください。
BDC セッションを構成するには、SAP トランザクションの設計を理解する必要があります。SAP トランザクションでは、同じデータをさまざまな順序で異なる画面から入力できます。通常、各順序またはフローは、追加機能を公開しています。その結果、一定のデータ妥当性検査および入力フィールドの要件が一部の画面には存在し、他の画面には存在しません。必要な作業を最も少ない労力で行うことのできる順序を見つけ出すことは、とても大変です。単純な BDC セッションは、複雑な BDC セッションよりも信頼できます。
SAP トランザクションは、オンラインで実行する代わりにバックグラウンド・プロセスで呼び出しトランザクション方式を使用してアクセスすると、異なる動作を示す場合があります。例えば、異なる画面や追加の画面が表示されたり、オンラインで調査している際に表示されるものとは異なる入力フィールドが画面に表示されたりする場合があります。この矛盾が発生するのは、トランザクションの制御コードが、バックグラウンドで実行した場合と、オンラインで実行した場合とで異なる動作を指示しているためであることがあります。その結果、トランザクションをステップごとにたどっていく際に失敗したオブジェクト・イベントを再処理すると、オンライン・テストでは成功することがありますが、コネクターで同じオブジェクトを処理すると常に失敗します。このような事態が発生したら、バックグラウンドで処理するように BDC を変更してください。BDC を変更すると、BDC はバックグラウンドでは処理できるが、オンラインで処理すると失敗する、という事態が発生する場合があります。
動的トランザクション表で定義した BDC は静的です。そのため、なんらかの入力データが別の画面をポップアップさせたり、実行中に他のフィールドが必須になった場合、トランザクション中には対応できません。一貫性のある動作を予期できるためには、トランザクションの構成を正しく調査することが重要です。トランザクションを複数回試行して、同じ動作が繰り返されるかどうかをガイドラインとすることができます。
画面のフローを決定したら、以下のステップを実行し、収集した情報をスプレッドシートに文書化しておきます。
- オブジェクトをサポートするトランザクションに移動し、トランザクション・コードを確認します。
- 必要な画面および入力フィールドの BDC 要素を確認します。
- 次の画面に処理を継続するために必要なメニュー・コマンドを確認します。
- 必要な各画面について、ステップ 2 および 3 を繰り返します。
- トランザクションを保管するコマンドを記録して終了します。
表 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 に転送する) には、以下の手順を行います。
- IBM CrossWorlds Station に移動します (トランザクション /n/CWLD/HOME)。
- 重要:
- IBM CrossWorlds Station を使用して、ビジネス・オブジェクト定義または ABAP Handler を生成するためには、SAP システムに英語でログオンする必要があります。CrossWorlds Station ログは英語でのみ、使用可能です。
- 「Development」タブをクリックします。
- 「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-MSGV1、SY-MSGV2、SY-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 セッションの定義が完了します。
呼び出しトランザクションが失敗してエラー・メッセージを戻した場合、以下に説明する一般的なエラーのいずれかが発生している可能性があります。
- SAP アプリケーションが、BDC が予期しなかった画面を呼び出したために No input available for program XX and screen YY というメッセージが戻された。この事態が発生した場合は、動的トランザクション表に、プログラム XX および画面 YY の入力画面を処理するための適切なエントリーを追加します。
- SAP アプリケーションが、存在しないフィールドを設定するように BDC から指示される場合があります。その場合、SAP アプリケーションは明示的に設定されていない独自の指示を実行した可能性があります。その結果、意図とは異なる画面に移動します。この事態が発生した場合は、正しい画面に移動するための設定だけを追加して、もう一度指示を行います。
Inbound Wizard は、最初のフィールドをクリックするか、または画面を変更した際に、トランザクションでの移動、アクション、およびフィールド入力を記録します。レコーダーは発生したすべてのアクションを記録しますが、表示されたものすべてを記録するわけではありません。例えば、最初に初期画面が表示された際、レコーダーはトランザクションへの最初の呼び出しを取り込みますが、その画面に表示された入力フィールドのすべてを取り込むわけではありません。入力フィールドを使用できるようにするには、そのフィールドに何らかのデータを入力する必要があります。また、入力フィールドにデフォルト・データが格納されている場合でも、そのデータを手動で入力しない限り記録されません。
新しい WebSphere ビジネス・オブジェクト定義を作成するには、以下の手順を行います。
- IBM CrossWorlds Station に移動します (トランザクション /n/CWLD/HOME)。
- 重要:
- IBM CrossWorlds Station を使用して、ビジネス・オブジェクト定義または ABAP Handler を生成するためには、SAP システムに英語でログオンする必要があります。CrossWorlds Station ログは英語でのみ、使用可能です。
- 「Development」タブで、「Inbound Wizard」ボタンをクリックします。
- 以下の情報を入力します。
- ビジネス・オブジェクト名 -- ビジネス・オブジェクト・タイプの名前と、そのオブジェクトのすべてのインスタンスの名前。新しいビジネス・オブジェクトを作成する場合は、新しい名前を入力します。ビジネス・オブジェクトを定義する単純な名前を使用することをお勧めします。既存のビジネス・オブジェクトを使用する場合は、ドロップダウン・リストから選択します。
- 動詞 -- そのビジネス・オブジェクトでサポートされる動詞。
- トランザクション・コード -- ビジネス・オブジェクトで実行される必要な機能をサポートする画面のトランザクション・コード。画面のトランザクション・コードを取得するには、「System」メニューで「Status」をクリックします。コードは、SAP データの下の「Transaction」フィールドにリストされます。
- 「Record」をクリックします。
- ビジネス・オブジェクトの機能をサポートするトランザクションを、ステップごとにたどっていきます。必要なすべてのフィールドおよび画面を使用してください。終了したら、トランザクションを保管します。
- ビジネス・オブジェクトにメタデータとして組み込むコンポーネントを選択します。カーソルをコンポーネントの上に置き、「Select/Deselect sub-tree」ボタンをクリックします (F9)。デフォルトでは、すべてのコンポーネントが選択されます。
- 新しい動的オブジェクトまたはソース・コードを生成します。
- 動的トランザクション表のメタデータを生成および挿入するには、「Generate Meta data」ボタンをクリックします (F6)。このデータから、WebSphere ビジネス・オブジェクト定義を生成できます。
- BDC データおよびフィールド記述を収めたテキスト・ファイルを生成するには、「Generate Code in Text File」ボタンをクリックします (F5)。このデータからは、WebSphere ビジネス・オブジェクト定義を生成できません。
