`
chenzan2010
  • 浏览: 17810 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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报表开发实例.pdf

    ABAP报表开发实例.pdf

    ABAP QUERY报表开发

    ABAP QUERY 开发报表步骤及相关截图实例。

    非影印版-SAP ABAP开发技术详解(实例篇)第2版-孙东文

    《SAP ABAP开发技术详解(实例篇)(第二版) [1] 》除了对对SAP ABAP开发所需的常用技术(SAP报表、批量导入、对话程序、函数)做了详尽的介绍,包括基本报表、交互式报表、复杂报表、ALV(SAP List Viewer)报表、...

    BSP报表开发实例(HTML)

    BSP报表开发实例(HTML) 图文并茂。。。。傻瓜式操作。。。、

    sapabap开发从入门到精通

    《SAP ABAP开发从入门到精通》以应用实例的形式,讲解了SAPABAP开发的相关知识点,详细介绍了SAPABAP开发者必须掌握的包与变更传输系统(CTS)、数据类型、数据库、模块化程序、内表、调试、ABAP数据字典、锁对象、...

    ABAP开发ALV中自定义按钮实现

    ALV是ABAP报表开发中经常用到的表单工具,用户经常需要将ALV中的数据进行打印或Excel导出,这样就需要对ALV的工具条进行扩展,添加自定义按钮,本文详细介绍了,如何在AVL中实现自定义按钮的方法,有具体的实例步骤...

    《SAP ABAP开发技术详解(实例篇)(第二版)mobi 版

    《SAP ABAP开发技术详解(实例篇)(第二版) [1] 》除了对对SAP ABAP开发所需的常用技术(SAP报表、批量导入、对话程序、函数)做了详尽的介绍,包括基本报表、交互式报表、复杂报表、ALV(SAP List Viewer)报表、...

    SAP ABAP开发从入门到精通

    《SAP ABAP开发从入门到精通》以应用实例的形式,讲解了SAP ABAP开发的相关知识点,详细介绍了SAP ABAP开发者必须掌握的包与变更传输系统(CTS)、数据类型、数据库、模块化程序、内表、调试、ABAP数据字典、锁对象...

    SAP ABAP Query 开发步骤

    建立SAP ABAP QUERY 的详细步骤。QUERY是SAP最常用的快捷开发报表的工具。

    ABAP开发环境的安装

    C),菜单Environment→examples→ABAP examples中可有ABAP的实例,是学习研究的好东西; D),学习ABAP/4编程推荐《SAP ABAP/4 开发宝典中文版》约1.32M。 SAP NetWeaver 2004s SAP NetWeaver 7.0 ABAP/4 新...

    ABAP(Advanced Business Application Programming->高级业务应用编程语言)入门到精通

    了解一下ABAP的发展历史是必要的,ABAP产生的最初的目的是用以生成简单打印报表程序,我们知道SAP最初是为解决财务实时数据处理问题的,ABAP(Advanced Business Application Programming-&gt;高级业务应用编程语言)现在...

    从实例学SAP ABAP编程

    在 ABAP 开发中,最主要的工作: (1) 报表的开发,主要使用到数据库读取、ALV、LIST 等技术; (2) 单据的打印,主要使用到数据库读取、SmartForms、Form等技术 (3) 数据的上载,主要使用到数据库存取、CATT、...

    SAP开发者详细指导书

    总共十七章 五、报表实例 六、报表开发概述 未完待续

    SAP屠夫作品汇总

    Field status and Coding block subscreen 字段状态组实例 250 特别总帐标识 255 预付款处理 258 目的 258 流程 258 预付款结帐 258 发票冻结(Invoice Block) 259 Dunning AR催款配置 262 浅谈表结法和帐结法 269 1....

Global site tag (gtag.js) - Google Analytics