CALL METHOD CMD_EI_API=>MAINTAIN_BAPI
FUNCTION Z_CS_RFC_OA002 . *"---------------------------------------------------------------------- *"*"本地接口: *" EXPORTING *" VALUE(EX_TYPE) TYPE CHAR1 *" VALUE(EX_MSG) TYPE STRING *" VALUE(EX_VALUE) TYPE KUNNR *" TABLES *" IN_DATA STRUCTURE ZSCS_002 *"---------------------------------------------------------------------- DATA:G_LIN TYPE STRING. DATA:LV_FLG. DATA:G_PARNR TYPE PARNR.. DATA:LS_MAIN TYPE CMDS_EI_MAIN, LS_MAIN1 TYPE CMDS_EI_MAIN, LS_MAIN2 TYPE CMDS_EI_MAIN, LS_MESG TYPE CVIS_MESSAGE, LS_MESG1 TYPE CVIS_MESSAGE, LT_MSG TYPE BAPIRET2_T, LWA_MSG TYPE BAPIRET2, LT_CUST TYPE CMDS_EI_EXTERN_T, LWA_CUST TYPE CMDS_EI_EXTERN, LWA_SALE TYPE CMDS_EI_SALES, LT_SALE TYPE CMDS_EI_SALES_T, LT_FUNCTIONS TYPE CMDS_EI_FUNCTIONS_T, LWA_FUNCTIONS TYPE CMDS_EI_FUNCTIONS, LT_COMPANY TYPE CMDS_EI_COMPANY_T, LT_TEXT TYPE CVIS_EI_TEXT_T, LWA_TEXT TYPE CVIS_EI_TEXT, LT_CONTENT TYPE TLINE_TAB, LWA_CONTENT TYPE TLINE, LWA_TAX TYPE CMDS_EI_TAX_IND, LT_TAX TYPE CMDS_EI_TAX_IND_T, LT_REMARK TYPE CVIS_EI_REM_T, LWA_REMARK TYPE CVIS_EI_REM, LT_TEL TYPE CVIS_EI_TLX_T, LWA_TEL TYPE CVIS_EI_TLX_STR, LT_FAX TYPE CVIS_EI_FAX_T, LWA_FAX TYPE CVIS_EI_FAX_STR, LT_MAIL TYPE CVIS_EI_SMTP_T, LWA_MAIL TYPE CVIS_EI_SMTP_STR, LT_TEL01 TYPE CVIS_EI_TTX_T, LWA_TEL01 TYPE CVIS_EI_TTX_STR, LT_CONTACT TYPE CMDS_EI_CONTACTS_T, LWA_CONTACT TYPE CMDS_EI_CONTACTS, LT_VERSION TYPE CVI_EI_VERSION_TYPE1_T, LWA_VERSION TYPE CVI_EI_VERSION_TYPE1, LT_PHONE TYPE CVIS_EI_PHONE_T, LWA_PHONE TYPE CVIS_EI_PHONE_STR, LT_PHONE1 TYPE CVIS_EI_PHONE_T, LWA_PHONE1 TYPE CVIS_EI_PHONE_STR, LWA_COMPANY TYPE CMDS_EI_COMPANY, LT_GET TYPE CMDS_EI_EXTERN_T, LWA_GET TYPE CMDS_EI_EXTERN. CONSTANTS:CON_INSERT TYPE C VALUE ‘I‘, CON_UPDATE TYPE C VALUE ‘M‘. *&--------------------------------------------------------------- *&S1.检查数据条目数 G_LIN = LINES( IN_DATA[] ). IF G_LIN EQ 0. EX_TYPE = ‘E‘. EX_MSG = ‘没有数据!‘. ELSEIF G_LIN GT 30. EX_TYPE = ‘E‘. EX_MSG = ‘数据大于30条!‘. ENDIF. CHECK EX_TYPE NE ‘E‘. LOOP AT IN_DATA. *&S2.1.主数据 LWA_CUST-HEADER-OBJECT_TASK = ‘I‘. LWA_CUST-CENTRAL_DATA-CENTRAL-DATA-KTOKD = ‘Z001‘. "客户帐户组 *&sign LWA_CUST-CENTRAL_DATA-CENTRAL-DATAX-KTOKD = ‘X‘. *LWA_CUST-CENTRAL_DATA-CENTRAL-DATAX-CIVVE = ‘X‘. *&S2.2.地址数据 LWA_CUST-CENTRAL_DATA-ADDRESS-TASK = ‘I‘. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATA-TITLE = ‘0003‘. "关键字 ‘3‘公司 LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME = ‘重庆火锅客户‘."客户名称 LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATA-LANGU = SY-LANGU. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATA-COUNTRY = ‘CN‘. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATA-STREET = ‘重庆渝中区新华路123号‘. *&sign LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-TITLE = ‘X‘. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME = ‘X‘. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-LANGU = ‘X‘. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-COUNTRY = ‘X‘. LWA_CUST-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-STREET = ‘X‘. *&S2.3电话 CLEAR:LWA_PHONE. REFRESH LT_PHONE. LWA_PHONE-CONTACT-TASK = CON_INSERT. LWA_PHONE-CONTACT-DATA-TELEPHONE = ‘18866666666‘."电话号码 W_BASIS-TEL. LWA_PHONE-CONTACT-DATAX-TELEPHONE = ‘X‘. APPEND LWA_PHONE TO LT_PHONE. LWA_CUST-CENTRAL_DATA-ADDRESS-COMMUNICATION-PHONE-PHONE = LT_PHONE. **S2.4联系人1 *CLEAR:G_PARNR. *CALL FUNCTION ‘NUMBER_GET_NEXT‘ * EXPORTING * NR_RANGE_NR = ‘AP‘ * OBJECT = ‘PARTNER‘ * QUANTITY = ‘1‘ * IMPORTING * NUMBER = G_PARNR * EXCEPTIONS * INTERVAL_NOT_FOUND = 1 * NUMBER_RANGE_NOT_INTERN = 2 * OBJECT_NOT_FOUND = 3 * QUANTITY_IS_0 = 4 * QUANTITY_IS_NOT_1 = 5 * INTERVAL_OVERFLOW = 6 * BUFFER_OVERFLOW = 7 * OTHERS = 8. *LWA_CONTACT-TASK = ‘I‘. *LWA_CONTACT-ADDRESS_TYPE_3-TASK = ‘I‘. *LWA_CONTACT-DATA_KEY-PARNR = G_PARNR. *LWA_CONTACT-ADDRESS_TYPE_3-POSTAL-DATA-FIRSTNAME = ‘aa‘. *LWA_CONTACT-ADDRESS_TYPE_3-POSTAL-DATA-LASTNAME = ‘bb‘. *LWA_CONTACT-ADDRESS_TYPE_3-POSTAL-DATAX-FIRSTNAME = ‘X‘. *LWA_CONTACT-ADDRESS_TYPE_3-POSTAL-DATAX-LASTNAME = ‘X‘. *LWA_CONTACT-ADDRESS_TYPE_3-COMMUNICATION-PHONE-PHONE = LT_PHONE1. *APPEND LWA_CONTACT TO LT_CONTACT. *LWA_CUST-CENTRAL_DATA-CONTACT-CONTACTS = LT_CONTACT. *&S2.5联系人电话 *lwa_phone1-contact-task = ‘I‘. *lwa_phone1-contact-data-telephone = ‘89999888‘. *lwa_phone1-contact-data-extension = ‘3434343‘. *lwa_phone1-contact-datax-extension = ‘X‘. *lwa_phone1-contact-datax-telephone = ‘X‘. *APPEND lwa_phone1 TO lt_phone1. *&get in_data. APPEND LWA_CUST TO LT_CUST. LS_MAIN-CUSTOMERS = LT_CUST."客户 (Tab.) 的复杂外部接口 *&S3.Create custmer CALL METHOD CMD_EI_API=>MAINTAIN_BAPI EXPORTING * IV_TEST_RUN = P_TEST IV_COLLECT_MESSAGES = ‘X‘ IS_MASTER_DATA = LS_MAIN IMPORTING ES_MASTER_DATA_CORRECT = LS_MAIN1 ES_MESSAGE_CORRECT = LS_MESG1 ES_MASTER_DATA_DEFECTIVE = LS_MAIN2 ES_MESSAGE_DEFECTIVE = LS_MESG. *&S3.1get message LT_MSG = LS_MESG-MESSAGES. LT_GET[] = LS_MAIN1-CUSTOMERS. *&S3.2.get return: LOOP AT LT_MSG INTO LWA_MSG WHERE TYPE = ‘E‘ OR TYPE = ‘A‘. EX_TYPE = ‘E‘. EX_MSG = LWA_MSG-MESSAGE. ENDLOOP. *&S3.3.成功commit work IF EX_TYPE NE ‘E‘. COMMIT WORK. READ TABLE LT_GET INTO LWA_GET INDEX 1. *&S3.3Get custmer EX_VALUE = LWA_GET-HEADER-OBJECT_INSTANCE-KUNNR. IN_DATA-KUNNR = LWA_GET-HEADER-OBJECT_INSTANCE-KUNNR. EX_TYPE = ‘S‘. EX_MSG = ‘新增客户成功!‘. *&bdc 写联系人 PERFORM BDC_DYNPRO USING ‘SAPMF02D‘ ‘0101‘. PERFORM BDC_FIELD USING ‘BDC_CURSOR‘ ‘RF02D-D0360‘. PERFORM BDC_FIELD USING ‘BDC_OKCODE‘ ‘/00‘. PERFORM BDC_FIELD USING ‘RF02D-KUNNR‘ IN_DATA-KUNNR. PERFORM BDC_FIELD USING ‘RF02D-D0360‘ ‘X‘. "RECORD-D0360_002. PERFORM BDC_DYNPRO USING ‘SAPMF02D‘ ‘0360‘. PERFORM BDC_FIELD USING ‘BDC_CURSOR‘ ‘KNVK-TELF1(01)‘. PERFORM BDC_FIELD USING ‘BDC_OKCODE‘ ‘=ENTR‘. * PERFORM BDC_FIELD USING ‘KNVK-ANRED(01)‘ * RECORD-ANRED_01_003. * PERFORM BDC_FIELD USING ‘KNVK-NAMEV(01)‘ * RECORD-NAMEV_01_004. PERFORM BDC_FIELD USING ‘KNVK-NAME1(01)‘ IN_DATA-NAME1."RECORD-NAME1_01_005. PERFORM BDC_FIELD USING ‘KNVK-TELF1(01)‘ IN_DATA-TELF1."RECORD-TELF1_01_006. PERFORM BDC_DYNPRO USING ‘SAPMF02D‘ ‘0360‘. PERFORM BDC_FIELD USING ‘BDC_CURSOR‘ ‘KNVK-ABTNR(01)‘. PERFORM BDC_FIELD USING ‘BDC_OKCODE‘ ‘=ENTR‘. PERFORM BDC_FIELD USING ‘KNVK-ABTNR(01)‘ ‘=ENTR‘."RECORD-ABTNR_01_007. PERFORM BDC_DYNPRO USING ‘SAPMF02D‘ ‘0360‘. PERFORM BDC_FIELD USING ‘BDC_CURSOR‘ ‘KNVK-NAMEV(01)‘. PERFORM BDC_FIELD USING ‘BDC_OKCODE‘ ‘=UPDA‘. * PERFORM BDC_TRANSACTION USING ‘XD02‘. CALL TRANSACTION ‘XD02‘ USING BDCDATA MODE ‘N‘ MESSAGES INTO IT_MESSAGE. CLEAR BDCDATA. WAIT UP TO 1 SECONDS. READ TABLE IT_MESSAGE WITH KEY MSGTYP = ‘E‘. IF SY-SUBRC EQ 0. EX_TYPE = ‘W‘. EX_MSG = ‘供应商联系人信息创建失败!‘. ENDIF. *&S3.4.error 则rollback. ELSE. ROLLBACK WORK. ENDIF. ENDLOOP. ENDFUNCTION.
时间: 2024-10-05 08:14:41