05模块化编程,A4-使用Include,输出订单列表数据2018-02-25

图5-A4 使用Include输出订单列表

需求分析:

1、具体需求

本《使用Include输出订单列表》有如下需求:

  1. 从订单表中获得订单信息并按图示输出;
  2. 订单列表按订单编号升序输出,同时输出订单编号时不保留前导0。

其中列表输出效果如图。

图5- 12 列表输出效果

2、开发分析

要达成本实践目标,分析有如下:

  1. 此实践也可以通过一般的方式在一个程序中实现页眉和数据的输出;
  2. 在本实践中,将页眉输出通过Include(包含)程序进行定义,如此此页眉可在不同的程序中重复使用。
图5- 13 程序开发思路

实践步骤:

本实践将会需要建立2个程序,一个是要在其他程序中包含的Include程序,另一个是输出列表数据的程序;2个程序都可以通过程序编辑器(SE38)即可完成,编写的代码将有如下几部分组成,按开发人员风格不同,其组成部分并非强制一致。

1、建立Include

在程序编辑器的初始界面,输入程序名称(本实例为ZU0504_PAGE_HEADER)后,点击创建,将会出现设定程序属性的界面,从界面中输入标题,并选择类型为“I INCLUDE程序”程序,如图,完成后点击保存。

图5- 14 包含程序的类型设置

然后将进入源代码编辑界面,详细代码如下:

*&---------------------------------------------------------------------*
*&  INCLUDE  ZU0504_PAGE_HEADER
*&---------------------------------------------------------------------*
TOP-OF-PAGE.
  WRITE:/5 '订单列表', 60 '页码:', (3) sy-pagno.
  WRITE:/5(70) sy-uline.
  WRITE:/5(4) '序号', (8) '订单编号',
          (8) '订单日期', (6) '客户',
          (20) '客户名称', (8) '城市', (8) '所在地区'.
  WRITE:/5(70) sy-uline.

如上代码相当于把主程序中页眉输出部分的内容,放到此Include中;在Include的源代码中也可以使用主程序中的变量。

完成后激活,则建立了一个子程序。

2、程序声明

新建一程序zu0504_order_list_include以完成本实践需求,程序声明部分的代码如下:

REPORT zu0504_order_list_include NO STANDARD PAGE HEADING
      LINE-SIZE 100 LINE-COUNT 80.

通过如上代码,设定了此程序输出不使用标准页眉,页面宽度100个字符,页面高度为80行。

3、对象定义

对象定义部分的代码如下:

*****对象定义
DATA:BEGIN OF order_list_stru,
       orderid      TYPE ztorders_h-orderid,
       orderdate    TYPE ztorders_h-orderdate,
       customerid   TYPE ztcustomer-customerid,
       customername TYPE ztcustomer-customername,
       city         TYPE ztcustomer-city,
       region       TYPE ztcustomer-region,
     END OF order_list_stru.

通过如上代码定义了一个名称为order_list_stru的结构,以在后续获取和输出数据部分中,存储和输出记录的值。

4、输出页眉

输出页眉部分的代码如下:

*&----------------------------------------------------------------------*
*& 输出页眉
*&----------------------------------------------------------------------*
INCLUDE zu0504_page_header.

通过INCLUDE关键字,将INCLUDE程序zu0504_page_header包含到此程序中,由此实现页眉的输出。

5、获得和输出数据

获得和输出数据部分的代码如下:

*&----------------------------------------------------------------------*
*& START-OF-SELECTION
*&----------------------------------------------------------------------*
START-OF-SELECTION.
*****获取和输出订单数据
  SELECT oh~orderid oh~orderdate ct~customerid ct~customername ct~city ct~region
         INTO order_list_stru
         FROM ( ztorders_h AS oh
                INNER JOIN ztcustomer AS ct ON ct~customerid = oh~customerid )
         ORDER BY orderid.
    SHIFT order_list_stru-orderid LEFT DELETING LEADING '0'.

    WRITE:/5(4) sy-dbcnt, (8) order_list_stru-orderid,
            (8) order_list_stru-orderdate, (6) order_list_stru-customerid,
            (20) order_list_stru-customername, (8) order_list_stru-city, 
            (8) order_list_stru-region.
  ENDSELECT.

如上代码,通过SELECT关键字将数据从ztorders_h和ztcustomer中逐条获取数据并存储到结构order_list_stru中,然后通过SHIFT关键字对订单编号的前导0去除后,按需求通过WRITE输出。

将如上2~5部分的代码顺序合并后,则得到本需求本程序的实现代码。

本实践小结:包含程序

包含(Include)程序也是一种ABAP程序,是类型为I的不可执行的程序,作为代码复用技术在SAP的应用也是非常广泛。主要应用于:1)将大型程序分为不同的部分进行维护,2)多个程序中相同的代码段;由此实现代码的协同开发和提高代码的质量和效率。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容