SAP采购订单/申请单批量打上删除标识

QQ交流群:17381976

采购订单/申请 可以使用MEMASSPO操作,实际操作过程中,用户可能需要自己去操作,一般情况下,不会对用户开放批量操作权限。这个时候要自定义开发程序,让用户自己去操作执行。

REPORT ZMM030.

TABLES: ekpo, ekbe, eban, afko, afpo, jest, jcds.

DATA: BEGIN OF itab OCCURS 0,
      ebeln LIKE ekpo-ebeln,
      ebelp LIKE ekpo-ebelp,
      BANFN LIKE EBAN-BANFN,
      BNFPO LIKE EBAN-BNFPO,
      menge LIKE ekpo-menge,
      elikz LIKE ekpo-elikz,
      aufnr LIKE ekkn-aufnr,
      udate LIKE jcds-udate,
      END OF itab.

DATA: BEGIN OF ITAB1 OCCURS 0,
      AUFNR LIKE EKKN-AUFNR,
      UDATE LIKE JCDS-UDATE,
     END OF ITAB1.

DATA: or_objnr LIKE jest-objnr,
      g_index  LIKE sy-tabix,
      g_menge  LIKE ekpo-menge,
      g_count  LIKE sy-tabix,
      g_flag(1) TYPE c,
      g_aufnr  LIKE afko-aufnr,
      g_udate  LIKE jcds-udate.

PARAMETERS : p_werks LIKE ekpo-werks OBLIGATORY,
             p_date  LIKE sy-datum DEFAULT sy-datum,
             p_test  AS CHECKBOX DEFAULT 'X',
START-OF-SELECTION.

******************先取得有效的订单***********************

  CLEAR: itab, itab[].
  SELECT A~AUFNR  A~GLTRP
  INTO (ITAB1-AUFNR ,ITAB1-UDATE)
  FROM CAUFV AS A JOIN JEST AS B ON A~OBJNR = B~OBJNR
  WHERE A~WERKS = P_WERKS AND A~GLTRP = p_date
       AND B~STAT IN ('I0012',          "完成交货的状态
                      'I0045').         "TECO状态
  APPEND ITAB1.
  CLEAR ITAB1.
ENDSELECT.

LOOP AT ITAB1.
  SELECT P~EBELN P~EBELP  P~MENGE P~ELIKZ
    INTO (ITAB-EBELN,ITAB-EBELP,ITAB-MENGE,ITAB-ELIKZ)
    FROM ekpo AS p JOIN ekkn AS n
      ON p~ebeln = n~ebeln
     AND p~ebelp = n~ebelp
   WHERE N~AUFNR = ITAB1-AUFNR
     AND P~LOEKZ <> 'L'
     AND P~ELIKZ = 'X'
     AND p~werks  = p_werks.
     ITAB-AUFNR = ITAB1-AUFNR.
      ITAB-UDATE = ITAB1-UDATE.
     APPEND ITAB.
     CLEAR ITAB.
  ENDSELECT.
ENDLOOP.


LOOP AT ITAB.
  SELECT BANFN BNFPO
  INTO (ITAB-BANFN,ITAB-BNFPO)
  FROM EBAN
  WHERE EBELN = ITAB-EBELN AND EBELP = ITAB-EBELP.
  ENDSELECT.
  MODIFY ITAB.
 CLEAR ITAB.
 ENDLOOP.

  LOOP AT itab.
    g_index = sy-tabix.

      IF itab-elikz <> 'X'.     "交货完成" 指示标识
        DELETE itab INDEX g_index.
      ELSE.
        CLEAR: g_menge.

        SELECT * FROM ekbe
                WHERE ebeln = itab-ebeln
                  AND ebelp = itab-ebelp
                  AND vgabe = '2'.
          IF ekbe-shkzg = 'S'.
            g_menge = g_menge + ekbe-menge.
          ELSE.
            g_menge = g_menge + ekbe-menge * -1.
          ENDIF.
        ENDSELECT.

        IF itab-menge > g_menge.
          DELETE itab INDEX g_index.
        ELSE.
          MODIFY itab INDEX g_index.
        ENDIF.
    ENDIF.
  ENDLOOP.

END-OF-SELECTION.

  LOOP AT itab.
    IF p_test IS INITIAL.
      UPDATE EKPO SET LOEKZ = 'L' "采购订单删除标识
                  WHERE ebeln = itab-ebeln
                    AND ebelp = itab-ebelp.
      UPDATE EBAN SET LOEKZ = 'L'  "请购单删除标识
                  WHERE banfn = itab-banfn
                    AND bnfpo = itab-bnfpo.

    ENDIF.

    WRITE输出结果,或者ALV输出结果,自己选择输出方式。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值