SAP报表开发
- 格式:doc
- 大小:97.00 KB
- 文档页数:14
精品
welcome SAP报表开发概述
报表开发是指无屏幕的纯报表开发。
一、报表事件
对于纯报表程序,SAP 预定义了一系列的报表事件,包括:
INITIALZATION 初始化事件。常用来填充选择屏幕的默认值。
AT SELECTION-SCREEN OUTPUT 选择屏幕的PBO 事件。显示选择屏幕之前触发。
AT SELECTION-SCREEN 选择屏幕的PAI 事件。用户在选择屏幕中执行某些功能后触发。通常用来接收用户输入,并给用户出错提示。
START-OF-SELECTION 选择开始事件。选择屏幕处理结束后触发(即点击“Execute”按钮之后)。
END-OF-SELECTION 选择结束时间。通常在该事件中输出报表。
AT-LINE-SELECTION 交互式报表中,用户选择某行时触发。
AT-USER-COMMAND 交互式报表中,用户选择某个功能时触发。
TOP-OF-PAGE 页眉控制,每个新页面开始时触发。通常输出页眉、报表标题行。
END-OF-PAGE 页脚控制,在当前页结束前触发。
二、事件处理顺序
下面是事件处理次序: 精品
welcome
一个事件的ABAP 代码,开始于事件关键字,结束于下一个事件关键字。
三、报表的通常格式
通常,一个报表程序包含如下几部分:
1、 程序说明。包括:程序名称、作者、日期等信息。
2、 关键字Report。
3、 数据定义。内表、参数都在这里定义。
4、 Include 部分。指定包含文件。
5、 定义选择屏幕。利用SELECT-OPTIONS 和PARAMETERS 声明多个选择参数,系统会自动产生一个屏幕号为1000 的选择屏幕。
6、 INITIALIZATION 事件。完成对选择屏幕参数的默认值填充。
7、 AT SELECTION-SCREEN 事件。对用户的输入参数作校验。
8、 START-OF-SELECTION 事件。在这里完成数据处理。 精品
welcome 9、 END-OF-SELECTION 事件。在这里定义报表的输出。
10、 如果不是采用ALV 的方式输出报表,而是采用WRITE 语句输出,则还有TOP-OF-PAGE
和END-OF-PAGE 事件。
四、关于选择屏幕
定义选择屏幕的常用关键字:
1、 PARAMETERS….
2、 SELECT-OPTIONS。用来定义单值、多值、范围参数。
3、 SELECTION-SCREEN。用来格式化选择屏幕。
定义选择屏幕时,我们会用到SELECT-OPTIONS 这个关键字,该参数能够接受单值、多值、范围,实际上,该参数是一个内表,其结构如下:
DATA: Begin of seltab OCCURS 0,
SIGN(1), OPTION(2), LOW LIKE f, HIGH LIKE f,
END OF seltab.
Seltab-SIGN:可选值为I 和E。I 表示包含(Include),E 表示排除(Exclude)。
Seltab-OPTION:可选值为EQ、NE、GT、LE、LT、BT、NB。EQ 表示等于,NE 表示不等于,GT 表示大于,LE 表示小于或等于,LT 表示小于,BT 表示在..之间,NB 表示不在…之间。
SELECT-OPTIONS 定义的选择参数能够直接用在OPEN SQL 语句中,例如:Where f IN
seltab。
大家想想,一条这样的WHERE 语句,如果用T-SQL 需要多少个AND 和OR?这可是个好东西呀。为了利用OPEN-SQL 的这个特性,有时候,我们会自己定义这样的内表,自己填充数据,然后在OPEN-SQL 语句中使用,即使我们不需要定义选择屏幕。 精品
welcome 我们常用的屏幕格式化语句有:
1、 在选择屏幕上产生空行:SELECTION-SCREEN SKIP.
2、 定义屏幕块。
SELECTION-SCREEN BEGIN OF BLOCK blk0 WITH FRAME TITLE text-010.
SELECTION-SCREEN END OF BLOCK blk0.
如果大家对这个屏幕格式还是不满意,那么,请利用屏幕制作器,尽情地修改屏幕1000 吧。
五、选择屏幕上的文本
定义完选择屏幕后,测试运行程序。此时,我们看到的只是各个参数的名称,通常我们要用文本来替换裸露显示的参数名。
点击菜单“转到->文本元素->选择文本”,屏幕如下:
在Text 栏中输入我们希望显示的选择文本。如果参数定义来源于数据字典元素或数据元素,选中“Dictionary ref.”,则Text 栏自动显示数据字典中定义的文本。
下面是“Text symbols”屏幕,它在程序中通过text-010 调用该文本符号(例如:Write
text-010)。 精品
welcome 如果开发多语言程序,这些text symbols 就必不可少了。
报表实例
财务部在实际业务处理时,有时候需要将会计凭证导出到Excel,而SAP 提供的行项目显示在格式方面不能满足要求,在这一章中,我会将这一简单需求作为例子说明报表的写法。
第一步:运用SE38 或SE80 创建一个报表,报表名称Z_FI_16(其实以Y 或Z 开头的名称都可以啦)。
第二步:写代码,本程序代码如下:
=============================================================
REPORT z_fi_16 .
*&---------------------------------------------------------------------*
* 声明全局变量
*&---------------------------------------------------------------------*
DATA: BEGIN OF itab OCCURS 0, 精品
welcome nd LIKE bkpf-gjahr, qj LIKE bkpf-monat, pzbh LIKE bkpf-belnr,
pzlx LIKE bkpf-blart, jzrq LIKE bkpf-budat, cz LIKE bkpf-xblnr,
hb LIKE bkpf-waers, hl LIKE bkpf-kursf, ttwb LIKE bkpf-bktxt,
yhm LIKE bkpf-usnam, hxm LIKE bseg-buzei, jzdm LIKE bseg-bschl,
zhlx LIKE bseg-koart, tbzz LIKE bseg-umskz, jfdf LIKE bseg-shkzg,
je LIKE bseg-wrbtr, bwbje LIKE bseg-dmbtr, zzkm LIKE bseg-hkont,
kmmc(50) TYPE c, kh LIKE bseg-kunnr, khmc(40) TYPE c,
gys LIKE bseg-lifnr, gysmc(40) TYPE c, cbzx LIKE bseg-kostl,
cbzxmc(20) TYPE c, xmwb LIKE bseg-sgtxt,
END OF itab.
DATA: BEGIN OF ipzbh OCCURS 0,
sign(1) TYPE c,
option(2) TYPE c,
low(10) TYPE c,
high(10) TYPE c,
END OF ipzbh.
DATA: i_count TYPE i,
c_tmp(50) TYPE c,
i_tmp TYPE i.
TABLES: bkpf, bseg.
INCLUDE zincform.
*&---------------------------------------------------------------------* 精品
welcome * 选择屏幕
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk0 WITH FRAME TITLE text-010.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS p_year FOR bkpf-gjahr.
SELECT-OPTIONS p_period FOR bkpf-monat.
SELECT-OPTIONS p_pzbh FOR bkpf-belnr.
SELECT-OPTIONS p_pzlx FOR bkpf-blart.
SELECT-OPTIONS p_jzrq FOR bkpf-budat.
SELECT-OPTIONS p_hb FOR bkpf-waers.
SELECT-OPTIONS p_yhm FOR bkpf-usnam.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK blk0.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-020.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS p_jzdm FOR bseg-bschl.
SELECT-OPTIONS p_zhlx FOR bseg-koart.
SELECT-OPTIONS p_zzkm FOR bseg-hkont.
SELECT-OPTIONS p_kh FOR bseg-kunnr.
SELECT-OPTIONS p_gys FOR bseg-lifnr.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK blk1.