• OO实现ALV-SALV-实战攻略3-2-ALV工具栏自定义按钮展示方式


    REPORT ZSALV-01.
    *SALV自定义按钮功能
    *变量定义
    DATA: S_ALV TYPE REF TO CL_SALV_TABLE.
    "class 定义
    CLASS SALV_DISPLAY DEFINITION."基础类
      PUBLIC SECTION.
        METHODS: DISPLAYDATA ."方法
        EVENTS:FUNCTION ."事件
      PRIVATE SECTION.
        DATA:LR_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS,
             LR_EVENTS    TYPE REF TO CL_SALV_EVENTS.
    ENDCLASS.
    CLASS SET_HANDLER DEFINITION.
      PUBLIC SECTION.
        "理解为为某个类的事件而产生的方法,相当于将2个类关联起来
        METHODS:USER_COMMAND FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS_TABLE"直接使用该类的function事件
          IMPORTING E_SALV_FUNCTION.
    ENDCLASS.
    
    "class 实现
    CLASS SALV_DISPLAY IMPLEMENTATION.
      METHOD DISPLAYDATA.
        SELECT * INTO TABLE @DATA(LT_VBAK) FROM VBAK UP TO 10 ROWS.
        TRY.
            CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE   = S_ALV  CHANGING T_TABLE = LT_VBAK ).
          CATCH CX_SALV_MSG .
        ENDTRY.
    *    LR_FUNCTIONS = S_ALV->GET_FUNCTIONS( ).
    *    LR_FUNCTIONS->SET_ALL( ABAP_TRUE ).
        LR_EVENTS = S_ALV->GET_EVENT( ).
        "设置ALV功能
        S_ALV->SET_SCREEN_STATUS(
        PFSTATUS      =  'SALV_STANDARD1'
        REPORT        =  SY-REPID
        SET_FUNCTIONS = S_ALV->C_FUNCTIONS_ALL ).
        "=====事件注册
        DATA:HANDLER TYPE REF TO SET_HANDLER.
        CREATE OBJECT HANDLER.
        SET HANDLER HANDLER->USER_COMMAND FOR ALL INSTANCES.
        S_ALV->DISPLAY( ).
      ENDMETHOD.
    ENDCLASS.
    
    CLASS SET_HANDLER IMPLEMENTATION.
      METHOD USER_COMMAND.
        PERFORM USER_CLICK USING E_SALV_FUNCTION.
      ENDMETHOD.
    
    ENDCLASS.
    FORM USER_CLICK USING P_SALV_FUNCTION TYPE SALV_DE_FUNCTION.
      CASE P_SALV_FUNCTION.
        WHEN '&CLICK'.
          MESSAGE '你点击了我!' TYPE 'I'.
          S_ALV->REFRESH( ).
      ENDCASE.
    ENDFORM.
    
    START-OF-SELECTION.
      DATA:LR_ALV TYPE REF TO SALV_DISPLAY.
      CREATE OBJECT LR_ALV.
      LR_ALV->DISPLAYDATA( ).

     其中格式状态需要使用SE41自建一个或者复制一个标准的后自己添加一些按钮。

  • 相关阅读:
    信号线上串接电阻的作用
    python3 获取线上所有mysql的表大于1000万的信息
    airflow dags 任务 python脚本
    sqlalchemy 从零到一的使用流程(python+sqlite)
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table:XXX 的解决办法(flask sqlite 项目)
    Vue Axios请求封装
    百度新首页随想一二
    在 CentOS 7.5 64位上使用 yum 安装 MySQL 8.0
    浅析线程池 ThreadPoolExecutor 源码
    Java大整形BigInteger的用法
  • 原文地址:https://www.cnblogs.com/BruceKing/p/14628068.html
Copyright © 2020-2023  润新知