SAP Table RESB 两种方法的对比

第一种写法,稍微快一下
1.
DATA: BEGIN OF gt_order OCCURS 0,
      aufnr LIKE afko-aufnr,
      rsnum LIKE afko-rsnum,
      matnr LIKE afpo-matnr,
      psmng LIKE afpo-psmng,
      meins LIKE afpo-meins,
      objnr LIKE aufk-objnr,
      werks LIKE aufk-werks,
      gltrp LIKE afko-gltrp, "basic finish date
      gstrp LIKE afko-gstrp, "basic start date
      lead_aufnr LIKE afko-lead_aufnr,
      lead_gltrp LIKE afko-gltrp,
      model LIKE afpo-matnr,
      projn LIKE afpo-projn,
      alprf1 LIKE zcustomer-alprf, "Production lot Priority
      alprf2 LIKE zcustomer-alprf, "Model Priority
      status TYPE c LENGTH 1,
      rate(3) TYPE p DECIMALS 2,
      END OF gt_order.
DATA: BEGIN OF wa_resb,
        rsnum LIKE resb-rsnum,
        rspos LIKE resb-rspos,
        aufst TYPE char2,
        aufwg TYPE char4,
        rsart LIKE resb-rsart,
        aufnr LIKE resb-aufnr,
        plnum LIKE resb-plnum,
        werks LIKE resb-werks,
        matnr LIKE resb-matnr,
        sobkz LIKE resb-sobkz,
        baugr LIKE resb-baugr,
        sobsl LIKE marc-sobsl, "Special procurement = 50
*        matkl LIKE mara-matkl,
*        prdha LIKE mara-prdha,
        meins LIKE resb-meins,
        bdmng LIKE resb-bdmng, "Requirement qty
        enmng LIKE resb-enmng, "Quantity Withdrawn
        almng TYPE menge_d,    "Allocated Quantity
        bdter LIKE resb-bdter, "Requirement Date for Component
        alpgr LIKE resb-alpgr, "AltItemGroup
        alprf LIKE resb-alprf, "Priority
        baust LIKE resb-baust, "Find the component for planned order
        bauwg LIKE resb-bauwg, "Find the component for planned order
        status,
        pspel LIKE resb-pspel,
        xloek LIKE resb-xloek,
        dumps LIKE resb-dumps,
*        labst LIKE mard-labst,
*        insme LIKE mard-insme,
*        lblab LIKE mslb-lblab,
*        bdart LIKE resb-bdart,
      END OF wa_resb.

DATA: it_resb LIKE SORTED TABLE OF wa_resb WITH UNIQUE KEY rsnum alpgr aufst aufwg rspos rsart
      WITH HEADER LINE,
      it_resb_s LIKE SORTED TABLE OF wa_resb WITH NON-UNIQUE KEY status matnr werks pspel
      WITH HEADER LINE,
      it_resb_tem LIKE SORTED TABLE OF wa_resb WITH UNIQUE KEY rsnum alpgr aufst aufwg rspos rsart
      WITH HEADER LINE.

 

SELECT a~aufnr a~rsnum a~gstrp a~gltrp a~lead_aufnr
          b~matnr b~psmng b~meins b~projn
          c~objnr c~werks
          INTO CORRESPONDING FIELDS OF TABLE gt_order
          FROM afko AS a
          JOIN afpo AS b ON a~aufnr = b~aufnr
          JOIN aufk AS c ON a~aufnr = c~aufnr
    WHERE a~gstrp >= '20130101'
     and a~gstrp <= '20130301'
     and c~werks EQ '8101'
            AND c~loekz EQ space
            AND b~xloek EQ space.

Check gt_order[] is not initial.

    SORT gt_order.
    SELECT rsnum rspos aufnr werks matnr bdmng meins bdter
           alpgr alprf baugr sobkz enmng pspel meins dumps
           rsart aufwg aufst xloek
      INTO CORRESPONDING FIELDS OF TABLE it_resb
      FROM resb
      FOR ALL ENTRIES IN gt_order
      WHERE rsnum = gt_order-rsnum.

 

 

2.
DATA: BEGIN OF gt_order OCCURS 0,
      aufnr LIKE afko-aufnr,
      rsnum LIKE afko-rsnum,
      matnr LIKE afpo-matnr,
      psmng LIKE afpo-psmng,
      meins LIKE afpo-meins,
      objnr LIKE aufk-objnr,
      werks LIKE aufk-werks,
      gltrp LIKE afko-gltrp, "basic finish date
      gstrp LIKE afko-gstrp, "basic start date
      lead_aufnr LIKE afko-lead_aufnr,
      lead_gltrp LIKE afko-gltrp,
      model LIKE afpo-matnr,
      projn LIKE afpo-projn,
      alprf1 LIKE zcustomer-alprf, "Production lot Priority
      alprf2 LIKE zcustomer-alprf, "Model Priority
      status TYPE c LENGTH 1,
      rate(3) TYPE p DECIMALS 2,
      END OF gt_order.
DATA: BEGIN OF wa_resb,
        rsnum LIKE resb-rsnum,
        rspos LIKE resb-rspos,
        aufst TYPE char2,
        aufwg TYPE char4,
        rsart LIKE resb-rsart,
        aufnr LIKE resb-aufnr,
        plnum LIKE resb-plnum,
        werks LIKE resb-werks,
        matnr LIKE resb-matnr,
        sobkz LIKE resb-sobkz,
        baugr LIKE resb-baugr,
        sobsl LIKE marc-sobsl, "Special procurement = 50
*        matkl LIKE mara-matkl,
*        prdha LIKE mara-prdha,
        meins LIKE resb-meins,
        bdmng LIKE resb-bdmng, "Requirement qty
        enmng LIKE resb-enmng, "Quantity Withdrawn
        almng TYPE menge_d,    "Allocated Quantity
        bdter LIKE resb-bdter, "Requirement Date for Component
        alpgr LIKE resb-alpgr, "AltItemGroup
        alprf LIKE resb-alprf, "Priority
        baust LIKE resb-baust, "Find the component for planned order
        bauwg LIKE resb-bauwg, "Find the component for planned order
        status,
        pspel LIKE resb-pspel,
        xloek LIKE resb-xloek,
        dumps LIKE resb-dumps,
*        labst LIKE mard-labst,
*        insme LIKE mard-insme,
*        lblab LIKE mslb-lblab,
*        bdart LIKE resb-bdart,
      END OF wa_resb.

DATA: it_resb LIKE TABLE OF wa_resb  WITH HEADER LINE.
DATA: it_resb_tem LIKE TABLE OF wa_resb  WITH HEADER LINE.

 

SELECT a~aufnr a~rsnum a~gstrp a~gltrp a~lead_aufnr
          b~matnr b~psmng b~meins b~projn
          c~objnr c~werks
          INTO CORRESPONDING FIELDS OF TABLE gt_order
          FROM afko AS a
          JOIN afpo AS b ON a~aufnr = b~aufnr
          JOIN aufk AS c ON a~aufnr = c~aufnr
    WHERE a~gstrp >= '20130101'
     and a~gstrp <= '20130301'
     and c~werks EQ '8101'
            AND c~loekz EQ space
            AND b~xloek EQ space.

 
Check gt_order[] is not initial.
  SORT gt_order.
  LOOP AT gt_order.
    clear:it_resb_tem,it_resb_tem[].
    SELECT rsnum rspos aufnr werks matnr bdmng meins bdter
           alpgr alprf baugr sobkz enmng pspel meins dumps
           rsart aufwg aufst xloek
      INTO CORRESPONDING FIELDS OF TABLE it_resb_tem
      FROM resb
      WHERE rsnum = gt_order-rsnum.
    IF it_resb_tem[] IS INITIAL.
      CONTINUE.
    ENDIF.

    INSERT LINES OF it_resb_tem INTO TABLE it_resb.
endloop.

 

<think>好的,用户想知道SAPresb对应的行项目的创建人在哪个底。首先,我需要确认resb的作用。resb是生产订单的组件预留,存储了物料需求计划相关的数据,比如组件物料、需求数量等。 接下来,用户想知道这些行项目的创建人信息。通常,SAP中的创建人信息会存储在标准的系统字段里,比如ERNAM和ERDAT,分别代创建人和创建日期。不过,这些字段是否存在于resb中呢?我需要检查resb的结构。 查看resb结构,发现它并没有ERNAM字段。那创建人信息可能存储在关联的其他中。生产订单相关的,比如AFKO(订单抬头数据)和AFPO(订单项),但AFPO主要针对生产订单的物料组件,可能也不直接存储创建人。 考虑到resb中的预留可能关联到生产订单或采购申请,创建人可能关联到这些单据的创建人。例如,生产订单的创建人存储在AFKO的ERNAM字段。如果是采购申请,则需查看EBAN的ERNAM字段。 另外,用户操作记录可能存储在CDHDR和CDPOS变更文档中,但需要配置变更记录才能查询。因此,要找到resb行项目的创建人,可能需要通过关联生产订单或采购申请的来获取ERNAM字段。 总结一下,resb本身不存储创建人,需通过关联AFKO或EBAN等,使用AUFNR或BANFN等关键字段连接,从而获取创建人信息。</think>在SAP系统中,`RESB`(预留/相关需求行项目)本身并不直接存储行项目的创建人信息。创建人信息通常需要通过以下途径关联查询: ### 1. **理解`RESB`的作用** - `RESB`存储生产订单、网络订单等组件的预留需求数据(如物料、数量、需求日期等)。 - 关键字段:`RSNUM`(预留号)、`RSPOS`(行项目号)、`AUFNR`(生产订单号)、`MATNR`(物料号)等。 ### 2. **创建人信息的存储位置** - SAP中创建人(Created By)通常存储在标准字段`ERNAM`中,创建日期在`ERDAT`。 - **问题点**:`RESB`中没有`ERNAM`字段,因此需通过关联其他获取。 ### 3. **关联及查询方法** - **方法1:通过生产订单关联** 若`RESB`行项目属于生产订单(`AUFNR`存在): - 关联:`AFKO`(订单抬头数据)或 `AUFK`(订单主数据) - 关键字段:`AUFNR`(生产订单号) - 查询SQL示例: ```sql SELECT resb.*, afko.ernam AS order_creator FROM resb JOIN afko ON resb.aufnr = afko.aufnr WHERE resb.rsnum = '<预留号>'; ``` - `AFKO.ERNAM`是生产订单的创建人。 - **方法2:通过采购申请关联** 若`RESB`行项目关联到采购申请(`BANFN`存在): - 关联:`EBAN`(采购申请) - 关键字段:`BANFN`(采购申请号) - 查询SQL示例: ```sql SELECT resb.*, eban.ernam AS pr_creator FROM resb JOIN eban ON resb.banfn = eban.banfn WHERE resb.rsnum = '<预留号>'; ``` - `EBAN.ERNAM`是采购申请的创建人。 ### 4. **特殊情况处理** - **预留直接创建(非订单/采购申请)**: 若预留通过事务代码`MB21`直接创建,创建人信息存储在`RESN`的`ERNAM`字段(需确认系统配置)。 ### 5. **补充说明** - **变更记录**:如需追溯修改记录,可查询`CDHDR`(抬头)和`CDPOS`(行项目),但需启用变更记录功能。 - **权限要求**:直接访问底需授权对象`S_TABU_NAM`权限。 ### 总结 `RESB`行项目的创建人需通过关联获取: - 生产订单场景 → 查`AFKO.ERNAM` - 采购申请场景 → 查`EBAN.ERNAM` - 直接创建的预留 → 查`RESN.ERNAM`(若适用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值