私はsmartformsの初心者のようなものです。納品書に表示する名前や住所など、KNA1からいくつかのデータを取得しようとしています。どうすればこれを入手できますか?「グローバルオプション」のいくつかのオプションにテーブルを配置する必要があることは知っていますが、どれを選択するかはわかりません。誰か助けてくれませんか?ありがとう。
2 に答える
このための ABAP コーディングの開発方法を知る必要があります。これを知っていると仮定すると、フォームの入力構造を拡張し、必要な選択ロジックを供給プログラムに追加するようにしてください。これが不可能な場合は、フォームにコードを追加できますが、さまざまな理由からお勧めできません。
編集:ABAPのコーディング方法を知っている場合、質問を理解するのはさらに難しくなります。優れたオンライン文書をご覧になったと思います。フォームのヘッダー エントリを調べると、グローバル定義や初期化コーディングなどに気付くでしょう。フォームに挿入できる要素を詳しく見てみると、プログラム行が見つかります。これは、データベースからデータを選択するフォームに ABAP コードを埋め込む 1 つの方法です。他のフィールドと同じように印刷します。
ただし、これは悪い考えです。一般に、フォームの処理が遅くなり、あまりにも広く使用されていると維持するのは悪夢です。代わりに、フォームのパラメーターと、フォームを呼び出しているプログラムを確認する必要があります。可能であれば、適切な構造を編集するか、append 構造を使用して追加のフィールドを追加します。次に、BAdI、ユーザ Exit、または暗黙的な拡張を使用して、呼出元プログラムの項目に入力します。この利点は、データがすべてのフォームに渡されるため、複数のフォームにロジックをコピーする必要がないことです。(また、必要に応じてこれを Interactive Forms に移植する方が簡単です)。
すべてのスマートフォームには、情報を渡す主要な方法であるフォーム インターフェイスがあります (フォーム ツリーの [グローバル設定] の下)。この情報が欠落していて、何らかの理由でインターフェイスとそれを呼び出す ABAP コードを変更できない場合 (あまりにも多くの異なる場所で呼び出されているため、または SAP 標準コードから呼び出されているため)、ABAP コーディングを統合する方法はまだあります。追加データを取得するためのスマートフォームへ:
- [グローバル定義] をクリックして、グローバル変数とグローバル フォーム ルーチンを定義できます。
- ウィンドウノードに「Flow Logic -> Program Lines」ノードを追加できます。ここでは、ABAP コードを記述して、必要なデータを読み取り、それをグローバル変数に書き込むことができます。
- その後、ウィンドウのテキスト要素でこの変数を使用できます。