这几天听了翱翔云天的几个分享视频,发现做了这么多年的ABAP,更多的是实现功能,但是在优化和原理层面,还是相当欠缺,虽然在甲方是属于6边形战士的存在(ABAP,BASIS,BW,PO,PP,SD,MM,QM,FICO,HR,只要是代码的,都有关系,业务也就做着做着熟悉起来了,但是大多都是“知其然”,但是其所以然,好像有深入,好像又不够深入)
借此视频里的几个问题,做下总结和深入
BT005 - ABAP ALV 原理解读(面试必备)_哔哩哔哩_bilibili
1、ALV的有几种方式 ( 我艹,好像孔乙己 “回”字几种写法 )
a) 调用 BAPI ”REUSE_ALV_GRID_DISPLAY_LVC“ (面向过程 已经过时的技术,但是实用 )
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = i_callback_program
i_grid_title = title
i_grid_settings = i_grid_settings
i_callback_pf_status_set = 'SET_PF_STATUS'
is_layout_lvc = is_layout_lvc
it_fieldcat_lvc = it_fieldcat
it_events = it_events
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = itab[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
b)调用SALV (后续新开发用 )
*&---------------------------------------------------------------------*
*& Report ZSALV_TEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSALV_TEST.
DATA:gt_itab TYPE TABLE OF ZJHDTTL,
gr_table TYPE REF TO cl_salv_table.
data: gr_functions type ref to cl_salv_functions_list.
SELECT * FROM ZJHDTTL INTO CORRESPONDING FIELDS OF TABLE gt_itab.
*全屏模式
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = gt_itab
).
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( ABAP_TRUE ).
CALL METHOD gr_table->display.
SAP标准的demo案例 SE80 SALV_OM_OBJECTS SAP ABAP SALV DEMO_abap salv set_key_SAP小菜鸡的博客-CSDN博客
c) OO ALV (还没有用过,没有必须的场景 )
========================================================================
Function ALV:function一般有grid和list两种,grid以网格显示,list以表格显示,两者的工具栏有一点不同。
OO ALV:使用面向对象的方法创建的ALV,需要创建一个容器,然后将cl_gui_alv_grid分配给这个容器,它存在很多的事件,这些实现需要注册这些事件处理方法,但是ALV的布局参数不用依靠Object来设置,和function一样,还是依靠函数。
OO SALV:也是面向对象创建ALV的一种方式,但不提供编辑的功能,(当你需要编辑的时候,可以通过SALV适配器调用CL_GUI_ALV_GRID修改为编辑模式),一般情况下SALV是不需要创建容器的,但是ALV的布局也是需要通过Object老控制。
总结:需求非常简单,仅仅是作为报表使用的话可以使用function alv,需要触发动作但是ALV布局的设置不高的时候,而且不需要编辑的时候可以使用SALV,其他情况下尽量使用ALV,个人更偏爱使用OO ALV。(注:当download excel有特殊需求的时候,可以优先考虑SALV,在往期文章download excel中有介绍)。
ALV (一)、funtion ALV,OO ALV,SALV_ooalv和alv的区别-CSDN博客