SAP SALV12 给SALV设置字段排序条件

1.效果:

1

2.代码:

  • SE24->CL_SALV_FILTERS
    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.
    
        METHODS: set_aggregations       "定义设置SALV 计总属性的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_filters            "定义设置SALV 筛选属性的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
        METHODS: set_sorts              "定义设置SALV 排序属性的方法
          CHANGING co_alv TYPE REF TO cl_salv_table.
    
    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
          CHANGING
            co_alv     = o_salv
            ct_sflight = lt_sflight.
    
        "call method save_model
        lo_alv_model ?= o_salv.
        CREATE OBJECT o_salv_model.
    
        CALL METHOD o_salv_model->save_model
          EXPORTING
            io_model = lo_alv_model.
    
        "call method set_aggregations
        CALL METHOD set_aggregations
          CHANGING
            co_alv = o_salv.
    
        "call method set_filters
        CALL METHOD set_filters
          CHANGING
          
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值