abap对采购订单强制置为”交货已完成“状态(BAPI_PO_CHANGE、BAPI_PO_RELEASE、BAPI_PO_RESET_RELEASE)
生活随笔
收集整理的這篇文章主要介紹了
abap对采购订单强制置为”交货已完成“状态(BAPI_PO_CHANGE、BAPI_PO_RELEASE、BAPI_PO_RESET_RELEASE)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
項目中,需要對一些采購訂單做強制“交貨已完成”,如果采購訂單已批準,是不能用BAPI_PO_CHANGE更改狀態(tài)的,只有先除去“批準”狀態(tài) ,再“交貨已完成”,然后再置為批準狀態(tài),下面是函數(shù)代碼,希望對用到的兄弟有幫助。
DATA:PO_NUMBER?LIKE?EKKO-EBELN.
DATA :T_POITEM? LIKE ?BAPIMEPOITEM? OCCURS ? 0 ? WITH ? HEADER ? LINE .DATA :T_POITEMX? LIKE ?BAPIMEPOITEMX? OCCURS ? 0 ? WITH ? HEADER ? LINE .
DATA :T_RETURN? LIKE ?BAPIRET2? OCCURS ? 0 ? WITH ? HEADER ? LINE .
DATA :?LV_FRGKE? LIKE ?EKKO-FRGKE,
??????LV_FRGSX? LIKE ?EKKO-FRGSX.
DATA : RETURN ? TYPE ? TABLE ? OF ?BAPIRETURN? WITH ? HEADER ? LINE .
REFRESH ? OUTPUT .
CLEAR ? OUTPUT .
SORT ? INPUT ? BY ?EBELN.
LOOP ? AT ? INPUT .
????? CLEAR ?T_POITEM.
????? REFRESH ?T_POITEM.
????? CLEAR ?T_POITEMX.
????? REFRESH ?T_POITEMX.
????? MOVE -CORRESPONDING? INPUT ? TO ? OUTPUT .
????? CLEAR ?LV_FRGKE.
????? SELECT ? SINGLE
????????????FRGKE
????????????FRGSX
???????????? INTO ?(LV_FRGKE,LV_FRGSX)
???????????? FROM ?EKKO
???????????? WHERE ?EBELN?=? INPUT -EBELN.
*?????如果采購訂單被批準了,則先取消批準,才能修改
?????? IF ?LV_FRGKE?=? 'R' .
????????? CALL ? FUNCTION ? 'BAPI_PO_RESET_RELEASE'
?????????????? EXPORTING
????????????????PURCHASEORDER?=? INPUT -EBELN
????????????????PO_REL_CODE???=?LV_FRGSX
????????????????USE_EXCEPTIONS?=? 'X'
?????????????? TABLES
???????????????? RETURN ?=? RETURN .
????????? CLEAR ? RETURN .
????????? READ ? TABLE ? RETURN ? WITH ? KEY ? TYPE ?=? 'E' .
????????? IF ?SY-SUBRC? EQ ? 0 .
???????????? OUTPUT -FLAG?=? 'E' .
???????????? OUTPUT - MESSAGE ?=? RETURN - MESSAGE .
????????? ENDIF .
?????? ENDIF .
?????? IF ? OUTPUT -FLAG?<>? 'E' .
?????????PO_NUMBER?=? INPUT -EBELN.
?????????T_POITEM-PO_ITEM?=? INPUT -EBELP.
?????????T_POITEM-NO_MORE_GR?=? 'X' .
????????? APPEND ?T_POITEM.
????????? CLEAR ?T_POITEM.
?????????T_POITEMX-PO_ITEM?=? INPUT -EBELP.
?????????T_POITEMX-PO_ITEMX?=? 'X' .
?????????T_POITEMX-NO_MORE_GR?=? 'X' .
????????? APPEND ?T_POITEMX.
????????? CLEAR ?T_POITEMX.
????????? CALL ? FUNCTION ? 'BAPI_PO_CHANGE'
???????????? EXPORTING
??????????????PURCHASEORDER?=?PO_NUMBER
???????????? TABLES
?????????????? RETURN ????????=?T_RETURN
??????????????POITEM????????=?T_POITEM
??????????????POITEMX???????=?T_POITEMX.
??????????? READ ? TABLE ?T_RETURN? WITH ? KEY ? TYPE ?=? 'E' .
??????????? IF ?SY-SUBRC? EQ ? 0 .
????????????? OUTPUT -FLAG?=? 'E' .
????????????? OUTPUT - MESSAGE ?=?T_RETURN- MESSAGE .
????????????? ROLLBACK ? WORK .
??????????? ELSE .
????????????? OUTPUT -FLAG?=? 'S' .
????????????? OUTPUT - MESSAGE ?=? '交貨已完成更改成功!' .
????????????? CALL ? FUNCTION ? 'BAPI_TRANSACTION_COMMIT'
??????????????? EXPORTING
????????????????? WAIT ?=? 'X' .
??????????? ENDIF .
?????? ENDIF .
*?????如果采購訂單被批準了,則先取消批準,修改交貨已完成后,在重新設置上批準狀態(tài)
?????? IF ?LV_FRGKE?=? 'R' ? AND ? OUTPUT -FLAG?<>? 'E' .
????????? CALL ? FUNCTION ? 'BAPI_PO_RELEASE'
?????????????? EXPORTING
????????????????PURCHASEORDER?=? INPUT -EBELN
????????????????PO_REL_CODE???=?LV_FRGSX
????????????????USE_EXCEPTIONS?=? 'X'
?????????????? TABLES
???????????????? RETURN ?=? RETURN .
?????? ENDIF .
?????? APPEND ? OUTPUT .
?????? CLEAR ? OUTPUT .
ENDLOOP .
總結
以上是生活随笔為你收集整理的abap对采购订单强制置为”交货已完成“状态(BAPI_PO_CHANGE、BAPI_PO_RELEASE、BAPI_PO_RESET_RELEASE)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sap scc4 客户端设置
- 下一篇: 取成本中心-生产订单