2

次の問題が発生します。


私がしたいこと

特定の発注書について、異なるフィールドにディスパッチする必要がVBAKあるテーブルの複数の行を含むテーブルのデータを再グループ化する情報セットを作成したいと考えています。VBPA

テーブルの結合

KUNNR例: 次の PO 111005229 の場合、最初のフィールドで対象のフィールドを取得しPARVW = 'ER'、2 番目のフィールドで対象のフィールドを取得したいと考えてADRNRPARVW = 'BP'ます。

望ましい出力:

ここに画像の説明を入力


私が試したこと

SQ02 で両方のテーブルを結合する

VBAK2 つのテーブルを宣言しようとしましたがVBAP、SQ02 TCode の実行中に目的のフィールドを選択しました。
ここに画像の説明を入力

これは機能しません:

  • SE16N と同様に、フィルター処理されたデータを含む 1 行が必要な場合、クエリは注文書のすべての行を返します。
  • コード部分でを使用してCHECK VBPA-PARVW = 'ER'.Record processing特定の PO の行数を 1 に減らすことを期待すると、値はまったく返されません。

SQ02でVBAKテーブルのみ宣言

VBAKまた、SQ02 でテーブルのみを宣言し、必要な追加フィールドを作成して、これらの特定のフィールドに関連するコードでPERNR_ER結合しようVBAKとしました。VBPAopenSQL

追加のフィールドを作成PARVW_ERPERNR_ER、次のコードを埋め込みました。

SELECT PARVW
    INTO PARVW_ER
    FROM VBPA
    WHERE VBELN = VBPA~VBELN.
    AND PARVW = 'ER'.
ENDSELECT.

SELECT PERNR
    INTO PERNR_ER
    FROM VBPA
    WHERE VBELN = VBPA~VBELN.
    AND PARVW = 'ER'.
ENDSELECT.

出力として与える

ここに画像の説明を入力

私も試しました

TYPES: begin of TY_TABLE,
    PARVW LIKE VBPA-PARVW,
    PERNR LIKE VBPA-PERNR,
    END OF TY_TABLE.

DATA: WA_TABLE TYPE TY_TABLE,
      IT_TABLE  TYPE TABLE OF TY_TABLE.

SELECT PARVW PERNR
    APPENDING CORRESPONDING FIELDS OF TABLE IT_TABLE
    FROM VBPA
    WHERE VBELN = VBPA~VBELN.

LOOP AT IT_TABLE INTO WA_TABLE.
  IF WA_TABLE-PARVW = 'ER'.
    PARVW_ER = WA_TABLE-PARVW.
    PERNR_ER = WA_TABLE-PERNR.
  ENDIF.
ENDLOOP.

しかし、それは同じを返しました。


期待される結果を得るにはどうすればよいですか?

4

3 に答える 3