只有最后一个条目被选中



在我的选择屏幕上,您可以通过单选按钮选择您想要选择的信息类型的数字组。(材料编号、施工合同或客户订单)。

选择一种后,用户必须在相应的选择选项中填写数字。有了这些信息,我选择了我需要的信息,并将它们移动到标签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),否则您将出现性能问题。

相关内容

  • 没有找到相关文章

最新更新