&---------------------------------------------------------------------
*& Report Y003
*&
REPORT y003.
- 标 準 T Y P E S P O O L S 引 入 塊 *
*引入标準type pool
TYPE-POOLS:slis.
- TABLES *
TABLES: mara,sscrfields.
- T Y P E S - 輸 出 結 構 定 義 *
TYPES:BEGIN OF ty_data,
box TYPE char1,
matnr TYPE matnr,
END OF ty_data,
BEGIN OF ty_mara,
matnr TYPE matnr,
END OF ty_mara.
- DATA *
DATA:it_data TYPE TABLE OF ty_data,
wa_data TYPE ty_data,
lt_mara TYPE TABLE OF ty_mara,
functxt TYPE smp_dyntxt.
- ALV定義 *
DATA:it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat LIKE LINE OF it_fieldcat,
it_layout TYPE TABLE OF lvc_s_layo,
wa_layout TYPE lvc_s_layo,
it_events TYPE slis_t_event,
wa_events LIKE LINE OF it_events.
DATA: i_grid_settings TYPE lvc_s_glay.
i_grid_settings-edt_cll_cb = 'X'.
- 定義宏 *
DEFINE init_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = &1.
wa_fieldcat-coltext = &2.
wa_fieldcat-ref_table = &3.
wa_fieldcat-ref_field = &4.
- wa_fieldcat-no_zero = &5.
- wa_fieldcat-emphasize = &6.
-
wa_fieldcat-edit = &7.
APPEND wa_fieldcat TO it_fieldcat.
END-OF-DEFINITION.
- 選 擇 屏 幕 定 義 塊
"工具條按鈕 最多為5個.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK text WITH FRAME TITLE text-001.
PARAMETERS: p_x1 RADIOBUTTON GROUP gp1 DEFAULT 'X',
p_x2 RADIOBUTTON GROUP gp1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN ULINE.
PARAMETERS:p_bukrs TYPE bukrs OBLIGATORY DEFAULT '2000' MODIF ID m1.
SELECT-OPTIONS:s_matnr FOR mara-matnr MODIF ID m1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (50) text-002 .
SELECTION-SCREEN END OF LINE.
PARAMETERS: p_path LIKE rlgrap-filename MODIF ID m2. " 導入檔案
SELECTION-SCREEN END OF BLOCK text.
SELECTION-SCREEN BEGIN OF BLOCK text2 WITH FRAME TITLE text-003.
SELECTION-SCREEN: COMMENT /1(75) text-004 MODIF ID m3.
SELECTION-SCREEN END OF BLOCK text2 .
- 初 始 化 塊 *
INITIALIZATION.
PERFORM frm_init_data.
- PAI *
AT SELECTION-SCREEN.
*權限檢查
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'ACTVT' DUMMY
ID 'BUKRS' FIELD p_bukrs.
IF sy-subrc NE 0.
MESSAGE e004(zfi01) WITH p_bukrs.
ENDIF.
- CASE sscrfields-ucomm.
- WHEN 'FC01'.
-
"下載下傳模闆檔案
** PERFORM download_excel.
- WHEN 'ONLI'."""F8
- IF p_path IS INITIAL.
- MESSAGE i000(00) WITH '檔案路徑為空,請您輸入檔案路徑!' DISPLAY LIKE 'E'.
- STOP.
- WHEN OTHERS.
- ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
- PERFORM frm_browser_file USING p_path.
- PBO *
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN .
IF screen-group1 = 'M1'.
- IF p_x1 = 'X' .
- screen-invisible = '0'.
- screen-active = '1'.
- ELSE.
- screen-invisible = '1'.
- screen-active = '0'.
-
ENDLOOP.MODIFY SCREEN. ENDIF.
- 邏 輯 處 理 塊 *
START-OF-SELECTION.
PERFORM frm_getdata.
PERFORM frm_dealdata.
END-OF-SELECTION.
PERFORM frm_layout.
PERFORM frm_fieldcat.
PERFORM frm_output.
*& Form FRM_GETDATA
- text
- --> p1 text
- <-- p2 text
FORM frm_getdata .
SELECT matnr INTO TABLE lt_mara
UP TO 20 ROWS
FROM mara WHERE matnr IN s_matnr.
IF sy-subrc <> 0.
MESSAGE e001(00) WITH '沒有可以查詢到的記錄!'.
MOVE-CORRESPONDING lt_mara TO it_data.
ENDFORM.
*& Form FRM_DEALDATA
FORM frm_dealdata .
SORT it_data BY matnr ASCENDING.
*& Form FRM_LAYOUT
FORM frm_layout .
wa_layout-cwidth_opt = 'X'."""自動列寬
wa_layout-zebra = 'X'."""斑馬線
wa_layout-sel_mode = 'X'.""""選擇行模式
wa_layout-box_fname = 'BOX'.""""選擇
*& Form FRM_FIELDCAT
FORM frm_fieldcat .
init_fieldcat 'MATNR' '物料編碼' 'MARA' 'MATNR'.
*& Form FRM_OUTPUT
FORM frm_output .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
- I_INTERFACE_CHECK = ' '
- I_BYPASSING_BUFFER =
- I_BUFFER_ACTIVE =
i_callback_program = sy-repid i_callback_pf_status_set = 'ALV_PF_STATUS' i_callback_user_command = 'ALV_USER_COMMAND'
- 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 =
i_grid_settings = i_grid_settings is_layout_lvc = wa_layout it_fieldcat_lvc = it_fieldcat
- IT_EXCLUDING =
- IT_SPECIAL_GROUPS_LVC =
- IT_SORT_LVC =
- IT_FILTER_LVC =
- IT_HYPERLINK =
- IS_SEL_HIDE =
- I_DEFAULT = 'X'
i_save = 'A'
- IS_VARIANT =
- IT_EVENTS =
- IT_EVENT_EXIT =
- IS_PRINT_LVC =
- IS_REPREP_ID_LVC =
- I_SCREEN_START_COLUMN = 0
- I_SCREEN_START_LINE = 0
- I_SCREEN_END_COLUMN = 0
- I_SCREEN_END_LINE = 0
- I_HTML_HEIGHT_TOP =
- I_HTML_HEIGHT_END =
- IT_ALV_GRAPHICS =
- IT_EXCEPT_QINFO_LVC =
- IR_SALV_FULLSCREEN_ADAPTER =
- IMPORTING
- E_EXIT_CAUSED_BY_CALLER =
- ES_EXIT_CAUSED_BY_USER =
IF sy-subrc <> 0.TABLES t_outtab = it_data[] EXCEPTIONS program_error = 1 OTHERS = 2.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*& Form ALV_PF_STATUS
FORM alv_pf_status USING rt_extab TYPE slis_t_extab .
- DATA: l_code TYPE slis_extab.
- l_code-fcode = '&SC'.
-
APPEND l_code TO rt_extab.
SET PF-STATUS 'STANDARD_FULLSCREEN' EXCLUDING rt_extab.
SET TITLEBAR 'T001' WITH '物料資訊'.
ENDFORM. " ALV_PF_STATUS
*& Form FRM_USER_COMMAND
FORM alv_user_command USING p_ucomm TYPE sy-ucomm rs_selfield TYPE slis_selfield .
CASE p_ucomm.
WHEN '&F03'.
LEAVE TO SCREEN 0.
WHEN '&F15'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDFORM. " FRM_USER_COMMAND
*& Form FRM_INIT_DATA
FORM frm_init_data .
functxt-icon_id = icon_export.
functxt-quickinfo = '模闆下載下傳'.
functxt-icon_text = '模闆下載下傳'.
sscrfields-functxt_01 = functxt.