使用REUSE_ALV_BLOCK_LIST_APPEND函数进行多ALV展现

效果如图:

用此方法进行展示的ALV只能是这种形式,不能改变展法效果。实战项目上应用不多,只是技术展示和学习用。

示例代码我是找了别人写的一段程序,代码相对简单,如有侵权请联系我删除。

完整示例:

TYPE-POOLS: slis.
* Data declarations.
DATA: BEGIN OF t_vbak OCCURS 0,
        vbeln TYPE vbeln,
        bstnk TYPE vbak-bstnk,
        erdat TYPE vbak-erdat,
        kunnr TYPE vbak-kunnr,
      END OF t_vbak.
DATA: BEGIN OF t_vbap OCCURS 0,
        vbeln  TYPE vbeln,
        matnr  TYPE vbap-matnr,
        netpr  TYPE vbap-netpr,
        waerk  TYPE vbap-waerk,
        kwmeng TYPE vbap-kwmeng,
        meins  TYPE vbap-meins,
      END OF t_vbap.
DATA: t_fieldcatalog1 TYPE slis_t_fieldcat_alv.
DATA: t_fieldcatalog2 TYPE slis_t_fieldcat_alv.
DATA: v_repid         TYPE syrepid.
DATA: s_layout        TYPE slis_layout_alv.
DATA: v_tabname       TYPE slis_tabname.
DATA: t_events        TYPE slis_t_event.

* start-of-selection event.
START-OF-SELECTION.
  v_repid = sy-repid.
* Get the fieldcatalog for the first block
  PERFORM get_fieldcat1 CHANGING t_fieldcatalog1.
* Get the fieldcatalog for the second block
  PERFORM get_fieldcat2 CHANGING t_fieldcatalog2.
* Get the data for the first block
  SELECT vbeln bstnk erdat kunnr UP TO 10 ROWS
         INTO TABLE t_vbak
         FROM vbak WHERE vbeln > '0060000100'.
* Get the data for the second block
  SELECT vbeln matnr netpr waerk kwmeng meins UP TO 20 ROWS
         INTO TABLE t_vbap
         FROM vbap WHERE vbeln > '0060000100'.
* init
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
       EXPORTING
            i_callback_program = v_repid.

* First block
  v_tabname = 'ITAB1'.
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
       EXPORTING
            is_layout   = s_layout
            it_fieldcat = t_fieldcatalog1
            i_tabname   = v_tabname
            it_events   = t_events
       TABLES
            t_outtab    = t_vbak.
* Second block
  v_tabname = 'ITAB2'.
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
       EXPORTING
            is_layout   = s_layout
            it_fieldcat = t_fieldcatalog2
            i_tabname   = v_tabname
            it_events   = t_events
       TABLES
            t_outtab    = t_vbap.
*Display
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
            .
*---------------------------------------------------------------------*
*       FORM GET_FIELDCAT1                                            *
*---------------------------------------------------------------------*
*       Get the field catalog for the first block                     *
*---------------------------------------------------------------------*
FORM get_fieldcat1 CHANGING lt_fieldcatalog TYPE slis_t_fieldcat_alv.
  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
* Order number
  s_fieldcatalog-col_pos       = '1'.
  s_fieldcatalog-fieldname     = 'VBELN'.
  s_fieldcatalog-tabname       = 'T_VBAK'.
  s_fieldcatalog-ref_tabname   = 'VBAK'.
  s_fieldcatalog-ref_fieldname = 'VBELN'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Customer purchase order.
  s_fieldcatalog-col_pos       = '2'.
  s_fieldcatalog-fieldname     = 'BSTNK'.
  s_fieldcatalog-tabname       = 'T_VBAK'.
  s_fieldcatalog-ref_tabname   = 'VBAK'.
  s_fieldcatalog-ref_fieldname = 'BSTNK'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Creation date.
  s_fieldcatalog-col_pos       = '3'.
  s_fieldcatalog-fieldname     = 'ERDAT'.
  s_fieldcatalog-tabname       = 'T_VBAK'.
  s_fieldcatalog-ref_tabname   = 'VBAK'.
  s_fieldcatalog-ref_fieldname = 'ERDAT'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Customer
  s_fieldcatalog-col_pos       = '4'.
  s_fieldcatalog-fieldname     = 'KUNNR'.
  s_fieldcatalog-tabname       = 'T_VBAK'.
  s_fieldcatalog-ref_tabname   = 'VBAK'.
  s_fieldcatalog-ref_fieldname = 'KUNNR'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM GET_FIELDCAT2                                            *
*---------------------------------------------------------------------*
*       Get the field catalog for the second block                    *
*---------------------------------------------------------------------*
FORM get_fieldcat2 CHANGING lt_fieldcatalog TYPE slis_t_fieldcat_alv.
  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
* Order number
  s_fieldcatalog-col_pos       = '1'.
  s_fieldcatalog-fieldname     = 'VBELN'.
  s_fieldcatalog-tabname       = 'T_VBAP'.
  s_fieldcatalog-ref_tabname   = 'VBAP'.
  s_fieldcatalog-ref_fieldname = 'VBELN'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Material number
  s_fieldcatalog-col_pos       = '2'.
  s_fieldcatalog-fieldname     = 'MATNR'.
  s_fieldcatalog-tabname       = 'T_VBAP'.
  s_fieldcatalog-ref_tabname   = 'VBAP'.
  s_fieldcatalog-ref_fieldname = 'MATNR'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Net price
  s_fieldcatalog-col_pos       = '3'.
  s_fieldcatalog-fieldname     = 'NETPR'.
  s_fieldcatalog-tabname       = 'T_VBAP'.
  s_fieldcatalog-ref_tabname   = 'VBAP'.
  s_fieldcatalog-ref_fieldname = 'NETPR'.
  s_fieldcatalog-cfieldname    = 'WAERK'.
  s_fieldcatalog-ctabname      = 'T_VBAP'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Currency.
  s_fieldcatalog-col_pos       = '4'.
  s_fieldcatalog-fieldname     = 'WAERK'.
  s_fieldcatalog-tabname       = 'T_VBAP'.
  s_fieldcatalog-ref_tabname   = 'VBAP'.
  s_fieldcatalog-ref_fieldname = 'WAERK'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* Quantity
  s_fieldcatalog-col_pos       = '5'.
  s_fieldcatalog-fieldname     = 'KWMENG'.
  s_fieldcatalog-tabname       = 'T_VBAP'.
  s_fieldcatalog-ref_tabname   = 'VBAP'.
  s_fieldcatalog-ref_fieldname = 'KWMENG'.
  s_fieldcatalog-qfieldname    = 'MEINS'.
  s_fieldcatalog-qtabname      = 'T_VBAP'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
* UOM
  s_fieldcatalog-col_pos       = '6'.
  s_fieldcatalog-fieldname     = 'MEINS'.
  s_fieldcatalog-tabname       = 'T_VBAP'.
  s_fieldcatalog-ref_tabname   = 'VBAP'.
  s_fieldcatalog-ref_fieldname = 'MEINS'.
  APPEND s_fieldcatalog TO lt_fieldcatalog.
  CLEAR s_fieldcatalog.
ENDFORM.

代码说明:

调用了三个函数,分别是:REUSE_ALV_BLOCK_LIST_INIT(进行初始化)

REUSE_ALV_BLOCK_LIST_APPEND(调用两次,追加了两个ALV)

REUSE_ALV_BLOCK_LIST_DISPLAY(ALV的展示)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值