100% found this document useful (2 votes)
229 views

BAPI For PO

This document describes a report that changes the cost center of existing purchase orders. It uses BAPI functions to retrieve purchase order details, change the cost center and business area in the item and account assignments, and commit the changes. The report parameters allow selecting purchase orders by purchase order number and specifying the new cost center and business area.

Uploaded by

atulk103
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
229 views

BAPI For PO

This document describes a report that changes the cost center of existing purchase orders. It uses BAPI functions to retrieve purchase order details, change the cost center and business area in the item and account assignments, and commit the changes. The report parameters allow selecting purchase orders by purchase order number and specifying the new cost center and business area.

Uploaded by

atulk103
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

*& 

Report  ZGM_PO_TEST
*& developed by Gaurav Maheshwari
*  Date: 27th dec 2010
*  Changes: 1. select option for ebeln and logic to change business a
rea added 28th dec2010
*
*&---------------------------------------------------------------------
----------------------*
*& Desc. : Test to change cost center of purchase orders.
*&
*&---------------------------------------------------------------------
----------------------*

REPORT  ZGM_PO_TEST.

TABLES: EKKO, CSKS.
*PARAMETERS: GT_EBELN TYPE EKKO-EBELN OBLIGATORY.
*DATA: GT_EBELN TYPE EKKO-EBELN.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : GT_EBELN FOR EKKO-EBELN.
PARAMETERS: GT_KOSTL TYPE CSKS-KOSTL.
PARAMETERS: GT_GSBER TYPE CSKS-GSBER.
SELECTION-SCREEN END OF BLOCK B1.

*PARAMETERS: GT_KOSTL TYPE CSKS-KOSTL.
*PARAMETERS: GT_GSBER TYPE CSKS-GSBER.

DATA: GT_ACCOUNT TYPE TABLE OF BAPIMEPOACCOUNT WITH HEADER LINE,
      GS_ACCOUNT TYPE BAPIMEPOACCOUNT,
       GT_RETURN     TYPE TABLE OF BAPIRET2,
       GS_RETURN     TYPE BAPIRET2.
*DATA : PONUM LIKE BAPIMEPOHEADER-PO_NUMBER.
DATA: GT_ACCOUNTX TYPE TABLE OF BAPIMEPOACCOUNTX WITH HEADER LINE,
      GS_ACCOUNTX TYPE BAPIMEPOACCOUNTX.
DATA: GT_ITEM_D TYPE STANDARD TABLE OF BAPIEKPO WITH HEADER LINE,
      GS_ITEM_D TYPE BAPIEKPO,
      GT_ACCOUNT_D TYPE STANDARD TABLE OF BAPIEKKN WITH HEADER LINE,
      GS_ACCOUNT_D TYPE BAPIEKKN,
      GT_POITEM TYPE STANDARD TABLE OF BAPIMEPOITEM WITH HEADER LINE,
      GS_ITEM TYPE BAPIMEPOITEM,
      GT_POITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX WITH HEADER LINE,
      GS_ITEMX TYPE BAPIMEPOITEMX.
DATA: GT_EKKO       TYPE TABLE OF EKKO,
      GS_EKKO       TYPE EKKO.
CONSTANTS : GC_TRUE TYPE C VALUE 'X'.
*PARAMETERS  : GT_KOSTL TYPE CSKS-KOSTL OBLIGATORY.

START-OF-SELECTION.
* Select data matching selection criteria
  SELECT * FROM EKKO
          INTO TABLE GT_EKKO
          WHERE EBELN IN GT_EBELN.

  IF GT_EKKO IS NOT INITIAL.

    LOOP AT GT_EKKO INTO GS_EKKO.
CALL FUNCTION 'BAPI_PO_GETDETAIL'
        EXPORTING
          PURCHASEORDER                    = GS_EKKO-EBELN
         ITEMS                            = 'X'
         ACCOUNT_ASSIGNMENT               = 'X'
*     SCHEDULES                        = ' '
*     HISTORY                          = ' '
*     ITEM_TEXTS                       = ' '
*     HEADER_TEXTS                     = ' '
*     SERVICES                         = ' '
*     CONFIRMATIONS                    = ' '
*     SERVICE_TEXTS                    = ' '
*     EXTENSIONS                       = ' '
*   IMPORTING
*     PO_HEADER                        =
*     PO_ADDRESS                       =
       TABLES
*     PO_HEADER_TEXTS                  =
         PO_ITEMS                         = GT_ITEM_D
         PO_ITEM_ACCOUNT_ASSIGNMENT       = GT_ACCOUNT_D
*     PO_ITEM_SCHEDULES                =
*     PO_ITEM_CONFIRMATIONS            =
*     PO_ITEM_TEXTS                    =
*     PO_ITEM_HISTORY                  =
*     PO_ITEM_HISTORY_TOTALS           =
*     PO_ITEM_LIMITS                   =
*     PO_ITEM_CONTRACT_LIMITS          =
*     PO_ITEM_SERVICES                 =
*     PO_ITEM_SRV_ACCASS_VALUES        =
*     RETURN                           =
*     PO_SERVICES_TEXTS                =
*     EXTENSIONOUT                     =
                .
LOOP AT GT_ITEM_D INTO GS_ITEM_D.
        CLEAR GS_ITEM.
        MOVE-CORRESPONDING GS_ITEM_D TO GS_ITEM.
        APPEND GS_ITEM TO GT_POITEM.
        GS_ITEMX-PO_ITEM = GS_ITEM-PO_ITEM.
        APPEND GS_ITEMX TO GT_POITEMX.
      ENDLOOP.

      LOOP AT GT_ACCOUNT_D INTO GS_ACCOUNT_D.
        CLEAR GS_ACCOUNT.
        MOVE-CORRESPONDING GS_ACCOUNT_D TO GS_ACCOUNT.
        GS_ACCOUNT-COSTCENTER = GT_KOSTL.
        GS_ACCOUNT-BUS_AREA = GT_GSBER.
        APPEND GS_ACCOUNT TO GT_ACCOUNT.
        GS_ACCOUNTX-PO_ITEM = GS_ACCOUNT-PO_ITEM.
        GS_ACCOUNTX-SERIAL_NO = GS_ACCOUNT-SERIAL_NO.
        GS_ACCOUNTX-COSTCENTER = 'X'.
        GS_ACCOUNTX-BUS_AREA = 'X'.
*        GS_ACCOUNTX-PO_ITEMX = 'X'.
*    APPEND GS_ACCOUNT TO GT_ACCOUNT.
        APPEND GS_ACCOUNTX TO GT_ACCOUNTX.
      ENDLOOP.
CALL FUNCTION 'BAPI_PO_CHANGE'
 EXPORTING
        PURCHASEORDER                = GS_EKKO-EBELN

       TABLES
         RETURN                       = GT_RETURN
       POITEM                       = GT_POITEM
       POITEMX                      = GT_POITEMX
*   POADDRDELIVERY               =
*   POSCHEDULE                   =
*   POSCHEDULEX                  =
         POACCOUNT                    = GT_ACCOUNT
*   POACCOUNTPROFITSEGMENT       =
         POACCOUNTX                   = GT_ACCOUNTX
*   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               =
                .
      READ TABLE GT_RETURN INTO GS_RETURN WITH KEY TYPE = 'E'.
      IF SY-SUBRC = 0.
        WRITE :/ GS_EKKO-EBELN, ': Error'.

      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT = GC_TRUE.

        WRITE :/ GS_EKKO-EBELN, 'was changed successfully'.
      ENDIF.

    ENDLOOP.
  ENDIF.

You might also like