* 要在ABAP/4程序中呼叫ALV Function Module来产生输出画面, *有几个叙述是必需做的:
* ?数据变量(Data Area)宣告
* ?宣告Internal Table来存放自数据文件的数据
* ?自数据文件选取数据存放至Internal Table
* ?建立显示字段清单(Field Catalogs)
* ?建立事件清单(Event Catalogs)
* ?呼叫ALV Function Module
* ?撰写User按键处理事件
*数据变量(Data Area)宣告
* 在SAP上预设有一个数据群组(Data Pool) SLIS, *已预先定义好所有ALV所需之数据型态, 程序如下:
program alvtest .
TYPE-POOLS: SLIS.
DATA:
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FIELDCAT_LN LIKE LINE OF FIELDCAT,
SORTCAT TYPE SLIS_T_SORTINFO_ALV,
SORTCAT_LN LIKE LINE OF SORTCAT,
EVENTCAT TYPE SLIS_T_EVENT,
EVENTCAT_LN LIKE LINE OF EVENTCAT.
DATA: COL_POS TYPE I.
* 宣告Internal Table
*宣告屏幕显示所需的Internal Table及包含的字段, 如报表要列出 VBAP数据, *Internal Table 定义如下:
DATA: BEGIN OF IVBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
MATNR LIKE VBAP-MATNR,
MATKL LIKE VBAP-MATKL,
END OF IVBAP.
* 自数据文件选取数据存放至Internal Table
* 选取单号字段不为空白的所有数据记录插入至Internal Table IVBAP:
SELECT VBELN POSNR MATNR MATKL KWMENG VRKME
INTO CORRESPONDING FIELDS OF TABLE IVBAP
FROM VBAP
WHERE VBELN NE SPACE.
* 建立显示字段清单(Field Catalogs)
* 例如显示的字段有 VBELN (Sales Doc.), *MATNR(Material)及MAKTL(Material Group)三个字段, 必须依序设定其属性:
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'VBELN'.
FIELDCAT_LN-KEY = 'X'.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = 'X'.
APPEND FIELDCAT_LN TO FIELDCAT.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'MATNR'.
FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
APPEND FIELDCAT_LN TO FIELDCAT.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'MATKL'.
FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = 'X'.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
APPEND FIELDCAT_LN TO FIELDCAT.
1990年1月15日 2007年1月14日 2007年1月15日 2007年1月16日 2007年1月17日 2007年1月18日 2007年1月19日 2007年1月20日 2007年1月22日 2007年1月23日 2007年1月24日 2007年1月25日 2007年1月26日 2007年1月27日 2007年1月29日 2007年1月30日 2007年1月31日 2007年2月1日 2007年2月2日 2007年2月3日 2007年3月13日 2007年5月15日 2007年5月16日 2007年6月2日