多层LOOP嵌套循环优化

TYPES:BEGIN OF TYP_DATA,
        MATNR TYPE MATNR,
        WERKS TYPE WERKS_D,
        LGORT TYPE LGORT_D,
        LABST TYPE LABST,
      END OF TYP_DATA.

DATA: GT_DATA TYPE TABLE OF TYP_DATA,
      LW_DATA TYPE TYP_DATA.

DATA:LV_TIME_BEG TYPE TIMESTAMPL,
     LV_TIME_END TYPE TIMESTAMPL.
DATA L_TEXT TYPE TIMESTAMPL.
DATA L_MESSAGE TYPE CHAR100.
DATA LV_TABIX TYPE I.

SELECT      MATNR FROM MARA
       INTO TABLE @DATA(LT_MARA).

SELECT MATNR,WERKS,LGORT,LABST FROM MARD
INTO TABLE @DATA(LT_MARD).


GET TIME STAMP FIELD LV_TIME_BEG.

CLEAR GT_DATA.
LOOP AT  LT_MARA INTO DATA(LS_MARA).

  LOOP AT  LT_MARD  INTO DATA(LS_MARD) WHERE MATNR = LS_MARA-MATNR.
    MOVE-CORRESPONDING LS_MARA TO LW_DATA.
    MOVE-CORRESPONDING LS_MARD TO LW_DATA.
    APPEND LW_DATA TO GT_DATA.
  ENDLOOP.
ENDLOOP.

GET TIME STAMP FIELD LV_TIME_END.

L_TEXT = LV_TIME_END - LV_TIME_BEG .

DESCRIBE TABLE GT_DATA LINES DATA(L_TABIX).
L_MESSAGE = |优化前内表条目{ L_TABIX },执行时间{ L_TEXT }|.

WRITE:   L_MESSAGE.



GET TIME STAMP FIELD LV_TIME_BEG.

SORT LT_MARD BY MATNR.

CLEAR GT_DATA.
LOOP AT  LT_MARA INTO LS_MARA.

  CLEAR LV_TABIX.
  READ TABLE LT_MARD TRANSPORTING NO FIELDS WITH  KEY MATNR = LS_MARA-MATNR BINARY SEARCH.
  IF  SY-SUBRC = 0.

    LV_TABIX = SY-TABIX.

    LOOP AT  LT_MARD  INTO LS_MARD  FROM LV_TABIX.

      IF LS_MARA-MATNR NE LS_MARD-MATNR.
        EXIT.
      ENDIF.

      MOVE-CORRESPONDING LS_MARA TO LW_DATA.
      MOVE-CORRESPONDING LS_MARD TO LW_DATA.
      APPEND LW_DATA TO GT_DATA.

    ENDLOOP.

  ENDIF.

ENDLOOP.

GET TIME STAMP FIELD LV_TIME_END.

L_TEXT = LV_TIME_END - LV_TIME_BEG .

DESCRIBE TABLE GT_DATA LINES L_TABIX.
L_MESSAGE = |优化后内表条目{ L_TABIX },执行时间{ L_TEXT }|.

WRITE: /  L_MESSAGE.

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值