Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_PO_CHANGE

Former Member
0 Likes
2,496

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

1 ACCEPTED SOLUTION
Read only

0 Likes
2,027

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,

7 REPLIES 7
Read only

0 Likes
2,028

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,

Read only

0 Likes
2,027

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

Read only

0 Likes
2,027

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

Read only

0 Likes
2,027

thanks bro,

but i got error uncomment that return field in function module...any standard structure avlable to pass return field .....

Thanks & regards,

Raja

Read only

0 Likes
2,027

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.

Read only

0 Likes
2,027

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.

Read only

0 Likes
2,027

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