‎2015 Dec 29 4:07 PM
hi frndz,
i have some problem to using "BAPI_PO_CHANGE" function module.
my task is update the EREV table three fields based on section criteria
that three filed are given below :
EREV-REVOK,
EREV-RSCOD,
EREV-CRNAM,
please suggest me how to done that process
Thanks & regards,
Raja
‎2015 Dec 29 5:17 PM
Hi,
Version data can be updated by using VERSIONS import parameter of BAPI_PO_CHANGE. Use the following fields of VERSION structure BAPIMEDCM.
EREV-REVOK -> BAPIMEDCM-COMPLETED
EREV-RSCOD -> BAPIMEDCM-REASON
EREV-CRNAM -> BAPIMEDCM-REQ_BY
Regards,
‎2015 Dec 29 5:17 PM
Hi,
Version data can be updated by using VERSIONS import parameter of BAPI_PO_CHANGE. Use the following fields of VERSION structure BAPIMEDCM.
EREV-REVOK -> BAPIMEDCM-COMPLETED
EREV-RSCOD -> BAPIMEDCM-REASON
EREV-CRNAM -> BAPIMEDCM-REQ_BY
Regards,
‎2015 Dec 29 5:48 PM
hi abhishek,
thanks for your reply...
am using that below code for three filed updatetion ....
wa-ebeln is get the po number based on selection screen condition ...
this below code is work for wa-ebelen(po number) based 3 filed updation...
it's correct code pls help me frnd
DATA BEGIN OF BAPIMEDCM1.
INCLUDE STRUCTURE BAPIMEDCM.
DATA END OF BAPIMEDCM1.
*BAPIMEDCM-COMPLETED =
BAPIMEDCM1-REASON = 'C003'.
BAPIMEDCM1-REQ_BY = 'UNIXID'.
loop AT itab INTO wa.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
PURCHASEORDER = wa-ebeln
VERSIONS = BAPIMEDCM1
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
* TABLES
* RETURN =
* POITEM =
POITEMX = itab1.
ENDLOOP.
Thanks & regards,
Raja
‎2015 Dec 29 7:59 PM
Hi Raja,
The code looks good. Are you updating the Item details? If not, you can comment the POITEMX table.
Uncomment the RETURN table and get the errors. If there are no errors then you need to call the FM: BAPI_TRANSACTION_COMMIT to save the changes.
-Chandra
‎2015 Dec 29 8:11 PM
thanks bro,
but i got error uncomment that return field in function module...any standard structure avlable to pass return field .....
Thanks & regards,
Raja
‎2015 Dec 29 8:16 PM
Check the BAPI and you will know the type of structure/table that needs to be passed.
You can use: lt_return type bapiret2_t.
‎2015 Dec 29 8:22 PM
thanks bro,
but i got run time error....
my total code is given below ...
it's correct
TABLES: EKKO, "PURCHASING DOCUMENT HEADER
EKPO, "PURCHASING DOCUMENT ITEM
TVARVC, "TABLE OF VARIANT VARIABLES (CLIENT-SPECIFIC)
EREV.
TYPES: BEGIN OF STRU,
AEDAT TYPE EKKO-AEDAT,
BSART TYPE EKKO-BSART,
EKORG TYPE EKKO-EKORG,
EBELN TYPE EKKO-EBELN,
LIFNR TYPE EKKO-LIFNR,
MATKL TYPE EKPO-MATKL,
END OF STRU.
TYPES: BEGIN OF STRU1,
REVOK TYPE EREV-REVOK,
RSCOD TYPE EREV-RSCOD,
CRNAM TYPE EREV-CRNAM,
END OF STRU1.
DATA : ITAB TYPE STANDARD TABLE OF STRU,
WA TYPE STRU.
DATA : ITAB1 TYPE STANDARD TABLE OF STRU1,
WA1 TYPE STRU1.
PARAMETERS: R1 RADIOBUTTON GROUP RAD1 DEFAULT 'X', "USE LAST PROGRAM RUN
R2 RADIOBUTTON GROUP RAD1. "PO CREATION DATE
SELECT-OPTIONS: PO_C_D FOR EKKO-AEDAT , "PO CREATION DATE
PO_DOC FOR EKKO-BSART OBLIGATORY, "PO DOCUMENT TYPE
PUR_ORG FOR EKKO-EKORG OBLIGATORY, "PURCHASING ORGANIZATION
PO_NUM FOR EKKO-EBELN, "PURCHASE ORDER NUMBER
VNDR_NUM FOR EKKO-LIFNR OBLIGATORY, "VENDOR NUMBER
MAT_GRUP FOR EKPO-MATKL . "MATERIAL GROUP
SELECT
A~AEDAT
A~BSART
A~EKORG
A~EBELN
A~LIFNR
B~MATKL
INTO CORRESPONDING FIELDS OF TABLE ITAB FROM EKKO AS A
INNER JOIN EKPO AS B ON ( A~EBELN = B~EBELN ) WHERE A~AEDAT IN PO_C_D AND
A~BSART IN PO_DOC AND
A~EKORG IN PUR_ORG AND
A~EBELN IN PO_NUM AND
A~LIFNR IN VNDR_NUM .
** Itemx table to update
*wa1-RSCOD = 'C003'.
*wa1-CRNAM = 'UNIXID'.
*APPEND wa1 TO itab1.
*
*w_versions-RSCOD = 'C003'.
*w_versions-CRNAM = 'UNIXID'.
*w_versions-req_by = p_werks."w_ekpo-werks.
DATA BEGIN OF BAPIMEDCM1.
INCLUDE STRUCTURE BAPIMEDCM.
DATA END OF BAPIMEDCM1.
*BAPIMEDCM-COMPLETED =
BAPIMEDCM1-REASON = 'C003'.
BAPIMEDCM1-REQ_BY = 'UNIXID'.
DATA lt_return type bapiret2_t.
loop AT itab INTO wa.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
PURCHASEORDER = wa-ebeln
* POHEADER =
* POHEADERX =
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
* POEXPIMPHEADER =
* POEXPIMPHEADERX =
VERSIONS = BAPIMEDCM1
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
* PARK_UNCOMPLETE =
* PARK_COMPLETE =
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
* TABLES
RETURN = lt_return
* POITEM =
* POITEMX = itab1
* POADDRDELIVERY =
* POSCHEDULE =
* POSCHEDULEX =
* POACCOUNT =
* POACCOUNTPROFITSEGMENT =
* POACCOUNTX =
* POCONDHEADER =
* POCONDHEADERX =
* POCOND =
* POCONDX =
* POLIMITS =
* POCONTRACTLIMITS =
* POSERVICES =
* POSRVACCESSVALUES =
* POSERVICESTEXT =
* EXTENSIONIN =
* EXTENSIONOUT =
* POEXPIMPITEM =
* POEXPIMPITEMX =
* POTEXTHEADER =
* POTEXTITEM =
* ALLVERSIONS =
* POPARTNER =
* POCOMPONENTS =
* POCOMPONENTSX =
* POSHIPPING =
* POSHIPPINGX =
* POSHIPPINGEXP =
* POHISTORY =
* POHISTORY_TOTALS =
* POCONFIRMATION =
* SERIALNUMBER =
* SERIALNUMBERX =
* INVPLANHEADER =
* INVPLANHEADERX =
* INVPLANITEM =
* INVPLANITEMX =
* POHISTORY_MA =
.
ENDLOOP.
‎2015 Dec 30 5:21 AM
Hi,
There is error in the code related to data type and parameter declaration for the BAPI.
Check the below code.
TABLES: ekko, "PURCHASING DOCUMENT HEADER
ekpo, "PURCHASING DOCUMENT ITEM
tvarvc, "TABLE OF VARIANT VARIABLES (CLIENT-SPECIFIC)
erev.
TYPES: BEGIN OF stru,
aedat TYPE ekko-aedat,
bsart TYPE ekko-bsart,
ekorg TYPE ekko-ekorg,
ebeln TYPE ekko-ebeln,
lifnr TYPE ekko-lifnr,
matkl TYPE ekpo-matkl,
END OF stru.
TYPES: BEGIN OF stru1,
revok TYPE erev-revok,
rscod TYPE erev-rscod,
crnam TYPE erev-crnam,
END OF stru1.
DATA : itab TYPE STANDARD TABLE OF stru,
wa TYPE stru.
DATA : itab1 TYPE STANDARD TABLE OF stru1,
wa1 TYPE stru1.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X', "USE LAST PROGRAM RUN
r2 RADIOBUTTON GROUP rad1. "PO CREATION DATE
SELECT-OPTIONS: po_c_d FOR ekko-aedat , "PO CREATION DATE
po_doc FOR ekko-bsart OBLIGATORY, "PO DOCUMENT TYPE
pur_org FOR ekko-ekorg OBLIGATORY, "PURCHASING ORGANIZATION
po_num FOR ekko-ebeln, "PURCHASE ORDER NUMBER
vndr_num FOR ekko-lifnr OBLIGATORY, "VENDOR NUMBER
mat_grup FOR ekpo-matkl . "MATERIAL GROUP
SELECT
a~aedat
a~bsart
a~ekorg
a~ebeln
a~lifnr
b~matkl
INTO CORRESPONDING FIELDS OF TABLE itab FROM ekko AS a
INNER JOIN ekpo AS b ON ( a~ebeln = b~ebeln ) WHERE a~aedat IN po_c_d AND
a~bsart IN po_doc AND
a~ekorg IN pur_org AND
a~ebeln IN po_num AND
a~lifnr IN vndr_num .
** Itemx table to update
*wa1-RSCOD = 'C003'.
*wa1-CRNAM = 'UNIXID'.
*APPEND wa1 TO itab1.
*
*w_versions-RSCOD = 'C003'.
*w_versions-CRNAM = 'UNIXID'.
*w_versions-req_by = p_werks."w_ekpo-werks.
DATA BEGIN OF bapimedcm1.
INCLUDE STRUCTURE bapimedcm.
DATA END OF bapimedcm1.
*BAPIMEDCM-COMPLETED =
bapimedcm1-reason = 'C003'.
bapimedcm1-req_by = 'UNIXID'.
DATA: lt_return TYPE TABLE OF bapiret2,
wa_ret TYPE bapiret2.
BREAK-POINT.
LOOP AT itab INTO wa.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = wa-ebeln
* POHEADER =
* POHEADERX =
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
* POEXPIMPHEADER =
* POEXPIMPHEADERX =
versions = bapimedcm1
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
* PARK_UNCOMPLETE =
* PARK_COMPLETE =
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
return = lt_return
* POITEM =
* POITEMX = itab1
* POADDRDELIVERY =
* POSCHEDULE =
* POSCHEDULEX =
* POACCOUNT =
* POACCOUNTPROFITSEGMENT =
* POACCOUNTX =
* POCONDHEADER =
* POCONDHEADERX =
* POCOND =
* POCONDX =
* POLIMITS =
* POCONTRACTLIMITS =
* POSERVICES =
* POSRVACCESSVALUES =
* POSERVICESTEXT =
* EXTENSIONIN =
* EXTENSIONOUT =
* POEXPIMPITEM =
* POEXPIMPITEMX =
* POTEXTHEADER =
* POTEXTITEM =
* ALLVERSIONS =
* POPARTNER =
* POCOMPONENTS =
* POCOMPONENTSX =
* POSHIPPING =
* POSHIPPINGX =
* POSHIPPINGEXP =
* POHISTORY =
* POHISTORY_TOTALS =
* POCONFIRMATION =
* SERIALNUMBER =
* SERIALNUMBERX =
* INVPLANHEADER =
* INVPLANHEADERX =
* INVPLANITEM =
* INVPLANITEMX =
* POHISTORY_MA =
.
READ TABLE lt_return INTO wa_ret WITH KEY type = 'E'.
IF sy-subrc = 0.
" add suitable error handling.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDLOOP.
Regards
Abhishek