SAP报表开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAP报表开发概述
报表开发是指无屏幕的纯报表开发。
一、报表事件
对于纯报表程序,SAP 预定义了一系列的报表事件,包括:
二、事件处理顺序
下面是事件处理次序:
一个事件的ABAP 代码,开始于事件关键字,结束于下一个事件关键字。
三、报表的通常格式
通常,一个报表程序包含如下几部分:
1、程序说明。包括:程序名称、作者、日期等信息。
2、关键字Report。
3、数据定义。内表、参数都在这里定义。
4、Include 部分。指定包含文件。
5、定义选择屏幕。利用SELECT-OPTIONS 和PARAMETERS 声明多个选择参数,系统会自动产生一个屏幕号为1000 的选择屏幕。
6、INITIALIZATION 事件。完成对选择屏幕参数的默认值填充。
7、AT SELECTION-SCREEN 事件。对用户的输入参数作校验。
8、START-OF-SELECTION 事件。在这里完成数据处理。
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 语句中使用,即使我们不需要定义选择屏幕。
我们常用的屏幕格式化语句有:
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)。
如果开发多语言程序,这些text symbols 就必不可少了。
报表实例
财务部在实际业务处理时,有时候需要将会计凭证导出到Excel,而SAP 提供的行项目显示在格式方面不能满足要求,在这一章中,我会将这一简单需求作为例子说明报表的写法。
第一步:运用SE38 或SE80 创建一个报表,报表名称Z_FI_16(其实以Y 或Z 开头的名称都可以啦)。
第二步:写代码,本程序代码如下:
======================================================= ======
REPORT z_fi_16 .
*&---------------------------------------------------------------------*
* 声明全局变量
*&---------------------------------------------------------------------*
DATA: BEGIN OF itab OCCURS 0,
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.
*&---------------------------------------------------------------------*