CRM创建BP(END USER)

FUNCTION ZCRM_BP_CRT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(PHONE) TYPE  BAPIADTEL-TELEPHONE OPTIONAL
*"     REFERENCE(MOBIL) TYPE  BAPIADTEL-TELEPHONE OPTIONAL
*"     REFERENCE(FIRSTNAME) TYPE  BAPIBUS1006_CENTRAL_PERSON-FIRSTNAME
*"       OPTIONAL
*"     REFERENCE(LASTNAME) TYPE  BAPIBUS1006_CENTRAL_PERSON-LASTNAME
*"       OPTIONAL
*"     REFERENCE(CITY) TYPE  BAPIBUS1006_ADDRESS-CITY OPTIONAL
*"     REFERENCE(COUNTRY) TYPE  BAPIBUS1006_ADDRESS-COUNTRY OPTIONAL
*"     REFERENCE(DISTRICT) TYPE  AD_CITY2 OPTIONAL
*"     REFERENCE(STREET) TYPE  BAPIBUS1006_ADDRESS-STREET OPTIONAL
*"     REFERENCE(HOUSE_NO) TYPE  BAPIBUS1006_ADDRESS-HOUSE_NO OPTIONAL
*"     REFERENCE(POSTCODE) TYPE  BAPIBUS1006_ADDRESS-POSTL_COD1
*"       OPTIONAL
*"     REFERENCE(REGION) TYPE  BAPIBUS1006_ADDRESS-REGION OPTIONAL
*"     REFERENCE(TEL_EXTENS) TYPE  AD_TLXTNS OPTIONAL
*"     REFERENCE(FAX_NUMBER) TYPE  AD_FXNMBR OPTIONAL
*"     REFERENCE(FAX_EXTENS) TYPE  AD_FXXTNS OPTIONAL
*"     REFERENCE(DEFLT_COMM) TYPE  AD_COMM OPTIONAL
*"     REFERENCE(TITLE_LET) TYPE  BU_TITLE_LET OPTIONAL
*"     REFERENCE(SMTP_ADDR) TYPE  AD_SMTPADR OPTIONAL
*"     REFERENCE(BU_TYPE) TYPE  BU_TYPE DEFAULT '1'
*"     REFERENCE(TITLE) TYPE  AD_TITLE OPTIONAL
*"     REFERENCE(BU_SORT1) TYPE  BU_SORT1 OPTIONAL
*"     REFERENCE(TIME_ZONE) TYPE  AD_TZONE OPTIONAL
*"     REFERENCE(IV_ZA_FLAG) TYPE  ZCORDER_GENERAL-ZA_FLAG OPTIONAL
*"     REFERENCE(IV_LAND) TYPE  LAND1 OPTIONAL
*"     REFERENCE(IV_STR_SUPPL1) TYPE  AD_STRSPP1 OPTIONAL
*"     REFERENCE(IV_STR_SUPPL2) TYPE  AD_STRSPP2 OPTIONAL
*"     REFERENCE(IV_ZZBUILDING_TYPE) TYPE  ZBUILDING_TYPE_E OPTIONAL
*"     REFERENCE(IV_ZZMKT_USAGE) TYPE  ZMKT_USAGE_E OPTIONAL
*"     REFERENCE(IV_FLOOR) TYPE  AD_FLOOR OPTIONAL
*"     REFERENCE(IV_ZZACCESS_CODE) TYPE  ZACCESS_CODE_E OPTIONAL
*"     REFERENCE(IV_NAMEORG1) TYPE  BU_NAMEOR1 OPTIONAL
*"     REFERENCE(SALES_ORG) TYPE  CRMT_SALES_ORG OPTIONAL
*"  EXPORTING
*"     REFERENCE(BP_NUMBER) TYPE  BU_PARTNER
*"  TABLES
*"      RETURN STRUCTURE  BAPIRET2
*"----------------------------------------------------------------------


  TYPES:BEGIN OF TY_BP_DATA,
          PARTNER              TYPE BUT000-PARTNER,                          "0.
          SEQNO                TYPE NUM10,
          PARTNERCATEGORY      TYPE BAPIBUS1006_HEAD-PARTN_CAT,      "-1
          PARTNERROLE          TYPE BAPIBUS1006_BPROLES-PARTNERROLE,    "角色
          PARTN_GRP            TYPE BAPIBUS1006_HEAD-PARTN_GRP,
          TITLE_KEY            TYPE BAPIBUS1006_CENTRAL-TITLE_KEY,
          FIRSTNAME            TYPE BAPIBUS1006_CENTRAL_PERSON-FIRSTNAME,
          LASTNAME             TYPE BAPIBUS1006_CENTRAL_PERSON-LASTNAME,
          CITY                 TYPE BAPIBUS1006_ADDRESS-CITY,
          COUNTRY              TYPE BAPIBUS1006_ADDRESS-COUNTRY,       " 4.注册地址-国家
          REGION               TYPE BAPIBUS1006_ADDRESS-REGION,               " 5.注册地址-地区
          TELEPHONE            TYPE BAPIADTEL-TELEPHONE,                   "15.电话
          MOBIL                TYPE BAPIADTEL-TELEPHONE,
          E_MAIL               TYPE BAPIADSMTP-E_MAIL,
          NAME1                TYPE BAPIBUS1006_CENTRAL_ORGAN-NAME1,
          NAME2                TYPE BAPIBUS1006_CENTRAL_ORGAN-NAME2,
          STREET               TYPE BAPIBUS1006_ADDRESS-STREET,
          LANGU                TYPE BAPIBUS1006_ADDRESS-LANGU,
          SALES_ORGANIZATION   TYPE BAPIBUS1006_SALES_AREA-SALES_ORGANIZATION, " 19.销售组织标识
          DISTRIBUTION_CHANNEL TYPE BAPIBUS1006_SALES_AREA-DISTRIBUTION_CHANNEL, " 20.分销渠道
          DIVISION             TYPE BAPIBUS1006_SALES_AREA-DIVISION,        " 21.部门
          SALES_OFFICE         TYPE BAPIBUS1006140_ORG-SALES_OFFICE,    " 22.销售部门
          SALES_GROUP          TYPE BAPIBUS1006140_ORG-SALES_GROUP,      " 23.销售组
          CUST_PRIC_PROC       TYPE BAPIBUS1006030_PRICING-CUST_PRIC_PROC, "客户定价程序
        END OF TY_BP_DATA.

  DATA:T_BP_DATA TYPE TABLE OF TY_BP_DATA,
       W_BP_DATA LIKE LINE OF T_BP_DATA.
  DATA:
    LT_BAPIRET2     TYPE TABLE OF BAPIRET2,
    LV_PARTNER_GUID TYPE  BU_PARTNER_GUID,
    LS_EEWB         TYPE          BUS000_EEW,
    LS_EEWB_X       TYPE          BUS000_EEW_X.
  DATA LW_CENTRALDATA TYPE BAPIBUS1006_CENTRAL.
  DATA LW_CENTRALDATAPERSON TYPE BAPIBUS1006_CENTRAL_PERSON.
  DATA LW_ADDRESSDATA TYPE BAPIBUS1006_ADDRESS.
  DATA LT_TELEFONDATA TYPE STANDARD TABLE OF BAPIADTEL WITH HEADER LINE.
  DATA LT_FAXDATA TYPE STANDARD TABLE OF BAPIADFAX WITH HEADER LINE.
  DATA LT_E_MAILDATA  TYPE STANDARD TABLE OF BAPIADSMTP WITH HEADER LINE.
  DATA LT_BUSINESSPARTNERROLE TYPE STANDARD TABLE OF BAPIBUS1006_BPROLES WITH HEADER LINE.
  DATA LT_RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE.
  DATA: L_FAIL TYPE C.

  DATA LW_CENTRALDATAORGANIZATION TYPE BAPIBUS1006_CENTRAL_ORGAN.
  DATA LW_SALES_AREA  TYPE BAPIBUS1006_SALES_AREA.
  DATA LW_SALES_ORG   TYPE BAPIBUS1006140_ORG.
  DATA LW_SALES_CLASS TYPE BAPIBUS1006040_SALESCLASS.
  DATA LW_SALES_CLASSX TYPE BAPIBUS1006040_SALESCLASSX.
  DATA LW_SALES_BILL  TYPE BAPIBUS1006030_PRICING.
  DATA LW_SALES_SHIPPING TYPE BAPIBUS1006020_SHIPPING.

  W_BP_DATA-FIRSTNAME       = FIRSTNAME.
  W_BP_DATA-LASTNAME        = LASTNAME.
  W_BP_DATA-TELEPHONE       = PHONE.
  W_BP_DATA-MOBIL           = MOBIL.
  W_BP_DATA-CITY            = CITY.
  W_BP_DATA-COUNTRY         = COUNTRY.

  LW_CENTRALDATA-TITLELETTER     = TITLE_LET.

  LW_CENTRALDATA-TITLE_KEY       = TITLE."add by dq-yuw 20170920

  IF BU_TYPE = '1'.
    LW_CENTRALDATAPERSON-LASTNAME  = W_BP_DATA-LASTNAME.
    LW_CENTRALDATAPERSON-FIRSTNAME = W_BP_DATA-FIRSTNAME.
    LW_CENTRALDATAPERSON-CORRESPONDLANGUAGE = 'E'.
*    lw_centraldata-title_key       = title."change by dq-yuw:这里应该是个BUG,创建公司客户也可以有tittle,这里把他放到上面去
  ELSEIF  BU_TYPE = '2'.
    "add by dq-yuw 之前本来就错的吧,写反了应该,法国和日本先给他改过来
    IF COUNTRY EQ 'JP'"日本创建客户时name org1就是页面上lastname字段
      OR COUNTRY EQ 'FR'."
      LW_CENTRALDATAORGANIZATION-NAME1 = W_BP_DATA-LASTNAME.
      LW_CENTRALDATAORGANIZATION-NAME2 = W_BP_DATA-FIRSTNAME.
    ELSE.
      LW_CENTRALDATAORGANIZATION-NAME1 = W_BP_DATA-FIRSTNAME.
      LW_CENTRALDATAORGANIZATION-NAME2 = W_BP_DATA-LASTNAME.
    ENDIF.

    "法国创建公司客户的时候用页面上的company name
    IF COUNTRY EQ 'FR' OR ZCL_CRM_BUFFER=>GV_UI_LOGIN_ORG EQ 'O 50000297'."法国
*      CLEAR: lw_centraldataorganization-name1,lw_centraldataorganization-name2. 20171019 需求 取消该逻辑
      LW_CENTRALDATAORGANIZATION-NAME1 = IV_NAMEORG1.
      LW_CENTRALDATAORGANIZATION-NAME3 = W_BP_DATA-LASTNAME."20171019 需求 Last Name 借用 Org3 字段
    ENDIF.

    LW_ADDRESSDATA-LANGU  = 'E'.
    LW_CENTRALDATA-SEARCHTERM1  = BU_SORT1.
  ENDIF.

  LW_ADDRESSDATA-COUNTRY = W_BP_DATA-COUNTRY.
  LW_ADDRESSDATA-CITY    = W_BP_DATA-CITY.
  LW_ADDRESSDATA-STREET    = STREET.
  LW_ADDRESSDATA-STR_SUPPL1    = IV_STR_SUPPL1."add by dq-yuw for japan
  LW_ADDRESSDATA-STR_SUPPL2    = IV_STR_SUPPL2."add by dq-yuw for FRANCE
  LW_ADDRESSDATA-DISTRICT  = DISTRICT.
  LW_ADDRESSDATA-HOUSE_NO    = HOUSE_NO.
  LW_ADDRESSDATA-POSTL_COD1    = POSTCODE.
  LW_ADDRESSDATA-REGION    = REGION.
  LW_ADDRESSDATA-FLOOR = IV_FLOOR."20170718 Add Chenguoguang
  LW_ADDRESSDATA-COMM_TYPE = DEFLT_COMM.
  LW_ADDRESSDATA-TIME_ZONE = TIME_ZONE.

  IF W_BP_DATA-TELEPHONE IS NOT INITIAL.
    CLEAR LT_TELEFONDATA.
    LT_TELEFONDATA-COUNTRY = W_BP_DATA-COUNTRY.
    LT_TELEFONDATA-TELEPHONE = W_BP_DATA-TELEPHONE.
    LT_TELEFONDATA-R_3_USER = '1'.
    LT_TELEFONDATA-EXTENSION = TEL_EXTENS.
    APPEND LT_TELEFONDATA.
  ENDIF.

  IF W_BP_DATA-MOBIL IS NOT INITIAL.
    CLEAR LT_TELEFONDATA.
    LT_TELEFONDATA-COUNTRY = W_BP_DATA-COUNTRY.
    LT_TELEFONDATA-TELEPHONE = W_BP_DATA-MOBIL.
    LT_TELEFONDATA-R_3_USER = '3'.
    APPEND LT_TELEFONDATA.
  ENDIF.

  IF FAX_NUMBER IS NOT INITIAL.

    LT_FAXDATA-FAX       = FAX_NUMBER.
    LT_FAXDATA-EXTENSION = FAX_EXTENS.
    APPEND LT_FAXDATA.
  ENDIF.

  IF SMTP_ADDR IS NOT INITIAL.
    LT_E_MAILDATA-E_MAIL = SMTP_ADDR.
    APPEND LT_E_MAILDATA.
  ENDIF.


*默认为客户
  LW_SALES_CLASS-IS_CUSTOMER = 'X'.
  LW_SALES_CLASSX-IS_CUSTOMER = 'X'.

*装运
  IF COUNTRY = 'ES'.
    LW_SALES_SHIPPING-SHIPPING_COND = '03'.
  ELSE.
    LW_SALES_SHIPPING-SHIPPING_COND = '01'.
  ENDIF.
  LW_SALES_SHIPPING-DLV_PRIORITY = 1.



*根据国家信息在表ZBP_SALES里取出相关信息
  DATA: IT_BP_SALES TYPE STANDARD TABLE OF ZBP_SALES,
        WA_BP_SALES TYPE ZBP_SALES.

  SELECT SINGLE *
    FROM ZBP_SALES
    INTO WA_BP_SALES
    WHERE COUNTRY = COUNTRY.
*  ENDIF.
IF sales_org IS NOT INITIAL."add by ly 20180803
SELECT SINGLE *
    FROM ZBP_SALES
    INTO WA_BP_SALES
    WHERE COUNTRY = COUNTRY
  AND SALES_ORG = SALES_ORG.
ENDIF.
  "add by dq-yuw request by zhangchi
  "集中建单平台创建客户时,根据客户地址中的国家 = ZBP_SALES-COUNTRY & 当前登录用户的销售组织 = ZBP_SALES-SALES_ORG,来查找ZBP_SALES表中的数据,
  "以确定创建客户的BP分组和销售组织等数据。
  IF ZCL_CRM_ATTRIBUTES=>GV_WEB_UI_LOGON = ABAP_TRUE..
    DATA LV_SALES_ORG TYPE CRMT_SALES_ORG.

    CALL FUNCTION 'Z_GET_SALESORG_BY_USER'
      EXPORTING
        IV_USER      = SY-UNAME
      IMPORTING
        EV_SALES_ORG = LV_SALES_ORG
*       EV_COUNTRY   =
*       EV_HQ        =
      .
    IF LV_SALES_ORG <> 'O 50000192' AND LV_SALES_ORG <> 'O 50000194'.
      SELECT SINGLE *
        FROM ZBP_SALES
        INTO WA_BP_SALES
        WHERE COUNTRY = COUNTRY
        AND SALES_ORG = LV_SALES_ORG.
    ENDIF.
  ENDIF.
* 销售视图
  LW_SALES_AREA-SALES_ORGANIZATION   = WA_BP_SALES-SALES_ORG.
  LW_SALES_AREA-DISTRIBUTION_CHANNEL = WA_BP_SALES-CHANNEL.
*    lw_sales_area-division             = wa_bp_sales-division.
  LW_SALES_ORG-SALES_OFFICE          = WA_BP_SALES-SALES_OFFICE.
*    lw_sales_org-sales_group           = wa_bp_sales-sales_group.

* 定价程序
  LW_SALES_BILL-PRICE_GROUP = WA_BP_SALES-PRICE_GROUP.
  LW_SALES_BILL-CURRENCY    = WA_BP_SALES-CURRENCY.
  LW_SALES_BILL-CUST_PRIC_PROC = 'X'.

 CLEAR:L_FAIL.
  CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
    EXPORTING
      PARTNERCATEGORY         = BU_TYPE
      PARTNERGROUP            = WA_BP_SALES-BU_GROUP
*     partnergroup            = w_bp_data-partn_grp
      CENTRALDATAORGANIZATION = LW_CENTRALDATAORGANIZATION
      CENTRALDATA             = LW_CENTRALDATA
      CENTRALDATAPERSON       = LW_CENTRALDATAPERSON
      ADDRESSDATA             = LW_ADDRESSDATA
    IMPORTING
      BUSINESSPARTNER         = W_BP_DATA-PARTNER
    TABLES
      TELEFONDATA             = LT_TELEFONDATA
      FAXDATA                 = LT_FAXDATA
      E_MAILDATA              = LT_E_MAILDATA
      RETURN                  = LT_RETURN.

  LOOP AT LT_RETURN WHERE TYPE = 'A' OR TYPE = 'E'.
    L_FAIL = 'X'.
    APPEND LT_RETURN TO RETURN[].
    CLEAR LT_RETURN.
  ENDLOOP.
  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.
  CHECK L_FAIL IS INITIAL.
  CHECK W_BP_DATA-PARTNER IS NOT INITIAL.

  BP_NUMBER = W_BP_DATA-PARTNER.

*返回创建好的bp号码
  CLEAR LT_RETURN.
  LT_RETURN-TYPE = 'S'.
  LT_RETURN-MESSAGE = W_BP_DATA-PARTNER.
  APPEND LT_RETURN TO RETURN[].

*角色
  CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
    EXPORTING
      BUSINESSPARTNER     = W_BP_DATA-PARTNER
      BUSINESSPARTNERROLE = 'CRM000'
      VALIDFROMDATE       = '00010101'
      VALIDUNTILDATE      = '99991231'
    TABLES
      RETURN              = LT_RETURN.

  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.

  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.
 CHECK L_FAIL IS INITIAL.
*税分类
  IF  WA_BP_SALES-COUNTRY IS NOT INITIAL AND
      WA_BP_SALES-TAX_TYPE IS NOT INITIAL AND
      WA_BP_SALES-TAX_GROUP IS NOT INITIAL.
    CLEAR L_FAIL.
    DATA: L_TAXREGION TYPE BAPIBUS1006_TAX_CLASS-TAXREGION.
    CALL FUNCTION 'BAPI_BUTX_FRG0010_ADD'
      EXPORTING
        BUSINESSPARTNER = W_BP_DATA-PARTNER
        TAXCOUNTRY      = WA_BP_SALES-COUNTRY
        TAXREGION       = L_TAXREGION
        TAXTYPE         = WA_BP_SALES-TAX_TYPE
        DATA            = WA_BP_SALES-TAX_GROUP
      TABLES
        RETURN          = LT_RETURN.
  ENDIF .

  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.

  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

  CLEAR L_FAIL.


*销售范围
  CALL FUNCTION 'BAPI_BUPA_FRG0010_ADD'
    EXPORTING
      BUSINESSPARTNER = W_BP_DATA-PARTNER
      SALES_AREA      = LW_SALES_AREA
*     DATA            =
    TABLES
      RETURN          = LT_RETURN.

  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.
    APPEND LT_RETURN TO RETURN[].
    CLEAR LT_RETURN.
  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

  CLEAR L_FAIL.

*组织
  CALL FUNCTION 'BAPI_BUPA_FRG0140_ADD'
    EXPORTING
      BUSINESSPARTNER = W_BP_DATA-PARTNER
      SALES_AREA      = LW_SALES_AREA
      DATA            = LW_SALES_ORG
*     DATAX           =
    TABLES
      RETURN          = LT_RETURN.

  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.
    APPEND LT_RETURN TO RETURN[].
    CLEAR LT_RETURN.
  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .

  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

  CLEAR L_FAIL.

*开票中的客户定价程序
  CALL FUNCTION 'BAPI_BUPA_FRG0030_ADD'
    EXPORTING
      BUSINESSPARTNER = W_BP_DATA-PARTNER
      SALES_AREA      = LW_SALES_AREA
      DATA            = LW_SALES_BILL
    TABLES
      RETURN          = LT_RETURN.
  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.
    APPEND LT_RETURN TO RETURN[].
    CLEAR LT_RETURN.
*      WAIT UP TO '0.5' SECONDS.
  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

  CLEAR L_FAIL.

  CALL FUNCTION 'BAPI_BUPA_FRG0040_CREATE'
    EXPORTING
      BUSINESSPARTNER = W_BP_DATA-PARTNER
      DATA            = LW_SALES_CLASS
*     datax           = lw_sales_classx
    TABLES
      RETURN          = LT_RETURN.

  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.
    APPEND LT_RETURN TO RETURN[].
    CLEAR LT_RETURN.
*      WAIT UP TO '0.5' SECONDS.
  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*    CONTINUE.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

  CLEAR L_FAIL.

  CALL FUNCTION 'BAPI_BUPA_FRG0020_ADD'
    EXPORTING
      BUSINESSPARTNER = W_BP_DATA-PARTNER
      SALES_AREA      = LW_SALES_AREA
      DATA            = LW_SALES_SHIPPING
*     datax           = lw_sales_classx
    TABLES
      RETURN          = LT_RETURN.

  LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
    L_FAIL = 'X'.
    APPEND LT_RETURN TO RETURN[].
    CLEAR LT_RETURN.
*      WAIT UP TO '0.5' SECONDS.
  ENDLOOP.

  IF L_FAIL = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*    CONTINUE.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
  ENDIF.

  DEFINE EEW.
    IF &1 is NOT INITIAL.
      &2 = &1.
      &3 = 'X'.
    ENDIF.
  END-OF-DEFINITION.
**&----增强字段(网点)
  CLEAR:LS_EEWB_X,LS_EEWB.
  SELECT SINGLE PARTNER_GUID
    INTO LV_PARTNER_GUID
    FROM BUT000
    WHERE PARTNER =  W_BP_DATA-PARTNER.
  IF SY-SUBRC = 0.
    LS_EEWB-PARTNR_GUID = LV_PARTNER_GUID.
    EEW IV_ZZBUILDING_TYPE LS_EEWB-ZZBUILDING_TYPE LS_EEWB_X-ZZBUILDING_TYPE.
    EEW IV_ZZMKT_USAGE LS_EEWB-ZZMKT_USAGE LS_EEWB_X-ZZMKT_USAGE.
    EEW IV_ZZACCESS_CODE LS_EEWB-ZZACCESS_CODE LS_EEWB_X-ZZACCESS_CODE.
    REFRESH:LT_RETURN, LT_BAPIRET2.
    CALL FUNCTION 'BUPA_CENTRAL_CI_CHANGE'
      EXPORTING
        IS_BUS000_EEW   = LS_EEWB
        IS_BUS000_EEW_X = LS_EEWB_X
      IMPORTING
        ET_RETURN       = LT_BAPIRET2.
    APPEND LINES OF LT_BAPIRET2 TO LT_RETURN.
    LOOP AT LT_RETURN WHERE TYPE = 'E' OR TYPE = 'A' .
      L_FAIL = 'X'.
      APPEND LT_RETURN TO RETURN[].
      CLEAR LT_RETURN.
*      WAIT UP TO '0.5' SECONDS.
    ENDLOOP.

    IF L_FAIL = 'X'.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*    CONTINUE.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    ENDIF.
  ENDIF.

ENDFUNCTION.

 

转载于:https://www.cnblogs.com/sapSB/p/10130122.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值