on 03-27-2014 12:57 PM
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.
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>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Sankar,
Try without using the FM BBP_PROCDOC_RESET_BUFFER.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.