Abap 按实体对发票进行分组,循环位于

Abap 按实体对发票进行分组,循环位于,abap,sap-erp,Abap,Sap Erp,我的程序输出一个包含一些发票和详细信息的列表,我希望它们按实体显示 该列表显示在列表的每一行中重复的实体编号和名称,但我希望它显示为按分组 e、 g.共有4张发票:每个实体两张,如何显示该实体和所有相应的发票,然后显示其他实体,依此类推 我的代码是这样的: FORM select_data3 CHANGING lt_data LIKE gt_map1. FIELD-SYMBOLS: <fs_main> TYPE zimposto_consumo. SELECT a~beln

我的程序输出一个包含一些发票和详细信息的列表,我希望它们按实体显示

该列表显示在列表的每一行中重复的实体编号和名称,但我希望它显示为按分组

e、 g.共有4张发票:每个实体两张,如何显示该实体和所有相应的发票,然后显示其他实体,依此类推

我的代码是这样的:

FORM select_data3 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
                          AND buzei = 1 )
    INNER JOIN vbrk AS d ON d~xblnr = c~belnr )
    WHERE a~gjahr in gjahr.


  LOOP AT lt_data ASSIGNING <fs_main>.


    clear <fs_main>-kbetr.
    clear <fs_main>-fwste.
    clear <fs_main>-hwste.
    SELECT SINGLE kbetr fwste hwste FROM bset
      INTO (<fs_main>-kbetr, <fs_main>-fwste, <fs_main>-hwste)
      WHERE belnr = <fs_main>-belnr.

    clear <fs_main>-koart.
    SELECT SINGLE koart kunnr FROM bseg
      INTO (<fs_main>-koart, wa_bseg-kunnr)
      WHERE belnr = <fs_main>-belnr.


    IF <fs_main>-koart = 'D'.

      SELECT SINGLE name1 FROM kna1
        INTO (wa_bseg-name1)
        WHERE kunnr = wa_bseg-kunnr.


      IF sy-subrc = 0.
        FORMAT COLOR COL_TOTAL INTENSIFIED ON.

        WRITE:/ sy-uline(137), / sy-vline NO-GAP,
                        2 'Entidade: ', wa_bseg-kunnr, wa_bseg-name1,
                        137 sy-vline NO-GAP, / sy-uline(137).

        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.
        ...
      ENDIF.
    ENDIF.
  ENDLOOP.

ENDFORM.   
表单选择\u数据3更改lt\u数据,如gt\u地图1。
字段符号:输入zimposto_consumo。
选择一个~belnr d~ spart a~bldat a~waers c~wrbtr a~hwaer c~dmbtr
进入表lt\U数据的相应字段
从((bkpf)作为
内部连接BSI为c~belnr=a~belnr上的c
和buzei=1)
d~xblnr=c~belnr上的内部连接vbrk作为d)
其中a~gjahr在gjahr中。
在lt_数据分配处循环。
清除-kbetr。
清除-fwste。
清除-hwste。
从bset中选择单个kbetr fwste hwste
进入(-kbetr,-fwste,-hwste)
其中belnr=-belnr。
清除-科亚特。
从bseg中选择单个koart kunnr
进入(-koart,wa_bseg-kunnr)
其中belnr=-belnr。
IF-koart='D'。
从列表1中选择单个名称1
进入(wa_bseg-NAME 1)
其中kunnr=wa_bseg-kunnr。
如果sy subrc=0。
设置颜色列的格式。
写入:/sy-uline(137),/sy-vline无间隙,
2“实体:”,wa_bseg-KUNR,wa_bseg-name1,
137 sy vline无间隙,/sy uline(137)。
关闭格式颜色列。
写:/
sy vline无间隙,
(16) -贝尔纳无缺口,
sy vline无间隙,
(16) -spart无间隙,
sy vline无间隙,
(10) -bldat无间隙,
sy vline无间隙。
perc=-kbetr/10。
...
恩迪夫。
恩迪夫。
结束循环。
尾型。

我在块
循环中使用了一个块。。。ENDLOOP

您可以添加带有4个前导空格的代码示例。这样更容易阅读;)。