*&---------------------------------------------------------------------* *& Include ZSDB0002_FILE_INCLUDE *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form frm_get_fn *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM frm_get_fn . CALL FUNCTION 'WS_FILENAME_GET' EXPORTING * DEF_FILENAME = ' ' * DEF_PATH = ' ' mask = ',*.txt.' mode = 'O' title = '客户主数据' IMPORTING filename = p_fn * RC = EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5. IF sy-subrc <> 0. * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno * WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDFORM. "frm_get_fn *&---------------------------------------------------------------------* *& Form frm_get_logfn *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* *FORM frm_get_logfn . * * CALL FUNCTION 'WS_FILENAME_GET' * EXPORTING ** DEF_FILENAME = ' ' ** DEF_PATH = ' ' * mask = ',*.txt.' * mode = 'O' * title = '日志文件' * IMPORTING * filename = p_logfn ** RC = * EXCEPTIONS * inv_winsys = 1 * no_batch = 2 * selection_cancel = 3 * selection_error = 4 * OTHERS = 5. * IF sy-subrc <> 0. ** MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno ** WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. * ENDIF. * *ENDFORM. "frm_get_logfn *&---------------------------------------------------------------------* *& Form frm_chech_filename *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM frm_chech_filename . IF p_fn IS INITIAL. MESSAGE i010."主数据文件,路径和文件名,不能为空! STOP. ENDIF. ENDFORM. "frm_chech_filename *&---------------------------------------------------------------------* *& Form frm_upload_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM frm_upload_data TABLES fu_data. REFRESH fu_data[]. CALL FUNCTION 'WS_UPLOAD' EXPORTING * CODEPAGE = ' ' filename = p_fn filetype = 'DAT' * HEADLEN = ' ' * LINE_EXIT = ' ' * TRUNCLEN = ' ' * USER_FORM = ' ' * USER_PROG = ' ' * DAT_D_FORMAT = ' ' * IMPORTING * FILELENGTH = TABLES data_tab = fu_data[] EXCEPTIONS conversion_error = 1 file_open_error = 2 file_read_error = 3 invalid_type = 4 no_batch = 5 unknown_error = 6 invalid_table_width = 7 gui_refuse_filetransfer = 8 customer_error = 9 no_authority = 10 OTHERS = 11 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. IF fu_data[] IS INITIAL. MESSAGE '文件为空!' TYPE 'I'. STOP. ENDIF. ENDFORM. "frm_upload_data *&---------------------------------------------------------------------* *& Form frm_fill_partner *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM frm_fill_partner_data. REFRESH lt_cust. DATA:lt_data TYPE STANDARD TABLE OF ty_knvp, lw_data TYPE ty_knvp. REFRESH lt_data. LOOP AT t_partner INTO w_partner. lwa_cust-header-object_task = 'C'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = w_partner-kunnr IMPORTING output = lwa_cust-header-object_instance-kunnr. * lwa_cust-header-object_instance-kunnr = w_partner-kunnr. CLEAR lwa_sale. REFRESH lt_sale. lwa_sale-task = 'U'. lwa_sale-data_key-vkorg = w_partner-vkorg. lwa_sale-data_key-vtweg = w_partner-vtweg. lwa_sale-data_key-spart = w_partner-spart. * lwa_cust-central_data-central-data-ktokd = 'Z002'."账户组 * lwa_cust-central_data-central-datax-ktokd = 'X'. REFRESH lt_functions. CLEAR w_knvp. MOVE-CORRESPONDING w_partner TO w_knvp. PERFORM frm_fill_partner01 USING w_partner-parvw_zp w_partner-kunnr_zp w_knvp. PERFORM frm_fill_partner01 USING w_partner-parvw_sm w_partner-kunnr_sm w_knvp. PERFORM frm_fill_partner01 USING w_partner-parvw_we w_partner-kunnr_we w_knvp. lwa_sale-functions-functions = lt_functions. APPEND lwa_sale TO lt_sale. CLEAR lwa_sale. lwa_cust-sales_data-sales = lt_sale. REFRESH lt_sale. APPEND lwa_cust TO lt_cust. MOVE-CORRESPONDING w_partner TO lw_data. APPEND lw_data TO lt_data. CLEAR lw_data. CLEAR lwa_cust. ENDLOOP. ls_main-customers = lt_cust. PERFORM frm_write_data_sap TABLES lt_data. FREE ls_main. REFRESH lt_cust. ENDFORM. "frm_fill_partner *&---------------------------------------------------------------------* *& Form FRM_INPUT_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_fill_data . * 主数据 DATA:lt_data TYPE STANDARD TABLE OF ty_knvp, lw_data TYPE ty_knvp. REFRESH lt_cust. data:l_kunnr1 type knvp-kunnr. DATA:l_kunnr TYPE kna1-kunnr. DATA:lt_kna1 TYPE STANDARD TABLE OF kna1. DATA:lw_kna1 TYPE kna1. *切割数据 "客户+公司信息 LOOP AT t_data INTO w_data. MOVE-CORRESPONDING w_data TO w_basis. MOVE-CORRESPONDING w_data TO w_com. MOVE-CORRESPONDING w_data TO w_org. APPEND w_basis TO t_basis. APPEND w_com TO t_com. APPEND w_org TO t_org. CLEAR:w_com,w_org,w_basis,w_data. ENDLOOP. SORT t_basis BY kunnr. SORT t_org BY kunnr vkorg vtweg spart. SORT t_com BY kunnr bukrs. "客户+基本信息 DELETE ADJACENT DUPLICATES FROM t_basis COMPARING kunnr. DELETE ADJACENT DUPLICATES FROM t_org COMPARING kunnr vkorg vtweg spart . DELETE ADJACENT DUPLICATES FROM t_com COMPARING kunnr bukrs. "客户+销售组织信息 LOOP AT t_basis INTO w_basis. "判定该客户是否存在 "获取默认合作伙伴 REFRESH t_tpakd. SELECT * FROM tpakd INTO CORRESPONDING FIELDS OF TABLE t_tpakd WHERE ktokd = w_basis-ktokd. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = w_basis-kunnr IMPORTING output = lwa_cust-header-object_instance-kunnr. CLEAR l_kunnr. SELECT SINGLE kunnr FROM kna1 INTO l_kunnr WHERE kunnr = lwa_cust-header-object_instance-kunnr. * lwa_cust-header-object_instance-kunnr = w_data-kunnr."客户编码 lwa_cust-central_data-central-data-ktokd = w_basis-ktokd."账户组 IF l_kunnr IS INITIAL. lwa_cust-header-object_task = 'I'. ELSE. lwa_cust-header-object_task = 'M'. ENDIF. lwa_cust-central_data-central-data-brsch = w_basis-brsch."行业 lwa_cust-central_data-central-data-umsa1 = w_basis-umsa1. lwa_cust-central_data-central-data-kukla = w_basis-kukla. lwa_cust-central_data-central-data-katr1 = w_basis-katr1. lwa_cust-central_data-central-data-katr2 = w_basis-katr2. lwa_cust-central_data-central-data-katr3 = w_basis-katr3. lwa_cust-central_data-central-data-katr6 = w_basis-katr6. lwa_cust-central_data-central-data-uwaer = w_basis-uwaer. lwa_cust-central_data-central-data-stceg = w_basis-stceg."增值税号 lwa_cust-central_data-central-data-umjah = w_basis-umjah."货币 lwa_cust-central_data-central-datax-katr1 = 'X'. lwa_cust-central_data-central-datax-katr2 = 'X'. lwa_cust-central_data-central-datax-katr3 = 'X'. lwa_cust-central_data-central-datax-katr6 = 'X'. lwa_cust-central_data-central-datax-brsch = 'X'. lwa_cust-central_data-central-datax-umsa1 = 'X'. lwa_cust-central_data-central-datax-uwaer = 'X'."货币 lwa_cust-central_data-central-datax-umjah = 'X'."货币 lwa_cust-central_data-central-data-civve = 'X'. lwa_cust-central_data-central-datax-ktokd = 'X'. lwa_cust-central_data-central-datax-civve = 'X'. * 地址数据 lwa_cust-central_data-address-task = con_insert. lwa_cust-central_data-address-postal-data-title = w_basis-chhu. lwa_cust-central_data-address-postal-data-name = w_basis-name1. lwa_cust-central_data-address-postal-data-name_2 = w_basis-name2. lwa_cust-central_data-address-postal-data-street = w_basis-street. lwa_cust-central_data-address-postal-data-region = w_basis-regio. lwa_cust-central_data-address-postal-data-langu = sy-langu. lwa_cust-central_data-address-postal-data-country = w_basis-land1. lwa_cust-central_data-address-postal-data-sort1 = w_basis-sortl. lwa_cust-central_data-address-postal-datax-sort1 = 'X'. lwa_cust-central_data-address-postal-data-sort2 = w_basis-sort2. lwa_cust-central_data-address-postal-datax-sort2 = 'X'. 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-name_2 = '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'. lwa_cust-central_data-address-postal-datax-region = 'X'. *地址注释 CLEAR lwa_remark. REFRESH lt_remark. lwa_remark-task = con_insert. lwa_remark-data-langu = sy-langu. lwa_remark-data-adr_notes = w_basis-remark. lwa_remark-datax-langu = 'X'. lwa_remark-datax-adr_notes = 'X'. APPEND lwa_remark TO lt_remark. lwa_cust-central_data-address-remark-remarks = lt_remark. *电话 CLEAR:lwa_phone. REFRESH lt_phone. lwa_phone-contact-task = con_insert. lwa_phone-contact-data-telephone = 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. *传真 CLEAR:lwa_fax. REFRESH lt_fax. lwa_fax-contact-task = con_insert. lwa_fax-contact-data-fax = w_basis-fax. lwa_fax-contact-datax-fax = 'X'. APPEND lwa_fax TO lt_fax. lwa_cust-central_data-address-communication-fax-fax = lt_fax. *电子邮件 CLEAR:lwa_mail. REFRESH lt_mail. lwa_mail-contact-task = con_insert. lwa_mail-contact-data-e_mail = w_basis-smtp. lwa_mail-contact-datax-e_mail = 'X'. APPEND lwa_mail TO lt_mail. lwa_cust-central_data-address-communication-smtp-smtp = lt_mail. *联系人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_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. * *lwa_contact-address_type_3-communication-phone-phone = lt_phone1. *APPEND lwa_contact TO lt_contact. REFRESH lt_contact. PERFORM frm_fill_contact USING w_basis-name11 w_basis-telf11. PERFORM frm_fill_contact USING w_basis-name12 w_basis-telf12. PERFORM frm_fill_contact USING w_basis-name13 w_basis-telf13. lwa_cust-central_data-contact-contacts = lt_contact. *会计注释 * CLEAR:lwa_text. REFRESH lt_text. * CLEAR:lwa_content. * REFRESH lt_content. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = '0002'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = 'TEST001'. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * * APPEND lwa_text TO lt_text. *备注 * REFRESH lt_content. * CLEAR lwa_content. * CLEAR lwa_text. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z301'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = 'TEST002'. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * * APPEND lwa_text TO lt_text. PERFORM frm_fill_text USING 'Z301' w_basis-zbz. *有无店招广告 * REFRESH lt_content. * REFRESH lt_content. * CLEAR lwa_content. * CLEAR lwa_text. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z302'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = 'TEST003'. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * APPEND lwa_text TO lt_text. PERFORM frm_fill_text USING 'Z302' w_basis-zywgg. lwa_cust-central_data-text-texts = lt_text. REFRESH lt_company. * 公司代码数据 LOOP AT t_com INTO w_com WHERE kunnr = w_basis-kunnr. CLEAR lwa_company. lwa_company-task = 'M'. lwa_company-data_key-bukrs = w_com-bukrs. * lwa_company-data-zuawa = '001'. lwa_company-data-akont = w_com-akont. * lwa_company-datax-zuawa = 'X'. lwa_company-datax-akont = 'X'. APPEND lwa_company TO lt_company. CLEAR:w_com. ENDLOOP. lwa_cust-company_data-company = lt_company. *销售数据 "销售数据文本 *称重要求 *tax REFRESH lt_sale. LOOP AT t_org INTO w_org WHERE kunnr = w_basis-kunnr. CLEAR lwa_sale. REFRESH lt_text. PERFORM frm_fill_text USING 'Z201' w_org-zbz. * REFRESH lt_content. * CLEAR:lwa_text,lwa_content. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z201'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = w_data-zczyq. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * APPEND lwa_text TO lt_text. PERFORM frm_fill_text USING 'Z202' w_org-zbz. * REFRESH lt_content. * CLEAR:lwa_text,lwa_content. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z202'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = w_data-zqyg. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * APPEND lwa_text TO lt_text. PERFORM frm_fill_text USING 'Z203' w_org-zmdg. * REFRESH lt_content. * CLEAR:lwa_text,lwa_content. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z203'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = w_data-zmdg. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * APPEND lwa_text TO lt_text. * REFRESH lt_content. * * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z204'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = w_data-zmdd. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * * APPEND lwa_text TO lt_text. * REFRESH lt_content. * CLEAR:lwa_text,lwa_content. * lwa_text-task = 'M'. * lwa_text-data_key-text_id = 'Z205'. * lwa_text-data_key-langu = sy-langu. * lwa_content-tdformat = '*'. * lwa_content-tdline = w_data-zdttj. * APPEND lwa_content TO lt_content. * CLEAR lwa_content. * lwa_text-data = lt_content. * APPEND lwa_text TO lt_text. PERFORM frm_fill_text USING 'Z205' w_org-zdttj. lwa_sale-texts-texts = lt_text. lwa_sale-task = 'M'. lwa_sale-data_key-vkorg = w_org-vkorg. lwa_sale-data_key-vtweg = w_org-vtweg. lwa_sale-data_key-spart = w_org-spart. lwa_sale-data-zterm = w_org-zterm. lwa_sale-data-vkgrp = w_org-vkgrp. lwa_sale-data-vkbur = w_org-vkbur. lwa_sale-data-waers = w_org-waers. lwa_sale-data-kvgr1 = w_org-kvgr1. lwa_sale-data-kvgr2 = w_org-kvgr2. lwa_sale-data-inco1 = w_org-inco1. lwa_sale-data-inco2 = w_org-inco2. lwa_sale-data-bzirk = w_org-bzirk. lwa_sale-data-kdgrp = w_org-kdgrp."客户组 lwa_sale-data-versg = w_org-versg."客户统计组 lwa_sale-data-vsbed = w_org-vsbed."装运条件 lwa_sale-data-vwerk = w_org-vwerk. lwa_sale-data-ktgrd = w_org-ktgrd."账户分配 lwa_sale-data-klabc = w_org-klabc."ABC等级 lwa_sale-data-konda = w_org-konda."价格租 lwa_sale-data-pltyp = w_org-pltyp."价格清单 IF w_org-konda IS NOT INITIAL. lwa_sale-datax-konda = 'X'."价格租 ENDIF. IF w_org-pltyp IS NOT INITIAL. lwa_sale-datax-pltyp = 'X'."价格清单 ENDIF. IF w_org-klabc IS NOT INITIAL. lwa_sale-datax-klabc = 'X'."ABC等级 ENDIF. IF w_org-zterm IS NOT INITIAL. lwa_sale-datax-zterm = 'X'. ENDIF. IF w_org-vkgrp IS NOT INITIAL. lwa_sale-datax-vkgrp = 'X'. ENDIF. IF w_org-vkbur IS NOT INITIAL. lwa_sale-datax-vkbur = 'X'. ENDIF. IF w_org-waers IS NOT INITIAL. lwa_sale-datax-waers = 'X'. ENDIF. IF w_org-kvgr1 IS NOT INITIAL. lwa_sale-datax-kvgr1 = 'X'. ENDIF. IF w_org-kvgr2 IS NOT INITIAL. lwa_sale-datax-kvgr2 = 'X'. ENDIF. IF w_org-inco1 IS NOT INITIAL. lwa_sale-datax-inco1 = 'X'. ENDIF. IF w_org-inco2 IS NOT INITIAL. lwa_sale-datax-inco2 = 'X'. ENDIF. IF w_org-bzirk IS NOT INITIAL. lwa_sale-datax-bzirk = 'X'. ENDIF. IF w_org-kdgrp IS NOT INITIAL. lwa_sale-datax-kdgrp = 'X'."客户组 ENDIF. IF w_org-versg IS NOT INITIAL. lwa_sale-datax-versg = 'X'."客户统计组 ENDIF. IF w_org-vsbed IS NOT INITIAL. lwa_sale-datax-vsbed = 'X'."装运条件 ENDIF. IF w_org-vwerk IS NOT INITIAL. lwa_sale-datax-vwerk = 'X'. ENDIF. IF w_org-ktgrd IS NOT INITIAL. lwa_sale-datax-ktgrd = 'X'."账户分配 ENDIF. REFRESH lt_functions. CLEAR w_knvp. MOVE-CORRESPONDING w_org TO w_knvp. LOOP AT t_tpakd INTO w_tpakd. select SINGLE kunnr FROM knvp INTO l_kunnr1 WHERE kunnr = w_basis-kunnr and vkorg = w_org-vkorg and vtweg = w_org-vtweg and spart = w_org-spart. if sy-subrc ne 0. PERFORM frm_fill_partner USING w_tpakd-parvw lwa_cust-header-object_instance-kunnr w_knvp. ENDIF. ENDLOOP. * CLEAR lwa_functions. * lwa_functions-task = 'I'. * lwa_functions-data_key-parvw = 'I'. * lwa_functions-data_key-parvw = 'WE'. ** lwa_functions-data-partner = 'AY9'. * lwa_functions-data-defpa = 'X'. * lwa_functions-datax-defpa = 'X'. * lwa_functions-datax-partner = 'X'. * APPEND lwa_functions TO lt_functions. * * CLEAR lwa_functions. * lwa_functions-task = 'I'. * lwa_functions-data_key-parvw = 'I'. * lwa_functions-data_key-parvw = 'RG'. ** lwa_functions-data-partner = 'AY9'. * lwa_functions-data-defpa = 'X'. * lwa_functions-datax-defpa = 'X'. * lwa_functions-datax-partner = 'X'. * APPEND lwa_functions TO lt_functions. * * * CLEAR lwa_functions. * lwa_functions-task = 'I'. * lwa_functions-data_key-parvw = 'I'. * lwa_functions-data_key-parvw = 'SM'. ** lwa_functions-data-partner = 'GX0001'. * lwa_functions-data-defpa = 'X'. * lwa_functions-datax-defpa = 'X'. * lwa_functions-datax-partner = 'X'. * APPEND lwa_functions TO lt_functions. * * * CLEAR lwa_functions. * lwa_functions-task = 'I'. * lwa_functions-data_key-parvw = 'I'. * lwa_functions-data_key-parvw = 'AG'. * lwa_functions-data-defpa = 'X'. * lwa_functions-datax-defpa = 'X'. * APPEND lwa_functions TO lt_functions. * * * CLEAR lwa_functions. * lwa_functions-task = 'I'. * lwa_functions-data_key-parvw = 'I'. * lwa_functions-data_key-parvw = 'RE'. * lwa_functions-data-defpa = 'X'. * lwa_functions-datax-defpa = 'X'. * APPEND lwa_functions TO lt_functions. CLEAR lwa_tax. REFRESH lt_tax. lwa_tax-task = 'M'. lwa_tax-data_key-aland = 'CN'. lwa_tax-data_key-tatyp = 'MWST' . lwa_tax-data-taxkd = w_org-taxkd. lwa_tax-datax-taxkd = 'X'. APPEND lwa_tax TO lt_tax. lwa_sale-functions-functions = lt_functions. APPEND lwa_sale TO lt_sale. CLEAR lwa_sale. CLEAR:w_org. endloop. lwa_cust-central_data-tax_ind-tax_ind = lt_tax. lwa_cust-sales_data-sales = lt_sale. * lwa_cust-sales_data-CURRENT_STATE = 'X'. REFRESH lt_sale. APPEND lwa_cust TO lt_cust. MOVE-CORRESPONDING w_basis TO lw_data. APPEND lw_data TO lt_data. CLEAR lw_data. CLEAR lwa_cust. ENDLOOP. ls_main-customers = lt_cust. PERFORM frm_write_data_sap TABLES lt_data."创建数据到SAP中 FREE ls_main. REFRESH lt_cust. ENDFORM. " FRM_INPUT_DATA *&---------------------------------------------------------------------* *& Form frm_fill_contact *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->FU_NAME text * -->FU_PHONE text *----------------------------------------------------------------------* FORM frm_fill_contact USING fu_name fu_phone. IF fu_name IS NOT INITIAL OR fu_phone IS NOT INITIAL. CLEAR lwa_contact. 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 = fu_name. *lwa_contact-address_type_3-postal-datax-firstname = 'X'. lwa_contact-address_type_3-postal-datax-lastname = 'X'. "联系人电话 CLEAR:lwa_phone1. REFRESH lt_phone1. lwa_phone1-contact-task = 'I'. lwa_phone1-contact-data-telephone = fu_phone. *lwa_phone1-contact-data-extension = '3434343'. *lwa_phone1-contact-datax-extension = 'X'. lwa_phone1-contact-datax-telephone = 'X'. APPEND lwa_phone1 TO lt_phone1. lwa_contact-address_type_3-communication-phone-phone = lt_phone1. APPEND lwa_contact TO lt_contact. ENDIF. ENDFORM. "frm_fill_contact *&---------------------------------------------------------------------* *& Form frm_fill_text *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->FU_ID text * -->FU_CONTENT text *----------------------------------------------------------------------* FORM frm_fill_text USING fu_id fu_content. REFRESH lt_content. REFRESH lt_content. CLEAR lwa_content. CLEAR lwa_text. lwa_text-task = 'M'. lwa_text-data_key-text_id = fu_id. lwa_text-data_key-langu = sy-langu. lwa_content-tdformat = '*'. lwa_content-tdline = fu_content. APPEND lwa_content TO lt_content. CLEAR lwa_content. lwa_text-data = lt_content. APPEND lwa_text TO lt_text. ENDFORM. "frm_fill_text *&---------------------------------------------------------------------* *& Form FRM_WRITE_DATA_SAP *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_write_data_sap TABLES fu_data TYPE STANDARD TABLE. DATA:l_ilines TYPE i . DATA:l_message TYPE string. DATA:l_iindex TYPE i. FREE:ls_main1,ls_main2,ls_mesg,ls_mesg1. DATA:lw_data TYPE ty_knvp. * FREE:cmd_ei_api=>gt_global_kna1_old. DESCRIBE TABLE fu_data[] LINES l_ilines. 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. REFRESH lt_msg. CLEAR lv_flg. lt_msg = ls_mesg-messages. l_iindex = 0. DO l_ilines TIMES. l_iindex = l_iindex + 1. READ TABLE fu_data INTO lw_data INDEX l_iindex. READ TABLE lt_msg INTO lwa_msg WITH KEY row = l_iindex. IF sy-subrc NE 0."没有任何改行的信息,表明成功 CLEAR w_log. CLEAR l_message. w_log-row = l_iindex. w_log-kunnr = lw_data-kunnr. w_log-type = 'S'. CONCATENATE '客户' w_log-kunnr '创建/修改成功' INTO l_message. w_log-mesg = l_message. APPEND w_log TO t_log. COMMIT WORK. ELSE. CLEAR lv_flg. LOOP AT lt_msg INTO lwa_msg WHERE row = l_iindex. CLEAR l_message. l_message = lwa_msg-message. * WRITE: / lwa_cust-header-OBJECT_INSTANCE-kunnr,lwa_msg-type,l_message. IF lwa_msg-type = 'E' OR lwa_msg-type = 'A'. CLEAR w_log. w_log-row = l_iindex. w_log-kunnr = lw_data-kunnr. w_log-type = lwa_msg-type. w_log-mesg = l_message. APPEND w_log TO t_log. lv_flg = 'X'. ENDIF. CLEAR:lwa_msg. ENDLOOP. IF lv_flg IS INITIAL. CLEAR w_log. CLEAR l_message. w_log-row = l_iindex. w_log-kunnr = lw_data-kunnr. w_log-type = 'S'. CONCATENATE '客户' w_log-kunnr '创建/修改成功' INTO l_message. w_log-mesg = l_message. APPEND w_log TO t_log. COMMIT WORK. ELSE. ROLLBACK WORK. ENDIF. ENDIF. ENDDO. * LOOP AT lt_msg INTO lwa_msg. * CLEAR l_message. * l_message = lwa_msg-message. * ** WRITE: / lwa_cust-header-OBJECT_INSTANCE-kunnr,lwa_msg-type,l_message. * IF lwa_msg-type = 'E' OR lwa_msg-type = 'A'. * CLEAR w_log. * w_log-kunnr = lwa_cust-header-object_instance-kunnr. * w_log-type = lwa_msg-type. * w_log-mesg = l_message. * APPEND w_log TO t_log. * lv_flg = 'X'. * ENDIF. * CLEAR:lwa_msg. * ENDLOOP. * IF lv_flg IS INITIAL. * CLEAR w_log. * CLEAR l_message. * w_log-kunnr = lwa_cust-header-object_instance-kunnr. * w_log-type = 'S'. * CONCATENATE '客户' w_log-kunnr '创建/修改成功' INTO l_message. * w_log-mesg = l_message. * APPEND w_log TO t_log. * COMMIT WORK. * ELSE. * ROLLBACK WORK. * ENDIF. * WAIT UP TO '0.5' SECONDS. ENDFORM. " FRM_WRITE_DATA_SAP *&---------------------------------------------------------------------* *& Form frm_fill_partner *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->FU_PARVW text *----------------------------------------------------------------------* FORM frm_fill_partner USING fu_parvw fu_kunnr fu_data TYPE ty_knvp. DATA:l_parza TYPE knvp-parza. CLEAR l_parza. CLEAR lwa_functions. lwa_functions-task = 'M'. lwa_functions-data_key-parvw = 'M'. lwa_functions-data_key-parvw = fu_parvw. * IF NOT fu_kunnr IS INITIAL. * SELECT SINGLE MAX( parza ) * FROM knvp * INTO l_parza * WHERE kunnr = fu_data-kunnr * AND vkorg = fu_data-vkorg * AND vtweg = fu_data-vtweg * AND spart = fu_data-spart * AND parvw = fu_parvw. * l_parza = l_parza + 1. * lwa_functions-data_key-parza = '000'. lwa_functions-data-partner = fu_kunnr. lwa_functions-datax-partner = 'X'. * ELSE. * lwa_functions-data-partner = 'AY9'. * lwa_functions-data-defpa = 'X'. * lwa_functions-datax-defpa = 'X'. * lwa_functions-datax-partner = 'X'. * ENDIF. APPEND lwa_functions TO lt_functions. ENDFORM. "frm_fill_partner *&---------------------------------------------------------------------* *& Form FRM_INSERT_PARTNER *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_insert_partner . 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. lt_msg = ls_mesg-messages. LOOP AT lt_msg INTO lwa_msg. WRITE: / lwa_msg-type,lwa_msg-message. IF lwa_msg-type = 'E' OR lwa_msg-type = 'A'. lv_flg = 'X'. ENDIF. ENDLOOP. IF lv_flg IS INITIAL. COMMIT WORK. ELSE. ROLLBACK WORK. ENDIF. ENDFORM. " FRM_INSERT_PARTNER *&---------------------------------------------------------------------* *& Form FRM_WRITE_LOG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_write_log . LOOP AT t_log INTO w_log. IF w_log-type = 'E'. WRITE:/ w_log-kunnr UNDER w_log-kunnr COLOR COL_NEGATIVE, w_log-type UNDER w_log-type COLOR COL_NEGATIVE, w_log-mesg UNDER w_log-mesg COLOR COL_NEGATIVE. ELSEIF w_log-type = 'A'. WRITE:/ w_log-kunnr UNDER w_log-kunnr COLOR COL_NEGATIVE, w_log-type UNDER w_log-type COLOR COL_NEGATIVE, w_log-mesg UNDER w_log-mesg COLOR COL_NEGATIVE. ELSEIF w_log-type = 'W'. WRITE:/ w_log-kunnr UNDER w_log-kunnr COLOR COL_TOTAL, w_log-type UNDER w_log-type COLOR COL_TOTAL, w_log-mesg UNDER w_log-mesg COLOR COL_TOTAL. ELSEIF w_log-type = 'S'. WRITE:/ w_log-kunnr UNDER w_log-kunnr COLOR COL_POSITIVE , w_log-type UNDER w_log-type COLOR COL_POSITIVE , w_log-mesg UNDER w_log-mesg COLOR COL_POSITIVE . ELSE. * WRITE:/ w_log-kunnr UNDER w_log-kunnr COLOR COL_HEADING , * w_log-type UNDER w_log-type COLOR COL_HEADING , * w_log-mesg UNDER w_log-mesg COLOR COL_HEADING . ENDIF. CLEAR w_log. ENDLOOP. ENDFORM. " FRM_WRITE_LOG *&---------------------------------------------------------------------* *& Form FRM_SHOR_MESSAGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_shor_message . PERFORM frm_layout_build."设置 layout PERFORM frm_fieldcat_build."填充 fieldcat PERFORM frm_display_data."显示 ALV ENDFORM. " FRM_SHOR_MESSAGE *&---------------------------------------------------------------------* *& Form FRM_LAYOUT_BUILD *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_layout_build . CLEAR: g_title,g_repid,g_layout. g_title = '日志'. g_repid = sy-repid. g_layout-info_fieldname = 'COLOR'. g_layout-colwidth_optimize = 'X'."最优化列宽度 g_layout-zebra = 'X'."可选行颜色,如果设置了,出现了间隔色带 * g_layout-no_vline = 'X'."不显示列间竖线 g_layout-f2code = '&ETA'."双击弹出显示详细信息的窗口 g_layout-detail_popup = 'X'."是否弹出详细信息窗口 g_layout-detail_initial_lines = 'X'."设置弹出窗口的? g_layout-detail_titlebar = '详细显示'."设置弹出窗口的标题栏 ENDFORM. " FRM_LAYOUT_BUILD *&---------------------------------------------------------------------* *& Form FRM_FIELDCAT_BUILD *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_fieldcat_build . CLEAR it_fieldcat[]. DEFINE mc_fieldcatt_build. clear wa_fieldcat. wa_fieldcat-col_pos = &1. wa_fieldcat-fieldname = &2. * wa_fieldcat-seltext_s = &3. wa_fieldcat-seltext_m = &3. wa_fieldcat-seltext_l = &3. append wa_fieldcat to it_fieldcat. END-OF-DEFINITION. mc_fieldcatt_build: '1' 'ROW' '序号', '2' 'KUNNR' '客户', '3' 'TYPE' '信息类型', '4' 'MESG' '信息文本'. ENDFORM. " FRM_FIELDCAT_BUILD *&---------------------------------------------------------------------* *& Form FRM_DISPLAY_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_display_data . CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = g_repid * I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' * I_CALLBACK_USER_COMMAND = 'USER_COMMEND' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' i_grid_title = g_title * I_GRID_SETTINGS = is_layout = g_layout it_fieldcat = it_fieldcat[] * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' i_save = 'A'"可以保存所有变式 * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = t_log[] EXCEPTIONS program_error = 1 OTHERS = 2 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDFORM. " FRM_DISPLAY_DATA *&---------------------------------------------------------------------* *& Form frm_fill_partner01 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->FU_PARVW text * -->FU_KUNNR text * -->FU_DATA text *----------------------------------------------------------------------* FORM frm_fill_partner01 USING fu_parvw fu_kunnr fu_data TYPE ty_knvp. IF fu_kunnr IS NOT INITIAL. DATA:l_parza TYPE knvp-parza. CLEAR l_parza. CLEAR lwa_functions. lwa_functions-task = 'M'. lwa_functions-data_key-parvw = 'M'. lwa_functions-data_key-parvw = fu_parvw. IF NOT fu_kunnr IS INITIAL. SELECT SINGLE MAX( parza ) FROM knvp INTO l_parza WHERE kunnr = fu_data-kunnr AND vkorg = fu_data-vkorg AND vtweg = fu_data-vtweg AND spart = fu_data-spart AND parvw = fu_parvw. l_parza = l_parza + 1. lwa_functions-data_key-parza = l_parza. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = fu_kunnr IMPORTING output = lwa_functions-data-partner. * lwa_functions-data-partner = fu_kunnr. lwa_functions-datax-partner = 'X'. ELSE. * lwa_functions-data-partner = 'AY9'. lwa_functions-data-defpa = 'X'. lwa_functions-datax-defpa = 'X'. lwa_functions-datax-partner = 'X'. ENDIF. APPEND lwa_functions TO lt_functions. ENDIF. ENDFORM. "frm_fill_partner01