透過テーブルとクラスターテーブルからデータを選択し、その結果を内部テーブルに入れます。クラスタテーブルは結合できないselect single
ため、クラスタテーブルからデータを取得するために2つ使用しました。
問題は、ループ内で、各出力行に内部テーブルの最初の行(D
各行)と同じ情報が割り当てられることです。where条件のフィールドが、BELNR
列から同じ値の3行を取得するためである可能性があります。
まず、コードは次のとおりです。
FORM select_data1 CHANGING lt_data LIKE gt_map1.
FIELD-SYMBOLS: <fs_main> TYPE zimposto_consumo.
SELECT a~belnr d~spart a~bldat a~waers c~wrbtr a~hwaer c~dmbtr
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM ( ( bkpf AS a
INNER JOIN bsis AS c ON c~belnr = a~belnr )
INNER JOIN vbrk AS d ON d~xblnr = c~belnr )
WHERE a~belnr IN belnr.
LOOP AT lt_data ASSIGNING <fs_main>.
SELECT SINGLE kbetr fwste hwste FROM bset
INTO (<fs_main>-kbetr, <fs_main>-fwste, <fs_main>-hwste)
WHERE belnr = <fs_main>-belnr.
SELECT SINGLE koart FROM bseg
INTO (<fs_main>-koart)
WHERE buzei = 1
AND belnr = <fs_main>-belnr.
IF <fs_main>-koart = 'D'.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/
sy-vline NO-GAP,
(16) <fs_main>-belnr NO-GAP,
sy-vline NO-GAP,
(16) <fs_main>-spart NO-GAP,
sy-vline NO-GAP,
(10) <fs_main>-bldat NO-GAP,
sy-vline NO-GAP.
perc = <fs_main>-kbetr / 10.
WRITE: (10) perc NO-GAP,
sy-vline NO-GAP,
(5) <fs_main>-waers NO-GAP,
sy-vline NO-GAP,
(16) <fs_main>-wrbtr NO-GAP,
sy-vline NO-GAP,
(16) <fs_main>-fwste NO-GAP,
sy-vline NO-GAP,
(5) <fs_main>-hwaer NO-GAP,
sy-vline NO-GAP,
(16) <fs_main>-dmbtr NO-GAP,
sy-vline NO-GAP,
(16) <fs_main>-hwste NO-GAP,
sy-vline NO-GAP.
WRITE:/ sy-uline(137).
write: <fs_main>-koart.
ELSE.
write: 'Não há dados a mostrar.'.
ENDIF.
ENDLOOP.
ENDFORM. "select_data1
結果はこれです:
D
出力テーブルの右側にある「D」は、3行を表すものであってはなりません。最初の1つだけが必要でD
、他の2つはである必要がありますS
。
なにが問題ですか?