我制作了一个结构,用于保存信息os透明表e集群表。由于群集表无法加入,因此我创建了两个选择单个列表,用于从群集表中检索信息。问题在于,在循环中,并且可能因为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.
ÎF <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
结果就是这个。请注意,&#39; D&#39;在表格的最后不应该是3行。第一个是D,另外两个是S.
答案 0 :(得分:3)
您的写:`<fs_main>-koart.
位于ÎF <fs_main>-koart = 'D'.
内。
所以你应该总是得到D
。我认为这是代码副本的问题。
您使用
SELECT SINGLE koart FROM bseg
INTO (<fs_main>-koart)
WHERE buzei = 1
AND belnr = <fs_main>-belnr.
并且您不检查子目录。如果未找到任何条目,则<fs_main>-koart
的旧值将保留在变量中。
我建议:
clear <fs_main>-koart.
"<fs_main>-koart = '?'. "Alternative
SELECT SINGLE koart FROM bseg
INTO (<fs_main>-koart)
WHERE buzei = 1
AND belnr = <fs_main>-belnr.
或
SELECT SINGLE koart FROM bseg
INTO (<fs_main>-koart)
WHERE buzei = 1
AND belnr = <fs_main>-belnr.
IF SY-SUBRC NE 0.
clear <fs_main>-koart.
"<fs_main>-koart = '?'. "Alternative
" or you may skip the output with NEXT
ENDIF.
答案 1 :(得分:0)
您的选择中有硬编码的订单项(BUZEI)。我怀疑这是重复数据的原因。
答案 2 :(得分:0)
只是一个评论,我觉得很奇怪你没有按公司和年份过滤。 记得同一份BELNR今年的文件将不会是明年的同一份文件。与公司一样。
请确保这是您希望程序显示的内容。因为在财政年度变更或新公司被添加到系统时可能会出现问题。