生活随笔
收集整理的這篇文章主要介紹了
ooalv自定义按钮、单击、双击、列编辑切换的事件用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、需新建屏幕1001 并畫container:'CONT1' 2、需新建屏幕1002 并畫container:'CONT2' 3、定義屏幕1001、1002的ok_code和邏輯流 4、定義工具欄 ? 程序代碼: 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_detail TYPE TABLE OF typ_smf, """""單擊ALV內表列ZICON顯示的明細ALV內表 ? ???i_smf? ? TYPE TABLE OF typ_smf.""""SF內表 DATA:fieldcat TYPE lvc_t_fcat, ? ???grid TYPE REF TO cl_gui_alv_grid,??"alv控件名 ? ???grid2 TYPE REF TO cl_gui_alv_grid,??"alv控件名 ? ???g_container TYPE scrfname VALUE 'CONT1',"重新定義本地容器對象名 ? ???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_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'. ? ?? ???LOOP AT i_t001w??INTO lwa_t001w WHERE??zcheckbox = 'X'. ? ?? ?? ? lwa_smf-werks = lwa_t001w-werks. ? ?? ?? ? lwa_smf-name1 = lwa_t001w-name1. ? ?? ?? ? APPEND??lwa_smf TO i_smf. ? ?? ?? ? CLEAR :lwa_t001w,lwa_smf. ? ?? ???ENDLOOP. ? ?? ???IF i_smf[] IS INITIAL. ? ?? ?? ? MESSAGE '請至少選擇一行數據區打印!' TYPE 'E'. "E類型消息會轉化為A類型,很蛋疼,求破! ? ?? ???ELSE. ? ?? ?? ? PERFORM frm_print_data.??"這個沒具體寫。 ? ?? ???ENDIF. ? ?? ?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. ? ? READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id. "判斷行號 ? ? CASE e_column_id-fieldname . "判斷列名 ? ?? ?WHEN 'NAME1'. ? ?? ???CALL TRANSACTION 'ME51N' AND SKIP FIRST SCREEN. "隨便寫的 ? ?? ?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. ? ?? ?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. ? ? 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'. ??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 復制代碼 程序執行效果: ? 點擊“明細” 跳入第二屏,更多按鈕響應效果自己體驗 ? sap系統的ooalv的學習標準程序: BCALV_EDIT_01 BCALV_EDIT_02 BCALV_EDIT_03 BCALV_EDIT_04 BCALV_EDIT_05 雙擊編輯單元格,更改編輯狀態(ooalv 單元格控制) BCALV_EDIT_06 BCALV_EDIT_07 BCALV_EDIT_08 |
總結
以上是生活随笔為你收集整理的ooalv自定义按钮、单击、双击、列编辑切换的事件用法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。