在我的选择屏幕上,您可以通过单选按钮选择您想要选择的信息类型的数字组。(材料编号、施工合同或客户订单)。
选择一种后,用户必须在相应的选择选项中填写数字。有了这些信息,我选择了我需要的信息,并将它们移动到标签t_marc
。这个表与marc
有相同的字段。
当用户在选择屏幕上选择材料编号时,一切工作正常,用户写下的每个数字的值都显示在ALV-List上。
当被其他数字选择时,输出的值也是正确的,但只编辑最后表示的数字的信息。
如何将所有数字移动到我的选项卡?
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.
start-of-selection
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.
每次在此循环(以及类似的循环)中都覆盖记录。
LOOP AT t_afpo.
SELECT * FROM marc
INTO TABLE t_marc
WHERE matnr = t_afpo-matnr
AND werks = p_werks.
ENDLOOP.
"INTO 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),否则您将出现性能问题。