BP批量导入程序
REPORT zfic_cust_batch_upload.
*-----------------------------------------------------------------------
* 數(shù)據(jù)定義
*&---------------------------------------------------------------------*
TABLES sscrfields.
CONSTANTS:cn_flag TYPE char1 VALUE 'X'.
DATA smp_dyntxt TYPE smp_dyntxt.
*"模板下載
DATA: gv_objid_xls TYPE wwwdatatab-objid,gv_export_filename_xls TYPE string.
DATA: gs_layout TYPE lvc_s_layo,gs_settings TYPE lvc_s_glay.
DATA: gt_fcat TYPE lvc_t_fcat,gs_fcat TYPE lvc_s_fcat.
DATA: gt_sort TYPE lvc_t_sort,gs_sort TYPE lvc_s_sort.
DATA lw_grid TYPE REF TO cl_gui_alv_grid.
DATA: gv_struct TYPE dd02l-tabname.TYPES:BEGIN OF ty_alv,icon TYPE icon_d,message TYPE bapi_msg.INCLUDE TYPE zfis_cust_base.
TYPES:END OF ty_alv.DATA: gt_alv TYPE TABLE OF ty_alv,gs_alv TYPE ty_alv.TYPES:BEGIN OF ty_alv1,icon TYPE icon_d,message TYPE bapi_msg.INCLUDE TYPE zfis_cust_company.
TYPES:END OF ty_alv1.DATA: gt_alv1 TYPE TABLE OF ty_alv1,gs_alv1 TYPE ty_alv1.DATA: gt_upload_base TYPE TABLE OF zfis_cust_base,gs_upload_base TYPE zfis_cust_base,gt_upload_comp TYPE TABLE OF zfis_cust_company,gs_upload_comp TYPE zfis_cust_company.
DATA:"ALV 選定單元格&行項目gt_cell TYPE lvc_t_cell,gs_cell TYPE lvc_s_cell,gt_row TYPE lvc_t_roid,gs_row TYPE lvc_s_roid,"ALV被選定行數(shù)量gv_row_lines TYPE i."下載文件類型
CONSTANTS gc_file_type_xls TYPE string VALUE 'xls'.
*-----------------------------------------------------------------------
* 選擇屏幕
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN: FUNCTION KEY 2.
PARAMETERS:p_1 RADIOBUTTON GROUP rg1, "批量創(chuàng)建p_2 RADIOBUTTON GROUP rg1. "批量修改(擴充客戶公司主數(shù)據(jù))
* p_3 RADIOBUTTON GROUP rg1. "批量修改(擴充供應商公司數(shù)據(jù))
SELECTION-SCREEN END OF BLOCK b1.SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-003.
PARAMETERS: p_upload TYPE rlgrap-filename MODIF ID m4.
SELECTION-SCREEN END OF BLOCK b3.*-----------------------------------------------------------------------
* 屏幕初始化,設置圖標和文本
*&---------------------------------------------------------------------*
INITIALIZATION.smp_dyntxt-icon_id = icon_table_settings .smp_dyntxt-quickinfo = 'Preselected Carrier'.smp_dyntxt-icon_text = '下載客商主數(shù)據(jù)導入模板'.sscrfields-functxt_01 = smp_dyntxt.*-----------------------------------------------------------------------
* 文本框選擇
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upload.CALL FUNCTION 'F4_FILENAME'EXPORTINGfield_name = 'P_UPLOAD'IMPORTINGfile_name = p_upload.*-----------------------------------------------------------------------
* 選擇屏幕下載事件
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.CASE sscrfields-ucomm.WHEN 'FC01'.gv_objid_xls = 'ZFIC_CUST_BATCACH'.gv_export_filename_xls = '客商主數(shù)據(jù)導入模板'.PERFORM frm_download_xls_template USING gv_objid_xlsgc_file_type_xlsgv_export_filename_xls.ENDCASE.
*-----------------------------------------------------------------------
* 程序入口
*&---------------------------------------------------------------------*
START-OF-SELECTION.PERFORM frm_upload_excel.PERFORM frm_create_bp.PERFORM frm_show_result.
*&---------------------------------------------------------------------*
*& 從EXCEL里導入數(shù)據(jù)
*&---------------------------------------------------------------------*
FORM frm_upload_excel .DATA: lt_tab TYPE TABLE OF alsmex_tabline WITH HEADER LINE,ls_tab TYPE alsmex_tabline.DATA: l_str TYPE string.DATA: l_no TYPE i VALUE 1,l_char TYPE char4 VALUE '0001',l_tabix LIKE sy-tabix.DATA: l_new_row TYPE kcd_ex_row_n.FIELD-SYMBOLS:<fs> TYPE any.**->基本視圖導入
* IF p_1 = 'X'.
*從EXCEL中上載數(shù)據(jù)CLEAR lt_tab[].CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGfilename = p_uploadi_begin_col = 1i_begin_row = 2i_end_col = 24i_end_row = 65536sheet_name = 'BP客戶供應商數(shù)據(jù)初始化' "'基本視圖'TABLESintern = lt_tab[].LOOP AT lt_tab.CONDENSE lt_tab-value.ASSIGN COMPONENT lt_tab-col OF STRUCTURE gs_upload_base TO <fs>. "動態(tài)方法將值傳到相應的內(nèi)表IF <fs> IS ASSIGNED.MOVE lt_tab-value TO <fs>.UNASSIGN <fs>.ENDIF.AT END OF row.APPEND gs_upload_base TO gt_upload_base.CLEAR:gs_upload_base,l_tabix.ENDAT.ENDLOOP.CLEAR lt_tab[].CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGfilename = p_uploadi_begin_col = 1i_begin_row = 2i_end_col = 5i_end_row = 65536sheet_name = 'BP客戶供應商分配公司代碼' "'基本視圖'TABLESintern = lt_tab[].LOOP AT lt_tab.CONDENSE lt_tab-value.ASSIGN COMPONENT lt_tab-col OF STRUCTURE gs_upload_comp TO <fs>. "動態(tài)方法將值傳到相應的內(nèi)表IF <fs> IS ASSIGNED.MOVE lt_tab-value TO <fs>.UNASSIGN <fs>.ENDIF.AT END OF row.APPEND gs_upload_comp TO gt_upload_comp.CLEAR: gs_upload_comp,l_tabix.ENDAT.ENDLOOP.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_XLS_TEMPLATE
*&---------------------------------------------------------------------*
* 下載模板
*----------------------------------------------------------------------*
FORM frm_download_xls_template USING fu_objid TYPE wwwdatatab-objidfu_file_type TYPE stringfu_export_filename TYPE string.DATA: lo_objdata LIKE wwwdatatab,lo_mime LIKE w3mime,lc_filename TYPE string,lc_fullpath TYPE string,lc_path TYPE string,ls_destination LIKE rlgrap-filename,li_rc LIKE sy-subrc.DATA:p_objid TYPE wwwdatatab-objid, "SAP WWW 網(wǎng)關(guān)對象名p_dest LIKE sapb-sappfad. "SAP 存檔鏈接文件路徑lc_filename = fu_export_filename.p_objid = fu_objid.CALL METHOD cl_gui_frontend_services=>file_save_dialogEXPORTINGdefault_extension = fu_file_typedefault_file_name = lc_filenameinitial_directory = 'C:Documents and Settings\Desktop'CHANGINGfilename = lc_filenamepath = lc_pathfullpath = lc_fullpathEXCEPTIONScntl_error = 1error_no_gui = 2not_supported_by_gui = 3OTHERS = 4.IF lc_fullpath = ''.MESSAGE e001(00) WITH fu_export_filename '無法打開'.ENDIF.IF sy-subrc = 0."檢查模板是否存在p_dest = lc_fullpath.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDSOF lo_objdataWHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.IF sy-subrc NE 0 OR lo_objdata-objid EQ space.MESSAGE e001(00) WITH fu_export_filename '不存在'.ENDIF."下載模板ls_destination = p_dest.CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGkey = lo_objdatadestination = ls_destinationIMPORTINGrc = li_rc.IF li_rc NE 0.MESSAGE e001(00) WITH fu_export_filename '下載失敗'.ENDIF.ENDIF.ENDFORM. " DOWNLOAD_XLS_TEMPLATE
*&---------------------------------------------------------------------*
*&創(chuàng)建BP主數(shù)據(jù)
*&---------------------------------------------------------------------*
FORM frm_create_bp .DATA:lt_input TYPE TABLE OF zfis_cust_base,ls_input TYPE zfis_cust_base,lt_company TYPE TABLE OF zfis_cust_company,ls_company TYPE zfis_cust_company,lt_return TYPE TABLE OF zfis_cust_return,ls_return TYPE bapiret2,lt_comp TYPE TABLE OF zfis_054_bp_company,wa_comp TYPE zfis_054_bp_company,lt_return1 TYPE TABLE OF zfis_054_bp_return,wa_return1 TYPE zfis_054_bp_return,l_type TYPE char1,l_index TYPE i.LOOP AT gt_upload_base INTO gs_upload_base.MOVE-CORRESPONDING gs_upload_base TO ls_input.APPEND ls_input TO lt_input.ENDLOOP.LOOP AT gt_upload_comp INTO gs_upload_comp.MOVE-CORRESPONDING gs_upload_comp TO ls_company.APPEND ls_company TO lt_company.ENDLOOP.
*IF p_1 = 'X'.CALL FUNCTION 'ZF_FI_CUST_CREATE'TABLESit_input = lt_inputit_comp = lt_companyot_return = lt_return.LOOP AT gt_upload_base INTO gs_upload_base.ADD 1 TO l_index.MOVE-CORRESPONDING gs_upload_base TO gs_alv.READ TABLE lt_return INTO DATA(wa_return) INDEX l_index.IF sy-subrc EQ 0.CASE wa_return-status.WHEN 'S'.gs_alv-icon = icon_led_green.WHEN 'E'.gs_alv-icon = icon_led_red.ENDCASE.gs_alv-message = wa_return-message.gs_alv-kunnr = wa_return-kunnr.ENDIF.APPEND gs_alv TO gt_alv.ENDLOOP.ENDIF.LOOP AT gt_upload_comp INTO gs_upload_comp.MOVE-CORRESPONDING gs_upload_comp TO gs_alv1.APPEND gs_alv1 TO gt_alv1.ENDLOOP.SORT gt_alv1 BY kunnr.ENDFORM.
*&---------------------------------------------------------------------*
*顯示創(chuàng)建結(jié)果
*&---------------------------------------------------------------------*
FORM frm_show_result .DATA: lv_stylerow TYPE lvc_s_styl.gs_layout-cwidth_opt = 'X'.gs_layout-sel_mode = 'A'.IF p_1 = 'X'.gv_struct = 'ZFIS_CUST_BASE'.ELSE.gv_struct = 'ZFIS_CUST_COMPANY'.ENDIF.PERFORM frm_get_fieldcat_via_fm USING gv_structCHANGING gt_fcat.CLEAR gs_fcat.gs_fcat-col_pos = '1'.gs_fcat-fieldname = 'ICON'.gs_fcat-scrtext_s = '狀態(tài)'.gs_fcat-scrtext_l = '狀態(tài)'.gs_fcat-scrtext_l = '狀態(tài)'.gs_fcat-outputlen = '4'.gs_fcat-no_zero = 'X'.APPEND gs_fcat TO gt_fcat.CLEAR gs_fcat.gs_fcat-col_pos = '2'.gs_fcat-fieldname = 'MESSAGE'.gs_fcat-scrtext_s = '消息'.gs_fcat-scrtext_l = '消息 '.gs_fcat-scrtext_l = '消息'.gs_fcat-outputlen = '4'.gs_fcat-no_zero = 'X'.APPEND gs_fcat TO gt_fcat.DATA:l_grid_settings TYPE lvc_s_glay.l_grid_settings-edt_cll_cb = 'X'.IF p_1 = 'X'.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program = sy-repidi_callback_pf_status_set = 'PF_STATUS_SET'i_callback_user_command = 'USER_COMMAND'is_layout_lvc = gs_layoutit_fieldcat_lvc = gt_fcat[]i_save = 'A'
* it_events = gt_eventsi_grid_settings = l_grid_settingsTABLESt_outtab = gt_alv[]EXCEPTIONSprogram_error = 1OTHERS = 2.ELSE.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program = sy-repidi_callback_pf_status_set = 'PF_STATUS_SET'i_callback_user_command = 'USER_COMMAND'is_layout_lvc = gs_layoutit_fieldcat_lvc = gt_fcat[]i_save = 'A'
* it_events = gt_eventsi_grid_settings = l_grid_settingsTABLESt_outtab = gt_alv1[]EXCEPTIONSprogram_error = 1OTHERS = 2.ENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& 獲取FCAT
*&---------------------------------------------------------------------*
FORM frm_get_fieldcat_via_fm USING pv_structure TYPE dd02l-tabnameCHANGING pt_fieldcat TYPE lvc_t_fcat.DATA:lt_fieldcats TYPE slis_t_fieldcat_alv,lt_kkblo_fieldcat TYPE kkblo_t_fieldcat.CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'EXPORTING
* i_program_name = sy-repid
* i_internal_tabname = pv_tabnamei_structure_name = pv_structure
* I_CLIENT_NEVER_DISPLAY = 'X'
* i_inclname = sy-repidi_bypassing_buffer = 'X'
* I_BUFFER_ACTIVE =CHANGINGct_fieldcat = lt_fieldcatsEXCEPTIONSinconsistent_interface = 1program_error = 2OTHERS = 3.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA'EXPORTINGit_fieldcat = lt_fieldcats[]IMPORTINGet_fieldcat = lt_kkblo_fieldcat.CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO'EXPORTINGit_fieldcat_kkblo = lt_kkblo_fieldcatIMPORTINGet_fieldcat_lvc = pt_fieldcatEXCEPTIONSit_data_missing = 1OTHERS = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& 設置STATUS
*&---------------------------------------------------------------------*
FORM pf_status_set USING extab TYPE slis_t_extab.SET PF-STATUS 'ZFIC_CUST_STATUS'.
ENDFORM.
*&---------------------------------------------------------------------*
*& 設置USER-COMMAND
*&---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucommrs_selfield TYPE slis_selfield.DATA:l_type TYPE char1,wa_comp TYPE zfis_054_bp_company,lt_comp TYPE TABLE OF zfis_054_bp_company,lt_return1 TYPE TABLE OF zfis_054_bp_return.CASE r_ucomm.WHEN '&F02' OR '&F15' OR '&F12'.LEAVE TO SCREEN 0.WHEN '&EXCUST'.LOOP AT gt_alv1 INTO gs_alv1.gs_alv1-kunnr = |{ gs_alv1-kunnr ALPHA = IN }|.SELECT SINGLEbu_groupFROM but000WHERE partner = @gs_alv1-kunnrINTO @DATA(l_bptype).CASE l_bptype.WHEN 'Z001' OR 'Z003'.l_type = '2'.WHEN 'Z002' OR 'Z006'.l_type = '1'.ENDCASE.gs_alv1-kunnr = |{ gs_alv1-kunnr ALPHA = OUT }|.MOVE-CORRESPONDING gs_alv1 TO wa_comp.wa_comp-kunnr = |{ wa_comp-kunnr ALPHA = IN }|.APPEND wa_comp TO lt_comp.ENDLOOP.CASE l_type.WHEN '1'.CALL FUNCTION 'ZF_FI_BP_ADDCOMPANY_VEND'TABLESit_comp = lt_compot_return = lt_return1.WHEN '2'.CALL FUNCTION 'ZF_FI_BP_ADDCOMPANY_CUST'TABLESit_comp = lt_compot_return = lt_return1.ENDCASE.DATA:l_line TYPE i.LOOP AT gt_alv1 INTO gs_alv1.ADD 1 TO l_line.READ TABLE lt_return1 INTO DATA(wa_return1) WITH KEY kunnr = gs_alv1-kunnr.CASE wa_return1-type.WHEN 'S'.gs_alv1-icon = icon_led_green.WHEN 'E'.gs_alv1-icon = icon_led_red.ENDCASE.gs_alv1-message = wa_return1-message.MODIFY gt_alv1 FROM gs_alv1 INDEX l_line.ENDLOOP.ENDCASE.
*設置刷新rs_selfield-refresh = 'X'.ENDFORM.
??
FUNCTION zf_fi_cust_create. *"---------------------------------------------------------------------- *"*"本地接口: *" TABLES *" IT_INPUT STRUCTURE ZFIS_CUST_BASE *" IT_COMP STRUCTURE ZFIS_CUST_COMPANY *" OT_RETURN STRUCTURE ZFIS_CUST_RETURN *"----------------------------------------------------------------------DATA:wa_return TYPE zfis_cust_return,ls_return TYPE bapiret2. *進度條DATA: l_perc TYPE i VALUE 0.DATA: l_line TYPE string,l_total TYPE string.DATA: l_stxt TYPE string.DATA: l_sperc(3) TYPE c.DESCRIBE TABLE it_input LINES l_total.LOOP AT it_input ASSIGNING FIELD-SYMBOL(<fs_in>).ADD 1 TO l_line. *->納稅人登記號加上前導0<fs_in>-taxnumber = |{ <fs_in>-taxnumber ALPHA = IN }|.SELECTCOUNT(*)FROM bp000WHERE partnr = <fs_in>-kunnr.IF sy-subrc EQ 0."如果存在了,則提示錯誤wa_return-kunnr = <fs_in>-kunnr.wa_return-message = TEXT-001.wa_return-status = 'E'.APPEND wa_return TO ot_return.CONTINUE.ELSE.PERFORM frm_create_customer USING <fs_in>CHANGING wa_return.APPEND wa_return TO ot_return.ENDIF.l_perc = l_line * 100 / l_total.CONCATENATE '已導入: 第' l_line '條,' '共' l_total INTO l_stxt.CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'EXPORTINGpercentage = l_perc "百分比的數(shù)值,用來控制秒表的指針。text = l_stxt. "狀態(tài)欄顯示的文本。ENDLOOP.CLEAR:l_perc,l_line,l_total,l_stxt,l_sperc.ENDFUNCTION. *----------------------------------------------------------------------* ***INCLUDE LZF_FI_068F01. *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form FRM_CREATE_CUSTOMER *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> OT_RETURN *& --> <FS_IN> *&---------------------------------------------------------------------* FORM frm_create_customer USING ps_in TYPE zfis_cust_baseCHANGING ps_return TYPE zfis_cust_return.DATA: l_partn_cat TYPE bapibus1006_head-partn_cat,ls_central TYPE bapibus1006_central,ls_partn_group TYPE bapibus1006_head,ls_central_person TYPE bapibus1006_central_person,ls_central_organ TYPE bapibus1006_central_organ,l_partn_grp TYPE bapibus1006_head-partn_grp,ls_central_group TYPE bapibus1006_central_group,ls_address TYPE bapibus1006_address,l_bpartner TYPE bapibus1006_head-bpartner,l_bpextern TYPE bapibus1006_head-bpartner,lt_bapiadtel LIKE TABLE OF bapiadtel WITH HEADER LINE,lt_bapiret2 LIKE TABLE OF bapiret2 WITH HEADER LINE,lt_guid LIKE TABLE OF bus000___i WITH HEADER LINE,lt_custo TYPE TABLE OF bus000_eew WITH HEADER LINE,lt_commusage TYPE TABLE OF bapiaduse WITH HEADER LINE,lt_bapicomrem TYPE TABLE OF bapicomrem WITH HEADER LINE.DATA:ls_but0bk TYPE but0bk,lv_bkvid TYPE but0bk-bkvid,lv_type TYPE char1,l_str TYPE string,l_role TYPE bapibus1006_head-partnerrole VALUE 'FLCU00',l_country TYPE char2 VALUE 'CN',l_city TYPE char4 VALUE '廣州',l_postcode TYPE char6 VALUE '510000'.DATA:ls_bankdetail TYPE bapibus1006_bankdetail.DATA:ls_bankdetail_x TYPE bapibus1006_bankdetail_x.DATA:lt_return TYPE TABLE OF bapiret2.DATA:ls_return TYPE bapiret2.DATA:l_len TYPE i.DATA:wa_bp001 TYPE bp001."客戶類型l_partn_cat = '3'.l_role = ps_in-role."簡稱ls_central-searchterm1 = ps_in-bu_sort1_txt.ls_central-partnerexternal = ps_in-kunnr.ls_central_group-namegroup1 = ps_in-name_org1.ls_central_group-namegroup2 = ps_in-name_org2."國家代碼ls_address-country = ps_in-country."地區(qū)ls_address-region = ps_in-region."城市l(wèi)s_address-city = ps_in-city."郵政編碼ls_address-postl_cod1 = ps_in-postl_cod1."街道ls_address-street = ps_in-street."語言ls_address-langu = '1'."賬戶組l_partn_grp = ps_in-partn_grp.* lscentral_data-central-data-vbund = p_s_indata-vbund . "002000貿(mào)易伙伴CLEAR lt_bapiadtel.lt_bapiadtel-country = ps_in-country.lt_bapiadtel-telephone = ps_in-telf1.lt_bapiadtel-std_no = 'X'.lt_bapiadtel-r_3_user = '1'.lt_bapiadtel-home_flag = 'X'.lt_bapiadtel-consnumber = '001'.APPEND lt_bapiadtel.CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'EXPORTINGbusinesspartnerextern = ps_in-kunnrpartnercategory = l_partn_catpartnergroup = l_partn_grpcentraldata = ls_centralcentraldataperson = ls_central_personcentraldataorganization = ls_central_organcentraldatagroup = ls_central_groupaddressdata = ls_address * UPLICATE_MESSAGE_TYPE = * CCEPT_ERROR = ' 'IMPORTINGbusinesspartner = l_bpartnerTABLEStelefondata = lt_bapiadtel * AXDATA = * ELETEXDATA = * ELEXDATA = * _MAILDATA = * MLADDRESSDATA = * 400ADDRESSDATA = * FCADDRESSDATA = * RTADDRESSDATA = * SFADDRESSDATA = * RIADDRESSDATA = * AGADDRESSDATA = * DDRESSNOTES = * communicationnotes = lt_bapicomrem * communicationusage = lt_commusage ** ELEFONDATANONADDRESS = ** AXDATANONADDRESS = * telefondatanonaddress = lt_bapiadtel * ELEXDATANONADDRESS = * _MAILDATANONADDRESS = * MLADDRESSDATANONADDRESS = * 400ADDRESSDATANONADDRESS = * FCADDRESSDATANONADDRESS = * RTADDRESSDATANONADDRESS = * SFADDRESSDATANONADDRESS = * RIADDRESSDATANONADDRESS = * AGADDRESSDATANONADDRESS = * OMMUNICATIONNOTESNONADDRESS = * OMMUNICATIONUSAGENONADDRESS =return = lt_bapiret2. * DDRESSDUPLICATES =* READ TABLE lt_bapiret2 WITH KEY type = 'E' TRANSPORTING NO FIELDS.IF lt_bapiret2[] IS INITIAL.CALL FUNCTION 'BUP_MEMORY_BUT000_GET'EXPORTINGiv_partner = l_bpartnerIMPORTINGes_but000 = lt_guidEXCEPTIONSnot_found = 1parameter_error = 2bpext_not_unique = 3OTHERS = 4.READ TABLE lt_guid INDEX 1.lt_custo-partnr_guid = lt_guid-partner_guid.APPEND lt_custo.CALL FUNCTION 'BUPA_CENTRAL_CI_CHANGE'EXPORTINGis_bus000_eew = lt_custo.IF sy-subrc EQ 0.ps_return-kunnr = l_bpartner.ps_return-message = '客戶創(chuàng)建成功!'.ps_return-status = 'S'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.ELSE.CLEAR l_str.LOOP AT lt_bapiret2.IF l_str IS INITIAL.l_str = lt_bapiret2-message.ELSE.CONCATENATE l_str lt_bapiret2-message INTO l_str.ENDIF.ENDLOOP.ps_return-kunnr = ps_in-kunnr.ps_return-message = l_str.ps_return-status = 'E'.ENDIF.*->添加銀行數(shù)據(jù)IF l_bpartner IS NOT INITIAL.*->添加業(yè)務角色CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'EXPORTINGbusinesspartner = l_bpartnerbusinesspartnerrole = l_roleTABLESreturn = lt_return.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ls_bankdetail-bank_ctry = 'CN'. "銀行國家代碼 * ps_in-bank_key = |{ ps_in-bank_key ALPHA = IN }|.ls_bankdetail-bank_key = ps_in-bank_key. "銀行代碼ls_bankdetail-bank_acct = ps_in-bank_acct+0(18). "銀行賬戶 * ls_bankdetail-ctrl_key = '01'. *->16位以后的放到參考明細l_len = strlen( ps_in-bank_acct ).IF l_len > 18.l_len = l_len - 18.ls_bankdetail-bank_ref = ps_in-bank_acct+18(l_len).ENDIF. * ls_bankdetail-bankaccountname = ps_in-k. "銀行賬戶名稱 * ls_bankdetail-ctrl_key = '01'.ls_bankdetail-accountholder = ps_in-accountholder. "銀行賬戶持有人ls_bankdetail-coll_auth = ps_in-coll_auth. "首選項CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD'EXPORTINGbusinesspartner = l_bpartnerbankdetaildata = ls_bankdetailTABLESreturn = lt_return.READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.IF sy-subrc NE 0.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.CLEAR lt_return[].*->添加納稅人登記信息CALL FUNCTION 'BAPI_BUPA_TAX_ADD'EXPORTINGbusinesspartner = l_bpartnertaxtype = 'CN0'taxnumber = ps_in-taxnumberTABLESreturn = lt_return.READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.IF sy-subrc NE 0.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.ENDIF.**->更新vbund字段,如果BAPI插入無效的話"更新BPDATA:is_data TYPE cvis_ei_extern,it_data TYPE cvis_ei_extern_t.DATA rv_has_error TYPE abap_bool.DATA:lv_message TYPE string, "錯誤消息lw_bapireturn TYPE bapiret2.DATA:text0(220) TYPE c.DATA:l_partner TYPE bus_ei_extern,l_partner_relation TYPE burs_ei_extern,l_vendor TYPE vmds_ei_extern,l_company_vendor TYPE vmds_ei_company,l_customer TYPE cmds_ei_extern,l_company_customer TYPE cmds_ei_company,l_common TYPE bus_ei_bupa_central, * l_role TYPE bus_ei_bupa_roles,l_roles TYPE bus_ei_roles,l_sales TYPE cmds_ei_sales,l_tax_ind TYPE cmds_ei_tax_ind,l_function TYPE cmds_ei_functions,lv_partner_guid TYPE but000-partner_guid,wa_return TYPE zfis_054_bp_return.* l_bpartner = |{ wa_comp-kunnr ALPHA = IN }|.SELECT SINGLEpartner_guidFROM but000INTO lv_partner_guidWHERE partner = l_bpartner.l_partner-header-object_instance-bpartner = l_bpartner.l_partner-header-object_instance-bpartnerguid = lv_partner_guid.l_partner-header-object_task = 'U'.l_partner-central_data-common-data-bp_control-category = '3'.* l_partner-customer-central_data-central-data-vbund = ps_in-vbund ."貿(mào)易伙伴 * l_partner-customer-central_data-central-data-ktokd = ps_in-ktokd ."'Z001'. ** ls_bpdata-customer-central_data-central-data-kunnr = ps_ind-kunnr . * l_partner-customer-central_data-central-datax-vbund = 'X'. ** l_partner-customer-central_data-central-datax-ktokd = 'X'. ** IF ps_in-vbund NE space.ps_in-vbund = |{ ps_in-vbund ALPHA = IN }|.l_partner-finserv_data-common-data-fsbp_centrl-vbund = ps_in-vbund. "002000貿(mào)易伙伴l_partner-finserv_data-common-data-fsbp_centrl-unw_remark = l_bpartner.l_partner-finserv_data-common-datax-fsbp_centrl-vbund = 'X'.l_partner-finserv_data-common-datax-fsbp_centrl-unw_remark = 'X'. * ENDIF.MOVE l_partner TO is_data-partner.APPEND is_data TO it_data.TRY.cl_md_bp_maintain=>maintain(EXPORTING i_data = it_dataIMPORTING e_return = DATA(lt_bapi_return)).CATCH cx_root INTO DATA(lo_excep2).CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGmsgid = sy-msgidmsgnr = sy-msgnomsgv1 = sy-msgv1msgv2 = sy-msgv2msgv3 = sy-msgv3msgv4 = sy-msgv4IMPORTINGmessage_text_output = text0.lv_message = text0.rv_has_error = abap_true.ENDTRY.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.CLEAR:it_data[],lt_bapi_return[],l_partner,l_customer,l_customer-company_data-company[],l_vendor-company_data-company[],l_company_customer,l_company_vendor.REFRESH:it_data.ENDFORM. FUNCTION ZF_FI_BP_ADDCOMPANY_VEND . *"---------------------------------------------------------------------- *"*"本地接口: *" TABLES *" IT_COMP STRUCTURE ZFIS_054_BP_COMPANY *" OT_RETURN STRUCTURE ZFIS_054_BP_RETURN *"---------------------------------------------------------------------- *"*"本地接口: *" TABLES *" IT_COMP STRUCTURE ZFIS_054_BP_COMPANY *" OT_RETURN STRUCTURE ZFIS_054_BP_RETURN *"------------------------ ---------------------------------------------- *->擴充公司代碼數(shù)據(jù)"更新BPDATA: ls_return TYPE bapiret2.DATA: lt_master_data TYPE vmds_ei_main.DATA: lt_master_data_correct TYPE vmds_ei_main,lt_message_correct TYPE cvis_message,lt_master_data_defective TYPE vmds_ei_main,lt_message_defective TYPE cvis_message.DATA: ls_vmds_ei_extern TYPE vmds_ei_extern.DATA: ls_correct_extern TYPE vmds_ei_extern.DATA: ls_remarks TYPE cvis_ei_rem.DATA: ls_bank TYPE cvis_ei_cvi_bankdetail.DATA: ls_communication_phone TYPE cvis_ei_phone_str,ls_communication_fax TYPE cvis_ei_fax_str,ls_communication_smtp TYPE cvis_ei_smtp_str.DATA: lv_string TYPE string .DATA: ls_vmds_cmp TYPE vmds_ei_company,ls_vmds_pur TYPE vmds_ei_purchasing,ls_vmds_fun TYPE vmds_ei_functions.DATA: iv_flag TYPE c .DATA: wa_return TYPE zfis_054_bp_return.DATA:BEGIN OF lt_bp OCCURS 0,kunnr TYPE kna1-kunnr,END OF lt_bp.LOOP AT it_comp INTO DATA(wa_comp).lt_bp-kunnr = wa_comp-kunnr.APPEND lt_bp.ENDLOOP.SORT lt_bp.DELETE ADJACENT DUPLICATES FROM lt_bp.LOOP AT lt_bp. * 維護標識:插入、更新iv_flag = 'I' .ls_vmds_ei_extern-header-object_task = 'U'.ls_vmds_ei_extern-header-object_instance-lifnr = lt_bp-kunnr. "供應商* 公司代碼默認:JNPC ???LOOP AT it_comp INTO wa_comp WHERE kunnr = lt_bp-kunnr.CLEAR ls_vmds_cmp.ls_vmds_cmp-task = 'I'.ls_vmds_cmp-data_key-bukrs = wa_comp-bukrs. "取采購組織下的ls_vmds_cmp-data-akont = wa_comp-hkont. "總帳中的統(tǒng)馭科目 其他應付款-往來ls_vmds_cmp-data-zuawa = wa_comp-zuawa. * ls_vmds_cmp-data-xverr = 'x'. " 結(jié)算客戶ls_vmds_cmp-datax-zuawa = wa_comp-zuawa.ls_vmds_cmp-datax-akont = 'X'. "總帳中的統(tǒng)馭科目 其他應付款-往來 * LS_VMDS_CMP-DATAX-XVERR = 'X'. "結(jié)算客戶APPEND ls_vmds_cmp TO ls_vmds_ei_extern-company_data-company.ENDLOOP.APPEND ls_vmds_ei_extern TO lt_master_data-vendors.* 調(diào)用api維護供應商CALL METHOD vmd_ei_api=>maintain_bapiEXPORTINGiv_collect_messages = 'X'is_master_data = lt_master_dataIMPORTINGes_master_data_correct = lt_master_data_correctes_message_correct = lt_message_correctes_master_data_defective = lt_master_data_defectivees_message_defective = lt_message_defective.* 返回結(jié)果處理CLEAR lv_string.LOOP AT lt_message_defective-messagesTRANSPORTING NO FIELDSWHERE type CA 'EA'.EXIT.ENDLOOP.IF sy-subrc = 0. "失敗CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.LOOP AT lt_message_defective-messages INTO DATA(wa_messages)WHERE type CA 'EA'.CONCATENATE lv_string wa_messages-message INTO lv_string.ENDLOOP.wa_return-kunnr = lt_bp-kunnr.wa_return-kunnr = |{ wa_return-kunnr ALPHA = OUT }|.wa_return-type = 'E'.wa_return-message = lv_string.APPEND wa_return TO ot_return.ELSE."成功wa_return-kunnr = lt_bp-kunnr.wa_return-kunnr = |{ wa_return-kunnr ALPHA = OUT }|.wa_return-type = 'S'.wa_return-message = text-001.APPEND wa_return TO ot_return.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.CLEAR:lt_bp,ls_return ,lt_master_data ,lt_master_data_correct ,lt_message_correct ,lt_master_data_defective ,lt_message_defective ,ls_vmds_ei_extern ,ls_correct_extern ,lv_string ,ls_vmds_cmp ,ls_vmds_pur ,ls_vmds_fun ,iv_flag .CLEAR ls_vmds_ei_extern.ENDLOOP.ENDFUNCTION. FUNCTION ZF_FI_BP_ADDCOMPANY_CUST. *"---------------------------------------------------------------------- *"*"本地接口: *" TABLES *" IT_COMP STRUCTURE ZFIS_054_BP_COMPANY *" OT_RETURN STRUCTURE ZFIS_054_BP_RETURN *"---------------------------------------------------------------------- *->擴充公司代碼數(shù)據(jù)"更新BPDATA: ls_return TYPE bapiret2.DATA: lt_master_data TYPE cmds_ei_main.DATA: lt_master_data_correct TYPE cmds_ei_main,lt_message_correct TYPE cvis_message,lt_master_data_defective TYPE cmds_ei_main,lt_message_defective TYPE cvis_message.DATA: ls_cmds_ei_extern TYPE cmds_ei_extern.DATA: ls_correct_extern TYPE cmds_ei_extern.DATA: ls_remarks TYPE cvis_ei_rem.DATA: lv_string TYPE string .DATA: wa_return TYPE zfis_054_bp_return.DATA: iv_flag TYPE char1.DATA: ls_cmds_cmp TYPE cmds_ei_company.DATA:BEGIN OF lt_bp OCCURS 0,kunnr TYPE kna1-kunnr,END OF lt_bp.LOOP AT it_comp INTO DATA(wa_comp).lt_bp-kunnr = wa_comp-kunnr.APPEND lt_bp.ENDLOOP.SORT lt_bp.DELETE ADJACENT DUPLICATES FROM lt_bp.LOOP AT lt_bp. * 維護標識:插入、更新iv_flag = 'I' .ls_cmds_ei_extern-header-object_task = 'U'.ls_cmds_ei_extern-header-object_instance-kunnr = lt_bp-kunnr. "供應商* 公司代碼默認:JNPC ???LOOP AT it_comp INTO wa_comp WHERE kunnr = lt_bp-kunnr.CLEAR ls_cmds_cmp.ls_cmds_cmp-task = 'I'.ls_cmds_cmp-data_key-bukrs = wa_comp-bukrs. "取采購組織下的ls_cmds_cmp-data-akont = wa_comp-hkont. "總帳中的統(tǒng)馭科目 其他應付款-往來 * LS_VMDS_CMP-DATA-XVERR = 'X'. " 結(jié)算客戶ls_cmds_cmp-data-zuawa = wa_comp-zuawa. * ls_vmds_cmp-data-xverr = 'x'. " 結(jié)算客戶ls_cmds_cmp-datax-zuawa = wa_comp-zuawa.ls_cmds_cmp-datax-akont = 'X'. "總帳中的統(tǒng)馭科目 其他應付款-往來 * LS_VMDS_CMP-DATAX-XVERR = 'X'. "結(jié)算客戶APPEND ls_cmds_cmp TO ls_cmds_ei_extern-company_data-company.ENDLOOP.APPEND ls_cmds_ei_extern TO lt_master_data-customers.* 調(diào)用api維護供應商CALL METHOD cmd_ei_api=>maintain_bapiEXPORTINGiv_collect_messages = 'X'is_master_data = lt_master_dataIMPORTINGes_master_data_correct = lt_master_data_correctes_message_correct = lt_message_correctes_master_data_defective = lt_master_data_defectivees_message_defective = lt_message_defective.* 返回結(jié)果處理CLEAR lv_string.LOOP AT lt_message_defective-messagesTRANSPORTING NO FIELDSWHERE type CA 'EA'.EXIT.ENDLOOP.IF sy-subrc = 0. "失敗CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.LOOP AT lt_message_defective-messages INTO DATA(wa_messages)WHERE type CA 'EA'.CONCATENATE lv_string wa_messages-message INTO lv_string.ENDLOOP.wa_return-kunnr = lt_bp-kunnr.wa_return-type = 'E'.wa_return-message = lv_string.APPEND wa_return TO ot_return.ELSE."成功wa_return-kunnr = lt_bp-kunnr.wa_return-type = 'S'.wa_return-message = text-001.APPEND wa_return TO ot_return.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.CLEAR:lt_bp,ls_return ,lt_master_data ,lt_master_data_correct ,lt_message_correct ,lt_master_data_defective ,lt_message_defective ,ls_cmds_ei_extern ,ls_correct_extern ,lv_string ,ls_cmds_cmp ,iv_flag .CLEAR ls_cmds_ei_extern.ENDLOOP.ENDFUNCTION.?
總結(jié)
- 上一篇: Tomcat安装及运行
- 下一篇: 计算机生成的精美图形,太震撼啦!!!