Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

According to SAP Note 493900 Q3 reset of the release strategy for purchase order only takes place if CEKKO-GNETW is higher than the old one or CEKKO-GNETW fall off a lower interval if there is no tolerance limit maintained.

Here is how it is done besides of the standard; copy Badi “ME_PURCHDOC_POSTED” and in the method code as follows;

DATA: LINE_EKPO TYPE I ,
LINE_EKPO_OLD TYPE I ,
EKPO_CHANGED TYPE C LENGTH 1,
LS_EKPO_OLD TYPE UEKPO,
LS_EKPO TYPE UEKPO.

CLEAR EKPO_CHANGED.
LOOP AT IM_EKPO INTO LS_EKPO.
LOOP AT IM_EKPO_OLD INTO LS_EKPO_OLD WHERE EBELP = LS_EKPO-EBELP.
IF LS_EKPO-NETWR NE LS_EKPO_OLD-NETWR OR
LS_EKPO-MENGE NE LS_EKPO_OLD-MENGE .
EKPO_CHANGED = 'X'.
ENDIF.
ENDLOOP.
ENDLOOP.

DESCRIBE TABLE IM_EKPO     LINES LINE_EKPO .
DESCRIBE TABLE IM_EKPO_OLD LINES LINE_EKPO_OLD .

FIELD-SYMBOLS: <LF_REL_CODE> TYPE BAPIMMPARA-REL_CODE.
DATA :
REL_STATUS_NEW TYPE BAPIMMPARA-REL_STATUS,
REL_INDICATOR_NEW TYPE BAPIMMPARA-PO_REL_IND,
RETURN TYPE TABLE OF BAPIRETURN .

DATA: LS_RETURN          TYPE BAPIRETURN,
LT_BAPIRETURN      TYPE TABLE OF BAPIRETURN,
LS_RELEASE_INFO    TYPE BAPIRLGNPO,
LS_RELEASE_POSTED  TYPE BAPIRLCOPO,
LF_COMP_NUM        TYPE I,
LF_STRING          TYPE STRING,
LF_ERROR           TYPE FLAG,
LV_UNAME           TYPE SY-UNAME.

*if quantity or net price is changed


( IM_EKKO_OLD-FRGSX EQ IM_EKKO-FRGSX AND
EKPO_CHANGED      EQ  'X' AND
IM_EKKO_OLD-EBELN IS NOT INITIAL ) .

IF IM_EKKO-FRGZU     = IM_EKKO_OLD-FRGZU .

CALL FUNCTION 'ZMM_PO_RESET_RELEASE'
EXPORTING
IM_EKKO       = IM_EKKO
.
ENDIF.
ENDIF.

ENDIF.

Function ZMM_PO_RESET_RELEASE contains;

FIELD-SYMBOLS: <LF_REL_CODE> TYPE BAPIMMPARA-REL_CODE.
DATA :
REL_STATUS_NEW TYPE BAPIMMPARA-REL_STATUS,
REL_INDICATOR_NEW TYPE BAPIMMPARA-PO_REL_IND,
RETURN TYPE TABLE OF BAPIRETURN .

DATA: LS_RETURN          TYPE BAPIRETURN,
LT_BAPIRETURN      TYPE TABLE OF BAPIRETURN,
LS_RELEASE_INFO    TYPE BAPIRLGNPO,
LS_RELEASE_POSTED  TYPE BAPIRLCOPO,
LF_COMP_NUM        TYPE I,
LF_STRING          TYPE STRING,
LF_ERROR           TYPE FLAG,

CALL FUNCTION 'BAPI_PO_GETRELINFO'
EXPORTING
PURCHASEORDER          = IM_EKKO-EBELN
IMPORTING
GENERAL_RELEASE_INFO   = LS_RELEASE_INFO
RELEASE_ALREADY_POSTED = LS_RELEASE_POSTED
TABLES
RETURN                 = LT_BAPIRETURN.

LF_COMP_NUM = 2.

DO 8 TIMES.
ASSIGN COMPONENT LF_COMP_NUM OF STRUCTURE LS_RELEASE_POSTED
TO <LF_REL_CODE>.

IF <LF_REL_CODE> IS NOT INITIAL.

CALL FUNCTION 'BAPI_PO_RESET_RELEASE'
EXPORTING
PURCHASEORDER     = IM_EKKO-EBELN
PO_REL_CODE       = <LF_REL_CODE>
USE_EXCEPTIONS    = SPACE
IMPORTING
REL_STATUS_NEW    = REL_STATUS_NEW
REL_INDICATOR_NEW = REL_INDICATOR_NEW
TABLES
RETURN            = RETURN.
LOOP AT RETURN INTO ls_return WHERE TYPE = 'E' OR TYPE = 'A' .
EXIT.
ENDLOOP.
IF SY-SUBRC NE 0 .
WAIT UP TO 3 SECONDS.
ENDIF.
ENDIF.

LF_COMP_NUM = LF_COMP_NUM - 1.

ENDDO.
ENDFUNCTION.

Regards

Melih

P.S. You may need to copy and change BAPI_PO_RESET_RELEASE if you do not want to stuck with standard authority checks.

3 Comments
Labels in this area