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输出结果,自己选择输出方式。
文章来自于网络,如果侵犯了您的权益,请联系站长删除!