客户主数据冻结

FUNCTION zfm_oa_deletecustomer.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(PARTNER) TYPE  BU_PARTNER
*"  EXPORTING
*"     VALUE(STATUS) TYPE  BAPI_MTYPE
*"     VALUE(MESSAGE) TYPE  BAPI_MSG
*"----------------------------------------------------------------------
  DATA: lv_partner TYPE bu_partner.
  DATA: lv_bpartnerguid TYPE bu_partner_guid.
  DATA: lt_return        TYPE TABLE OF bapiret2,
        ls_central_data  TYPE bapibus1006_central,
        ls_central_datax TYPE bapibus1006_central_x,
        lv_guid          TYPE sysuuid_c32,
        lv_msg           TYPE bapi_msg,
        lt_bp_main       TYPE cvis_ei_extern_t,
        lt_retm          TYPE bapiretm.

  lv_partner = |{ partner ALPHA = IN }|.
  SELECT SINGLE partner_guid FROM but000 WHERE partner = @lv_partner INTO @lv_bpartnerguid.

  CALL FUNCTION 'BAPI_BUPA_EXISTENCE_CHECK'
    EXPORTING
      businesspartner = lv_partner
    TABLES
      return          = lt_return.
  IF lt_return IS NOT INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    status  = 'E'.
    message = |客户编码不能为空|.
    RETURN.
  ENDIF.
  CLEAR: lt_return,ls_central_data,ls_central_datax.
  ls_central_data-centralblock  = abap_true.
  ls_central_datax-centralblock = abap_true.
  ls_central_data-centralarchivingflag  = abap_true.
  ls_central_datax-centralarchivingflag = abap_true.
  CALL FUNCTION 'BAPI_BUPA_CENTRAL_CHANGE'
    EXPORTING
      businesspartner = lv_partner
      centraldata     = ls_central_data
      centraldata_x   = ls_central_datax
    TABLES
      return          = lt_return.
  IF line_exists( lt_return[ type = 'E' ] ) OR
     line_exists( lt_return[ type = 'A' ] ).
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    LOOP AT lt_return ASSIGNING FIELD-SYMBOL(<fs_return>) WHERE type EQ 'E' OR type EQ 'A'.
      lv_msg = COND #( WHEN lv_msg IS INITIAL THEN <fs_return>-message ELSE |{ lv_msg }/{ <fs_return>-message }| ).
    ENDLOOP.
    status  = 'E'.
    message = COND #( WHEN lv_msg IS NOT INITIAL THEN |BAPI_BUPA_CENTRAL_CHANGE报错:{ lv_msg }|
               ELSE |BAPI_BUPA_CENTRAL_CHANGE报错,请联系管理员| ).
    RETURN.
  ENDIF.
  CLEAR lv_guid.
  CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS'
    EXPORTING
      businesspartner        = lv_partner
    IMPORTING
      businesspartnerguidout = lv_guid.
  IF lv_guid IS INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    status  = 'E'.
    message = |BAPI_BUPA_GET_NUMBERS报错,请联系管理员|.
    RETURN.
  ENDIF.
  lt_bp_main = VALUE #( (
    partner-header-object_instance-bpartner     = lv_partner
    partner-header-object_instance-bpartnerguid = lv_guid
    partner-header-object_task                  = 'U'
    vendor-header-object_instance               = lv_partner
    vendor-header-object_task                   = 'U'
    vendor-central_data-central-data-sperr      = abap_true
    vendor-central_data-central-datax-sperr     = abap_true
    customer-header-object_instance             = lv_partner
    customer-header-object_task                 = 'U'
    customer-central_data-central-data-sperr    = abap_true
    customer-central_data-central-datax-sperr   = abap_true
  ) ).
  CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
    EXPORTING
      i_data   = lt_bp_main
    IMPORTING
      e_return = lt_retm.
  CLEAR: lv_msg.
  LOOP AT lt_retm ASSIGNING FIELD-SYMBOL(<fs_retm>).
    LOOP AT <fs_retm>-object_msg ASSIGNING FIELD-SYMBOL(<fs_message>) WHERE type = 'E' OR type = 'A'.
      lv_msg = COND #( WHEN lv_msg IS INITIAL THEN <fs_message>-message ELSE |{ lv_msg }/{ <fs_message>-message }| ).
    ENDLOOP.
  ENDLOOP.
  IF lv_msg IS NOT INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    status  = 'E'.
    message = |CVI_EI_INBOUND_MAIN报错:{ lv_msg }|.
    RETURN.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = abap_true.
    status  = 'S'.
    message = space.
    RETURN.
  ENDIF.
ENDFUNCTION.

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值