Professional Documents
Culture Documents
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.