在我的选择屏幕中,您可以选择一个radiobutton组,使用哪种数字来选择信息。 (材料编号,施工合同或客户订单)。
选择种类后,用户必须将数字填入相应的选择选项中。 通过这些信息,我选择了我需要的信息,将它们移动到itab' t_marc'。 此表格与' marc'。
具有相同的字段当用户选择"材料编号"在选择屏幕上,一切正常,用户记下的每个数字的值都显示在ALV列表中。
当通过其中一个数字选择时,输出中的值也是正确的,但只会编辑最后一个表示数字的信息。
如何将所有数字移动到我的itabs?
这是我的程序代码的一部分(信息必须移到t_marc):
Selectionscreen
PARAMETERS: p_mat RADIOBUTTON GROUP radi.
PARAMETERS: p_auf RADIOBUTTON GROUP radi.
PARAMETERS: p_vbl RADIOBUTTON GROUP radi.
SELECT-OPTIONS: s_matnr FOR marc-matnr.
SELECT-OPTIONS: s_aufnr FOR aufk-aufnr.
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln.
启动的选择
IF p_mat = 'X'.
SELECT * FROM marc
INTO TABLE t_marc
WHERE matnr IN s_matnr
AND werks = p_werks.
ELSEIF p_auf = 'X'.
SELECT * FROM afpo
INTO TABLE t_afpo
WHERE aufnr IN s_aufnr.
LOOP AT t_afpo.
SELECT * FROM marc
INTO TABLE t_marc
WHERE matnr = t_afpo-matnr
AND werks = p_werks.
ENDLOOP.
ELSEIF p_vbl = 'X'.
SELECT * FROM vbap
INTO TABLE t_vbap
WHERE vbeln = s_vbeln-low
AND posnr IN s_posnr.
LOOP AT t_vbap.
SELECT * FROM marc
INTO TABLE t_marc
WHERE matnr = t_vbap-matnr
AND werks = p_werks.
ENDLOOP.
答案 0 :(得分:4)
每次在这个循环(以及类似的循环)中你都会覆盖记录。
LOOP AT t_afpo.
SELECT * FROM marc
INTO TABLE t_marc
WHERE matnr = t_afpo-matnr
AND werks = p_werks.
ENDLOOP.
“INTO TABLE”每次都会覆盖。您可以切换到“APPENDING TABLE”。或者,我会使用a代替所有条目(无循环)。
SELECT * FROM marc
INTO TABLE t_marc
FOR ALL ENTRIES IN t_afpo
WHERE matnr = t_afpo-matnr
AND werks = p_werks.
始终确保驱动程序表中有记录(在本例中为t_afpo),否则会出现性能问题。