Пример использования BAPI BAPI_PRODORDCONF_CREATE_HDR.
DATA: lv_aufnr TYPE aufk-aufnr, lv_quan TYPE bapi_pp_hdrlevel-yield, ls_aufk TYPE aufk, ls_afko TYPE afko, lt_afpo TYPE TABLE OF afpo, lt_resb TYPE TABLE OF resb, lv_index TYPE i, ls_return TYPE bapiret1, lt_athdrlevels TYPE TABLE OF bapi_pp_hdrlevel, lt_goodsmovements TYPE TABLE OF bapi2017_gm_item_create, lt_link_conf TYPE TABLE OF bapi_link_conf_goodsmov, lt_detail_return TYPE TABLE OF bapi_coru_return. FIELD-SYMBOLS: <lfs_afpo> LIKE LINE OF lt_afpo, <lfs_resb> LIKE LINE OF lt_resb, <lfs_athdrlevels> LIKE LINE OF lt_athdrlevels, <lfs_goodsmovements> LIKE LINE OF lt_goodsmovements, <lfs_link_conf> LIKE LINE OF lt_link_conf, <lfs_detail_return> LIKE LINE OF lt_detail_return. lv_aufnr = ''. " Номер заказа lv_quan = 10. " Кол-во " Данные заказа SELECT SINGLE * FROM aufk INTO CORRESPONDING FIELDS OF ls_aufk WHERE aufnr EQ lv_aufnr. IF sy-subrc NE 0. EXIT. ENDIF. SELECT SINGLE * FROM afko INTO CORRESPONDING FIELDS OF ls_afko WHERE aufnr EQ lv_aufnr. IF sy-subrc NE 0. EXIT. ENDIF. SELECT * FROM afpo INTO CORRESPONDING FIELDS OF TABLE lt_afpo WHERE aufnr EQ lv_aufnr AND xloek EQ space. IF sy-subrc NE 0. EXIT. ENDIF. SELECT * FROM resb INTO CORRESPONDING FIELDS OF TABLE lt_resb WHERE aufnr EQ lv_aufnr AND xloek EQ space. IF sy-subrc NE 0. EXIT. ENDIF. READ TABLE lt_afpo ASSIGNING <lfs_afpo> INDEX 1. CHECK sy-subrc EQ 0. INSERT INITIAL LINE INTO TABLE lt_athdrlevels ASSIGNING <lfs_athdrlevels>. <lfs_athdrlevels>-orderid = lv_aufnr. <lfs_athdrlevels>-fin_conf = ''. <lfs_athdrlevels>-clear_res = 'X'. <lfs_athdrlevels>-postg_date = sy-datum. <lfs_athdrlevels>-conf_quan_unit = <lfs_afpo>-amein. " ЕИ <lfs_athdrlevels>-yield = lv_quan. " Если нужно явно указать поступление ГП и списание компонентов " Поступление ГП INSERT INITIAL LINE INTO TABLE lt_goodsmovements ASSIGNING <lfs_goodsmovements>. <lfs_goodsmovements>-material = <lfs_afpo>-matnr. <lfs_goodsmovements>-plant = ls_aufk-werks. <lfs_goodsmovements>-stge_loc = <lfs_afpo>-lgort. <lfs_goodsmovements>-batch = ''. <lfs_goodsmovements>-move_type = '131'. <lfs_goodsmovements>-entry_qnt = lv_quan. <lfs_goodsmovements>-entry_uom = <lfs_afpo>-amein. <lfs_goodsmovements>-no_more_gr = ''. <lfs_goodsmovements>-orderid = lv_aufnr. <lfs_goodsmovements>-order_itno = <lfs_afpo>-posnr. <lfs_goodsmovements>-mvt_ind = 'F'. <lfs_goodsmovements>-ref_doc_it = '0001'. ADD 1 TO lv_index. INSERT INITIAL LINE INTO TABLE lt_link_conf ASSIGNING <lfs_link_conf>. <lfs_link_conf>-index_confirm = 1. <lfs_link_conf>-index_goodsmov = lv_index. " Списание компонентов LOOP AT lt_resb ASSIGNING <lfs_resb> WHERE bdmng GT 0. INSERT INITIAL LINE INTO TABLE lt_goodsmovements ASSIGNING <lfs_goodsmovements>. <lfs_goodsmovements>-material = <lfs_resb>-matnr. <lfs_goodsmovements>-plant = <lfs_resb>-werks. <lfs_goodsmovements>-stge_loc = <lfs_resb>-lgort. <lfs_goodsmovements>-batch = ''. <lfs_goodsmovements>-move_type = '261'. <lfs_goodsmovements>-entry_qnt = lv_quan * <lfs_resb>-bdmng / <lfs_afpo>-psmng. <lfs_goodsmovements>-entry_uom = <lfs_resb>-meins. <lfs_goodsmovements>-orderid = lv_aufnr. <lfs_goodsmovements>-reserv_no = <lfs_resb>-rsnum. <lfs_goodsmovements>-res_item = <lfs_resb>-rspos. <lfs_goodsmovements>-withdrawn = 'X'. <lfs_goodsmovements>-ref_doc_it = '0001'. ADD 1 TO lv_index. INSERT INITIAL LINE INTO TABLE lt_link_conf ASSIGNING <lfs_link_conf>. <lfs_link_conf>-index_confirm = 1. <lfs_link_conf>-index_goodsmov = lv_index. ENDLOOP. CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_HDR' EXPORTING post_wrong_entries = '2' * testrun = IMPORTING return = ls_return TABLES athdrlevels = lt_athdrlevels goodsmovements = lt_goodsmovements link_conf_goodsmov = lt_link_conf detail_return = lt_detail_return * characteristics_batch = * link_gm_char_batch = .
Комментариев нет:
Отправить комментарий