sap 内表巧用提高系统效率

本文介绍了一种在ABAP中使用内表替代子查询的方法,以提高程序执行效率。通过对内表的操作来实现原本需要子查询才能完成的功能,从而避免了因ABAP SELECT不支持子查询所带来的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为abap  select 不支持 子查询;

很多时候,只有把记录保存在一个内

很多时候,只有把记录保存在一个内表中,然后在通过内表循环再

loop at 内表 

  select * from 表 where = 表~id =内表-id

endloop.

为此程序执行效率低:

可以用下列方式:

 DATABEGIN OF i_tab OCCURS 0 ,
      sign(1),
      option(2),
      low  LIKE afko-aufnr,
      high  LIKE afko-aufnr,
 END OF i_tab.

INTO CORRESPONDING FIELDS OF TABLE i_tab .

 I_tab-sign  = 'I'.
            I_tab-option  = 'EQ'.
            MODIFY  I_tab  TRANSPORTING sign  option WHERE option = ''.

 I_tab-sign  = 'I'.
            I_tab-option  = 'EQ'.
            MODIFY  I_tab  TRANSPORTING sign  option WHERE option = ''.

           select
             AFPO~AUFNR   "生产订单
             max( AFVC~VORNR ) as VORNR
            APPENDING CORRESPONDING FIELDS OF TABLE  I_Pro
            FROM AFPO

               INNER JOIN afko ON afpo~mandt = afko~mandt AND afpo~aufnr = afko~aufnr
               INNER JOIN makt ON afpo~mandt = makt~mandt AND afpo~matnr = makt~matnr AND makt~spras = sy-langu
               INNER JOIN mara ON mara~mandt = makt~mandt AND mara~matnr = makt~matnr
               INNER JOIN afvc ON afko~aufpl = afvc~aufpl
               INNER JOIN afvv ON afvv~aufpl = afvc~aufpl AND afvv~aplzl = afvc~aplzl
               INNER JOIN affl ON affl~aufpl = afko~aufpl
               INNER JOIN aufk ON afko~aufnr = aufk~aufnr
               INNER JOIN JEST ON AUFK~OBJNR = JEST~OBJNR AND JEST~STAT = 'I0002'
                where afko~aufnr in I_pro1 AND AFVC~OBJNR NOT IN i_tab  group by AFPO~AUFNR  .


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值