OO ALV 使用TOP-OF-PAGE

1、定义

 

DATA: GO_DOCKING_C TYPE REF TO CL_GUI_DOCKING_CONTAINER,  "屏幕docking
      GO_SPLITTER  TYPE REF TO CL_GUI_SPLITTER_CONTAINER,   "屏幕分割
      GO_TOP_C     TYPE REF TO CL_GUI_CONTAINER,   "TOP OF PAGE 容器
      GO_ALV_C     TYPE REF TO CL_GUI_CONTAINER,   "ALV 容器
      GO_FOOT_C    TYPE REF TO CL_GUI_CONTAINER,   "页脚
      GO_ALV_100   TYPE REF TO CL_GUI_ALV_GRID.      "ALV控件

DATA: GO_DYNDOC_ID  TYPE REF TO CL_DD_DOCUMENT,  "文档
      GO_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER. "HTML CONTRL PROXY CLASS

2、CLASS 定义

CLASS LCL_ALV_EVENT_HANDLER DEFINITION.

  PUBLIC SECTION.

    METHODS: TOP_OF_PAGE  FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID

      IMPORTING E_DYNDOC_ID.
ENDCLASS.

 3、CLASS 实施

CLASS LCL_ALV_EVENT_HANDLER IMPLEMENTATION.

  METHOD TOP_OF_PAGE.

    PERFORM TOP_OF_PAGE USING E_DYNDOC_ID.

  ENDMETHOD.
ENDCLASS.

DATA:GO_EVEN_100 TYPE REF TO LCL_ALV_EVENT_HANDLER.

 4、 展示

  IF GO_SPLITTER IS INITIAL .
    CREATE OBJECT GO_SPLITTER
      EXPORTING
        PARENT  = CL_GUI_CONTAINER=>SCREEN0
        ROWS    = 2
        COLUMNS = 1.
    CALL METHOD GO_SPLITTER->GET_CONTAINER
      EXPORTING
        ROW       = 1
        COLUMN    = 1
      RECEIVING
        CONTAINER = GO_TOP_C.
    CALL METHOD GO_SPLITTER->GET_CONTAINER
      EXPORTING
        ROW       = 2
        COLUMN    = 1
      RECEIVING
        CONTAINER = GO_ALV_C.
  ENDIF.
  CALL METHOD GO_SPLITTER->SET_ROW_HEIGHT
    EXPORTING
      ID     = 1
      HEIGHT = 10.

  IF GO_ALV_100 IS INITIAL.
    CREATE OBJECT GO_ALV_100
      EXPORTING
        I_PARENT = GO_ALV_C.
  ENDIF.
  IF GO_DYNDOC_ID_T IS INITIAL.
    CREATE OBJECT GO_DYNDOC_ID_T
      EXPORTING
        STYLE = 'ALV_GRID'.
  ENDIF.

      4-4、注册事件

  CREATE OBJECT GO_EVEN_100.
  SET HANDLER GO_EVEN_100->TOP_OF_PAGE FOR GO_ALV_100.

    4-5、调用方法,显示ALV

CALL METHOD GO_ALV_100->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      IS_VARIANT                    = PS_VARIANT
      I_SAVE                        = 'A'
      IS_LAYOUT                     = PS_LAYOUT
      IT_TOOLBAR_EXCLUDING          = PT_EXCE[]
    CHANGING
      IT_OUTTAB                     = GT_ALV
      IT_FIELDCATALOG               = PT_FIELDCAT[]
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION = 1
      PROGRAM_ERROR                 = 2
      TOO_MANY_LINES                = 3
      OTHERS                        = 4.

    4-6、初始化

    

  CALL METHOD GO_DYNDOC_ID->INITIALIZE_DOCUMENT
    EXPORTING
      BACKGROUND_COLOR = CL_DD_AREA=>COL_TEXTAREA.

     4-7、process event

  CALL METHOD GO_ALV_100->LIST_PROCESSING_EVENTS
    EXPORTING
      I_EVENT_NAME = 'TOP_OF_PAGE'
      I_DYNDOC_ID  = GO_DYNDOC_ID.

    5、FORM

 

FORM TOP_OF_PAGE  USING  DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.
  DATA:DL_TEXT(255) TYPE C .
* 文本
  CLEAR DL_TEXT.
  CALL METHOD DG_DYNDOC_ID->ADD_TEXT
    EXPORTING
      TEXT         = 'TOP OF PAGE'
      SAP_STYLE    = CL_DD_AREA=>HEADING
      SAP_FONTSIZE = CL_DD_AREA=>LARGE
      SAP_COLOR    = CL_DD_AREA=>LIST_HEADING_INT.
* 换行
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.
* 空格
  CALL METHOD DG_DYNDOC_ID->ADD_GAP.

  IF GO_HTML_CNTRL IS INITIAL.
    CREATE OBJECT GO_HTML_CNTRL
      EXPORTING
        PARENT = GO_TOP_C.
  ENDIF.

  CALL METHOD GO_DYNDOC_ID->MERGE_DOCUMENT.
  GO_DYNDOC_ID->HTML_CONTROL = GO_HTML_CNTRL.
  CALL METHOD GO_DYNDOC_ID->DISPLAY_DOCUMENT
    EXPORTING
      REUSE_CONTROL      = 'X'
      PARENT             = GO_TOP_C
    EXCEPTIONS
      HTML_DISPLAY_ERROR = 1.
ENDFORM.

     

 

 

               

      

           

 

在 ABAP OOALV 中,可以使用 CL_GUI_ALV_GRID 类来实现菜单下拉栏按钮。首先,需要创建一个继承自 CL_GUI_ALV_GRID 的子类,并重写其 GET_TOP_OF_PAGE 方法。在该方法中,可以使用以下代码来创建菜单下拉栏按钮: ```abap METHOD get_top_of_page. DATA: lr_functions TYPE REF TO cl_salv_functions_list, lr_function TYPE REF TO cl_salv_function, lr_menu TYPE REF TO cl_gui_context_menu, lr_submenu TYPE REF TO cl_gui_context_menu. super->get_top_of_page( ). IF me->alv_functions IS INITIAL. lr_functions = me->get_functions( ). lr_function = lr_functions->add_function( function_name = 'MY_FUNCTION' icon_name = 'ICON_NAME' text = 'MY_TEXT' ). lr_menu = lr_function->get_context_menu( ). lr_submenu = lr_menu->create_submenu( text = 'MY_SUBMENU' ). lr_submenu->add_function( function_name = 'MY_SUBFUNCTION' icon_name = 'ICON_NAME' text = 'MY_SUBTEXT' ). ENDIF. ENDMETHOD. ``` 以上代码中,我们首先获取了 ALV 的函数列表对象,并添加了一个自定义的函数 MY_FUNCTION。然后,我们通过该函数的 get_context_menu 方法获取了一个菜单对象 lr_menu,并创建了一个子菜单 lr_submenu。最后,我们在子菜单中添加了一个自定义的函数 MY_SUBFUNCTION。 需要注意的是,在以上代码中,MY_FUNCTION、MY_SUBFUNCTION、ICON_NAME、MY_TEXT、MY_SUBTEXT 都需要根据实际情况进行替换。此外,如果需要在菜单下拉栏按钮上显示图标,还需要提供相应的图标名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值