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的方式略不同
TYPE lvc_t_fcat WITH HEADER LINE,
                            gs_layout TYPE lvc_s_layo.
->refresh_table_display










