REPORT zmmb_003 LINE-SIZE 400
MESSAGE-ID zmm
NO STANDARD PAGE HEADING.
*--------------------------------------------------------------------
* tables(聲明使用到的數據庫表)
*--------------------------------------------------------------------
TABLES: sscrfields.
*----------------------------------------------------------------------*
* type-pools define(定義使用到的類型池)
*----------------------------------------------------------------------*
TYPE-POOLS:
icon.
*----------------------------------------------------------------------*
* ALV 相關
*----------------------------------------------------------------------*
DATA w_layout TYPE lvc_s_layo.
DATA it_fieldcat_lvc TYPE lvc_t_fcat.
DATA w_fieldcat TYPE lvc_s_fcat.
DATA: gs_fcode TYPE char10.
DATA: gv_error TYPE c.
DATA: gs_functxt TYPE smp_dyntxt.
*--------------------------------------------------------------------
* define internal table(定義類型結構)
*--------------------------------------------------------------------
TYPES: BEGIN OF typ_return,
flagf TYPE char4,
msg(255),
END OF typ_return.
*基本視圖
TYPES: BEGIN OF typ_upload_basic,
partner TYPE but100-partner , " 業務夥伴編號編碼
bu_role TYPE bu_role_screen , " "BP 角色"
name_org1 TYPE but000-name_org1 , " 供應商名稱
name_org2 TYPE but000-name_org2 , " 組織名稱 2
name_org3 TYPE but000-name_org3 , " 組織名稱 3
name_org4 TYPE but000-name_org4 , " 組織名稱 4
bu_sort1 TYPE but000-bu_sort1 , " 搜索詞1
bu_sort2 TYPE but000-bu_sort2 , " 搜索詞2
street TYPE adrc-street, "街道地址1
str_suppl1 TYPE adrc-str_suppl1, "街道地址2
country TYPE adrc-country , " 國家代碼
city1 TYPE adrc-city1 , " 城市
region TYPE addr1_data-region , " 地區
post_code1 TYPE adrc-post_code1 , " 城市郵遞區號
house_num1 TYPE adrc-house_num1 , " 門牌號
langu TYPE char2 , " 語言代碼
tel_number TYPE adrc-tel_number , " 送貨聯繫電話
tel_number2 TYPE adrc-tel_number , " 送貨聯繫電話2
telf2 TYPE kna1-telf2 , " 行動電話
fax_number TYPE adrc-fax_number , " 傳真號
smtp_addr TYPE adr6-smtp_addr , " 電子郵件
smtp_addr2 TYPE adr6-smtp_addr , " 電子郵件2
taxtype TYPE dfkkbptaxnum-taxtype , " 稅碼類別
taxnumxl LIKE dfkkbptaxnum-taxnumxl, " 統一編號(稅號)
END OF typ_upload_basic.
TYPES: BEGIN OF typ_basic_result.
INCLUDE TYPE typ_upload_basic.
INCLUDE TYPE typ_return.
TYPES: END OF typ_basic_result.
TYPES: BEGIN OF typ_upload_pur,
partner TYPE but100-partner , " 供應商編碼
name_org1 TYPE but000-name_org1 , " 供應商名稱
ekorg TYPE lfm1-ekorg , " 採購組織
waers TYPE lfm1-waers , " 採購訂單貨幣
zterm TYPE lfm1-zterm , " 付款條件
inco1 TYPE lfm1-inco1 , " 貿易條款
inco2 TYPE lfm1-inco2 , " 貿易條款地點1
vsbed TYPE lfm1-vsbed , " 裝運條件
webre TYPE lfm1-webre , " 發票驗證
verkf TYPE lfm1-verkf, "業務人員
END OF typ_upload_pur.
TYPES: BEGIN OF typ_pur_result.
INCLUDE TYPE typ_upload_pur.
INCLUDE TYPE typ_return.
TYPES: END OF typ_pur_result.
TYPES: BEGIN OF typ_upload_company,
partner TYPE but100-partner , " 供應商編碼
name_org1 TYPE but000-name_org1 , " 供應商名稱
bukrs TYPE lfb1-bukrs , " "公司代碼
akont TYPE lfb1-akont , " "總帳的統馭科目
zterm TYPE lfb1-zterm , " 付款條件
zwels TYPE lfb1-zwels , " 付款方式
hbkid TYPE lfb1-hbkid , " 往來銀行
END OF typ_upload_company.
TYPES: BEGIN OF typ_company_result.
INCLUDE TYPE typ_upload_company.
INCLUDE TYPE typ_return.
TYPES: END OF typ_company_result.
TYPES: BEGIN OF typ_upload_bank,
partner TYPE but000-partner, "供應商名稱
banks TYPE knbk-banks, "银行国家代码參考國家頁籤
bkdsc TYPE knbk-ebpp_accname, "銀行名稱
bankl TYPE knbk-bankl, "银行代碼
koinh TYPE knbk-koinh, "帳戶持有的公司名稱
bankn TYPE knbk-bankn, "銀行帳號
END OF typ_upload_bank.
TYPES: BEGIN OF typ_bank_result.
INCLUDE TYPE typ_upload_bank.
INCLUDE TYPE typ_return.
TYPES: END OF typ_bank_result.
DATA: it_upload_basic TYPE TABLE OF typ_upload_basic,
it_upload_pur TYPE TABLE OF typ_upload_pur,
it_upload_company TYPE TABLE OF typ_upload_company,
it_upload_bank TYPE TABLE OF typ_upload_bank,
it_basic_result TYPE TABLE OF typ_basic_result,
it_pur_result TYPE TABLE OF typ_pur_result,
it_company_result TYPE TABLE OF typ_company_result,
it_bank_result TYPE TABLE OF typ_bank_result.
*CONSTANTS : c_parvw1 TYPE parvw VALUE 'PI',
* c_parvw2 TYPE parvw VALUE 'OA',
* c_parvw3 TYPE parvw VALUE 'VN'.
*-------------------------------------------------------------------
* selection-screen(定義選擇螢幕)
*-------------------------------------------------------------------
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.
SELECTION-SCREEN FUNCTION KEY 1.
PARAMETERS:
p_basic RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND com1,
p_pur RADIOBUTTON GROUP g1,
p_comp RADIOBUTTON GROUP g1,
p_bank RADIOBUTTON GROUP g1.
SELECTION-SCREEN: END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF BLOCK b5 WITH FRAME TITLE TEXT-002.
PARAMETERS: p_path LIKE rlgrap-filename .
SELECTION-SCREEN: END OF BLOCK b5.
*SELECTION-SCREEN FUNCTION KEY 2.
*--------------------------------------------------------------------
* initialization(螢幕的初始化)
*--------------------------------------------------------------------
INITIALIZATION.
PERFORM f_init_scr.
*------------------------------------------------------------------
* at selection-screen(處理用於在選擇螢幕上的操作)
*------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
PERFORM f_get_filepath USING p_path.
AT SELECTION-SCREEN.
PERFORM f_auth_check.
* 螢幕處理 範本下載
PERFORM frm_at_sle_scr.
*--------------------------------------------------------------------
* start-of-selection(調用perform)
*--------------------------------------------------------------------
START-OF-SELECTION.
PERFORM frm_check_filepath.
"* set function code
PERFORM f_set_fcode.
"* upload data from file
PERFORM f_upload_data.
* 導入數據
PERFORM f_maintain_data.
*--------------------------------------------------------------------
* end-of-selection(調用perform)
*--------------------------------------------------------------------
END-OF-SELECTION.
*********************************************************************
* subroutines(子例程)
*********************************************************************
*&------------------------------------------------------------------*
*& Form f_get_filepath
*&------------------------------------------------------------------*
* get the file to be updated
*-------------------------------------------------------------------*
FORM f_get_filepath USING pr_path.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
mask =
',All Files,*.*,Excel(*.XLSX;*.XLS),*.XLSX,*.XLS.'
mode = 'O'
IMPORTING
filename = pr_path
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
ENDFORM. " f_get_filepath
*&------------------------------------------------------------------*
*& Form f_set_fcode
*&------------------------------------------------------------------*
FORM f_set_fcode .
CASE 'X'.
WHEN p_basic.
gs_fcode = 'V_BASIC'.
WHEN p_pur.
gs_fcode = 'V_PUR'.
WHEN p_comp.
gs_fcode = 'V_COMPANY'.
WHEN p_bank.
gs_fcode = 'V_BANK'.
ENDCASE.
IF gs_fcode IS INITIAL.
MESSAGE i208(00) WITH 'Please run prgram via TCode!'.
STOP.
ENDIF.
ENDFORM.
*&-------------------------------------------------------------------*
*& Form f_upload_data
*&-------------------------------------------------------------------*
* Upload data for maitain material
*-------------------------------------------------------------------*
FORM f_upload_data .
CASE gs_fcode.
WHEN 'V_BASIC'.
PERFORM f_upl_data TABLES it_upload_basic.
LOOP AT it_upload_basic ASSIGNING FIELD-SYMBOL(<fs_basic>).
* PERFORM frm_matnr_input USING <fs_basic>-matnr CHANGING <fs_basic>-matnr.
<fs_basic>-partner = |{ <fs_basic>-partner ALPHA = IN }|. ."
ENDLOOP.
WHEN 'V_PUR'.
PERFORM f_upl_data TABLES it_upload_pur.
LOOP AT it_upload_pur ASSIGNING FIELD-SYMBOL(<fs_pur>).
* PERFORM frm_matnr_input USING <fs_PUR>-matnr CHANGING <fs_PUR>-matnr.
<fs_pur>-partner = |{ <fs_pur>-partner ALPHA = IN }|. "
ENDLOOP.
WHEN 'V_COMPANY'.
PERFORM f_upl_data TABLES it_upload_company.
LOOP AT it_upload_company ASSIGNING FIELD-SYMBOL(<fs_company>).
* PERFORM frm_matnr_input USING <fs_company>-matnr CHANGING <fs_company>-matnr.
<fs_company>-partner = |{ <fs_company>-partner ALPHA = IN }|. "
<fs_company>-akont = | { <fs_company>-akont ALPHA = IN }|. "
ENDLOO