畫1個屏幕:1001,分別再畫2個自定義控件:CONT1以及CONT3.
TABLES t001w.
TYPES:BEGIN OF typ_t001w ,
werks TYPE t001w-werks,
name1 TYPE t001w-name1,
werks2 TYPE t001w-werks,
rowcolor TYPE char10,
zcheckbox TYPE c, "LAYOUT-CHECBOX = 'ZCHECKBOX'.
* zflag TYPE c, "LAYOUT-BOX_FNAME = 'ZFLAG'.
zicon TYPE char10, "LAYOUT-ICON = 'ZICON' 圖標需要顯示的
END OF typ_t001w.
TYPES:BEGIN OF typ_smf ,
werks TYPE t001w-werks,
name1 TYPE t001w-name1,
END OF typ_smf.
DATA:i_t001w TYPE TABLE OF typ_t001w,"""""第一次ALV內表
i_t001w1 TYPE TABLE OF typ_t001w,
i_detail TYPE TABLE OF typ_smf, """""單擊ALV內表列ZICON顯示的明細ALV內表
i_smf TYPE TABLE OF typ_smf.""""SF內表
DATA:fieldcat TYPE lvc_t_fcat,
fieldcat1 TYPE lvc_t_fcat,
grid TYPE REF TO cl_gui_alv_grid, "alv控件名
grid1 TYPE REF TO cl_gui_alv_grid,
grid2 TYPE REF TO cl_gui_alv_grid, "alv控件名
g_container TYPE scrfname VALUE 'CONT1',"重新定義本地容器對象名
g_container1 TYPE scrfname VALUE 'CONT3',
g_container2 TYPE scrfname VALUE 'CONT2',"重新定義本地容器對象名
is_layout TYPE lvc_s_layo,
ps_layout TYPE lvc_s_layo,
g_custom_container TYPE REF TO cl_gui_custom_container,
g_custom_container1 TYPE REF TO cl_gui_custom_container,
g_custom_container2 TYPE REF TO cl_gui_custom_container.
DATA: ui_functions TYPE ui_functions. "隱藏按鈕的內表
*********ALV上事件捕捉類
DATA:gs_toolbar TYPE stb_button. "按鈕
CLASS alv_event_receiver DEFINITION DEFERRED. "聲明類對象
*----------------------------------------------------------------------*
* CLASS alv_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS alv_event_receiver DEFINITION. "聲明類成員可見性
PUBLIC SECTION. "定義相關類成員可以被程序中的所有對象調用
CLASS-METHODS: "靜態方法
handle_toolbar "初始化工具欄對象事件,如增加按鈕並設定其屬性
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_menu_button "用於在下拉菜單中增加選項
FOR EVENT menu_button OF cl_gui_alv_grid
IMPORTING e_object e_ucomm,
handle_user_command "工具欄中的按鈕的單擊事件
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid "屏幕中的單擊事件,可以具體到某行某列,需要設置熱點
IMPORTING e_row_id e_column_id es_row_no,
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid "屏幕中的雙擊事件,可以具體到某行某列,即使設置熱點也必須雙擊
IMPORTING e_row e_column es_row_no.
ENDCLASS. "alv_event_receiver DEFINITION
*&---------------------------------------------------------------------*
*& Class (Implementation) alv_event_receiver
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
CLASS alv_event_receiver IMPLEMENTATION. "實現類方法
METHOD handle_toolbar.
gs_toolbar-function = 'B_SUM'. "爲按鈕分配功能碼
gs_toolbar-icon = icon_display. "爲按鈕分配圖標
gs_toolbar-text = '總行數'. "爲按鈕分配文本
gs_toolbar-butn_type = '0'. "定義按鈕類型,不填時默認爲0
APPEND gs_toolbar TO e_object->mt_toolbar. "添加按鈕到工具欄
gs_toolbar-function = 'B_PRINT'. "爲按鈕分配功能碼
gs_toolbar-icon = icon_import. "爲按鈕分配圖標
gs_toolbar-text = '轉儲訂單打印'. "爲按鈕分配文本
gs_toolbar-checked = 'X'.
gs_toolbar-butn_type = '0'. "定義按鈕類型,不填時默認爲0
APPEND gs_toolbar TO e_object->mt_toolbar. "添加按鈕到工具欄
gs_toolbar-function = 'B_LIST'. "爲按鈕分配功能碼
gs_toolbar-quickinfo = '自定義下拉菜單'.
gs_toolbar-icon = icon_biw_report_view. "爲按鈕分配圖標
gs_toolbar-text = '下拉菜單'. "爲按鈕分配文本
gs_toolbar-butn_type = '1'. "定義按鈕類型
APPEND gs_toolbar TO e_object->mt_toolbar. "添加按鈕到工具欄
gs_toolbar-function = 'B_EDIT'. "爲按鈕分配功能碼
gs_toolbar-icon = icon_change. "爲按鈕分配圖標
gs_toolbar-text = '切換編輯狀態'. "爲按鈕分配文本
gs_toolbar-checked = 'X'.
gs_toolbar-butn_type = '0'. "定義按鈕類型,不填時默認爲0
APPEND gs_toolbar TO e_object->mt_toolbar. "添加按鈕到工具欄
ENDMETHOD. "handle_toolbar
METHOD handle_menu_button.
IF e_ucomm = 'B_LIST'.
CALL METHOD e_object->add_function
EXPORTING
icon = icon_display
fcode = 'B_SUM'
text = '顯示ALV總數'.
ENDIF.
ENDMETHOD. "handle_menu_button
METHOD handle_user_command.
DATA sum TYPE i.
DATA text TYPE string.
DATA:lwa_t001w LIKE LINE OF i_t001w.
DATA: lwa_smf LIKE LINE OF i_smf.
CASE e_ucomm.
WHEN 'B_SUM'.
DESCRIBE TABLE i_t001w[] LINES sum.
text = sum.
CONCATENATE '當前表格中數據的總行數:' text INTO text.
MESSAGE text TYPE 'I'. "爲何消息類型爲 E 時運行時顯示A類型,異常終止到初始界面
WHEN 'B_PRINT'.
WHEN 'B_EDIT'.
IF grid->is_ready_for_input( ) EQ 0.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMETHOD. "handle_user_command
"ALV內表展示處單擊事件捕捉,需要設置熱點對單擊列字段
METHOD handle_hotspot_click.
DATA:lwa_t001w LIKE LINE OF i_t001w.
DATA: lwa_t001w1 LIKE LINE OF i_t001w.
READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id. "判斷行號
LOOP AT i_t001w INTO lwa_t001w.
READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id.
IF lwa_t001w-zcheckbox = 'X'..
lwa_t001w-zcheckbox = ' '.
ELSEIF lwa_t001w-zcheckbox = ' '.
lwa_t001w-zcheckbox = 'X'.
ENDIF.
MODIFY i_t001w FROM lwa_t001w INDEX es_row_no-row_id.
CLEAR lwa_t001w.
ENDLOOP.
CALL METHOD grid->refresh_table_display.
CASE e_column_id-fieldname . "判斷列名
WHEN 'NAME1'.
CALL TRANSACTION 'ME51N' AND SKIP FIRST SCREEN. "隨便寫的
WHEN 'ZCHECKBOX'.
* LOOP AT i_t001w INTO lwa_t001w WHERE zcheckbox = 'X'.
* LOOP AT i_t001w1 INTO lwa_t001w1 WHERE werks = lwa_t001w-werks.
* lwa_t001w1-zcheckbox = 'X'.
* MODIFY i_t001w1 FROM lwa_t001w1 INDEX sy-tabix.
* CLEAR lwa_t001w1.
* ENDLOOP.
LOOP AT I_T001W1 INTO LWA_T001W1.
READ TABLE I_T001W INTO LWA_T001W WITH KEY WERKS = LWA_T001W1.
IF SY-SUBRC = 0.
LWA_T001W1-ZCHECKBOX = LWA_T001W-ZCHECKBOX.
ENDIF.
MODIFY i_t001w1 FROM lwa_t001w1 INDEX sy-tabix.
CLEAR: lwa_t001w,LWA_T001W1.
ENDLOOP.
CALL METHOD grid1->refresh_table_display.
WHEN 'ZICON'. "
SELECT werks
name1
INTO TABLE i_detail
FROM t001w
WHERE werks = lwa_t001w-werks2.
CLEAR lwa_t001w.
IF sy-subrc NE 0.
MESSAGE 'No result finding!' TYPE 'I'.
ELSE.
CALL SCREEN 1002.
ENDIF.
WHEN OTHERS.
ENDCASE.
* MESSAGE i001(00) WITH '當前行:' es_row_no-row_id ',航線代碼:' ls_lt001w-werks.
ENDMETHOD. "handle_hotspot_click
"ALV內表展示處雙擊擊事件捕捉,如果設置熱點雙擊不起作用
METHOD handle_double_click.
DATA:lwa_t001w LIKE LINE OF i_t001w.
READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id.
IF e_column-fieldname = 'WERKS'.
SET PARAMETER ID 'AUN' FIELD lwa_t001w-werks.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD. "handle_double_click
ENDCLASS. "alv_event_receiver
START-OF-SELECTION.
CALL SCREEN 1001.
*&---------------------------------------------------------------------*
*& Module STATUS_1001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_1001 OUTPUT.
SET PF-STATUS 'T001'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_1001 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_1001 INPUT.
FIELD-SYMBOLS <field> TYPE typ_t001w .
DATA: i TYPE i VALUE 0.
DATA ok_code TYPE sy-ucomm.
ok_code = sy-ucomm.
CLEAR sy-ucomm.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EDIT'.
IF grid->is_ready_for_input( ) EQ 0.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
WHEN 'EXECU'.
SELECT * FROM t001w
INTO CORRESPONDING FIELDS OF TABLE i_t001w.
LOOP AT i_t001w ASSIGNING <field> .
<field>-werks2 = <field>-werks.
<field>-zicon = '@16@'. "圖標
ENDLOOP.
SELECT * FROM t001w
INTO CORRESPONDING FIELDS OF TABLE i_t001w1.
LOOP AT i_t001w1 ASSIGNING <field> .
<field>-werks2 = <field>-werks.
<field>-zicon = '@16@'. "圖標
ENDLOOP.
IF g_custom_container IS INITIAL.
PERFORM exclude_tb_functions CHANGING ui_functions. "隱藏某些按鈕
PERFORM frm_layout_set.
PERFORM frm_fieldcat_set.
PERFORM alv_show.
ELSE.
CALL METHOD grid->refresh_table_display. "刷新
ENDIF.
IF g_custom_container1 IS INITIAL.
PERFORM exclude_tb_functions CHANGING ui_functions. "隱藏某些按鈕
PERFORM frm_layout_set.
PERFORM frm_fieldcat_set1.
PERFORM alv_show2.
ELSE.
CALL METHOD grid1->refresh_table_display. "刷新
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_1001 INPUT
*&---------------------------------------------------------------------*
*& Form ALV_SHOW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_show .
CREATE OBJECT g_custom_container "創建容器對象
EXPORTING container_name = g_container.
CREATE OBJECT grid "創建ALV對象
EXPORTING i_parent = g_custom_container.
CALL METHOD grid->register_edit_event "可編輯回傳方法
EXPORTING
i_event_id = grid->mc_evt_modified.
CALL METHOD grid->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME = 'T001W'
* IS_VARIANT =
i_save = 'X'
* I_DEFAULT = 'X'
is_layout = is_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
it_toolbar_excluding = ui_functions[]
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
it_outtab = i_t001w[]
it_fieldcatalog = fieldcat[].
* IT_SORT =
* IT_FILTER =
* EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1
* PROGRAM_ERROR = 2
* TOO_MANY_LINES = 3
* others = 4
.
******註冊ALV中引用的事件
SET HANDLER alv_event_receiver=>handle_toolbar
alv_event_receiver=>handle_menu_button
alv_event_receiver=>handle_user_command
alv_event_receiver=>handle_hotspot_click
alv_event_receiver=>handle_double_click
FOR ALL INSTANCES.
****調用方法激活自定義工具對象
CALL METHOD grid->set_toolbar_interactive.
ENDFORM. " ALV_SHOW
*&---------------------------------------------------------------------*
*& Form exclude_tb_functions
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_EXCLUDE text
*----------------------------------------------------------------------*
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions .
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_filter . "過濾器
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_current_variant . "佈局更改
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_average ."平均值
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_sum ."求和
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_export . "導出
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut . "剪切
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row . "刪除行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row . "插入行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_refresh . "刷新
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_find ."查找
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc . "升序排列
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc . "降序排列
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_views . "視圖
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_print ."打印
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_detail . "詳細按鈕
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_graph . "顯示圖形
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_info . "最終用戶文檔
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row . "附加行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row . "複製行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy . "複製文本
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo . "撤消
APPEND ls_exclude TO pt_exclude.
ENDFORM . "exclude_tb_functions
*&---------------------------------------------------------------------*
*& Form FRM_LAYOUT_SET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_layout_set .
is_layout-zebra = 'X' .
is_layout-grid_title = '倉儲轉儲訂單跟蹤及打印' .
is_layout-smalltitle = 'X' . "ALV 控制: 標題大小
is_layout-cwidth_opt = 'X' . "優化列寬
* is_layout-no_toolbar = 'X' . "隱藏按鈕
is_layout-sel_mode = 'A' . "flag選擇方式 A:行和列的選擇,無法選擇單元格 多行,多列 B
is_layout-info_fname = 'ROWCOLOR'.
ENDFORM. " FRM_LAYOUT_SET
*&---------------------------------------------------------------------*
*& Form FRM_FIELDCAT_SET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_fieldcat_set .
DATA ls_fcat TYPE lvc_s_fcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'ZCHECKBOX' .
ls_fcat-coltext = '選擇'.
* ls_fcat-emphasize = 'C601' ."列顏色控制
ls_fcat-checkbox = 'X'.
ls_fcat-edit = 'X'.
ls_fcat-hotspot = 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'WERKS' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '4' .
ls_fcat-coltext = '工廠'."Carrier ID.列標題
ls_fcat-seltext = 'AAA' ."ALV 控制: 對話功能的列標識符
ls_fcat-emphasize = 'C601' ."列顏色控制
* ls_fcat-hotspot = 'X'. “不能設置hotspot 否則double click事件無效
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'NAME1' .
ls_fcat-ref_table = 'T001W' .
ls_fcat-ref_field = 'NAME1' .
ls_fcat-outputlen = '30' .
ls_fcat-coltext = '工廠名稱' .
ls_fcat-hotspot = 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'WERKS2' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '4' .
ls_fcat-coltext = '工廠2號'."Carrier ID.列標題
ls_fcat-seltext = 'AAA' ."ALV 控制: 對話功能的列標識符
ls_fcat-emphasize = 'C601' ."列顏色控制
ls_fcat-edit = 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'ZICON' .
ls_fcat-coltext = '交貨明細憑證'."Carrier ID.列標題
ls_fcat-seltext = 'AAA' ."ALV 控制: 對話功能的列標識符
ls_fcat-icon = 'X'.
ls_fcat-hotspot = 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ENDFORM. " FRM_FIELDCAT_SET
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_print_data .
ENDFORM. " FRM_PRINT_DATA
*&---------------------------------------------------------------------*
*& Module STATUS_1002 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_1002 OUTPUT.
SET PF-STATUS 'T001'.
* SET TITLEBAR 'xxx'.
PERFORM frm_alv_show_detail.
ENDMODULE. " STATUS_1002 OUTPUT
*&---------------------------------------------------------------------*
*& Form FRM_ALV_SHOW_DETAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_alv_show_detail .
DATA: ls_fcat TYPE lvc_s_fcat ,
fieldcat2 TYPE lvc_t_fcat.
ls_fcat-fieldname = 'WERKS' .
ls_fcat-coltext = '工廠'."Carrier ID.列標題
APPEND ls_fcat TO fieldcat2 .
CLEAR ls_fcat .
ls_fcat-fieldname = 'NAME1' .
ls_fcat-coltext = '工廠名稱'.
APPEND ls_fcat TO fieldcat2 .
CLEAR ls_fcat .
ps_layout-zebra = 'X' .
ps_layout-grid_title = '交貨明細憑證' .
ps_layout-smalltitle = 'X' . "ALV 控制: 標題大小
ps_layout-cwidth_opt = 'X' . "優化列寬
ps_layout-no_toolbar = 'X' . "隱藏按鈕
* ps_layout-SEL_MODE = 'A' . "flag選擇方式 A:行和列的選擇,無法選擇單元格 多行,多列 B
* ps_layout-info_fname = 'ROWCOLOR'.
IF g_custom_container2 IS INITIAL.
CREATE OBJECT g_custom_container2 "創建容器對象
EXPORTING container_name = g_container2.
CREATE OBJECT grid2 "創建ALV對象
EXPORTING i_parent = g_custom_container2.
ELSE.
CALL METHOD grid2->refresh_table_display. "刷新
ENDIF.
CALL METHOD grid2->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME = 'T001W'
* IS_VARIANT =
i_save = 'X'
* I_DEFAULT = 'X'
is_layout = ps_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
it_outtab = i_detail[]
it_fieldcatalog = fieldcat2[].
* IT_SORT =
* IT_FILTER =
* EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1
* PROGRAM_ERROR = 2
* TOO_MANY_LINES = 3
* others = 4
.
ENDFORM. " FRM_ALV_SHOW_DETAIL
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1002 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_1002 INPUT.
DATA ok_code2 TYPE sy-ucomm.
ok_code2 = sy-ucomm.
CLEAR sy-ucomm.
CASE ok_code2.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_1002 INPUT
*&---------------------------------------------------------------------*
*& Form ALV_SHOW2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_SHOW2 .
CREATE OBJECT g_custom_container1 "創建容器對象
EXPORTING container_name = g_container1.
CREATE OBJECT grid1 "創建ALV對象
EXPORTING i_parent = g_custom_container1.
CALL METHOD grid1->register_edit_event "可編輯回傳方法
EXPORTING
i_event_id = grid1->mc_evt_modified.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME = 'T001W'
* IS_VARIANT =
i_save = 'X'
* I_DEFAULT = 'X'
is_layout = is_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
it_toolbar_excluding = ui_functions[]
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
it_outtab = i_t001w1[]
it_fieldcatalog = fieldcat1[].
* IT_SORT =
* IT_FILTER =
* EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1""""
* PROGRAM_ERROR = 2
* TOO_MANY_LINES = 3
* others = 4
.
******註冊ALV中引用的事件
SET HANDLER alv_event_receiver=>handle_toolbar
alv_event_receiver=>handle_menu_button
alv_event_receiver=>handle_user_command
alv_event_receiver=>handle_hotspot_click
alv_event_receiver=>handle_double_click
FOR ALL INSTANCES.
****調用方法激活自定義工具對象
CALL METHOD grid1->set_toolbar_interactive.
ENDFORM. " ALV_SHOW2
*&---------------------------------------------------------------------*
*& Form FRM_FIELDCAT_SET1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_FIELDCAT_SET1 .
DATA ls_fcat TYPE lvc_s_fcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'ZCHECKBOX' .
ls_fcat-coltext = '選擇'.
* ls_fcat-emphasize = 'C601' ."列顏色控制
ls_fcat-checkbox = 'X'.
ls_fcat-edit = 'X'.
ls_fcat-hotspot = 'X'.
APPEND ls_fcat TO fieldcat1 .
CLEAR ls_fcat .
ls_fcat-fieldname = 'WERKS' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '4' .
ls_fcat-coltext = '工廠'."Carrier ID.列標題
ls_fcat-seltext = 'AAA' ."ALV 控制: 對話功能的列標識符
ls_fcat-emphasize = 'C601' ."列顏色控制
* ls_fcat-hotspot = 'X'. “不能設置hotspot 否則double click事件無效
APPEND ls_fcat TO fieldcat1 .
CLEAR ls_fcat .
ls_fcat-fieldname = 'NAME1' .
ls_fcat-ref_table = 'T001W' .
ls_fcat-ref_field = 'NAME1' .
ls_fcat-outputlen = '30' .
ls_fcat-coltext = '工廠名稱' .
ls_fcat-hotspot = 'X'.
APPEND ls_fcat TO fieldcat1 .
CLEAR ls_fcat .
ls_fcat-fieldname = 'WERKS2' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '4' .
ls_fcat-coltext = '工廠2號'."Carrier ID.列標題
ls_fcat-seltext = 'AAA' ."ALV 控制: 對話功能的列標識符
ls_fcat-emphasize = 'C601' ."列顏色控制
ls_fcat-edit = 'X'.
APPEND ls_fcat TO fieldcat1 .
CLEAR ls_fcat .
ls_fcat-fieldname = 'ZICON' .
ls_fcat-coltext = '交貨明細憑證'."Carrier ID.列標題
ls_fcat-seltext = 'AAA' ."ALV 控制: 對話功能的列標識符
ls_fcat-icon = 'X'.
ls_fcat-hotspot = 'X'.
APPEND ls_fcat TO fieldcat1 .
CLEAR ls_fcat .
ENDFORM. " FRM_FIELDCAT_SET1