First declare the header and item structure to pass the values to FM. Now the values that you enter in selection screen are captured in internal table. So you can loop this internal table and pass the values to function module item and header details.
EX:
Decleration
DATA: PO_HEAD TYPE BAPIMEPOHEADER,
PO_HEADX TYPE BAPIMEPOHEADERX,
PO_ITEM TYPE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE,
PO_ITEMX TYPE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE,
COUNT TYPE I VALUE 1,
RETS TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
Pass the values to po_head po_headx po_item po_itemx.
loop. selection screen internal tables
append . Append the internal tables
endloop.
now call the bapi and pass the values.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
PURCHASEORDER = PO_NUM
* POHEADER =
* POHEADERX =
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
* POEXPIMPHEADER =
* POEXPIMPHEADERX =
* VERSIONS =
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
RETURN = RETS
POITEM = ITEM
POITEMX = ITEMX
* 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 =
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
Hope it helps.
Regards,
K.Srikanth Reddy.