欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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自定义按钮、单击、双击、列编辑切换的事件用法的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。