ABAP--如何在选择屏幕上输出ALV GRID报表

有些客户希望某些功能性的报表在输出报表内容时,能同时看到选择屏幕上的输入参数,并
希望能反复地输入选择条件进行查询。实现这个功能的办法就是在选择屏幕上输出报表内容。

  一般情况下,大家都是直接从SAP的系统中找到相应的例程,然后进行加工修改。不过SAP系
统的例程是面向对象的开发,不大符合我们这一群老鸟的习惯。本人仔细研究了一下这个例程,
将其更改我们常用的编程模式。代码见附件,具体说明如下:

  选择屏幕也是一个屏幕,与一般创建的屏幕不同的是:它没有PBO、PAI事件,报表程序中的
INITIALIZATION就是选择屏幕的PBO事件,其它事件是选择屏幕的PAI事件。具体事件与程序功能
代码如下:

INITIALIZATION.
 

PERFORMsub_init_cond.       "初始化选择屏幕字段
  PERFORM sub_create_fieldcat.
  PERFORM sub_init_layout.
  PERFORMsub_create_object.   "创建选择屏幕上的对象

START-OF-SELECTION.
  PERFORMsub_process_cond.   "对选择条件进行处理
  PERFORM sub_query_t006a.    "查询相关数据

END-OF-SELECTION.
  PERFORMsub_refresh_table.  "刷新内表里的数据

  我们在INITIALIZATION事件下创建ALV GRID输出需要的对象。如果输出内表 GT_RESULT[]为
空,则跳过这段代码;如果输出内表 GT_RESULT[]内容不为空工,则创建ALV GRID需要的对象,
并在选择屏幕上的BLOCK下面输出相应的内容。

  系统MEMORY ID sy-cprog 是用来存储结果内表数据的一个全局存储区。如果感觉不方便,也
可以定义一个新的内表来保存结果内表的数据。只要在IMPORT MEMORY ID时将它的内容赋给结果
内表,在EXPORT MEMORY ID时将结果内表的数据赋给这个新内表即可。

  本程序还有一个重点就是如何在选择屏幕上创建ALV所需要的对象,代码如下:
 
  CREATE OBJECT go_dock
   EXPORTING
     repid = sy-cprog
     dynnr = sy-dynnr
     ratio = 85
     side  =cl_gui_docking_container=>dock_at_bottom
     name  = 'DOCK_CONT'.

  然后再创建ALV所需要的CONTAINER对象。有了ALV所需要的对象,ALV报表基本上就没什么难
点了。


你可能感兴趣的:(ABAP--如何在选择屏幕上输出ALV GRID报表)