赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 9173|回复: 61

[P3J3]ABAP之ALV实现

  [复制链接]
发表于 2010-11-22 10:52:38 | 显示全部楼层 |阅读模式
ALV是ABAP开发报表时最常用的一个输出形式,它的优点在于实现简单,操作方便,便于阅读等多种优点。其实现方法下面我们来看看吧。我们主要学习一下ALV实现部分,前期的数据取得等部分就省略不计了。
1,前期定义必要的变量
TYPE-POOLS: SLIS.
DATA: IT_FIELDCAT    TYPE TABLE OF SLIS_FIELDCAT_ALV.

2,ALV的主处理部分(前期是数据都已取得放在内部表中)
FORM ALV_LIST_PROC.

*输出字段项目的作成
PERFORM CREATE_ALV_FIELDCATALOG.
*ALV输出项目的编辑
PERFORM EDIT_FIELDCAT.
*ALV表示用的函数调用
PERFORM DISPLAY_ALV_GRID.

ENDFORM.
下面的第3到6步,我们来看看各自的PERFORM的实现。

3,CREATE_ALV_FIELDCATALOG的实现
调用REUSE_ALV_FIELDCATALOG_MERGE函数。
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
        I_STRUCTURE_NAME  = 'ZSD_ZZR2004_S001'
    CHANGING
        CT_FIELDCAT              = IT_FIELDCAT
    EXCEPTIONS
        INCONSISTENT_INTERFACE       = 1
        PROGRAM_ERROR                      = 2
        OTHERS                                      = 3.
其中'ZSD_ZZR2004_S001'是在SE11定义的数据结构,具体为输出的项目。然后通过IT_FIELDCAT取得。

4,EDIT_FIELDCAT的实现
如果输出的标题等要跟前面的结构定义的不一样的话,在这个函数里可以定义的。
FORM EDIT_FIELDCAT.
DATA   L_WA_FIELDCAT  TYPE SLIS_FIELDCAT_ALV.
LOOP AT IT_FIELDCAT INTO L_WA_FIELDCAT.
     CASE L_WA_FIELDCAT-FIELDNAME.
        WHEN 'NETWR'.
           L_WA_FIELDCAT-SELTEXT_S = L_WA_FIELDCAT-SELTEXT_M =
           L_WA_FIELDCAT-SELTEXT_L = L_WA_FIELDCAT-REPTEXT_DDIC = '我被换了.
        WHEN 。。。
           。。。

    MODIFY IT_FIELDCAT FROM L_WA_FIELDCAT.
ENDLOOP.

5,DISPLAY_ALV_GRID的实现
DATA: L_WA_LAYOUT  TYPE SLIS_LAYOUT_ALV,
          L_WA_DISVARIANT  TYPE DISVARIANT.
*列的宽度调整
L_WA_LAYOUT-COLWIDTH_OPTIMIZE = C_ON.

*ALV输出
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
          I_CALLBACK_PROGRAM              = SY-REPID
          I_CALLBACK_PF_STATUS_SET    = 'SET_PF_STATUS'
          I_CALLBACK_USER_COMMAND   = 'EXE_USER_COMMAND'
          I_STRUCTURE_NAME                  = 'ZSD_ZZR2004_S001'
          IS_LAYOUT                                 = L_WA_LAYOUT
          IT_FIELDCAT                              = IT_FIELDCAT
          I_SAVE                                       = C_ON
          IS_VARIANT                                = L_WA_DISVARIANT
TABLES
          T_OUTTAB                                   = IT_LIST
EXCEPTIONS
           PROGRAM_ERROR                      = 1
           OTHERS                                     = 2.

ENDFORM.                    " DISPLAY_ALV_GRID
其中SET_PF_STATUS表示设定GUI_STATUS,EXE_USER_COMMAND表示在ALV发生的事件。

6,SET_PF_STATUS的实现
FORM SET_PF_STATUS  USING VALUE(V_EXTAB) TYPE SLIS_T_EXTAB.

  SET PF-STATUS 'STS_ALV'.

ENDFORM.                    " SET_PF_STATUS

7,EXE_USER_COMMAND的实现
游客,如果您要查看本帖隐藏内容请回复


关于ALV的操作,请参看http://www.91sap.com/thread-44-1-1.html等等
关于ALV更多属性,请下载文档ALV文档http://www.91sap.com/thread-378-1-1.html

最近访客

  • tbb1177
    2024-01-17
  • wx_75910
    2022-10-21
  • austin
    2022-03-23
  • 15173179
    2021-10-08
  • zxl
    2021-07-04
  • chenc880
    2021-07-03




上一篇:[P3J2]ABAP之系统变量
下一篇:[P3J4]ABAP之SMARTFORM实现
本楼点评(0) 收起
发表于 2010-12-14 14:07:23 | 显示全部楼层
这种ALV展示没见过,CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
什么作用啊
本楼点评(0) 收起
发表于 2011-4-9 22:49:26 | 显示全部楼层
凡走过必留下痕迹
本楼点评(0) 收起
发表于 2011-5-1 22:01:51 | 显示全部楼层
还看不懂!
本楼点评(0) 收起
发表于 2011-6-3 14:29:40 | 显示全部楼层
学习一下USER_COMMAND的用法
本楼点评(0) 收起
发表于 2011-6-7 19:43:53 | 显示全部楼层
good good study
本楼点评(0) 收起
发表于 2011-6-7 21:19:39 | 显示全部楼层
继续支持!!!
本楼点评(0) 收起
发表于 2011-6-13 15:49:50 | 显示全部楼层
看看。。。。
本楼点评(0) 收起
匿名  发表于 2011-7-1 10:00:17
看看。。。。。。
本楼点评(0) 收起
发表于 2011-7-10 23:09:37 | 显示全部楼层
有点深奥的哦!
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-4-26 10:21 , Processed in 0.722659 second(s), 62 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

快速回复 返回顶部 返回列表