ABAP 批量冻结供应商 DEMO

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.

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值