码迷,mamicode.com
首页 > 其他好文 > 详细

ALV报表(一)

时间:2017-12-23 14:11:05      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:function   代码   列表操作   功能   repo   变量   type   end   bubuko   

目录

    2.1、实现步骤

    2.2、代码示例

一、ALV简介

The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。

 

二、程序实现

2.1、实现步骤

①定义ALV所需要用到的类型池:TYPE-POOLS:SLIS.

②定义ALV所要显示的数据对应的内表数据类型及内表数据对象

③定义一些显示ALV时所需要使用的变量

④定义选择屏幕

⑤声明各个选择屏幕事件块

2.2、代码示例

*Report  ZRFI001_XFL_TEST
REPORT ZRFI001_XFL_TEST .

*定义ALV所需要用到的类型池
TYPE-POOLS SLIS.

*****************************TABLES
TABLES:MARD.

*****************************Data Definitions
*定义ALV所要显示的数据对应的内表数据类型及内表数据对象
DATA: BEGIN OF  GT_MARD OCCURS 0,          "一般物料資料
             MATNR LIKE MARD-MATNR ,       "物料號碼
             WERKS LIKE MARD-WERKS,        "工厂
             LABST LIKE MARD-LABST,        "未限制使用的已估價庫存
END OF GT_MARD.

*定义一些显示ALV时所需要使用的变量
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
"定义FIELDCAT

*****************************Selection Screen
*定义选择屏幕
PARAMETERS: P_MATNR LIKE MARD-MATNR OBLIGATORY.

*****************************Main Process
*声明各个选择屏幕事件块
START-OF-SELECTION.

     PERFORM GET_DATA.
     PERFORM ALV_DISPLAY.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
FORM GET_DATA .

     SELECT MATNR WERKS LABST INTO TABLE GT_MARD
                    FROM MARD
                    WHERE MATNR = P_MATNR.

ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  ALV_SHOW
*&---------------------------------------------------------------------*
FORM ALV_SHOW .

*將ITAB欄位轉換為ALV欄位(欄位說明作為欄位標題)
  CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘
    EXPORTING
      I_PROGRAM_NAME         = SY-CPROG
      I_INTERNAL_TABNAME     = ‘GT_MARD‘
      I_CLIENT_NEVER_DISPLAY = ‘X‘
      I_INCLNAME             = SY-CPROG
    CHANGING
      CT_FIELDCAT            = GT_FIELDCAT
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_ERROR          = 2
      OTHERS                 = 3.
* 显示ALV的函数
    CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
      IT_FIELDCAT              = GT_FIELDCAT[]
      I_SAVE                   = ‘A‘             "保存全局,特定變式
    TABLES
      T_OUTTAB            =  GT_MARD
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

ENDFORM.                    " ALV_SHOW

 运行效果

 技术分享图片

 三、自定义FIELDCAT参数控制ALV输出

*Report  ZRFI001_XFL_TEST
REPORT ZRFI001_XFL_TEST .

*定义ALV所需要用到的类型池
TYPE-POOLS SLIS.

*****************************TABLES
TABLES:MARD.

*****************************Data Definitions
*定义ALV所要显示的数据对应的内表数据类型及内表数据对象
DATA: BEGIN OF  GT_MARD OCCURS 0,           "一般物料資料
             MATNR LIKE MARD-MATNR ,        "物料號碼
             WERKS LIKE MARD-WERKS,         "工厂
             LABST LIKE MARD-LABST,         "未限制使用的已估價庫存
END OF GT_MARD.

*定义一些显示ALV时所需要使用的变量
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV  WITH HEADER LINE.
"定义FIELDCAT

*****************************Selection Screen
*定义选择屏幕
PARAMETERS: P_MATNR LIKE MARD-MATNR OBLIGATORY.

*****************************Main Process
*声明各个选择屏幕事件块
START-OF-SELECTION.

     PERFORM GET_DATA.
     PERFORM CATA_LOG.
     PERFORM ALV_SHOW.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
FORM GET_DATA .

     SELECT MATNR WERKS LABST INTO TABLE GT_MARD
                    FROM MARD
                    WHERE MATNR = P_MATNR.

ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  CATA_LOG
*&---------------------------------------------------------------------*
FORM CATA_LOG .

   DEFINE FILL_FDCAT.
        GT_FIELDCAT-FIELDNAME = &1.
        GT_FIELDCAT-SELTEXT_L = &2.
        APPEND GT_FIELDCAT.
   END-OF-DEFINITION.

   FILL_FDCAT ‘MATNR‘  ‘物料编号‘.
   FILL_FDCAT ‘WERKS‘  ‘工厂‘.
   FILL_FDCAT ‘LABST‘  ‘库存‘.

ENDFORM.                    " CATA_LOG

*&---------------------------------------------------------------------*
*&      Form  ALV_SHOW
*&---------------------------------------------------------------------*
FORM ALV_SHOW.
* 显示ALV的函数
    CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
      IT_FIELDCAT              = GT_FIELDCAT[]
      I_SAVE                   = ‘A‘             "保存全局,特定變式
    TABLES
      T_OUTTAB            =  GT_MARD
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

ENDFORM.                    " ALV_SHOW

 运行效果

技术分享图片

 

ALV报表(一)

标签:function   代码   列表操作   功能   repo   变量   type   end   bubuko   

原文地址:http://www.cnblogs.com/StephenAmell/p/8084927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!