*&---------------------------------------------------------------------* *& 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