This is a very simple code sample to update the purchase order partner details. The following function modules are used:
CRMD_PARTNER table contains partner details .
BBP_PD_PO_GETDETAIL : Read the details of a Purchase Order
BBP_PD_PO_UPDATE : Updates the details of a Purchase Order
BBP_PD_PO_SAVE : Finally called to save the details of a Purchase Order
This is just an illustrative example and can be enhanced to update any existing detail of a purchase order.
REPORT zkb_partner_chg. * Declaration - Internal Tables DATA: lt_e_item TYPE TABLE OF bbp_pds_po_item_d. DATA: lt_e_partner TYPE TABLE OF bbp_pds_partner. DATA: lt_e_messages TYPE TABLE OF bbp_pds_messages. DATA: lt_i_item TYPE TABLE OF bbp_pds_po_item_icu. DATA: lt_i_partner TYPE TABLE OF bbp_pds_partner. * Declaration - Work Areas DATA: ls_e_header TYPE bbp_pds_po_header_d. DATA: ls_e_item TYPE bbp_pds_po_item_d. DATA: ls_e_partner TYPE bbp_pds_partner. DATA: ls_i_item TYPE bbp_pds_po_item_icu. DATA: ls_i_header TYPE bbp_pds_po_header_u . DATA: ls_but000 TYPE but000. * Declaration - Variables DATA: lv_e_changed TYPE xfeld. * Declaration - Field Symbols FIELD-SYMBOLS: <fs_partner> TYPE bbp_pds_partner. * Read an existing PO CALL FUNCTION 'BBP_PD_PO_GETDETAIL' EXPORTING i_object_id = '3200000576' i_with_itemdata = 'X' IMPORTING e_header = ls_e_header TABLES e_item = lt_e_item e_partner = lt_e_partner e_messages = lt_e_messages. * Populate Header Data MOVE-CORRESPONDING ls_e_header TO ls_i_header. * Populate Item data LOOP AT lt_e_item INTO ls_e_item . MOVE-CORRESPONDING ls_e_item TO ls_i_item. APPEND ls_i_item TO lt_i_item. ENDLOOP. * Populate all the existing partner data first LOOP AT lt_e_partner INTO ls_e_partner. APPEND ls_e_partner TO lt_i_partner. ENDLOOP. ** Delete Partner (vendor) READ TABLE lt_i_partner ASSIGNING <fs_partner> WITH KEY partner_fct = '00000019' p_guid = ls_i_header-guid. IF sy-subrc EQ 0. <fs_partner>-del_ind = 'X'. ENDIF. UNASSIGN <fs_partner>. ** Add Partner (vendor) SELECT SINGLE * FROM but000 INTO ls_but000 WHERE partner = '0087000004'. CLEAR ls_e_partner. ls_e_partner-partner_guid = 1. ls_e_partner-partner_no = ls_but000-partner_guid. ls_e_partner-partner_fct = '00000019'. ls_e_partner-p_guid = ls_i_header-guid. APPEND ls_e_partner TO lt_i_partner. * Update Doc CALL FUNCTION 'BBP_PD_PO_UPDATE' EXPORTING i_header = ls_i_header i_save = 'X' iv_with_change_approval = ' ' IMPORTING e_changed = lv_e_changed TABLES i_item = lt_i_item i_partner = lt_i_partner e_messages = lt_e_messages. * Save Doc IF NOT lv_e_changed IS INITIAL. CALL FUNCTION 'BBP_PD_PO_SAVE' EXPORTING iv_header_guid = ls_i_header-guid. COMMIT WORK AND WAIT. ENDIF.
No comments:
Post a Comment