sap alv多表查询

多表连接查询时,连接的表的数量不超过2-3张。当表的数量过多、数据量大时,会极大程度影响性能。应该先将数据读取到内表(类似于数组)中,使用FOR ALL ENTRIES IN 来和其余需要连接的表进行关联。且簇表无法连接,只能使用FOR ALL ENTRIES IN的方法。 虽然我看到有开发规范说尽可能只连接1张表,但是实际的业务需求中经常只是取其他表的1、2个字段,为了这1、2个字段单独建结构,然后用FOR ALL ENTRIES IN查询实在是太麻烦,这里把限制放宽到2-3张也算是为了方便和为了性能的折中考虑吧。

例一:两表查询

REPORT  ZMMR1117.

TABLESMAKTMARD.

*provide type-pools

TYPE-POOLSSLIS.

*provide select-options

SELECT-OPTIONSS_MATNR FOR MAKT-MATNR.

*provide data objects

DATAV_REPID TYPE SY-REPID,

      WA_MAKT_FIELD TYPE SLIS_FIELDCAT_ALV,

      WA_MARD_FIELD TYPE SLIS_FIELDCAT_ALV,

      WA_MAKT TYPE MAKT,

      WA_MARD TYPE MARD,

      IT_MAKT_FIELD TYPE SLIS_T_FIELDCAT_ALV,

      IT_MARD_FIELD TYPE SLIS_T_FIELDCAT_ALV,

      IT_MAKT TYPE TABLE OF MAKT,

      IT_MARD TYPE TABLE OF MARD,

      V_LAYOUT TYPE SLIS_LAYOUT_ALV,

      IT_EVENTS TYPE SLIS_T_EVENT,

    "it is for events

    WA_EVENTS TYPE SLIS_ALV_EVENT.

V_REPID SY-REPID.

*provide field catalog perform.

PERFORM FIELD_CAT.

*call the initial function module

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

  EXPORTING

    I_CALLBACK_PROGRAM       V_REPID

*   I_CALLBACK_PF_STATUS_SET = ' '

*   I_CALLBACK_USER_COMMAND  = '

*     IT_EXCLUDING = ''

.

*provide perform. for select the data

PERFORM SELECT_DATA.

插入字段结构

*call makt append list

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

  EXPORTING

    IS_LAYOUT                  V_LAYOUT

    IT_FIELDCAT                IT_MAKT_FIELD

    I_TABNAME                  'MAKT'

    IT_EVENTS                  IT_EVENTS

*   IT_SORT                    =

*   I_TEXT                     = ' '

  TABLES

    T_OUTTAB                   IT_MAKT

  EXCEPTIONS

    PROGRAM_ERROR              1

    MAXIMUM_OF_APPENDS_REACHED 2

    OTHERS                     3.

*call mard append list

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

  EXPORTING

    IS_LAYOUT                  V_LAYOUT

    IT_FIELDCAT                IT_MARD_FIELD

    I_TABNAME                  'MARD'

    IT_EVENTS                  IT_EVENTS

*   IT_SORT                    =

*   I_TEXT                     = ' '

  TABLES

    T_OUTTAB                   IT_MARD

  EXCEPTIONS

    PROGRAM_ERROR              1

    MAXIMUM_OF_APPENDS_REACHED 2

    OTHERS                     3.

*display the data

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  .

*&---------------------------------------------------------------------*

*&      Form  TOP_PAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM TOP_PAGE.

  WRITE:'THIS IS BLOCKED ALV REPORT PROGRAM BASED ON 3 BLOCKS' COLOR 5

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Korea Zou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值