ABAP ALVOO详细教程(三)
ALV面向对象编程第一步:创建屏幕
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220130707462.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDAxMDA4,size_16,color_FFFFFF,t_70)
屏幕号码最好是8000到9000
然会点击逻辑流
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220130906204.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDAxMDA4,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220130938507.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDAxMDA4,size_16,color_FFFFFF,t_70)
双击名称
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220131008323.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDAxMDA4,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191220131042844.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDAxMDA4,size_16,color_FFFFFF,t_70)
选择主程序
代码如下:
REPORT ZPM04.
"alvoo和调用函数字段目录和布局控制参考结构有区别
"OO字段目录LVC_S_FCAT布局控制LVC_S_LAYO打印LVC_S_PRNT排序LVC_S_SORT过滤LVC_S_FILT
"第一步创建SCREEN,在屏幕上创建个定制控制
"点击显示对象列表
"第二步定义变量
DATA :
wcl_container TYPE REF TO cl_gui_custom_container,"定义ALV容器SE24查看类 参考类TYPE REF TO
wcl_alv TYPE REF TO cl_gui_alv_grid,"alv网格
gt_fieldcat TYPE lvc_t_fcat,"存放字段目录
gs_layout TYPE lvc_s_layo."布局结构
DATA:
gt_list TYPE TABLE OF sflight WITH HEADER LINE.
CALL SCREEN 8000.
* wt_sflight TYPE sflight.
*&---------------------------------------------------------------------*
*& Module STATUS_8000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_8000 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module DISPLAY_ALV OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE display_alv OUTPUT.
PERFORM display_alv.
ENDMODULE.
FORM display_alv.
IF wcl_alv IS INITIAL.
CREATE OBJECT :wcl_container
EXPORTING
CONTAINER_NAME = 'CON'.
create OBJECT : wcl_alv
EXPORTING
i_parent = wcl_container.
"获取字段目录
PERFORM prepare_filed_catalog CHANGING gt_fieldcat.
PERFORM prepare_layout CHANGING gs_layout ."获取布局
"获取数据
PERFORM get_data TABLES gt_list.
CALL METHOD wcl_alv->set_table_for_first_display
EXPORTING
* i_buffer_active =
* i_bypassing_buffer =
* i_consistency_check =
* i_structure_name =
* is_variant =
* i_save =
* i_default = 'X'
is_layout = gs_layout
* is_print =
* it_special_groups =
* it_toolbar_excluding =
* it_hyperlink =
* it_alv_graphics =
* it_except_qinfo =
* ir_salv_adapter =
CHANGING
it_outtab = gt_list[]
it_fieldcatalog = gt_fieldcat
* it_sort =
* it_filter =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
others = 4
.
ELSE.
CALL METHOD wcl_alv->refresh_table_display
* EXPORTING
* is_stable =
* i_soft_refresh =
EXCEPTIONS
finished = 1
others = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_FILED_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM prepare_filed_catalog CHANGING p_gt_fieldcat.
DATA:ls_fcat TYPE lvc_t_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = 'SFLIGHT'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = p_gt_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GS_LAYOUT text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING p_gs_layout TYPE lvc_s_layo.
p_gs_layout-zebra = 'X'.
p_gs_layout-GRID_TITLE = '航班信息'.
p_gs_layout-smalltitle = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST text
*----------------------------------------------------------------------*
FORM get_data TABLES rt_outtab LIKE gt_list[]. "插入正确名称 <...>.
SELECT * FROM sflight into CORRESPONDING FIELDS OF TABLE rt_outtab UP TO 30 ROWS.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_8000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_8000 INPUT.
ENDMODULE.