前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP OOALV添加自定義按鈕及按鈕功能

ABAP OOALV添加自定義按鈕及按鈕功能

作者头像
惨绿少年.
发布2021-02-24 14:25:53
8950
发布2021-02-24 14:25:53
举报
文章被收录于专栏:ABAPABAP

DATA: gv_repid TYPE sy-repid, gv_sname TYPE sy-dynnr. TYPES: BEGIN OF gs_data. INCLUDE STRUCTURE spfli. TYPES: celtab TYPE lvc_t_styl. TYPES: END OF gs_data. DATA: gs_data1 TYPE gs_data. DATA: gt_data TYPE TABLE OF gs_data WITH HEADER LINE.

DATA: g_con01 TYPE REF TO cl_gui_custom_container.

DATA: g_grid01 TYPE REF TO cl_gui_alv_grid.

DATA: gs_fieldcat TYPE lvc_s_fcat. DATA: gt_fieldcat TYPE lvc_t_fcat. DATA: gs_dropdowm TYPE lvc_s_drop, gt_dropdowm TYPE lvc_t_drop, gs_style TYPE lvc_s_styl, gt_style TYPE lvc_t_styl. DATA: ok_code TYPE sy-ucomm, save_ok TYPE sy-ucomm. CONSTANTS: g_cus01 TYPE scrfname VALUE ‘CUS01’.

----------------------------------------------------------------------

---------------------------------------------------------------------- * ---------------------------------------------------------------------- CLASS cl_event_receiver DEFINITION. PUBLIC SECTION. " 声明Toolbar事件方法 METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive. methods handle_user_command for EVENT user_command of cl_gui_alv_grid IMPORTING e_ucomm. ENDCLASS. "cl_event_receiver DEFINITION

----------------------------------------------------------------------

---------------------------------------------------------------------- * ---------------------------------------------------------------------- CLASS cl_event_receiver IMPLEMENTATION. " 实现Toolbar事件方法 METHOD handle_toolbar. DATA: ls_toolbar TYPE stb_button. CLEAR: ls_toolbar. ls_toolbar-butn_type = 3. " 分隔符 APPEND ls_toolbar TO e_object->mt_toolbar. CLEAR: ls_toolbar. ls_toolbar-function = ‘EDIT’. " 功能码 ls_toolbar-icon = ICON_CHANGE . " 图标名称 ls_toolbar-quickinfo = ‘EDIT’. " 图标的提示信息 ls_toolbar-disabled = ‘’. " X表示灰色,不可用 ls_toolbar-text = ‘’. " 按钮上显示的文本 APPEND ls_toolbar TO e_object->mt_toolbar. ENDMETHOD. "handle_toolbar METHOD handle_user_command. CASE e_ucomm. WHEN ‘EDIT’. IF g_grid01->is_ready_for_input( ) EQ 0. CALL METHOD g_grid01->set_ready_for_input EXPORTING i_ready_for_input = 1. ELSE. CALL METHOD g_grid01->set_ready_for_input EXPORTING i_ready_for_input = 0. ENDIF. WHEN OTHERS. ENDCASE. ENDMETHOD. ENDCLASS. "cl_event_receiver IMPLEMENTATION DATA: event_receiver TYPE REF TO cl_event_receiver.

START-OF-SELECTION. PERFORM get_data. CALL SCREEN 100.

&--------------------------------------------------------------------- *& Form GET_DATA &---------------------------------------------------------------------

---------------------------------------------------------------------- FORM get_data. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data UP TO 30 ROWS FROM spfli. ENDFORM. "GET_DATA

&--------------------------------------------------------------------- *& Form SET_FIELDCAT &---------------------------------------------------------------------

---------------------------------------------------------------------- FORM set_fieldcat. CLEAR: gt_fieldcat[]. DEFINE macro_fieldcat. CLEAR gs_fieldcat. gs_fieldcat-fieldname = &1. gs_fieldcat-coltext = &2. gs_fieldcat-hotspot = &3. APPEND gs_fieldcat TO gt_fieldcat. END-OF-DEFINITION.

macro_fieldcat ‘CARRID’ ‘航线代码’ ‘X’. macro_fieldcat ‘CONNID’ ‘航班连接Id’ ‘’. macro_fieldcat ‘COUNTRYFR’ ‘起飞国家’ ‘’. macro_fieldcat ‘CITYFROM’ ‘起飞城市’ ‘’. macro_fieldcat ‘AIRPFROM’ ‘起飞机场’ ‘’. macro_fieldcat ‘COUNTRYTO’ ‘目标国家’ ‘’. macro_fieldcat ‘CITYTO’ ‘目标城市’ ‘’. macro_fieldcat ‘AIRPTO’ ‘目标机场’ ‘’. macro_fieldcat ‘FLTIME’ ‘航班时间’ ‘’. macro_fieldcat ‘DEPTIME’ ‘启程时间’ ‘’. macro_fieldcat ‘ARRTIME’ ‘到达时间’ ‘’. macro_fieldcat ‘DISTANCE’ ‘距离’ ‘’.

ENDFORM. "SET_FIELDCAT

&--------------------------------------------------------------------- *& Form SET_LAYOUT &---------------------------------------------------------------------

----------------------------------------------------------------------

---------------------------------------------------------------------- FORM set_layout CHANGING p_layout TYPE lvc_s_layo. p_layout-cwidth_opt = ‘X’. " 自动调节字段长度 p_layout-sel_mode = ‘D’. " 选择模式,可选择多行 p_layout-edit = ‘X’. p_layout-stylefname = ‘CELTAB’. ENDFORM. "SET_LAYOUT

&--------------------------------------------------------------------- *& Module INIT_CON OUTPUT &---------------------------------------------------------------------

---------------------------------------------------------------------- MODULE init_con OUTPUT.

DATA: ls_layout TYPE lvc_s_layo.

IF g_con01 IS INITIAL. PERFORM set_fieldcat. PERFORM set_layout CHANGING ls_layout.

代码语言:javascript
复制
" 创建SAP容器实例
CREATE OBJECT g_con01
  EXPORTING
    container_name              = g_cus01 " 自定义控件名称
  EXCEPTIONS
    cntl_error                  = 1
    cntl_system_error           = 2
    create_error                = 3
    lifetime_error              = 4
    lifetime_dynpro_dynpro_link = 5
    OTHERS                      = 6.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
" 创建GRID实例
CREATE OBJECT g_grid01
  EXPORTING
    i_parent          = g_con01
  EXCEPTIONS
    error_cntl_create = 1
    error_cntl_init   = 2
    error_cntl_link   = 3
    error_dp_create   = 4
    OTHERS            = 5.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT event_receiver.
"注册事件handler方法
SET HANDLER event_receiver->handle_toolbar FOR g_grid01.
set HANDLER event_receiver->handle_user_command for g_grid01.
" 调用ALV 显示方法
CALL METHOD g_grid01->set_table_for_first_display
  EXPORTING

IF sy-subrc <> 0.

ENDIF. ENDIF.

ENDMODULE. " INIT_CON OUTPUT

&--------------------------------------------------------------------- *& Module STATUS_0100 OUTPUT &--------------------------------------------------------------------- ---------------------------------------------------------------------- MODULE status_0100 OUTPUT. SET PF-STATUS ‘S0001’. ENDMODULE. " STATUS_0100 OUTPUT &--------------------------------------------------------------------- *& Module USER_EXIT_0100 INPUT &--------------------------------------------------------------------- ---------------------------------------------------------------------- MODULE user_exit_0100 INPUT. save_ok = ok_code. CLEAR ok_code. CASE save_ok. WHEN ‘BACK’. LEAVE PROGRAM. ENDCASE. ENDMODULE. " USER_EXIT_0100 INPUT

添加的按鈕
添加的按鈕
按鈕效果
按鈕效果
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档