ALV 报表的主要过程

业务:查询采购订单是否完成的表:EKKO, EKPO,EKET.

ALV相关概念

ALV是系统的一种网格的显示方式,这种方式带有汇总\排序\筛选等功能,ALV格式的数据是以单元格为单位显示,

ALV即能显示简单表单(SIMPLE LIST)又能显示有序表单(SEQUENTIAL LIST):

ALV实现方式:
ALV 可以通过两种方式实现:Two Approaches
Conventional (Using SAP Standard Function Modules).
Object Oriented (Using SAP Standard Classes and Methods).
以下我们要讲的为Function Modules方式

ALV实现流程:
第一步:定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS: SLIS.
第二步:定义数据类型或者内表的实体对象.
第三步:定义一些需要用到的变量.
第四步:定义自己的选择屏幕.
第五步:start-of-selection部分.
1)用一个子函数完成对ALV表单标题区域的赋值(i_list_comments).
2)用一个子函数完成自己所需要数据的抓取.
3)用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置.
4)用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?是用哪个功能键触发等等.
5)用一个子函数FORM DISPLAY_DATA来显示上面我们已经分别封装好的数据,需要调用两个常用的FUNCTION MODULE..

下面根据一个普通的例子(purchase order)来具体解释各步骤:

*第一步:
TABLES:EKKO,EKPO,T001,LFA1.
TYPE-POOLS SLIS."有时可以还要包含
*第二步:
TYPES : BEGIN OF TYP_PURORDER,                "TYPE OF Purchase Order Information
          AEDAT     TYPE EKKO-AEDAT,          "Date on Which Record Was Created
          EBELN     TYPE EKKO-EBELN,          "Purchasing Document Number
          MATNR     TYPE EKPO-MATNR,          "Material Number
          TXZ01     TYPE EKPO-TXZ01,
          MENGE     TYPE EKPO-MENGE,          "Purchase Order Quantity
          MEINS     TYPE EKPO-MEINS,          "Purchase Order Unit of Measure
          NETPR     TYPE EKPO-NETPR,          "Net Price in Purchasing Document
          WAERS     TYPE EKKO-WAERS,          "Currency Key
          NETWR     TYPE EKPO-NETWR,          "Net Order Value in PO Currency
         END OF TYP_PURORDER.

DATA: ST_PURORDER TYPE TYP_PURORDER,                     "MAIN STRUCTER
      TD_PURORDER TYPE STANDARD TABLE OF TYP_PURORDER.   "MAIN TABLE

*第三步:
*----------------------------------------------------------------------*
*       COUNTER DEF
*----------------------------------------------------------------------*
DATA: W_BUKRS    TYPE T001-BUKRS,  "用于公司代码的检索
      W_LIFNR    TYPE LFA1-LIFNR,               "用于购买者代码的检索
      W_DATUM    TYPE EKKO-AEDAT,
      W_DATE(10) TYPE C.
*----------------------------------------------------------------------*
*       FOR ALV DEF
*----------------------------------------------------------------------*
DATA: ST_LAYO     TYPE SLIS_LAYOUT_ALV,              "ALV LAYOUT STR
      TD_EVENT    TYPE SLIS_T_EVENT,                 "ALV EVENT TAB
      ST_EVENT    TYPE SLIS_ALV_EVENT,               "ALV EVENT STR
      TD_COMMENT  TYPE SLIS_T_LISTHEADER,            "SET HEADER TAB
      ST_COMMENT  LIKE LINE OF TD_COMMENT,           "SET HEADER STR
      ST_FIELDCAT TYPE SLIS_FIELDCAT_ALV,            "ALV FIELDCAT STR
      TD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,          "ALV FIELDCAT TAB
      ST_SORT     TYPE SLIS_SORTINFO_ALV,            "ALV SORT STR
      TD_SORT     TYPE SLIS_T_SORTINFO_ALV.          "ALV SORT TAB
*1)SLIS_LAYOUT_ALV是一个类型,它用来定义ALV报表的整体属性例如:
   *ST_LAYO-ZEBRA = 'X'.“显示成斑马纹样式
   *ST_LAYO-DETAIL_POPUP = 'X'.“是否弹出详细信息窗口
   *ST_LAYO-F2CODE = '&ETA'. “设置触发弹出详细信息窗口的功能码,这里是双击
   *ST_LAYO-COLWIDTH_OPTIMIZE = 'X'. “优化列宽选项是否设置
   *ST_LAYO-DETAIL_INITIAL_LINES  = 'X'.
   *ST_LAYO -no_vline = 'X'.“这个用来设置列间隔线
   *ST_LAYO -detail_titlebar = '详细内容'. “设置弹出窗口的标题栏
*2)SLIS_T_EVENT是一个取得事件的内表,通过函数REUSE_ALV_EVENTS_GET取得多个事件(包括操作页眉页脚的事件).
*3)SLIS_T_LISTHEADER操作页眉页脚的内表.
*4)SLIS_T_FIELDCAT_ALV操作ALV报表列的内表.
*5)SLIS_T_SORTINFO_ALV对显示数据排序的内表。

*第四步:
*----------------------------------------------------------------------*
*       PARAMTER DEF(SELECT-OPTION etc.)
*----------------------------------------------------------------------*
*view or posting selection screen
PARAMETERS:     P_BUKRS TYPE T001-BUKRS DEFAULT TEXT-001 OBLIGATORY. "Company Code
PARAMETERS:     P_LIFNR TYPE LFA1-LIFNR OBLIGATORY. "Vendor Code
SELECT-OPTIONS: S_DAT   FOR  W_DATUM.    "PO Date
*----------------------------------------------------------------------*
*       AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
*Check Airline Carrier ID
  PERFORM PRM_CHECK_SCDATA.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值