日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ooalv自定义按钮、单击、双击、列编辑切换的事件用法

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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自定义按钮、单击、双击、列编辑切换的事件用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。