Files
e-Book/1.ERP開發勝經/參考文檔/template/template2.txt
T

158 lines
4.6 KiB
Plaintext

*&---------------------------------------------------------------------*
*& Report @TCode@
*&---------------------------------------------------------------------*
*& @FunctionName@
*& Author: Michael
*& Create Date: 20yy-mm-dd
*&---------------------------------------------------------------------*
REPORT @TCode@.
TYPE-POOLS: slis.
TYPE-POOLS truxs.
TABLES : @TableName@.
DATA: wa_fieldcat TYPE slis_fieldcat_alv , " 相當於工作區
i_fieldcat TYPE slis_t_fieldcat_alv , " 存放輸出欄位名稱的列表
i_layout TYPE slis_layout_alv . " 負責整個ALV的全域性屬性
i_layout-zebra = 'X' . " 使ALV界面呈顏色交替
"i_layout-colwidth_optimize = 'X' . " 自動優化列寬
i_layout-detail_initial_lines = 'X' . " 是否出現細節螢幕
i_layout-detail_titlebar = '詳細內容' . " 細節螢幕標題
TYPES: BEGIN OF t_tab,
@FieldDefine@
END OF t_tab.
DATA :
t_upload TYPE STANDARD TABLE OF t_tab,
wa_upload TYPE t_tab,
it_type TYPE truxs_t_text_data.
DATA:
recno type I,
ok_no type I,
err_no type I.
DATA: ok_c(10) TYPE c, err_c(10) TYPE c.
DATA: lv_result(200) TYPE c.
* Selection screen
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001 .
PARAMETERS:
p_view RADIOBUTTON GROUP rg1 DEFAULT 'X',
p_save RADIOBUTTON GROUP rg1.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002 .
PARAMETERS p_file TYPE rlgrap-filename DEFAULT 'D:\Data\@TableName@.xlsx'.
SELECTION-SCREEN END OF BLOCK blk2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
START-OF-SELECTION.
* Uploading the data in the file into internal table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER = 'X'
i_tab_raw_data = it_type
i_filename = p_file
TABLES
i_tab_converted_data = t_upload[]
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CASE 'X'.
WHEN p_view.
PERFORM frm_view.
WHEN p_save.
PERFORM frm_save.
WHEN OTHERS.
ENDCASE.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form frm_view
*&---------------------------------------------------------------------*
FORM frm_view.
"設定 alv 參數
PERFORM frm_set_fieldcat USING:
@FieldCaption_excel@
"顯示 excel 內容
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = sy-repid " 當前程式
is_layout = i_layout " ALV的全域性屬性
it_fieldcat = i_fieldcat[] " 存放輸出欄位名稱的列表
i_save = 'X' " 是否保存佈局
tables
T_OUTTAB = t_upload. " Table with data to be displayed
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_view
*&---------------------------------------------------------------------*
*& 目前版本沒有防錯機制, 僅檢查是否已存在的判斷
*&---------------------------------------------------------------------*
FORM frm_save.
* Uploading the data into the database table
ok_no = 0.
err_no = 0.
LOOP AT T_UPLOAD INTO WA_UPLOAD.
"判斷資料是否已存在, 若已存在 skip
select count( * ) into @recno from @TableName@ where @PK_Where@
if recno = 0.
@AssignFieldValue@
MODIFY @TableName@.
ok_no = ok_no + 1.
else.
err_no = err_no + 1.
endif.
ENDLOOP.
ok_c = ok_no.
err_c = err_no.
CONCATENATE '資料寫入成功筆數:' ok_c ',失敗筆數:' err_c INTO lv_result.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
exporting
TEXTLINE1 = lv_result.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_set_fieldcat
USING l_tabname l_fieldname l_titlename_l l_titlename_s l_fix_column.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = l_tabname.
wa_fieldcat-fieldname = l_fieldname. " 需要輸出的內表的欄位名
wa_fieldcat-seltext_l = l_titlename_l. " 欄位的描述-長欄位標籤
wa_fieldcat-seltext_m = l_titlename_l. " 欄位描述-中欄位標籤
wa_fieldcat-seltext_s = l_titlename_s. " 欄位描述-短欄位標籤
wa_fieldcat-fix_column = l_fix_column. " 是否是固定列
"wa_fieldcat-outputlen = l_outputlen. " 欄寬
APPEND wa_fieldcat TO i_fieldcat.
ENDFORM. " frm_set_fieldcat