系列文章目录
前言
一、基本语法
1、语句
ABAP源程序由注释和ABAP语句组成。ABAP中的每个语句都以关键字开头,以句点结尾,不区分大小写。
程序中的第一个非注释行以单词REPORT开头,报告将始终是创建的任何可执行程序的第一行,该语句后面是创建的程序的名称
REPORT ZYT36_DAY1_36130
WRITE'泪水打湿猪脚饭'.
2、冒号表示法
若每个语句的开头都是相同的,则连续语句可以连在一起,用逗号连接起来
WRITE'泪水打湿猪脚饭'.
WRITE'发誓要挣一百万'.
"可以用以下冒号表示法表示
WRITE:'泪水打湿猪脚饭','发誓要挣一百万'.
3、注释
*这是第一种注释方法
WRITE '漂亮宝贝'. "这是第二种注释方法
4、抑制空白
NO-ZERO命令跟在输出语句的后面,抑制包含空格的数字字段的所有前导零,这样输出更容易让用户读
DATA: var_c2 TYPE c length 40,
n_number TYPE n length 10,
var_string2 TYPE string.
var_c2 = 'text'.
n_number = 6.
var_string2 = 'string var'.
WRITE: var_c2,n_number no-ZERO,var_string2.
5、空白行
SKIP命令----插入空行
SKIP 1."插入一行空行
SKIP 2."插入两行空行
6、插入线
ULINE命令----插入线
WRITE: / '下面是一条线'.
ULINE.
7、消息
MESSAGE命令显示由程序开始处REPORT语句指定的消息ID定义的消息。消息编号从000到999,与每个数字相关联的消息文本最多为80个字符,调用消息号时,将显示对应的文本。
以下为关于MESSAGE命令的字符:
信息 | 后果 |
---|---|
E(Error) | 消息出现,应用程序在当前点暂停,用于阻止用户做不应该做的事 |
W(Warning) | 用户需按enter键才能继续应用程序,后台模式下,消息将记录在作业日志 |
I(Information) | 将打开一个弹出窗口,其中包含消息文本,需按enter键继续 |
A(Abend) | 此消息类将取消用户当前正在使用的事务 |
S(Sucess) | 提示用户信息正确 |
X(Abort) | 中止程序并生成ABAP短转储 |
二、数据类型
ABAP中编程时,需要使用各种变量来存储各种信息,变量只是保留值的存储位置,也就是说,当我们创建一个变量,我们就在内存中保留一些空间,基于变量的数据类型,操作系统分配内存并决定在保留内存中可以存储的内容。
1、基本数据类型
注:日期和时间类型的变量可以直接进行加减
类型 | 关键词 |
---|---|
文本域 | c |
整数型integer | i 定义时不需要规定长度,赋值时不需要加引号 |
浮点型 | f 定义时不需要规定长度,赋值时不需要加引号 |
日期 | d 长度:8个字符,可存储8位数字,eg:20241009 |
时间 | t 长度:6个字符 |
文本字符串 | string |
打包数量 | p |
三、变量
变量类似于一个盒子,变量是在程序运行中值会变化的一种值,用户可在abap语句的帮助下更改变量的内容。abap中每个变量都有一个特定的类型,它决定了变量内存的大小和布局,可以存储在该存储器内的值的范围,以及可以应用于该变量的一组操作。
必须先声明所有变量,然后才能使用
1、静态变量
静态变量在子程序,函数模块和静态方法中声明,“PARAMETERS"语句可用于声明链接到选择屏幕上的输入字段的基本数据对象。
命名变量时:不能用特殊字符(“t”,”,")等来命名变量;变量的名称必须传达变量的含义
*Parameter 和用户有交互,静态变量
PARAMETERS: p_name TYPE c length 10,
p_ageb TYPE i,
p_adress TYPE c length 40.
2、参考变量
创建一个引用类型和创建一个变量一样,关键字也是DATA
DATA <ref> TYPE REF TO <type>
REF TO 附加声明一个引用变量ref;
REF TO 后的规范指定应用变量的静态类型;
*创建引用类型
DATA ref_1 TYPE REF TO i."第一步定义引用变量
*想用引用的时候,必须实际创建一个空间给他,让他放值,和变量不一样,变量是只要创建了,os就会给他分配一个内存空间,让他赋值
CREATE DATA ref_1.
*赋值
ref_1->* = 1.
*输出
WRITE: / '应用变量',ref_1->*.
3、系统变量
ABAP系统变量可以从所有abap程序访问;
这些字段中的值指示系统在任何给定时间点的给定状态;
可以在SAP中的SYST表中找到系统变量的完整列表
可以用"SYST-"或“SY-"访问SYST结构的各个字段。
*系统变量
*WRITE: / 'SY-SUBRC', SY-SUBRC,"系统执行指令之后,是否成功,0-成功,其他-有问题
/ 'SY-DATUM', SY-DATUM,"系统当前日期
/ 'SY-UZEIT', SY-UZEIT,"系统当前时间
/ 'SY-TABIX', SY-TABIX,"表的第几行
/ 'SY-INDEX', SY-INDEX,"当前循环的次数
/ 'SY-LANGU', SY-LANGU,"系统登录语言
/ 'SY-MANDT', SY-MANDT,"当前集团代码
/ 'SY-TCODE', SY-TCODE,"当前事务码
/ 'SY-UNAME', SY-UNAME."当前登陆账号
*定义变量
DATA var_c TYPE c length 40.
var_c = 'this is a text'.
WRITE / var_c.
*定义一个string变量
DATA var_string TYPE string.
var_string = 'this is a string var'.
WRITE / var_string.
* 冒号表示法表示定义多个变量
DATA: var_c2 TYPE c length 40,
n_number TYPE n length 10,
var_string2 TYPE string.
var_c2 = 'text'.
n_number = 6.
var_string2 = 'string var'.
WRITE: var_c2,n_number no-ZERO,var_string2.
*复杂的数据类型structure
TYPES:BEGIN OF ty_student,
number TYPE n LENGTH 4,
name TYPE c LENGTH 20,
age TYPE i,
END OF ty_student.
* 利用复杂数据类型定义变量
DATA ls_stu TYPE ty_student.
* 赋值
ls_stu-number = '0001'.
ls_stu-name = '张三'.
ls_stu-age = '18'.
*输出
WRITE / :'学号:',ls_stu-number,
'年龄:',ls_stu-age,
'名字:',ls_stu-name.
* 定义变量并设置默认值
DATA lv_school TYPE c length 10 VALUE 'W36130'.
WRITE: / '默认值测试',lv_school.
*LIKE,利用其他变量定义新变量
DATA lv_class like lv_school VALUE'C001'.
WRITE: / 'calss的默认值',lv_class.
四、常量和字面量
常量:通常通过为程序的存储区域中存储的值分配一个常量来声明该常量;分配给常量的值在程序执行期间不可更改,这些固定值可被视为文字,有两种类型的文字:数字和字符。
字符文字:用单引号括起来的ABAP程序的源代码中的字母数字字符序列
文本字段文字:用引号括起来的字符文字,具有预定义的ABAP类型c
字符串文字:用引号括起来的文字,具有ABAP类型string
注:string文字中,尾随空白将被忽略,但在c类型中,将被考虑在内
*定义常量,注意:1、定义的时候要有初始值2、值不可以再通过赋值修改
CONSTANTS lc_c TYPE C LENGTH 40 VALUE 'V03'.
*lc_c = 'v04'."会报错
WRITE: / '常量lc_c的值:', lc_c.