FUNCTION zmmfm006.
*“----------------------------------------------------------------------
"“本地接口:
*” EXPORTING
*” VALUE(LV_TYPE) TYPE BAPI_MTYPE
*" VALUE(LV_MESS) TYPE BAPI_MSG
*" TABLES
*" IT_ITEM STRUCTURE ZMM003S OPTIONAL
*"----------------------------------------------------------------------
DATA: ls_data TYPE cvis_ei_extern.
DATA: lt_data TYPE cvis_ei_extern_t.
DATA: lt_return TYPE bapiretm.
DATA: ls_return2 TYPE LINE OF bapiretm.
DATA: lv_partner_guid TYPE but000-partner_guid.
DATA: lt_return_map TYPE mdg_bs_bp_msgmap_t.
DATA: e_msg TYPE char100.
DATA: e_code.
DATA: ls_pur TYPE vmds_ei_purchasing.
DATA: lv_e TYPE i.
DATA: lv_s TYPE i.
LOOP AT it_item.
SELECT COUNT(*)
FROM lfm1
WHERE lifnr = it_item-lifnr
AND ekorg = it_item-ekorg.
IF sy-subrc NE 0.
it_item-type = 'E'.
it_item-mess = '供应商+采购组织,数据不存在'.
MODIFY it_item TRANSPORTING type mess.
ADD 1 TO lv_e.
CONTINUE.
ENDIF.
CLEAR:ls_data,lv_partner_guid,lt_data,lt_data[],lt_return_map,lt_return_map[],e_code,e_msg,lt_return,lt_return[],ls_pur.
ls_data-partner-header-object_task = 'U'.
ls_data-partner-header-object_instance-bpartner = it_item-lifnr.
SELECT SINGLE partner_guid
INTO lv_partner_guid
FROM but000
WHERE partner = it_item-lifnr.
ls_data-partner-header-object_instance-bpartnerguid = lv_partner_guid.
ls_data-vendor-header-object_instance-lifnr = it_item-lifnr.
ls_data-vendor-header-object_task = 'U'.
ls_pur-task = 'U'.
ls_pur-data_key-ekorg = it_item-ekorg.
ls_pur-data-sperm = it_item-field. "采购冻结
ls_pur-datax-sperm = 'X'. "采购冻结
APPEND ls_pur TO ls_data-vendor-purchasing_data-purchasing.
APPEND ls_data TO lt_data.
CALL METHOD cl_md_bp_maintain=>validate_single
EXPORTING
i_data = ls_data
-
i_data_db =
-
iv_suppress_taxjur_check = IMPORTING et_return_map = lt_return_map.
LOOP AT lt_return_map ASSIGNING FIELD-SYMBOL(<lfs_object_msg_map>) WHERE type = ‘E’.
e_msg = e_msg && <lfs_object_msg_map>-message.
ENDLOOP.IF e_msg IS NOT INITIAL.
it_item-type = ‘E’.
it_item-mess = e_msg.
MODIFY it_item TRANSPORTING type mess.
ADD 1 TO lv_e.
CONTINUE.
ENDIF.CALL METHOD cl_md_bp_maintain=>maintain
EXPORTING
i_data = lt_data
IMPORTING
e_return = lt_return.READ TABLE lt_return INTO ls_return2 INDEX 1.
IF sy-subrc = 0.
e_code = ‘S’.
LOOP AT ls_return2-object_msg ASSIGNING FIELD-SYMBOL(<lfs_object_msg>) WHERE type = ‘E’ OR type = ‘A’.
e_code = ‘E’.
e_msg = e_msg && <lfs_object_msg>-message.
ENDLOOP.
ELSE.
e_code = ‘S’.
ENDIF.IF e_code = ‘S’.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. e_msg = '已处理'. ADD 1 TO lv_s.
ELSE.
ADD 1 TO lv_e.
ENDIF.it_item-type = e_code.
it_item-mess = e_msg.
MODIFY it_item TRANSPORTING type mess.ENDLOOP.
IF lv_s > 0 AND lv_e > 0.
lv_type = ‘A’.
lv_mess = lv_s && ‘条修改成功,’ && lv_e && ‘修改失败’.
ELSEIF lv_s = 0.
lv_type = ‘E’.
lv_mess = lv_e && ‘条全部修改失败’.
ELSEIF lv_e = 0.
lv_type = ‘S’.
lv_mess = lv_s && ‘条已全部修改’.
ENDIF.
ENDFUNCTION.