03ABAP语法,A1-按输入销售订单输出销售信息

图3-A1 销售订单数据输出

需求分析:

1、具体需求

本《按输入销售订单输出销售信息》有如下需求:

  1. 程序的初始界面可以输入销售订单信息,订单号、产品编号、数量、价格、折扣率;
  2. 输入后执行将输出输入的销售订单信息;
  3. 根据输入的数量、价格和折扣,得到销售金额:数量*价格*(1-折扣);
  4. 将销售数量和销售金额的单位进行转换,数量以斤为输出,销售金额以美元输出。
2、开发分析

要达成本实践目标,需要综合ABAP的数据输出实现方式:

  1. 输入信息包括订单号、数量、价格等是用户输入的界面字段,可以通过选择字段PARAMETERS进行定义;
  2. 销售金额、转换后的数量、转换后的金额,将会根据输入的信息变动,如此可以在程序中定义为变量,以存储及输出要处理的数据;
  3. 通过对数据的运算,包括加减乘除,计算出销售金额、转换后的数量等;
  4. 通过Write语句可以将数据输出到屏幕,而在输出时需要考虑每列数据输出起始位置及所占字符长度;

实践步骤:

本实践通过程序编辑器(SE38)即可完成,编写的代码将有如下几部分组成,按开发人员风格不同,其组成部分并非强制一致。

No 部分 说明
1 程序声明 声明本程序执行后是否包含标准标题,数据输出宽度和每页的行数量为多少
2 对象定义 通过定义变量或常量等,以在程序执行过程中计算和存储临时值
3 数据处理 根据需求对数据进行处理
4 文本元素 通过文本元素定义程序输出时的文字内容以及初始界面中的字段
5 输出数据 将计算结果数据按要求输出
1、程序声明

程序声明部分代码如下:

REPORT  zu0301_num_cal.

本语句是对程序的定义,表明此程序代码不是FUNCTION MODULE(功能函数),不是CLASS(类),而是可以执行的可以输出数据的此程序;这是对程序最基本的声明,且必须存在的部分。

2、对象定义

对象定义部分代码如下:

*****对象定义
DATA: oamount  TYPE f,                      "销售金额
      qualityc TYPE p DECIMALS 1,           "公斤转换为斤后的数量
      pricec   TYPE p DECIMALS 1,           "转换为斤后的价格
      oamountc TYPE f,                      "转换为美元后的销售金额
      strng    TYPE string.                 "输出信息

CONSTANTS crate TYPE p DECIMALS 4            "假设汇率为固定值,此处定义为常量
               VALUE '0.1512'.

PARAMETERS: orderno(6)  TYPE n,             "定义类型为N(数字字符)的订单编号变量
            product(10) TYPE c,             "定义类型为C(字符)的产品编号变量
            quality     TYPE i DEFAULT 10,  "定义类型为I(整数)默认值为10的数量变量
            price(4)    TYPE p DECIMALS 2,  "定义类型为P(定点)小数位数2的数量变量
            discount(4) TYPE p DECIMALS 1.  "定义类型为P(定点)小数位数1的折扣变量

如上代码,首先通过DATA定义在程序中要存储和输出数据的变量及其类型,包含:oamount(销售金额,浮点小数)、qualityc(斤数量,小数位数1的定点小数)、pricec(斤价格,小数位数1的定点小数)、oamountc(美元销售金额,浮点小数)。随后通过CONSTANTS定义1个常量crate(汇率人民币与美元汇率),此常量类型是4位小数的定点小数,并将汇率赋值0.1512,通过此常量定义后表示在程序执行过程中不需要改变。
然后,按需求通过PARAMETER定义初始界面中要输入的订单编号、产品编号、数量、价格、折扣率,并根据需要设置了其类型。

3、数据处理

通过字符处理、计算、得到各变量的值以进行下一步的程序处理:

*----------------------------------------------------------------------*
*****数值计算
oamount = quality * price
           * ( 1 - discount / 100 ).          "计算销售金额
qualityc = quality * 2.                       "1公斤 = 2斤
pricec = price / 2.
oamountc = oamount * crate .                  "指定汇率为1人民币=0.1512美元

*****输入信息显示
WRITE: /5 TEXT-001,                           "WRITE输出数据,/5 换行从第5位开始输出
       /10 '订单号:', 20 orderno,            "订单号值从第20位开始输出
       /10 '产  品:', 20 product,
       /10 '数  量:', 20(10) quality, '公斤',
       /10 '价  格:', 20(10) price,'元/公斤',
       /10 '折扣率:', 20(10) discount  && '%'  .  "%显示效果 

注意运算符包括+、-、*、/还有括号等左右需要留空,不留空的话其意义不同,如不留空时,+在字符中为截取字符,-表示一个结构包含的字段,/在WRITE中为换行。

4、文本元素

对如上部分代码输入并保存后,通过菜单“转到”-->“文本元素”,设置文本符号(图3-1)、标题(图3-2),以为后续输出数据部分使用。

图3- 1 程序的文本符号
图3- 2 程序的选择文本
5、输出数据

根据要求,通过Write进行输出。

*****输出信息显示
SKIP 1.                                      "空一行输出
WRITE: /5 TEXT-002.
strng = oamount && ','.                      "通过&&合并金额(浮点型)和,
CONCATENATE TEXT-003 strng INTO strng.       "通过CONCATENATE合并多个字符到STRNG
WRITE: /10 strng.

strng = TEXT-005 && qualityc && '斤,'
        && TEXT-006 && pricec &&  '元/斤,'.
WRITE: /10 TEXT-004,
       /10 strng.

strng = TEXT-008 && oamountc && '美元。'.
WRITE: /10 TEXT-007,
       /10 strng.

如上通过WRITE语句进行数据的输出,其中strng根据输出的需求,进行了多次的赋值。
将如上4部分代码按顺序组合在一起,则是此开发实践的完整实现代码,输入后可通过程序美化器自动编排,由此完成程序的开发。

本实践小结:

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

推荐阅读更多精彩内容