05-26-2009 5:31 PM
Hi,
can somenone help me on adding an item or changing or updating a purchase requistion
with these Function Modules.
BAPI_PR_CHANGE
BAPI_REQUISITION_CHANGE
ME_UPDATE_REQUISITION
I have tried several hours to do that but I regret to say without any success.
It is also Ok when I can have very simple coding exanple.
Kindly Regards
ertas
05-26-2009 6:11 PM
Hi,
Try this sample code to change purchase org of a PR using BAPI_REQUISITION_CHANGE
PARAMETERS : P_BANFN TYPE EKKO-EBELN,
P_EKGRP TYPE EKKO-EKGRP.
DATA : LT_BAPIEBAN LIKE BAPIEBAN OCCURS 0 WITH HEADER LINE,
LT_BAPIRETURN LIKE BAPIRETURN OCCURS 0 WITH HEADER LINE,
LT_BAPI_OLD LIKE BAPIEBANV OCCURS 0 WITH HEADER LINE,
LT_BAPI_NEW LIKE BAPIEBANV OCCURS 0 WITH HEADER LINE.
CLEAR : LT_BAPIEBAN, LT_BAPIEBAN[], LT_BAPIRETURN, LT_BAPIRETURN[],
LT_BAPI_OLD, LT_BAPI_OLD[], LT_BAPI_NEW, LT_BAPI_NEW[].
CALL FUNCTION 'BAPI_REQUISITION_GETDETAIL'
EXPORTING
NUMBER = P_BANFN
TABLES
REQUISITION_ITEMS = LT_BAPIEBAN
RETURN = LT_BAPIRETURN
EXCEPTIONS
OTHERS = 1.
LOOP AT LT_BAPIEBAN .
CLEAR : LT_BAPI_OLD, LT_BAPI_NEW.
MOVE-CORRESPONDING LT_BAPIEBAN TO LT_BAPI_OLD.
MOVE-CORRESPONDING LT_BAPIEBAN TO LT_BAPI_NEW.
LT_BAPI_NEW-PUR_GROUP = P_EKGRP.
APPEND LT_BAPI_OLD.
APPEND LT_BAPI_NEW.
ENDLOOP.
CALL FUNCTION 'BAPI_REQUISITION_CHANGE'
EXPORTING
NUMBER = P_BANFN
TABLES
REQUISITION_ITEMS_OLD = LT_BAPI_OLD
REQUISITION_ITEMS_NEW = LT_BAPI_NEW
RETURN = LT_BAPIRETURN
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC NE 0 OR SY-MSGNO NE '041'.
P_TYPE = 'F'.
CLEAR P_MESSAGE.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SY-MSGID
MSGNR = SY-MSGNO
MSGV1 = SY-MSGV1
MSGV2 = SY-MSGV2
MSGV3 = SY-MSGV3
MSGV4 = SY-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = P_MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
P_TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'Y'.
ENDIF.
Regards
Bala Krishna
05-26-2009 6:11 PM
Hi,
Try this sample code to change purchase org of a PR using BAPI_REQUISITION_CHANGE
PARAMETERS : P_BANFN TYPE EKKO-EBELN,
P_EKGRP TYPE EKKO-EKGRP.
DATA : LT_BAPIEBAN LIKE BAPIEBAN OCCURS 0 WITH HEADER LINE,
LT_BAPIRETURN LIKE BAPIRETURN OCCURS 0 WITH HEADER LINE,
LT_BAPI_OLD LIKE BAPIEBANV OCCURS 0 WITH HEADER LINE,
LT_BAPI_NEW LIKE BAPIEBANV OCCURS 0 WITH HEADER LINE.
CLEAR : LT_BAPIEBAN, LT_BAPIEBAN[], LT_BAPIRETURN, LT_BAPIRETURN[],
LT_BAPI_OLD, LT_BAPI_OLD[], LT_BAPI_NEW, LT_BAPI_NEW[].
CALL FUNCTION 'BAPI_REQUISITION_GETDETAIL'
EXPORTING
NUMBER = P_BANFN
TABLES
REQUISITION_ITEMS = LT_BAPIEBAN
RETURN = LT_BAPIRETURN
EXCEPTIONS
OTHERS = 1.
LOOP AT LT_BAPIEBAN .
CLEAR : LT_BAPI_OLD, LT_BAPI_NEW.
MOVE-CORRESPONDING LT_BAPIEBAN TO LT_BAPI_OLD.
MOVE-CORRESPONDING LT_BAPIEBAN TO LT_BAPI_NEW.
LT_BAPI_NEW-PUR_GROUP = P_EKGRP.
APPEND LT_BAPI_OLD.
APPEND LT_BAPI_NEW.
ENDLOOP.
CALL FUNCTION 'BAPI_REQUISITION_CHANGE'
EXPORTING
NUMBER = P_BANFN
TABLES
REQUISITION_ITEMS_OLD = LT_BAPI_OLD
REQUISITION_ITEMS_NEW = LT_BAPI_NEW
RETURN = LT_BAPIRETURN
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC NE 0 OR SY-MSGNO NE '041'.
P_TYPE = 'F'.
CLEAR P_MESSAGE.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SY-MSGID
MSGNR = SY-MSGNO
MSGV1 = SY-MSGV1
MSGV2 = SY-MSGV2
MSGV3 = SY-MSGV3
MSGV4 = SY-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = P_MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
P_TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'Y'.
ENDIF.
Regards
Bala Krishna
05-26-2009 10:35 PM
Bala Krishna,
I thank you very much for your kindly efforts.
I have run your coding and I get the message
"Material purchase requisition" is not allowed (ORD 900043)
Do you know why this is not possible ? Is this a common case ?
Regards
ertas