Application Development 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: 

BAPI_PO_Change

Former Member
0 Kudos
502

Hi,

Can some one help me in using the BAPI_PO_CHANGE.

I would like to change the Po text and the Vendor number for a list of EBELN.

Can some one help me with the parameters to be passed.

Possible, please provied code, if available.

Thank you,

Shekar.

7 REPLIES 7

Former Member
0 Kudos
233

hi

good

go through these code i hope these ll help you to solve your probelm

method IF_EX_ME_PURCHDOC_POSTED~POSTED .

DATA: wa_ekpo like line of IM_EKPO,

lt_po_item type standard table of BAPIMEPOITEM,

lt_po_itemx type standard table of BAPIMEPOITEMX,

wa_po_item type BAPIMEPOITEM,

wa_po_itemx type BAPIMEPOITEMX,

lt_return type standard table of BAPIRET2.

*data: ls_ebeln type BAPIMEPOHEADER-PO_NUMBER.

check im_ekko-ebeln ne PO_NUMBER.

PO_NUMBER = im_ekko-ebeln.

LOOP AT IM_EKPO into wa_ekpo.

wa_po_item-PO_ITEM = wa_ekpo-ebelp.

  • EVERS to be derived

wa_po_item-SHIPPING = 'C'.

APPEND wa_po_item to lt_po_item .

wa_po_itemx-PO_ITEM = wa_ekpo-ebelp.

wa_po_itemx-SHIPPING = 'X'.

APPEND wa_po_itemx to lt_po_itemx.

ENDLOOP.

CALL FUNCTION 'BAPI_PO_CHANGE' IN BACKGROUND TASK

EXPORTING

purchaseorder = PO_NUMBER

  • POHEADER =

  • POHEADERX =

  • POADDRVENDOR =

  • TESTRUN =

  • MEMORY_UNCOMPLETE =

  • MEMORY_COMPLETE =

  • POEXPIMPHEADER =

  • POEXPIMPHEADERX =

  • VERSIONS =

NO_MESSAGING = 'X'

NO_MESSAGE_REQ = 'X'

NO_AUTHORITY = 'X'

NO_PRICE_FROM_PO = 'X'

  • IMPORTING

  • EXPHEADER =

  • EXPPOEXPIMPHEADER =

TABLES

RETURN = lt_return

POITEM = lt_po_item

POITEMX = lt_po_itemx

  • POADDRDELIVERY =

  • POSCHEDULE =

  • POSCHEDULEX =

  • POACCOUNT =

  • POACCOUNTPROFITSEGMENT =

  • POACCOUNTX =

  • POCONDHEADER =

  • POCONDHEADERX =

  • POCOND =

  • POCONDX =

  • POLIMITS =

  • POCONTRACTLIMITS =

  • POSERVICES =

  • POSRVACCESSVALUES =

  • POSERVICESTEXT =

  • EXTENSIONIN =

  • EXTENSIONOUT =

  • POEXPIMPITEM =

  • POEXPIMPITEMX =

  • POTEXTHEADER =

  • POTEXTITEM =

  • ALLVERSIONS =

  • POPARTNER =

.

endmethod.http://www.geocities.com/rmtiwari/main.html?http://www.geocities.com/rmtiwari/Resources/MySolutions/Dev/ABAP_nsFAQ.html

thanks

mrutyun^

Former Member
0 Kudos
233

Hi Sekhar,

Please find below a sample program to change the text on po.



DATA : t_item_po TYPE STANDARD TABLE OF bapimepoitem,
       t_item_pox TYPE STANDARD TABLE OF bapimepoitemx,
       t_packno   TYPE STANDARD TABLE OF pack_tab,
       t_esll     TYPE STANDARD TABLE OF esll,
       t_eslh     TYPE STANDARD TABLE OF eslh,
       t_bapiesllc TYPE STANDARD TABLE OF bapiesllc.



DATA : t_text TYPE STANDARD TABLE OF bapimepotext.
DATA : wa_text TYPE bapimepotext.

DATA : tl_return TYPE STANDARD TABLE OF bapiret2.

FIELD-SYMBOLS : <l_eslh> TYPE eslh,
                <l_esll> TYPE esll.

TABLES : ekko,
         ekpo.

PARAMETERS : p_ebeln TYPE ekko-ebeln,
             p_ebelp TYPE ekpo-ebelp.

START-OF-SELECTION.

DATA: c_flag TYPE flag.
  DATA: tl_po_item        TYPE TABLE OF zmweb_bapi_po_change_request,
        tl_potextheader   TYPE TABLE OF bapimepotext.
  DATA: wa_po_items_change TYPE bapimepoitem,
        t_po_items_change  TYPE STANDARD TABLE OF bapimepoitem,
        t_po_itemx         TYPE STANDARD TABLE OF bapimepoitemx,
        wa_po_itemx        TYPE bapimepoitemx,
        t_po_item_deliv    TYPE STANDARD TABLE OF bapimeposchedule.




  SELECT SINGLE netpr idnlf INTO (wa_po_items_change-net_price ,
                      wa_po_items_change-vend_mat)
                FROM ekpo
                WHERE ebeln = p_ebeln
                AND ebelp  = p_ebelp.

*  IF NOT wa_po_items_change-net_price IS INITIAL.
*    wa_po_items_change-net_price = wa_po_items_change-net_price.
*    wa_po_itemx-net_price  = 'X'.
*  ENDIF.
  IF NOT wa_po_items_change-vend_mat IS INITIAL.
    wa_po_items_change-vend_mat = wa_po_items_change-vend_mat.
    wa_po_itemx-vend_mat   = 'X'.

  ENDIF.

  wa_po_items_change-po_item = p_ebelp.
  wa_po_itemx-po_item        = p_ebelp.
  INSERT wa_po_items_change INTO TABLE t_po_items_change.
  INSERT wa_po_itemx INTO TABLE t_po_itemx.
  CLEAR:
    wa_po_items_change,
    wa_po_itemx.

*Text
  wa_text-po_number = p_ebeln.
  wa_text-po_item   = p_ebelp.
  wa_text-text_id   = 'F01'.
  wa_text-text_form = '*'.
  wa_text-text_line = 'TEXTvinod12345'.
  APPEND wa_text TO t_text.
  CLEAR wa_text.





* call the bapi
  CALL FUNCTION 'BAPI_PO_CHANGE'
       EXPORTING
            purchaseorder = p_ebeln
       TABLES
            return        = tl_return
            poitem        = t_po_items_change
            poitemx       = t_po_itemx
            potextheader  = t_text.


  READ TABLE tl_return TRANSPORTING NO FIELDS
                       WITH KEY
                       type = 'E'.

  IF sy-subrc = 0.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*    IMPORTING
*      RETURN        =
              .


  ELSE.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

  ENDIF.

Regards,

Raghav

Former Member
0 Kudos
233

Please populate following as below:

PO Number for PURCHASEORDER

For Changing Vendor:

Populate Vendor of structure: POHEADER(BAPIMEPOHEADER), and update flag 'X' for vendor in structure: POHEADERX(BAPIMEPOHEADERX)

For PO Header Texts:

POTEXTHEADER(BAPIMEPOTEXTHEADER) with PO_NUMBER, Text ID & texts in TEXT_LINE.

For PO Item Texts:

POTEXTITEM(BAPIMEPOTEXT) with PO_NUMBER, PO_ITEM, Text ID & Texts in TEXT_LINE.

Kind Regards

Eswar

Former Member
0 Kudos
233

Hi,

Can some one help me with!!!!

What parameters to pass for changing the Vendor material number IDNFL in the BAPI_PO_CHANGE function module for changing IDNFL.

Thank you.

Former Member
0 Kudos
233

Hi,

In the parameter POITEM there is field called VEND_MAT which can be used to update the vendor material number..

Thanks,

Naren

0 Kudos
233

Thanks for a quick reply.

But I want to know if we need to pass some other parameters apart from VEND_MAT and PO_ITEM.

Please check this code:

Loop at I_ITAB4.

Clear: t_bapi_mepoitem.

t_bapi_mepoitem-PO_ITEM = I_Itab4-EBELP.

t_bapi_mepoitem-VEND_MAT = '9999'.

t_bapi_mepoitemx-PO_ITEM = I_Itab4-EBELP.

t_bapi_mepoitemx-VEND_MAT = 'X'.

CALL FUNCTION 'BAPI_PO_CHANGE'

EXPORTING

PURCHASEORDER = t_bapi_mepoheader

TABLES

RETURN = t_bapireturn

POITEM = t_bapi_mepoitem

POITEMX = t_bapi_mepoitemx

Endloop.

COMMIT WORK.

Former Member
0 Kudos
233

Hi,

Yes..You have to pass the line item number..

Check this example.

PARAMETERS: p_ebeln LIKE ekko-ebeln.

DATA: t_poitem LIKE bapimepoitem OCCURS 0 WITH HEADER LINE.

DATA: t_poitemx LIKE bapimepoitemx OCCURS 0 WITH HEADER LINE.

DATA: t_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

t_poitem-po_item = '00010'.

t_poitem-vend_mat = 'VEND MAT1'.

APPEND t_poitem.

t_poitemx-po_item = '00010'.

t_poitemx-net_price = 'X'.

t_poitemx-vend_mat = 'X'.

APPEND t_poitemx.

CALL FUNCTION 'BAPI_PO_CHANGE'

EXPORTING

purchaseorder = p_ebeln

TABLES

return = t_return

poitem = t_poitem

poitemx = t_poitemx.

COMMIT WORK.

Thanks,

Naren