ABAP报表简单示例
来源:互联网 发布:php商城分销系统源码 编辑:程序博客网 时间:2024/04/30 14:12
ABAP 报表开发实例。
在这里示范一个实例,讲讲abap开发报表的简单过程。程序的正确与 否我们不与讨论,我们只关心这个程序的编写过程。
首先,在任何程序的开始阶段,我们都要确定将会用到的表。我们所讲的这个程序 是查询采购订单是否完成的。将会用到以下三个表:EKKO,EKPO,EKET。 程序的开头为: REPORT TEST.
TABLES: EKKO,EKET,EKPO.
现在我们已经定义了所要用到的表,接下来的工作就是定义内表和数据。内表是 用来存储我们从上述三个表中查询到的数据。相关定义如下: DATA: BEGIN OF ITAB OCCURS 0, EBELN LIKE EKKO-EBELN, MENGE LIKE EKPO-MENGE, WEMNG LIKE EKET-WEMNG, END OF ITAB.
现在我们已经定义完了内表ITAB。接着我们该定义数据了。数据就像C语言里的 常量。其相关定义如下:
DATA: MATNR LIKE EKPO-MATNR, MENGE LIKE EKPO-MENGE, WEMNG LIKE EKET-WEMNG, EBELN LIKE EKPO-EBELN.
到这里我们已经把程序里要用到的数据和内表都定义好了。接着我们要做的工作 就是选择屏幕。所谓选择屏幕是指程序运行时,你要从屏幕上输入的内容。比如 说一个程序运行时,你输入一个物料号,就可以得到该物料的当前的库存数,那 你就要编写一个屏幕以供查询者输入查询的条件。其相关定义如下: SELECT-OPTIONS: EBELN1 FOR EKKO-EBELN, BEDAT FOR EKKO-BEDAT,
EKGRP FOR EKKO-EKGRP. PARAMETERS: R1 RADIOBUTTON GROUP RADI, R2 RADIOBUTTON GROUP RADI, R3 RADIOBUTTON GROUP RADI.
现在我们已经完成了程序的前期准备,接着就开始真正的到表里查询我们需要的 相关数据了。其代码如下: SELECT K~EBELN
INTO CORRESPONDING FIELDS OF TABLE ITAB FROM EKKO AS K WHERE K~EBELN IN EBELN1 AND K~BEDAT IN BEDAT AND K~EKGRP IN EKGRP. LOOP AT ITAB.
SELECT SUM( MENGE ) INTO ITAB-MENGE FROM EKPO
WHERE EBELN EQ ITAB-EBELN. MODIFY ITAB. ENDLOOP. LOOP AT ITAB.
SELECT SUM( WEMNG ) INTO ITAB-WEMNG FROM EKET
WHERE EBELN EQ ITAB-EBELN. MODIFY ITAB. ENDLOOP.
然后我们需要定义输出界面。把我们查询到的数据输出时要有一个输出的格式, 这样大家看起来才会方便。代码如下: TOP-OF-PAGE .
WRITE: /'采购凭证号',22 '物料号码', 47 '采购订单数量',77 '收到货物数量', 95 '完成标志'. ULINE AT /1(130). END-OF-PAGE .
START-OF-SELECTION.
最后就是把我们查到的数据输出了。其实我举的这个程序到这一步时穿插了 一些查询,所以比较长。代码如下: IF R1 = 'X'. LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN) FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. IF ITAB-MENGE > ITAB-WEMNG.
WRITE: /2 EBELN,23 MATNR,41 MENGE, 71 WEMNG,97 '否'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDIF.
ENDSELECT. ENDLOOP.
ELSEIF R2 = 'X'. LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN)
FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. IF ITAB-MENGE <= ITAB-WEMNG.
WRITE: /2 EBELN,23 MATNR,41 MENGE, 71 WEMNG,97 '是'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDIF.
ENDSELECT. ENDLOOP. ELSE. LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN) FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. IF ITAB-MENGE > ITAB-WEMNG.
WRITE: /2 EBELN, 23 MATNR,41 MENGE, 71 WEMNG,97 '否'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDIF.
ENDSELECT. ENDLOOP. ENDIF.
LOOP AT ITAB.
IF R3 = 'X' AND ITAB-MENGE <= ITAB-WEMNG.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN) FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. WRITE: /2 EBELN,23 MATNR,41 MENGE, 71 WEMNG,97 '是'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDSELECT. ENDIF. ENDLOOP.
这时程序就结束了。其实举这个例子是想让大家知道ABAP开发报表的一个常规 流程,并不是讲什么技巧之类的,希望能对初学者有点用
在这里示范一个实例,讲讲abap开发报表的简单过程。程序的正确与 否我们不与讨论,我们只关心这个程序的编写过程。
首先,在任何程序的开始阶段,我们都要确定将会用到的表。我们所讲的这个程序 是查询采购订单是否完成的。将会用到以下三个表:EKKO,EKPO,EKET。 程序的开头为: REPORT TEST.
TABLES: EKKO,EKET,EKPO.
现在我们已经定义了所要用到的表,接下来的工作就是定义内表和数据。内表是 用来存储我们从上述三个表中查询到的数据。相关定义如下: DATA: BEGIN OF ITAB OCCURS 0, EBELN LIKE EKKO-EBELN, MENGE LIKE EKPO-MENGE, WEMNG LIKE EKET-WEMNG, END OF ITAB.
现在我们已经定义完了内表ITAB。接着我们该定义数据了。数据就像C语言里的 常量。其相关定义如下:
DATA: MATNR LIKE EKPO-MATNR, MENGE LIKE EKPO-MENGE, WEMNG LIKE EKET-WEMNG, EBELN LIKE EKPO-EBELN.
到这里我们已经把程序里要用到的数据和内表都定义好了。接着我们要做的工作 就是选择屏幕。所谓选择屏幕是指程序运行时,你要从屏幕上输入的内容。比如 说一个程序运行时,你输入一个物料号,就可以得到该物料的当前的库存数,那 你就要编写一个屏幕以供查询者输入查询的条件。其相关定义如下: SELECT-OPTIONS: EBELN1 FOR EKKO-EBELN, BEDAT FOR EKKO-BEDAT,
EKGRP FOR EKKO-EKGRP. PARAMETERS: R1 RADIOBUTTON GROUP RADI, R2 RADIOBUTTON GROUP RADI, R3 RADIOBUTTON GROUP RADI.
现在我们已经完成了程序的前期准备,接着就开始真正的到表里查询我们需要的 相关数据了。其代码如下: SELECT K~EBELN
INTO CORRESPONDING FIELDS OF TABLE ITAB FROM EKKO AS K WHERE K~EBELN IN EBELN1 AND K~BEDAT IN BEDAT AND K~EKGRP IN EKGRP. LOOP AT ITAB.
SELECT SUM( MENGE ) INTO ITAB-MENGE FROM EKPO
WHERE EBELN EQ ITAB-EBELN. MODIFY ITAB. ENDLOOP. LOOP AT ITAB.
SELECT SUM( WEMNG ) INTO ITAB-WEMNG FROM EKET
WHERE EBELN EQ ITAB-EBELN. MODIFY ITAB. ENDLOOP.
然后我们需要定义输出界面。把我们查询到的数据输出时要有一个输出的格式, 这样大家看起来才会方便。代码如下: TOP-OF-PAGE .
WRITE: /'采购凭证号',22 '物料号码', 47 '采购订单数量',77 '收到货物数量', 95 '完成标志'. ULINE AT /1(130). END-OF-PAGE .
START-OF-SELECTION.
最后就是把我们查到的数据输出了。其实我举的这个程序到这一步时穿插了 一些查询,所以比较长。代码如下: IF R1 = 'X'. LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN) FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. IF ITAB-MENGE > ITAB-WEMNG.
WRITE: /2 EBELN,23 MATNR,41 MENGE, 71 WEMNG,97 '否'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDIF.
ENDSELECT. ENDLOOP.
ELSEIF R2 = 'X'. LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN)
FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. IF ITAB-MENGE <= ITAB-WEMNG.
WRITE: /2 EBELN,23 MATNR,41 MENGE, 71 WEMNG,97 '是'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDIF.
ENDSELECT. ENDLOOP. ELSE. LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN) FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. IF ITAB-MENGE > ITAB-WEMNG.
WRITE: /2 EBELN, 23 MATNR,41 MENGE, 71 WEMNG,97 '否'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDIF.
ENDSELECT. ENDLOOP. ENDIF.
LOOP AT ITAB.
IF R3 = 'X' AND ITAB-MENGE <= ITAB-WEMNG.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN INTO (MATNR, MENGE, WEMNG, EBELN) FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN WHERE S~EBELN = ITAB-EBELN. WRITE: /2 EBELN,23 MATNR,41 MENGE, 71 WEMNG,97 '是'. ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG. ENDSELECT. ENDIF. ENDLOOP.
这时程序就结束了。其实举这个例子是想让大家知道ABAP开发报表的一个常规 流程,并不是讲什么技巧之类的,希望能对初学者有点用
- ABAP报表简单示例
- 简单SAP ABAP发送邮件示例代码
- 一个简单的 Reporting Services 报表示例
- VS2008下水晶报表之简单示例
- VS2008下水晶报表之简单示例
- ASP.NET报表简单使用示例
- ABAP报表的事件
- 扫描 ABAP 报表源
- ABAP:ALV List报表
- ABAP报表的事件
- ABAP-报表的事件
- ABAP报表的事件
- ABAP-报表的事件
- Abap 报表介绍
- Abap 报表介绍
- abap ALV 报表入门
- ABAP报表事件说明
- C#如何制作水晶报表简单易懂示例
- [leetcode刷题系列]Search in Rotated Sorted Array II
- 国外的机器视觉课程及资料
- Android activity 笔记
- UVA 11600 Masud Rana
- Java基础之005-继承
- ABAP报表简单示例
- poj 1947 树形DP
- 如何创建dynamic web project项目
- struts2中action接收参数的方法
- CCLabelTTF和CCLabelAtlas的显示区别
- 黑马程序员-C#中的常用变量及赋值表达式
- AC Me解题报告
- STM32 驱动12864液晶显示汉字、图片、画点、横线、竖线、斜线
- 局部图像特征描述概述