今天来总结一下ABAP中一些常用的控件,除去之前写过的一些,还有ALV_GRID, ALV_TREE, TABLE_TREE等。
现在用的控件很多都是用类写的,而它们的使用,说白一点,就和用JAVA中的类没什么区别,一个诀窍就是记住通用的写法,然后再根据不同控件变化。
最好,每个控件都总结一个通用模版,这可以大大节约实施中的时间。老白的博客上有不少这方面的例子,我这里就不再写了。同时大家也可以通过 SE38->Environment->Reuse Library/Examples去看一下SAP提供的例子,很多是可以复用的,把结构和参数看熟了就行。
接下来,说说这些控件的一些特点及一般的使用流程。
刚刚写ABAP的朋友一定会经常使用到'REUSE_ALV_GRID_DISPLAY'这个function,一个很实用的function,不需要画 屏幕,不需要定义事件,一个简化而美观的输出工具。但是这个function还是有很多有意思的功能的,比如分类统计,给单行或单列上色等等。
要使用ALV_GRID的所有功能,就需要在Screen上,画上Custom Control,然后再在程序中进行相关的定义。基本上就是OO的那套东西
*-- Global data definitions for ALV
*--- ALV Grid instance reference
DATA gr_alvgrid TYPE REF TO cl_gui_alv_grid .
*--- Name of the custom control added on the screen
DATA gc_custom_control_name TYPE scrfname VALUE 'CC_ALV'.
*--- Custom container instance reference
DATA gr_ccontainer TYPE REF TO cl_gui_custom_container .
*--- Field catalog table
DATA gt_fieldcat TYPE lvc_t_fcat .
*--- Layout structure
DATA gs_layout TYPE lvc_s_layo .
*--- ALV Grid instance reference
DATA gr_alvgrid TYPE REF TO cl_gui_alv_grid .
*--- Name of the custom control added on the screen
DATA gc_custom_control_name TYPE scrfname VALUE 'CC_ALV'.
*--- Custom container instance reference
DATA gr_ccontainer TYPE REF TO cl_gui_custom_container .
*--- Field catalog table
DATA gt_fieldcat TYPE lvc_t_fcat .
*--- Layout structure
DATA gs_layout TYPE lvc_s_layo .
控件的初始化会在PBO中进行,而PAI中就是做一些命令相关的操作。
如果有事件触发的话,写得时候会麻烦一点,要定一个专门处理事件的类,还要在PBO的时候注册给所需要的控件,设置好触发条件,方可使用。实际应用中,还 要经过很多调试,看看效果是不是能达到要求。而且ALV_GRID作为编辑功能的话,还是有一些缺陷的,比如选择功能,所以实际使用时,适当地选择。
ALV_TREE的写法和ALV相近,但是是以TREE的格式显示,用得场合不多。
TABLE_TREE我在实际项目没有用过,自己也是作为知识储备放着,大体写法和ALV_GRID差不多,只是多了个NODE的概念及一些相关的参数和 函数。参看一些资料,再写几个程序,我想大家体会会深一点。