FUNCTION ZFM_SD_BP_CREATE. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(IS_HEADER) TYPE ZSD_BPBC_S *" VALUE(IS_CR) TYPE ZSD_BP_CR_S *" VALUE(I_TESTRUN) TYPE CHAR1 OPTIONAL *" VALUE(IS_CRM) TYPE ZSDT024 OPTIONAL *" EXPORTING *" VALUE(E_CODE) TYPE CHAR1 *" VALUE(E_MSG) TYPE STRING *" VALUE(E_NUMBER) TYPE BU_PARTNER *" TABLES *" ET_RETURN STRUCTURE BAPIRET2 *" IT_ROLES STRUCTURE ZSD_BP_ROLE_S OPTIONAL *" IT_FKNVI STRUCTURE FKNVI OPTIONAL *" IT_FKNVD STRUCTURE FKNVD OPTIONAL *" IT_FKNVP STRUCTURE FKNVP OPTIONAL *" IT_FKNBK STRUCTURE FKNBK OPTIONAL *" IT_FKNAS STRUCTURE FKNAS OPTIONAL *" IT_KNB1 STRUCTURE ZBP_KNB1 OPTIONAL *"---------------------------------------------------------------------- DATA: E_BU_PARTNER_GUID TYPE BU_PARTNER_GUID . CLEAR :E_NUMBER, E_CODE ,E_MSG. ***********EHR同步到SAP************* * IF LINES( IT_YGBP ) GT 0 AND IS_CR-I_EHR2SAP EQ 'X'. * LOOP AT IT_YGBP INTO GS_YGBP. * PERFORM FRM_EHR2SAP USING GS_YGBP. "把同步数据维护到SAP表中记录。 * CLEAR:GS_YGBP. * ENDLOOP. * E_CODE = 'S'. * E_MSG = 'EHR同步到SAP!'. * CLEAR:LS_RETURN. * LS_RETURN-TYPE = E_CODE. * LS_RETURN-MESSAGE = E_CODE. * APPEND LS_RETURN TO ET_RETURN. * ENDIF. *----------begin of by Luolin 21.08.2020 13:43:36---------- *校验员工外是否名字重复 IF IS_HEADER-NAME1 IS INITIAL. E_CODE = 'E'. E_MSG = 'BP名称不允许空值!'. RETURN. ELSEIF IS_HEADER-PARTN_GRP NE 'Z006'. SELECT COUNT(*) FROM BUT000 WHERE NAME_ORG1 EQ IS_HEADER-NAME1 AND BU_GROUP NE 'Z006'. IF SY-SUBRC EQ 0. E_CODE = 'E'. SELECT SINGLE ZNAME FROM ZSDT027 INTO @DATA(LV_ZNAME). E_MSG = 'SAP系统BP名称已创建,不允许重复创建,如果该客商在本公司下查询不到请找' && LV_ZNAME && '扩充即可。!'. RETURN. ENDIF. ENDIF. *----------end of by Luolin 21.08.2020 13:43:36---------- **********员工BP的工号********** IF IS_HEADER-BPARTNER IS INITIAL AND IS_CR-FLAG EQ '1'. DATA:LS_BP TYPE BUT000. SELECT SINGLE * INTO LS_BP FROM BUT000 WHERE BU_SORT1 = IS_HEADER-SEARCHTERM1. IF LS_BP IS NOT INITIAL. E_CODE = 'E'. E_MSG = '该员工已经存在系统中'. E_NUMBER = LS_BP-PARTNER. RETURN. ENDIF. PERFORM FRM_GET_NEW_BPNUMBER USING IS_HEADER-PARTN_GRP CHANGING IS_HEADER-BPARTNER. ENDIF. **********检查客户BP的税号是否重复********** DATA:LV_COUNT_TAX TYPE INT4, LS_FKNAS TYPE FKNAS. IF IS_CR-KNAS EQ 'X'. LOOP AT IT_FKNAS INTO LS_FKNAS WHERE STCEG IS NOT INITIAL.. SELECT COUNT( * ) INTO LV_COUNT_TAX FROM DFKKBPTAXNUM WHERE TAXNUM = LS_FKNAS-STCEG. IF LV_COUNT_TAX GT 0. E_CODE = 'E'. E_MSG = '系统中存在相同的客户税号!!!'. RETURN. ENDIF. ENDLOOP. ENDIF. **********检查客户BP的同一控制********** DATA :LS_KNVP TYPE FKNVP, LT_KNVP TYPE STANDARD TABLE OF FKNVP, LV_COUNT_ZA TYPE INT4, "检查同一控制 LV_COUNT_GRP TYPE INT4 "检查销售范围和公司 . IF IS_CR-KNVP EQ 'X'. LOOP AT IT_FKNVP INTO LS_KNVP. IF LS_KNVP-PARVW EQ 'ZA'. * LS_KNVP-KUNN2 = LS_KNVP-KUNN2 ." 客户编号 SELECT COUNT( * ) INTO LV_COUNT_ZA FROM KNVV WHERE VKORG = IS_HEADER-VKORG " 销售组织 AND VTWEG = IS_HEADER-VTWEG " 分销渠道 AND SPART = IS_HEADER-SPART. " 产品组 IF LV_COUNT_ZA EQ 0. E_CODE = 'E'. E_MSG = '同一控制代码客户尚未扩展到对应销售组织!!!'. RETURN. ENDIF. ENDIF. ENDLOOP. ENDIF. **********检查客户BP的销售组织********** IF IS_HEADER-VKORG IS NOT INITIAL AND IS_HEADER-BUKRS IS NOT INITIAL. SELECT COUNT( * ) INTO @LV_COUNT_GRP FROM T001 AS T001 INNER JOIN TVKO AS TVKO ON T001~BUKRS = TVKO~BUKRS INNER JOIN TVKOT AS TVKOT ON TVKO~VKORG = TVKOT~VKORG LEFT JOIN TASSIGN_SD_VKORG ON TVKO~VKORG = TASSIGN_SD_VKORG~VKORG WHERE TVKO~VKORG = @IS_HEADER-VKORG " 销售组织 AND T001~BUKRS = @IS_HEADER-BUKRS. " 公司 IF LV_COUNT_GRP EQ 0. E_CODE = 'S'. E_MSG = '销售组织为分配销售公司,不允许创建,请确定销售组织分配!'. RETURN. ENDIF. ENDIF. **********创建BP的基本视图********** IF IS_CR-FLAG EQ '2'. "更改 ELSE. IF IS_HEADER IS NOT INITIAL AND IS_CR-I_BPVIEW_BC EQ 'X' AND IS_CR-FLAG NE '2'. CLEAR:LS_RETURN,LT_RETURN,LT_RETURN[]. PERFORM FRM_CREATE_BCVIEW CHANGING IS_HEADER E_NUMBER E_CODE E_MSG E_BU_PARTNER_GUID. LS_RETURN-TYPE = E_CODE. IF E_CODE EQ 'E' OR E_CODE EQ 'A'. LS_RETURN-MESSAGE = 'SAP创建基本视图出错'. ELSE. LS_RETURN-MESSAGE = 'SAP创建基本视图!'. ENDIF. APPEND LS_RETURN TO LT_RETURN. APPEND LINES OF LT_RETURN TO ET_RETURN. DELETE LT_RETURN WHERE TYPE EQ 'S' OR TYPE EQ 'I' OR TYPE EQ 'W' OR TYPE IS INITIAL. IF LINES( LT_RETURN ) GT 0. PERFORM FRM_ROLLBACK USING LS_RETURN. E_CODE = 'E'. E_MSG = '创建BP的基本视图出现错误,请查看消息!'. RETURN . ELSE. IF I_TESTRUN IS INITIAL. *----------begin of by Luolin 15.09.2020 15:53:51---------- *新增CRM传入的开票标记数据 IF IS_CRM IS NOT INITIAL. IS_CRM-KUNNR = E_NUMBER. MODIFY ZSDT024 FROM IS_CRM. ENDIF. *----------end of by Luolin 15.09.2020 15:53:51---------- PERFORM FRM_COMMIT USING LS_RETURN. E_CODE = 'S'. E_MSG = '创建BP的基本视图成功处理!'. IF E_NUMBER IS NOT INITIAL . IS_HEADER-BPARTNER = E_NUMBER. ENDIF. ELSE. PERFORM FRM_ROLLBACK USING LS_RETURN. E_CODE = 'S'. E_MSG = '测试运行!基本视图校验通过!'. RETURN. ENDIF. ENDIF. CLEAR:LS_RETURN. LS_RETURN-TYPE = E_CODE. LS_RETURN-MESSAGE = E_MSG. APPEND LS_RETURN TO ET_RETURN. ENDIF. ENDIF. **********添加角色分类********** IF LINES( IT_ROLES ) GT 0 AND IS_CR-I_BP_ADD_ROLE EQ 'X'. CLEAR:LV_ADD_ROLE,LT_RETURN,LT_RETURN[]. LOOP AT IT_ROLES INTO LS_ROLE. LV_ADD_ROLE = LS_ROLE-ROLE ."'FLCU01'. "添加角色分类 CLEAR:LS_RETURN,LT_RETURN,LT_RETURN[]. PERFORM FRM_ADD_ROLE USING LS_ROLE IS_HEADER-BPARTNER. APPEND LINES OF LT_RETURN TO ET_RETURN. DELETE LT_RETURN WHERE TYPE EQ 'S' OR TYPE EQ 'I' OR TYPE EQ 'W' OR TYPE IS INITIAL. IF LINES( LT_RETURN ) GT 0. PERFORM FRM_ROLLBACK USING LS_RETURN. E_CODE = 'E'. E_MSG = '出现错误,请查看消息!'. ELSE. PERFORM FRM_COMMIT USING LS_RETURN. E_CODE = 'S'. E_MSG = '成功处理!'. ENDIF. CLEAR:LS_RETURN . LS_RETURN-TYPE = E_CODE. CONCATENATE LS_ROLE-ROLE E_MSG INTO LS_RETURN-MESSAGE . APPEND LS_RETURN TO ET_RETURN. ENDLOOP. ENDIF. **********扩展销售范围前获取基本数据********** PERFORM FRM_GET_EXT_BC CHANGING IS_HEADER. **********扩展销售视图********** CLEAR:LT_RETURN,LT_RETURN[]. DATA:LS_KNA1 TYPE KNA1. IF IS_CR-KNA1 EQ 'X'. LS_KNA1-KUNNR = IS_HEADER-BPARTNER. LS_KNA1-LAND1 = IS_HEADER-COUNTRY." 'CN'. LS_KNA1-NAME1 = IS_HEADER-NAME1." IS_HEADER-SEARCHTERM1. LS_KNA1-ORT01 = IS_HEADER-ORT01." '北京市'. LS_KNA1-PSTLZ = IS_HEADER-PSTLZ. " '234560'. LS_KNA1-SORTL = IS_HEADER-SORTL." '北京分公司'. LS_KNA1-MCOD1 = IS_HEADER-MCOD1." '科顺防水科技股份有限公司'. LS_KNA1-MCOD3 = IS_HEADER-MCOD3." '北京市'. LS_KNA1-KTOKD = IS_HEADER-PARTN_GRP." 'Z006'. LS_KNA1-SPRAS = IS_HEADER-LANGU." '1'. LS_KNA1-REGIO = IS_HEADER-REGION. LS_KNA1-TELF1 = IS_HEADER-TELF1. LS_KNA1-PFACH = IS_HEADER-PSTLZ."邮政信箱 LS_KNA1-PSTL2 = IS_HEADER-PSTLZ."邮箱邮政编码 * LS_KNA1-CITYC = IS_HEADER-REGION."城市代码 * LS_KNA1-ZZTELF1 = IS_HEADER-ZZTELF1. * LS_KNA1-ZZTELF2 = IS_HEADER-ZZTELF2. * LS_KNA1-ZZTELF3 = IS_HEADER-ZZTELF3. * LS_KNA1-ZZSMTPADDR1 = IS_HEADER-ZZSMTPADDR1. * LS_KNA1-ZZSMTPADDR2 = IS_HEADER-ZZSMTPADDR2. * LS_KNA1-ZZSMTPADDR3 = IS_HEADER-ZZSMTPADDR3. * LS_KNA1-ZZNAMTEXT1 = IS_HEADER-ZZNAMTEXT1. * LS_KNA1-ZZNAMTEXT2 = IS_HEADER-ZZNAMTEXT2. * LS_KNA1-ZZNAMTEXT3 = IS_HEADER-ZZNAMTEXT3. ENDIF. DATA:LS_KNB1 TYPE KNB1. IF IS_CR-KNA1 EQ 'X'. LS_KNB1-KUNNR = IS_HEADER-BPARTNER ." 客户编号 LS_KNB1-BUKRS = IS_HEADER-BUKRS." '1000' ." 公司代码 LS_KNB1-XZVER = 'X'. LS_KNB1-ZUAWA = IS_HEADER-ZUAWA." '001'. LS_KNB1-AKONT = IS_HEADER-AKONT ." '1221999999'. IF IS_HEADER-ZTERM_FI IS NOT INITIAL. LS_KNB1-ZTERM = IS_HEADER-ZTERM_FI ." 财务付款条款 ENDIF. * LS_KNB1-PERNR = IS_HEADER-BPARTNER." 人员编号 ENDIF. DATA:LS_KNVV TYPE KNVV. IF IS_CR-KNVV EQ 'X'. LS_KNVV-KUNNR = IS_HEADER-BPARTNER ." 客户编号 LS_KNVV-VKORG = IS_HEADER-VKORG ." '1001'."销售组织 LS_KNVV-VTWEG = IS_HEADER-VTWEG. " '10'." 分销渠道 LS_KNVV-SPART = IS_HEADER-SPART. " '00'." 产品组 " 用于定价过程确定的客户分类 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = IS_HEADER-KALKS IMPORTING OUTPUT = LS_KNVV-KALKS. * LS_KNVV-KALKS = '1'."IS_HEADER-KALKS. " '01'. LS_KNVV-WAERS = IS_HEADER-WAERS. " 'CNY'." 货币 LS_KNVV-AWAHR = '100'." 订单可能性 LS_KNVV-KZAZU = 'X'."订单组合标识 LS_KNVV-KTGRD = IS_HEADER-KTGRD." IF IS_HEADER-VKGRP IS NOT INITIAL. LS_KNVV-VKGRP = IS_HEADER-VKGRP."销售组 LS_KNVV-VKBUR = IS_HEADER-VKBUR."销售办事处 ENDIF. IF IS_HEADER-INCO1 IS NOT INITIAL. LS_KNVV-INCO1 = IS_HEADER-INCO1."国际贸易条款 * LS_KNVV-INCO2 = IS_HEADER-INCO2."国际贸易条款(第 2 部分) LS_KNVV-INCO2_L = IS_HEADER-INCO2. ENDIF. IF IS_HEADER-ZTERM IS NOT INITIAL. LS_KNVV-ZTERM = IS_HEADER-ZTERM."收付条件代码 ENDIF. ENDIF. DATA:LS_KNVI TYPE FKNVI, LT_KNVI TYPE STANDARD TABLE OF FKNVI. IF IS_CR-KNVI EQ 'X'. LOOP AT IT_FKNVI INTO LS_KNVI. LS_KNVI-KUNNR = IS_HEADER-BPARTNER ." 客户编号 APPEND LS_KNVI TO LT_KNVI. ENDLOOP. ENDIF. * DATA :LS_KNVK TYPE FKNVK, * LT_KNVK TYPE STANDARD TABLE OF FKNVK. * LS_KNVK-KUNNR = IS_HEADER-BPARTNER. * LS_KNVK-TELF1 = IS_HEADER-TELF1. * LS_KNVK-NAMEV = IS_HEADER-SEARCHTERM1. * LS_KNVK-NAME1 = IS_HEADER-SEARCHTERM1. * LS_KNVK-KZ = 'I'. * APPEND LS_KNVK TO LT_KNVK. DATA :LT_KNVD TYPE STANDARD TABLE OF FKNVD, LS_KNVD TYPE FKNVD. IF IS_CR-KNVD EQ 'X'. LOOP AT IT_FKNVD INTO LS_KNVD. LS_KNVD-KUNNR = IS_HEADER-BPARTNER ." 客户编号 APPEND LS_KNVD TO LT_KNVD. ENDLOOP. * MOVE-CORRESPONDING IT_FKNVD[] TO LT_KNVD[]. ENDIF. DATA: LS_ADDR TYPE BAPIADDR1, LS_ADDR2 TYPE BAPIADDR2. IF IS_CR-ADDR EQ 'X'. LS_ADDR-TITLE = IS_HEADER-SEARCHTERM1. LS_ADDR-NAME = IS_HEADER-NAME1. LS_ADDR-SORT1 = IS_HEADER-SEARCHTERM1. LS_ADDR-CITY = IS_HEADER-CITY1. LS_ADDR-STREET = IS_HEADER-STREET. LS_ADDR-REGION = IS_HEADER-REGION. LS_ADDR-POSTL_COD1 = IS_HEADER-PSTLZ. LS_ADDR-POSTL_COD2 = IS_HEADER-PSTLZ. LS_ADDR-PO_BOX = IS_HEADER-PSTLZ. LS_ADDR-TEL1_NUMBR = IS_HEADER-TELF1. * ls_addr-ADR_NOTES = IS_HEADER-TELF1. * LS_ADDR-POSTL_COD1 = ''. LS_ADDR-COUNTRY = 'CN'. LS_ADDR-LANGU = '1'. ENDIF. * DATA :LS_KNVP TYPE FKNVP, * LT_KNVP TYPE STANDARD TABLE OF FKNVP. DATA:LV_KUNNR TYPE KUNN2. "客户编号去掉前导零 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = IS_HEADER-BPARTNER IMPORTING OUTPUT = LV_KUNNR. IF IS_CR-KNVP EQ 'X'. LOOP AT IT_FKNVP INTO LS_KNVP. IF LS_KNVP-PARVW EQ 'ZA'. LS_KNVP-KUNN2 = LS_KNVP-KUNN2 ." 客户编号 * APPEND LS_KNVP TO LT_KNVP. ENDIF. LS_KNVP-KUNNR = LV_KUNNR ."IS_HEADER-BPARTNER ." 客户编号 APPEND LS_KNVP TO LT_KNVP. ENDLOOP. ENDIF. * DATA :LT_KNBK TYPE STANDARD TABLE OF FKNBK, * LS_KNBK TYPE FKNBK. * IF IS_CR-KNBK EQ 'X'. * LOOP AT IT_FKNBK INTO LS_KNBK. * LS_KNBK-KUNNR = IS_HEADER-BPARTNER ." 客户编号 * APPEND LS_KNBK TO LT_KNBK. * ENDLOOP. ** MOVE-CORRESPONDING IT_FKNBK[] TO LT_KNBK[]. * ENDIF. DATA:LT_KNAS TYPE STANDARD TABLE OF FKNAS, LS_KNAS TYPE FKNAS. IF IS_CR-KNAS EQ 'X'. LOOP AT IT_FKNAS INTO LS_KNAS. LS_KNAS-KUNNR = IS_HEADER-BPARTNER ." 客户编号 APPEND LS_KNAS TO LT_KNAS. ENDLOOP. * MOVE-CORRESPONDING IT_FKNAS[] TO LT_KNAS. ENDIF. CLEAR:LS_ADDR2. * LS_ADDR2-PERS_NO = IS_HEADER-BPARTNER ." 客户编号 LS_ADDR2-TEL1_NUMBR = IS_HEADER-TELF1. LS_ADDR2-TITLE_P = IS_HEADER-SEARCHTERM1. LS_ADDR2-FIRSTNAME = IS_HEADER-NAME1. LS_ADDR2-SORT1_P = IS_HEADER-SEARCHTERM1. LS_ADDR2-CITY = IS_HEADER-CITY1. LS_ADDR2-STREET = IS_HEADER-STREET. LS_ADDR2-REGION = IS_HEADER-REGION. LS_ADDR2-POSTL_COD1 = IS_HEADER-PSTLZ. LS_ADDR2-POSTL_COD2 = IS_HEADER-PSTLZ. LS_ADDR2-PO_BOX = IS_HEADER-PSTLZ. LS_ADDR2-TEL1_NUMBR = IS_HEADER-TELF1. LS_ADDR2-COUNTRY = 'CN'. LS_ADDR2-LANGU_P = '1'. CLEAR:LS_RETURN,LT_RETURN,LT_RETURN[]. CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL' EXPORTING I_KNA1 = LS_KNA1 I_KNB1 = LS_KNB1 I_KNVV = LS_KNVV I_BAPIADDR1 = LS_ADDR I_BAPIADDR2 = LS_ADDR2 I_MAINTAIN_ADDRESS_BY_KNA1 = 'X' * I_KNB1_REFERENCE = ' ' * I_FORCE_EXTERNAL_NUMBER_RANGE = 'X' * I_NO_BANK_MASTER_UPDATE = 'X' * I_CUSTOMER_IS_CONSUMER = ' ' * I_RAISE_NO_BTE = ' ' PI_POSTFLAG = 'X' * PI_CAM_CHANGED = ' ' * PI_ADD_ON_DATA = I_FROM_CUSTOMERMASTER = 'X' IMPORTING * E_KUNNR = E_NUMBER O_KNA1 = LS_KNA1 * E_SD_CUST_1321_DONE = TABLES * T_XKNAS = LT_KNAS * T_XKNBK = LT_KNBK * T_XKNB5 = * T_XKNVA = T_XKNVD = LT_KNVD T_XKNVI = LT_KNVI * T_XKNVK = LT_KNVK * T_XKNVL = T_XKNVP = LT_KNVP * T_XKNZA = * T_YKNAS = * T_YKNBK = * T_YKNB5 = * T_YKNVA = * T_YKNVD = * T_YKNVI = * T_YKNVK = * T_YKNVL = * T_YKNVP = * T_YKNZA = * T_UPD_TXT = LT_UPD EXCEPTIONS CLIENT_ERROR = 1 KNA1_INCOMPLETE = 2 KNB1_INCOMPLETE = 3 KNB5_INCOMPLETE = 4 KNVV_INCOMPLETE = 5 KUNNR_NOT_UNIQUE = 6 SALES_AREA_NOT_UNIQUE = 7 SALES_AREA_NOT_VALID = 8 INSERT_UPDATE_CONFLICT = 9 NUMBER_ASSIGNMENT_ERROR = 10 NUMBER_NOT_IN_RANGE = 11 NUMBER_RANGE_NOT_EXTERN = 12 NUMBER_RANGE_NOT_INTERN = 13 ACCOUNT_GROUP_NOT_VALID = 14 PARNR_INVALID = 15 BANK_ADDRESS_INVALID = 16 TAX_DATA_NOT_VALID = 17 NO_AUTHORITY = 18 COMPANY_CODE_NOT_UNIQUE = 19 DUNNING_DATA_NOT_VALID = 20 KNB1_REFERENCE_INVALID = 21 CAM_ERROR = 22 OTHERS = 23. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO E_MSG. E_CODE = SY-MSGTY. CLEAR:LS_RETURN. LS_RETURN-TYPE = E_CODE. LS_RETURN-MESSAGE = E_MSG. APPEND LS_RETURN TO ET_RETURN. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' IMPORTING RETURN = LS_RETURN. ELSE. CLEAR:LS_RETURN. LS_RETURN-TYPE = 'S'. LS_RETURN-MESSAGE = '成功扩展BP视图'. APPEND LS_RETURN TO ET_RETURN. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = LS_RETURN. ENDIF. IF LS_RETURN IS NOT INITIAL. APPEND LS_RETURN TO ET_RETURN. ENDIF. *****************纳税号**************** DATA:LV_BUSINESSPARTNER TYPE BAPIBUS1006_HEAD-BPARTNER, LV_TAXTYPE TYPE BAPIBUS1006TAX-TAXTYPE, LV_TAXNUMBER TYPE BAPIBUS1006TAX-TAXNUMBER. LOOP AT LT_KNAS INTO LS_KNAS. MOVE E_NUMBER TO LV_BUSINESSPARTNER. MOVE LS_KNAS-LAND1 TO LV_TAXTYPE . MOVE LS_KNAS-STCEG TO LV_TAXNUMBER. CALL FUNCTION 'BAPI_BUPA_TAX_ADD' EXPORTING BUSINESSPARTNER = E_NUMBER TAXTYPE = LV_TAXTYPE TAXNUMBER = LV_TAXNUMBER TABLES RETURN = LT_RETURN. ENDLOOP. IF SY-SUBRC <> 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' IMPORTING RETURN = LS_RETURN. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = LS_RETURN. ENDIF. APPEND LINES OF LT_RETURN TO ET_RETURN. DATA :LS_BANK TYPE BAPIBUS1006_BANKDETAIL, LS_KNBK TYPE FKNBK. IF IS_CR-KNBK EQ 'X'. LOOP AT IT_FKNBK INTO LS_KNBK. CLEAR:LS_BANK. LS_BANK-BANK_CTRY = LS_KNBK-BANKS." 银行所属国家/地区代码 LS_BANK-BANK_KEY = LS_KNBK-BANKL." 银行代码 LS_BANK-BANK_ACCT = LS_KNBK-BANKN." 银行帐户号码 LS_BANK-BANK_REF = LS_KNBK-BKREF." 银行帐户号码 LS_BANK-ACCOUNTHOLDER = LS_KNBK-KOINH." 帐户持有人姓名 * BANKACCOUNTNAME = LS_KNBK-BANKS." 银行帐户的名称 LS_BANK-BANKDETAILVALIDFROM = LS_KNBK-KOVON." 有效日期(有效起始日期) LS_BANK-BANKDETAILVALIDTO = LS_KNBK-KOBIS." 有效日期(有效截止日期) LS_BANK-BANK_ACCOUNT_TYPE = LS_KNBK-BVTYP." 银行账户类型 CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD' EXPORTING BUSINESSPARTNER = IS_HEADER-BPARTNER " 客户编号 * BANKDETAILID = BANKDETAILDATA = LS_BANK * IMPORTING * BANKDETAILIDOUT = TABLES RETURN = LT_RETURN. IF SY-SUBRC <> 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' IMPORTING RETURN = LS_RETURN. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = LS_RETURN. ENDIF. APPEND LINES OF LT_RETURN TO ET_RETURN. ENDLOOP. ENDIF. ******************************[扩展BP的公司代码]***************************** IF IS_CR-ZBP_KNB1 EQ 'X'. DATA:LS_ZBP_KNB1 TYPE ZBP_KNB1. CLEAR:LS_KNB1. LOOP AT IT_KNB1 INTO LS_ZBP_KNB1. CLEAR:LS_KNB1. MOVE-CORRESPONDING LS_ZBP_KNB1 TO LS_KNB1. LS_KNB1-KUNNR = IS_HEADER-BPARTNER. CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL' EXPORTING * I_KNA1 = I_KNB1 = LS_KNB1 * I_KNVV = * I_BAPIADDR1 = * I_BAPIADDR2 = * I_MAINTAIN_ADDRESS_BY_KNA1 = ' ' * I_KNB1_REFERENCE = ' ' * I_FORCE_EXTERNAL_NUMBER_RANGE = ' ' * I_NO_BANK_MASTER_UPDATE = ' ' I_CUSTOMER_IS_CONSUMER = 'X' * I_RAISE_NO_BTE = ' ' PI_POSTFLAG = 'X' * PI_CAM_CHANGED = ' ' * PI_ADD_ON_DATA = I_FROM_CUSTOMERMASTER = 'X' * IMPORTING * E_KUNNR = * O_KNA1 = * E_SD_CUST_1321_DONE = * TABLES * T_XKNAS = * T_XKNBK = * T_XKNB5 = * T_XKNVA = * T_XKNVD = * T_XKNVI = * T_XKNVK = * T_XKNVL = * T_XKNVP = * T_XKNZA = * T_YKNAS = * T_YKNBK = * T_YKNB5 = * T_YKNVA = * T_YKNVD = * T_YKNVI = * T_YKNVK = * T_YKNVL = * T_YKNVP = * T_YKNZA = * T_UPD_TXT = EXCEPTIONS CLIENT_ERROR = 1 KNA1_INCOMPLETE = 2 KNB1_INCOMPLETE = 3 KNB5_INCOMPLETE = 4 KNVV_INCOMPLETE = 5 KUNNR_NOT_UNIQUE = 6 SALES_AREA_NOT_UNIQUE = 7 SALES_AREA_NOT_VALID = 8 INSERT_UPDATE_CONFLICT = 9 NUMBER_ASSIGNMENT_ERROR = 10 NUMBER_NOT_IN_RANGE = 11 NUMBER_RANGE_NOT_EXTERN = 12 NUMBER_RANGE_NOT_INTERN = 13 ACCOUNT_GROUP_NOT_VALID = 14 PARNR_INVALID = 15 BANK_ADDRESS_INVALID = 16 TAX_DATA_NOT_VALID = 17 NO_AUTHORITY = 18 COMPANY_CODE_NOT_UNIQUE = 19 DUNNING_DATA_NOT_VALID = 20 KNB1_REFERENCE_INVALID = 21 CAM_ERROR = 22 OTHERS = 23. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO E_MSG. E_CODE = SY-MSGTY. CLEAR:LS_RETURN. LS_RETURN-TYPE = E_CODE. LS_RETURN-MESSAGE = E_MSG. APPEND LS_RETURN TO ET_RETURN. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' IMPORTING RETURN = LS_RETURN. ELSE. CLEAR:LS_RETURN. LS_RETURN-TYPE = 'S'. LS_RETURN-MESSAGE = '成功扩展BP视图'. APPEND LS_RETURN TO ET_RETURN. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = LS_RETURN. ENDIF. IF LS_RETURN IS NOT INITIAL. APPEND LS_RETURN TO ET_RETURN. ENDIF. ENDLOOP. ENDIF. ENDFUNCTION.
LZFG_BP_MAINTAINF01
*----------------------------------------------------------------------* ***INCLUDE LZFG_BP_MAINTAINF01. *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form FRM_EHR2SAP *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> LS_YGBP *&---------------------------------------------------------------------* FORM FRM_EHR2SAP USING LS_YGBP TYPE ZEHR_YGBP. CASE LS_YGBP-STATU."员工状态:1.新增 2.更改 3.冻结 WHEN 1. LS_YGBP-MANDT = SY-MANDT. INSERT ZEHR_YGBP FROM LS_YGBP. WHEN 2 OR 3. UPDATE ZEHR_YGBP SET BUKRS = LS_YGBP-BUKRS "公司代码 PARTNER = LS_YGBP-PARTNER "合伙人号码 NAME_ORG1 = LS_YGBP-NAME_ORG1 "名称 BU_SORT1 = LS_YGBP-BU_SORT1 "业务伙伴的搜索词 1 ORT01 = LS_YGBP-ORT01 "城市 STATU = LS_YGBP-STATU "员工状态 . WHEN OTHERS. ENDCASE. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_BCVIEW *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_CREATE_BCVIEW CHANGING IS_HEADER TYPE ZSD_BPBC_S E_BUSINESSPARTNER TYPE BU_PARTNER E_CODE TYPE CHAR1 E_MSG TYPE STRING E_BU_PARTNER_GUID TYPE BU_PARTNER_GUID. LV_BPARTNER = IS_HEADER-BPARTNER. " '117030100'." 业务伙伴编号 LV_CATEGORY = '2' . " 1 .人员 2.组织 3.组 LV_PARTNERGROUP = IS_HEADER-PARTN_GRP. "'Z006'. "员工BP LS_CENTRALDATA-SEARCHTERM1 = IS_HEADER-SEARCHTERM1. " '梁其华'." 业务伙伴的搜索词 1 LS_CENTRALDATA-SEARCHTERM2 = IS_HEADER-SEARCHTERM2. " '2019012101'." 业务伙伴的搜索词 2 --- >工号 LS_CENTRALDATA-TITLELETTER = IS_HEADER-BU_TITLE_LET. " 问候 * LS_CENTRALDATA-PARTNERLANGUAGE = '1'." 业务伙伴:语言 LS_ORG-NAME1 = IS_HEADER-NAME1." 组织名称 1 * LS_ADDRESS-CITY = IS_HEADER-STREET. LS_ADDRESS-COUNTRY = IS_HEADER-COUNTRY. LS_ADDRESS-LANGU = IS_HEADER-LANGU. LS_ADDRESS-STREET = IS_HEADER-STREET. LS_ADDRESS-CITY_NO = IS_HEADER-CITY1. LS_ADDRESS-REGION = IS_HEADER-REGION. LS_ADDRESS-POSTL_COD1 = IS_HEADER-PSTLZ."邮政信箱 *----------begin of by Luolin 18.08.2020 15:09:25---------- *自动匹配城市编码信息 IF IS_HEADER-ORT01 IS NOT INITIAL. DATA LV_CITY_CODE TYPE CITY_CODE. SELECT COUNT(*) FROM ADRCITYT "校验传入的是否是地址码 WHERE CITY_NAME EQ @IS_HEADER-ORT01. IF SY-SUBRC EQ 0. LV_CITY_CODE = IS_HEADER-ORT01. ELSE. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = IS_HEADER-ORT01 IMPORTING OUTPUT = LV_CITY_CODE. SELECT SINGLE CITY_NAME FROM ADRCITYT WHERE CITY_CODE EQ @LV_CITY_CODE INTO @DATA(LV_CITY_NAME). ENDIF. IS_HEADER-ORT01 = LV_CITY_NAME." '北京市'. ENDIF. *----------end of by Luolin 18.08.2020 15:09:25---------- LS_ADDRESS-CITY = IS_HEADER-ORT01."城市代码 DATA:LT_BAPIADTEL TYPE STANDARD TABLE OF BAPIADTEL, LS_BAPIADTEL TYPE BAPIADTEL. LS_BAPIADTEL-TELEPHONE = IS_HEADER-TELF1. LS_BAPIADTEL-TEL_NO = IS_HEADER-TEL_NO. APPEND LS_BAPIADTEL TO LT_BAPIADTEL. DATA:LS_ADDRESSNOTES TYPE BAPIAD_REM, LT_ADDRESSNOTES TYPE STANDARD TABLE OF BAPIAD_REM. IF IS_HEADER-ADR_NOTES IS NOT INITIAL. LS_ADDRESSNOTES-ADR_NOTES = IS_HEADER-ADR_NOTES. "REMARK 联系人及电话 LS_ADDRESSNOTES-LANGU = '1'. APPEND LS_ADDRESSNOTES TO LT_ADDRESSNOTES. ENDIF. CLEAR :LT_RETURN,LT_RETURN[]. CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA' EXPORTING BUSINESSPARTNEREXTERN = LV_BPARTNER PARTNERCATEGORY = LV_CATEGORY PARTNERGROUP = LV_PARTNERGROUP CENTRALDATA = LS_CENTRALDATA * CENTRALDATAPERSON = CENTRALDATAORGANIZATION = LS_ORG * CENTRALDATAGROUP = ADDRESSDATA = LS_ADDRESS * DUPLICATE_MESSAGE_TYPE = * ACCEPT_ERROR = ' ' IMPORTING BUSINESSPARTNER = E_BUSINESSPARTNER TABLES TELEFONDATA = LT_BAPIADTEL * FAXDATA = * TELETEXDATA = * TELEXDATA = * E_MAILDATA = * RMLADDRESSDATA = * X400ADDRESSDATA = * RFCADDRESSDATA = * PRTADDRESSDATA = * SSFADDRESSDATA = * URIADDRESSDATA = * PAGADDRESSDATA = ADDRESSNOTES = LT_ADDRESSNOTES * COMMUNICATIONNOTES = * COMMUNICATIONUSAGE = * TELEFONDATANONADDRESS = * FAXDATANONADDRESS = * TELETEXDATANONADDRESS = * TELEXDATANONADDRESS = * E_MAILDATANONADDRESS = * RMLADDRESSDATANONADDRESS = * X400ADDRESSDATANONADDRESS = * RFCADDRESSDATANONADDRESS = * PRTADDRESSDATANONADDRESS = * SSFADDRESSDATANONADDRESS = * URIADDRESSDATANONADDRESS = * PAGADDRESSDATANONADDRESS = * COMMUNICATIONNOTESNONADDRESS = * COMMUNICATIONUSAGENONADDRESS = RETURN = LT_RETURN * ADDRESSDUPLICATES = . IF LINES( LT_RETURN ) GT 0. LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE EQ 'E'. E_CODE = 'E'. CONCATENATE LS_RETURN-MESSAGE E_MSG INTO E_MSG. RETURN . ENDLOOP. ENDIF. DATA: LT_GUID LIKE BUS000___I OCCURS 0 WITH HEADER LINE. CALL FUNCTION 'BUP_MEMORY_BUT000_GET' EXPORTING IV_PARTNER = E_BUSINESSPARTNER IMPORTING ES_BUT000 = LT_GUID. READ TABLE LT_GUID INDEX 1. DATA: LT_CUSTO LIKE BUS000_EEW OCCURS 0 WITH HEADER LINE. CLEAR LT_CUSTO. REFRESH LT_CUSTO. LT_CUSTO-PARTNR_GUID = LT_GUID-PARTNER_GUID. E_BU_PARTNER_GUID = LT_GUID-PARTNER_GUID. LT_CUSTO-ZZTELF1 = IS_HEADER-ZZTELF1. LT_CUSTO-ZZTELF2 = IS_HEADER-ZZTELF2. LT_CUSTO-ZZTELF3 = IS_HEADER-ZZTELF3. LT_CUSTO-ZZSMTPADDR1 = IS_HEADER-ZZSMTPADDR1. LT_CUSTO-ZZSMTPADDR2 = IS_HEADER-ZZSMTPADDR2. LT_CUSTO-ZZSMTPADDR3 = IS_HEADER-ZZSMTPADDR3. LT_CUSTO-ZZNAMTEXT1 = IS_HEADER-ZZNAMTEXT1. LT_CUSTO-ZZNAMTEXT2 = IS_HEADER-ZZNAMTEXT2. LT_CUSTO-ZZNAMTEXT3 = IS_HEADER-ZZNAMTEXT3. APPEND LT_CUSTO. CLEAR :LT_RETURN,LT_RETURN[]. CALL FUNCTION 'BUPA_CENTRAL_CI_CHANGE' EXPORTING IS_BUS000_EEW = LT_CUSTO * IS_BUS000_EEW_X = * IV_XSAVE = 'X' IMPORTING ET_RETURN = LT_RETURN. IF LINES( LT_RETURN ) GT 0. LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE EQ 'E'. E_CODE = 'E'. CONCATENATE LS_RETURN-MESSAGE ' . ' E_MSG INTO E_MSG. RETURN. ENDLOOP. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_ADD_ROLE *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> LV_ADD_ROLE *&---------------------------------------------------------------------* FORM FRM_ADD_ROLE USING LS_ROLE TYPE ZSD_BP_ROLE_S LV_BPARTNER TYPE BU_PARTNER . IF LS_ROLE-FROM IS INITIAL. LS_ROLE-FROM = SY-DATUM. ENDIF. IF LS_ROLE-TO IS INITIAL. LS_ROLE-TO = '99991231'. ENDIF. CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2' EXPORTING BUSINESSPARTNER = LV_BPARTNER BUSINESSPARTNERROLECATEGORY = LS_ROLE-ROLE * ALL_BUSINESSPARTNERROLES = ' ' * BUSINESSPARTNERROLE = * DIFFERENTIATIONTYPEVALUE = VALIDFROMDATE = LS_ROLE-FROM VALIDUNTILDATE = LS_ROLE-TO TABLES RETURN = LT_RETURN. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_ROLLBACK *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> LS_RETURN *&---------------------------------------------------------------------* FORM FRM_ROLLBACK USING LS_RETURN TYPE BAPIRET2. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' IMPORTING RETURN = LS_RETURN. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_COMMIT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> LS_RETURN *&---------------------------------------------------------------------* FORM FRM_COMMIT USING LS_RETURN TYPE BAPIRET2.. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' IMPORTING RETURN = LS_RETURN. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_GET_NEW_BPNUMBER *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& <-- IS_HEADER_BPARTNER *&---------------------------------------------------------------------* FORM FRM_GET_NEW_BPNUMBER USING PARTN_GRP CHANGING IS_HEADER_BPARTNER. SELECT MAX( KUNNR ) INTO IS_HEADER_BPARTNER FROM KNA1 WHERE KTOKD EQ PARTN_GRP AND KUNNR NE '0199999999'. IF IS_HEADER_BPARTNER IS NOT INITIAL. IS_HEADER_BPARTNER = IS_HEADER_BPARTNER + 1. ELSE. IS_HEADER_BPARTNER = '100000000'. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = IS_HEADER_BPARTNER IMPORTING OUTPUT = IS_HEADER_BPARTNER. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_GET_EXT_BC *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& <-- IS_HEADER *&---------------------------------------------------------------------* FORM FRM_GET_EXT_BC CHANGING P_IS_HEADER. ENDFORM.
网友评论