cancel
Showing results for 
Search instead for 
Did you mean: 

Add New item to PO using FM

former_member184741
Active Contributor
0 Kudos

Hi experts,

I am trying to add a new item to a PO using FM  BBP_PD_PO_UPDATE

CALL FUNCTION 'BBP_PD_PO_GETDETAIL'

   EXPORTING

     i_object_id       = lv_po_id

     i_attach_with_doc = ' '

     i_with_itemdata   = 'X'

     i_read_be_data    = ' '

   IMPORTING

     e_header          = ls_header_d

   TABLES

     e_item            = lt_item_d

     e_account         = lt_account_d

     e_partner         = lt_partner_d

     e_longtext        = lt_longtext_d

     e_orgdata         = lt_orgdata_d.

DATA: ls_header_u TYPE  bbp_pds_po_header_u .

MOVE-CORRESPONDING ls_header_d TO ls_header_u.

* Item data ...

READ TABLE lt_item_d INDEX 1.


lv_counter = 2.

   MOVE-CORRESPONDING lt_item_d TO lt_item_c.

   lt_item_c-number_int = lv_counter .

   MOVE lv_counter TO lt_item_c-guid.

   MOVE ls_header_u-guid TO lt_item_c-parent.

   APPEND lt_item_c.

CALL FUNCTION 'BBP_PD_PO_UPDATE'

   EXPORTING

     i_save     = 'X'

     i_header   = ls_header_u

     importing

       e_changed = lv_changed

       es_header = ls_header_new

   TABLES

     i_item     = lt_item_c

     e_messages = lt_messages.

CALL FUNCTION 'BBP_PD_PO_SAVE'

exporting

   iv_header_guid = ls_header_new-guid.

CALL FUNCTION 'BBP_PROCDOC_RESET_BUFFER'.

COMMIT WORK AND WAIT.

I am getting  'Buffer table not up to date' error. Am i missing something here?

thanks,

sankar.

Accepted Solutions (1)

Accepted Solutions (1)

former_member184741
Active Contributor
0 Kudos

After debugging few hrs in SRM4, i have come up with the below code. It works fine

<code>

CALL FUNCTION 'BBP_PD_PO_GETDETAIL'

   EXPORTING

     i_object_id       = lv_po_id

     i_attach_with_doc = ' '

     i_with_itemdata   = 'X'

     i_read_be_data    = ' '

   IMPORTING

     e_header          = ls_header_d

   TABLES

     e_item            = lt_item_d

     e_account         = lt_account_d

     e_partner         = lt_partner_d

     e_longtext        = lt_longtext_d

     e_orgdata         = lt_orgdata_d.

lv_counter = 1.

MOVE-CORRESPONDING ls_header_d TO ls_header_u.

CALL FUNCTION 'BBP_PD_PO_UPDATE'

   EXPORTING

     i_header   = ls_header_u

   IMPORTING

     e_changed  = lv_changed

     es_header  = ls_header_new

   TABLES

     e_messages = lt_messages.

ls_header_u-guid = ls_header_new-guid.

* Item data ...

READ TABLE lt_item_d INDEX 1.

IF sy-subrc <> 0.

   EXIT.

ENDIF.

DO 1 TIMES.

   lv_counter = lv_counter + 1.

   MOVE-CORRESPONDING lt_item_d TO lt_item_c.

   lt_item_c-number_int = lv_counter .

   MOVE lv_counter TO lt_item_c-guid.

   MOVE ls_header_u-guid TO lt_item_c-parent.

   APPEND lt_item_c.

   LOOP AT lt_partner_d WHERE p_guid = lt_item_d-guid.

     MOVE-CORRESPONDING lt_partner_d TO lt_partner_c.

     CLEAR: lt_partner_c-partner_guid.

     MOVE lt_item_c-guid TO lt_partner_c-p_guid.

     APPEND lt_partner_c.

   ENDLOOP.

   LOOP AT lt_account_d WHERE p_guid = lt_item_d-guid.

     MOVE-CORRESPONDING lt_account_d TO lt_account_c.

*    append lt_account_c.

     CLEAR lt_account_c-guid.

     MOVE lt_item_c-guid TO lt_account_c-p_guid.

     APPEND lt_account_c.

   ENDLOOP.

   LOOP AT lt_orgdata_d WHERE p_guid = lt_item_d-guid.

     MOVE-CORRESPONDING lt_orgdata_d TO lt_orgdata_c.

     CLEAR lt_orgdata_c-guid.

     MOVE lt_item_c-guid TO lt_orgdata_c-p_guid.

     APPEND lt_orgdata_c.

   ENDLOOP.

   LOOP AT lt_longtext_d WHERE guid = lt_item_d-guid.

     MOVE-CORRESPONDING lt_longtext_d TO lt_longtext_c.

     CLEAR lt_orgdata_c-guid.

     lt_longtext_c-guid = lt_item_c-guid.

     APPEND lt_longtext_c.

   ENDLOOP.

ENDDO.

CALL FUNCTION 'BBP_PD_PO_UPDATE'

   EXPORTING

     i_park     = 'X'

     i_save     = 'X'

     i_header   = ls_header_u

   IMPORTING

     e_changed  = lv_changed

   TABLES

     i_item     = lt_item_c

    i_account  = lt_account_c

    i_partner  = lt_partner_c

    i_longtext = lt_longtext_c

    i_orgdata  = lt_orgdata_c

     e_messages = lt_messages.

CALL FUNCTION 'BBP_PD_PO_SAVE'

   EXPORTING

     iv_header_guid = ls_header_new-guid.

COMMIT WORK AND WAIT.

<code>

Answers (1)

Answers (1)

RicardoRomero_1
Active Contributor
0 Kudos

Hi Sankar,

Try without using the FM BBP_PROCDOC_RESET_BUFFER.

former_member184741
Active Contributor
0 Kudos

Hi Romero,

It does not work.