其他分享
首页 > 其他分享> > ABAP-OOALV实现

ABAP-OOALV实现

作者:互联网

相关类


控制区域、容器、Grid 关系

先在屏幕上绘制一个用户自定义控件区域,然后该用户以自定义控件区域为基础来创建 CL_GUI_CUSTOM_CONTAINER 容器实例,最后以此容器实例来创建 CL_GUI_ALV_GRID 实例


CL_GUI_ALV_GRID 重要方法

SET_TABLE_FOR_FIRST_DISPLAY

REFRESH_TABLE_DISPLAY

 

 


EVENTS

TOOLBAR 事件


MENU_BUTTON 事件


USER_COMMAND 事件


HOTSPOT(单点)事件


DATA_CHANGE 事件


F4 搜索帮助事件


EVENTS 注册

"屏幕输出前
MODULE status_9001 OUTPUT.

  "设置GUI状态
  SET PF-STATUS '9001_PF'.
  "设置界面标题
  SET TITLEBAR '9001_BAR'.

  IF oo_container IS INITIAL.
*   建立一个容器控件作为ALV的容器
    CREATE OBJECT oo_container
      EXPORTING
        container_name = oo_cont_on_9001.
*   建立一个ALV的实例
    CREATE OBJECT oo_grid
      EXPORTING
        i_parent = oo_container.

*   显示表格
    CALL METHOD oo_grid->set_table_for_first_display
      EXPORTING
        is_layout       = oo_layout
      CHANGING
        it_outtab       = it_9001[]
        it_fieldcatalog = oo_field.

*   注册ALV的事件
    DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
    CLEAR lt_f4.
    lt_f4-fieldname = 'FIELD_NAME'.
    lt_f4-register = 'X'.
    lt_f4-chngeafter = 'X'. 
    APPEND lt_f4.
    CALL METHOD oo_grid->register_f4_for_fields
      EXPORTING
        it_f4 = lt_f4[].
    
    CREATE OBJECT event_receiver.

    SET HANDLER event_receiver->handle_toolbar FOR oo_grid.       "注册工具栏
    SET HANDLER event_receiver->handle_menu_button FOR oo_grid.   "注册工具栏菜单
    SET HANDLER event_receiver->handle_user_command FOR oo_grid.  "注册用户自定义命令
    SET HANDLER event_receiver->handle_data_changed FOR oo_grid.  "单元格数据更改时触发
    SET HANDLER event_receiver->handle_hotspot_click1 FOR oo_grid."单击事件
    SET HANDLER event_receiver->handle_onf4 FOR go_alv_grid.      "搜索帮助事件


    "调用此方法才能激活工具栏上增加的自定义按钮
    CALL METHOD oo_grid->set_toolbar_interactive.

    CALL METHOD oo_grid->register_edit_event "单元格数据更改时触发条件
      EXPORTING
*       I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER. "回车时触发
        i_event_id = cl_gui_alv_grid=>mc_evt_modified. "单元格失去焦点触发
  ENDIF.
  CALL METHOD oo_grid->refresh_table_display.
ENDMODULE.

实现可编辑

实现列可编辑


实现单元格可编辑


ALV 的颜色设定(单元格,行,列的颜色设定)

在 ABAP 开发过程中,有的时候,我们需要在 ALV 网格上绘上一些颜色.可以给特定的行,某个特定的列,某个特定的单元格绘制颜色.

如果某列被设置为关键列,这列的颜色将被自动绘制,而不需要我们额外的指定.,ALV 的颜色是四位的如 C710,第一位是固定死的 C,第二位是颜色代码,可能值为 1-7,代表颜色如下:

1:Gray-blue —>headers

2:Light gray —>List bodies

3:yellow —>totals

4:Blue-green—>Key columns

5:green —>Positive threshold value

6:red —>Negative threshold value

7:orange —>Control levels

后两位是 1 和 0 的组合,10 则代表颜色用在背景,01 代表颜色用在前景。

列颜色设定


行颜色设定


单元格颜色设定


下拉框设置


CL_GUI_DOCKING_CONTAINER


CL_GUI_SPLITTER_CONTAINER

标签:SY,实现,EDIT,ALV,ABAP,9001,OOALV,TYPE,toolbar
来源: https://www.cnblogs.com/ap-ad-java-abap/p/16549890.html