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

03ABAP语法,A1-按输入销售订单输出销售信息_第1张图片
图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),以为后续输出数据部分使用。

03ABAP语法,A1-按输入销售订单输出销售信息_第2张图片
图3- 1 程序的文本符号
03ABAP语法,A1-按输入销售订单输出销售信息_第3张图片
图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、数据类型
03ABAP语法,A1-按输入销售订单输出销售信息_第4张图片
2、对象定义
03ABAP语法,A1-按输入销售订单输出销售信息_第5张图片
3、注释
03ABAP语法,A1-按输入销售订单输出销售信息_第6张图片

你可能感兴趣的:(03ABAP语法,A1-按输入销售订单输出销售信息)