SAP SALV09 切换SALV编辑模式和USER-COMMAND响应

1.效果

  • 点击按钮执行对应操作
    1

2.实现

  • 代码
    CLASS lcl_salv_model DEFINITION INHERITING FROM cl_salv_model.
      PUBLIC SECTION.
        DATA: o_control TYPE REF TO cl_salv_controller_model,
              o_adapter TYPE REF TO cl_salv_adapter.
    
        METHODS: save_model
          IMPORTING io_model TYPE REF TO cl_salv_model.
    
        METHODS: save_controller.
    
        METHODS: save_adapter.
      PRIVATE SECTION.
        DATA: lo_model TYPE REF TO cl_salv_model.
    ENDCLASS.
    
    CLASS lcl_report DEFINITION.
      PUBLIC SECTION.
        TYPES: BEGIN OF ty_sflight,
                 carrid   TYPE sflight-carrid,
                 connid   TYPE sflight-connid,
                 fldate   TYPE sflight-fldate,
                 price    TYPE sflight-price,
                 currency TYPE sflight-currency,
                 t_color  TYPE lvc_t_scol,
               END OF ty_sflight.
    
        TYPES: ty_t_sflight TYPE TABLE OF ty_sflight WITH DEFAULT KEY.
    
        DATA: lt_sflight TYPE TABLE OF ty_sflight.
        DATA: o_salv TYPE REF TO cl_salv_table.
        DATA: o_salv_model TYPE REF TO lcl_salv_model.
    
        METHODS: get_data.              "定义获取数据方法
        METHODS: salv_output.           "定义SALV输出方法
    
      PRIVATE SECTION.
        METHODS: set_pf_status          "定义设置SALV状态栏的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_layout             "定义设置SALV layout的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_top_of_page        "定义设置SALV 页头文本的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_end_of_page        "定义设置SALV 页尾文本的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_display_setting    "定义设置SALV GUI抬头文本的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_columns            "定义设置SALV 表列属性的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_hotspot            "定义设置SALV Hotspot的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: on_link_click          "定义设置SALV link单击事件的方法
          FOR EVENT link_click OF cl_salv_events_table
          IMPORTING row
                    column.
    
        METHODS: set_colors             "定义设置SALV 颜色属性的方法
          CHANGING co_alv     TYPE REF TO cl_salv_table
                   ct_sflight TYPE ty_t_sflight.
    
        METHODS: on_user_command        "定义设置SALV User_command属性的方法
          FOR EVENT added_function OF cl_salv_events_table
          IMPORTING e_salv_function.
    
    ENDCLASS.
    
    CLASS lcl_salv_model IMPLEMENTATION.
      METHOD save_model.
        lo_model = io_model.
      ENDMETHOD.
    
      METHOD save_controller.
        o_control = lo_model->r_controller.             "?= 类对象中的casting
      ENDMETHOD.
    
      METHOD save_adapter.
        o_adapter ?= lo_model->r_controller->r_adapter.
      ENDMETHOD.
    
    ENDCLASS.
    
    CLASS lcl_report IMPLEMENTATION.
      METHOD get_data.
        SELECT carrid connid fldate price currency
        FROM sflight
        INTO CORRESPONDING FIELDS OF TABLE lt_sflight
        UP TO 50 ROWS.
      ENDMETHOD.
    
      METHOD salv_output.
        DATA: lx_msg TYPE REF TO cx_salv_msg.
        DATA: lo_alv_model TYPE REF TO cl_salv_model.
    
        TRY.
            cl_salv_table=>factory(
            IMPORTING
              r_salv_table = o_salv
            CHANGING
              t_table = lt_sflight ).
          CATCH cx_salv_msg INTO lx_msg.
        ENDTRY.
    
        "call method set PF-Status
        CALL METHOD set_pf_status
          CHANGING
            co_alv = o_salv.
    
        "call method set Layout
        CALL METHOD set_layout
          CHANGING
            co_alv = o_salv.
    
        "call method set top-of-page
        CALL METHOD me->set_top_of_page
          CHANGING
            co_alv = o_salv.
    
        "call method set end-of-page
        CALL METHOD me->set_end_of_page
          CHANGING
            co_alv = o_salv.
    
        "call method set Disply_setting
        CALL METHOD set_display_setting
          CHANGING
            co_alv = o_salv.
    
        "call method set Columns
        CALL METHOD me->set_columns
          CHANGING
            co_alv = o_salv.
    
        "call method Set Hotspot
        CALL METHOD set_hotspot
          CHANGING
            co_alv = o_salv.
    
        "call method Set color
        CALL METHOD set_colors
     
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP SALVSAP List Viewer)是一个用于在SAP系统中创建和显示报表的工具。要在ABAP SALV报表中添加复选框(checkbox),你可以按照以下步骤进行操作: 1. 定义内表(table):首先,你需要定义一个内表来存储数据和复选框的状态。可以使用`TYPES`关键字定义一个包含所需字段的结构。 2. 填充内表数据:将需要显示的数据填充到内表中。可以使用`APPEND`语句将数据行添加到内表中。 3. 创建SALV对象:使用`CL_SALV_TABLE`类创建一个SALV对象,并将内表作为参数传递给构造方法。 4. 添加复选框列:通过调用`ADD_CHECKBOX_COLUMN`方法,为SALV对象添加一个复选框列。可以指定该列的标题和字段名。 5. 显示报表:使用`DISPLAY`方法显示SALV报表。 下面是一个简单的示例代码: ```abap DATA: lt_data TYPE TABLE OF (your_structure), lo_salv TYPE REF TO cl_salv_table. * 定义内表类型 TYPES: BEGIN OF ty_data, field1 TYPE data_type, field2 TYPE data_type, checkbox TYPE abap_bool, END OF ty_data. * 填充内表数据 APPEND VALUE #( field1 = value1 field2 = value2 ) TO lt_data. * 创建SALV对象 lo_salv = cl_salv_table=>factory( ). * 添加复选框列 lo_salv->add_checkbox_column( title = 'CheckBox' fieldname = 'CHECKBOX' ). * 设置内表数据 lo_salv->set_table_for_first_display( exporting i_structure_name = 'TY_DATA' changing it_outtab = lt_data ). * 显示报表 lo_salv->display( ). ``` 这段代码将在SALV报表中显示一个复选框列,用户可以选择或取消选择复选框。请根据你的实际需求修改字段名称、数据类型和内表数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值