OO ALV使用方法
alv的用法很多,在report中绝大多数abaper选择使用call function的方法,设置layout 结构和填充fieldcat以及其他结构内表,将这些结构和内表传给该函数就可以实现ALV了,但是在dialog程序中call function的方法就行不通了。那要怎样在dialog屏幕上实现alv呢?第一步:在屏幕上创建一个容器元素,名字:container;第二步:在主程序里
alv的用法很多,在report中绝大多数abaper选择使用call function的方法,设置layout 结构和填充fieldcat以及其他结构内表,将这些结构和内表传给该函数就可以实现ALV了,但是在dialog程序中call function的方法就行不通了。那要怎样在dialog屏幕上实现alv呢?
第一步:在屏幕上创建一个容器元素,名字:container;
第二步:在主程序里面定义一个容器对象和一个ALV控件对象,例如:
DATA: CTN_001 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
KJ_ALV TYPE REF TO CL_GUI_ALV_GRID
第三步:要想将主程序里内表的数据显示在屏幕上创建的容器中,需要:
创建一个和屏幕中创建的容器同名容器对象:
CREATE OBJECT CTN_001
EXPORTING
container_name = 'CONTAINER'.
再创建一个指定容器对象的alv控件对象:
CREATE OBJECT KJ_ALV
EXPORTING
i_parent = CTN_001.
最后调用alv控件对象的set_table_for_first_display 方法:
CALL METHOD kj_alv->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_return[]
it_fieldcatalog = gt_fieldcat[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
至于那些传进去的参数这里就不废话了,只是这里的gs_layout 和gt_fieldcat的定义和call function的方式略不同
gt_fieldcat TYPE lvc_t_fcat WITH HEADER LINE,
gs_layout TYPE lvc_s_layo.
第三步中,我们会把这些小步骤统一写到PBO下某个module里面,当然,在创建容器对象的时候会判断该容器对象是否已经存在,如果存在,意味着alv对象也已经存在了,alv不是初次现实,此时,为了刷新屏幕上alv,我们会调用alv控件对象的refresh_table_display方法:kj_alv->refresh_table_display
更多推荐
所有评论(0)