OO ALV使用方法

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值