SAP报表开发

  • 格式:doc
  • 大小:97.00 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.

*&---------------------------------------------------------------------*