ABAP 数据类型&基本语法&命名规则笔记(详细)

刚刚开始学习ABAP开发的小白,看着书整理的笔记,求大佬带飞
思维导图

数据类型

DATA语句

  • DATA语句用于定义数据变量,变量名包括“_”,最长可以定义30位。

  • TYPE type

    • 定义变量的数据类型
  • LIKE num

    • 定义一个变量 gv_num1 相同类型的变量时使用该语句。
    • num可以是任何一种数据类型变量(字段、参数、结构体、系统变量等)
  • VALUE int

    • 所有数据类型都存在初始值。
    • DATA语句中可以使用VALUE选项设置初始值int。基本数据类型性自带的初始值
  • LENGTH n

    • LENGTH n 用于指定字段长度,但只适用于C、N、P、X类型
    • 如果使用VALUE IS INITIAL语句,则变量的初始值为锁参照的数据类型的初始值(此语句可以省略,结果相同)但是定义固定值时一定要使用VALUE语句定义其初始值
  • DECIMALS n

    • DECIMALS n 用于指定1~14位小数,只适用于数据类型P

ABAP基本数据类型

  • 固定长度的ABAP基本数据类型

    • ABAP提供八种固定长度的基本数据类型
    • 数据类型D、F、I已经定义了技术属性,因此不用在程序中定义即可直接使用
    • 使用数据类型C、N、X时需要指定其长度
    • 类型P不指定DECIMALS就无法识别小数位
  • 数字运算符

    • 基本运算法则

      • 在使用类型F时需要调用FLTP_CHAR_CONVERSION函数把类型转换成字符型后进行输出,调用函数时指定参数DECIM,则通过四舍五入计算出相应长度的小数位
    • 数字运算用函数

    • FLoating-Point函数

  • 数字型

    • 整形I

      • 值的范围是-2147483648~2147473647
      • 值支持证书类型
      • 非证书类型的数据会进行四舍五入
      • 用于计算行数、条目数、索引值等
    • 浮点型F

      • 值的范围是1X10-307~1X10308
      • 用于定义指数,因此需要调用“FLTP_CHAR_CONVERSION"函数把其他类型转换为其他数据类型后才可以输出。
      • 类型F转化成二进制后才可以输出
      • 若要显示高进度的数据,则应该使用类型P
      • 数值较大或者不需要进行四舍五入时可以使用类型F(因为在取近似值时使用,因此使用的时候需要注意)
    • 小数型P

      • 允许有小数位
      • 可用的长度为1~16,小数位最大长度是14位
      • 程序属性设置中应该选择Fixed Point arithmetic,若不选择,类型P就没有意义,与整数类型相同
      • 常用于精度比较高的数据
  • 字符串类型

    • 文本字段C

      • 定义C类型数据时需要指定其字段长度。如果没有指定字段长度或数据类型时,默认为1位。指定类型C的长度是可以在变量后使用“()”也可以用关键字LENGTH指定。
      • 关键字LENGTH只适用于指定类型C、N、X、P的长度
    • 数字文本型N

      • 以字符串的形式显示数字类型
    • 日期型D

      • sy-datum是存储当天日期的系统变量
      • 日期型变量进行计算时可以计算出天数
    • 时间型T

      • 系统变量sy-uzeit中包含现在的时刻
      • 时间型变量以秒为单位进行运算
  • Hexadecimal类型

    • 十六进制类型是指将1B由2个码位显示的类型
    • 十六进制是为了满足二进制编码形式无法变现的数字而出现的类型,是低级PC Assembly表示方法。
    • C语言等很多语言都在使用此类型。在ABAP程序中十六进制主要用于印刷和图片处理
  • 不定长ABAP基本数据类型

    • String字符串

      • 常用的字符串命令

        • Find

          • 当ABAP字母中存在字母B是,返回0
        • REPLACE

          • 替换
        • TRANSLATE

          • 大小写字母转换
        • SHIFT

          • 依次向左移动
        • CONDENSE

          • 去掉空格并向左对齐,经常与NO-GAPS一起使用去掉空格
        • OVERLAY

          • 填充Character的空格,但不覆盖原来字幕
        • CONCATENATE

          • 连接两个字符串
        • SPLIT

          • 分割,如ABCAP》以字符C为中间分为AB和AP
    • 在ABAP程序中参照次数据类型定义补丁长度的变量,最有代表性的类型时String型与基本数据类型C不同之处在于当程序执行是产生动态内存

局部数据类型

  • 声明类型

    • 在程序中声明的数据类型视为局部数据类型
    • 利用关键字TYPES声明
  • 结构体类型

    • 嵌套结构体类型

ABAP数据字典数据类型

  • 概述

    • ABAP数据字典(表、结构体、数据元素)是在所有程序中都可以用来声明变量的因素
    • 数据字典中的数据类型为全局数据类型。
    • 可以通过T-CODE:SE11创建、修改、查询数据字典

赋值

  • 给变量赋值

    • 在ABAP中定义变量或者处理实际数据时会给变量赋值。

    • 定义变量时可以通过VALUE语句赋初始值,实际处理数据中使用MOVE或者WRITE to 语句给变量赋值

    • MOVE TO 语句与a=b中的= equal语句相同

    • 赋值字符串字段值时可以使用MOVE-CORRESPONDING语句。这是TO的字段名可以不相同

    • MOVE-VORRESPONDING语句还常用于不同结构体之间赋值

      • 特点是找到名字相同的字段名进行赋值

变量与常量

概述

  • 变量是用于在程序的分配的存储区域中存储值的命名数据对象。
  • 您必须先声明所有变量,然后才能使用它们。
  • 用户可以在ABAP语句的帮助下更改变量的内容。
  • ABAP中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局;
  • 可以存储在该存储器内的值的范围; 以及可以应用于该变量的一组操作。

系统变量

  • ABAP系统变量可从所有ABAP程序访问。
  • 这些字段实际上由运行时环境填充。
  • 这些字段中的值指示系统在任何给定时间点的状态。
  • 您可以在SAP中的SYST表中找到系统变量的完整列表。
  • 可以使用“SYST-"或“SY-"访问SYST结构的各个字段。

参考变量

  • REF TO附加声明一个引用变量ref。
  • REF TO之后的规范指定了引用变量的静态类型。
  • 静态类型限制< ref>的对象集合。 可以参考。
  • 引用变量的动态类型是它当前引用的数据类型或类。
  • 静态类型总是更加通用或与动态类型相同。
  • TYPE添加用于创建绑定引用类型和起始值,并且只能在VALUE添加后指定IS INITIAL。

常量

  • 分配给常数的值在程序执行期间不能更改。
  • 程序中经常使用的值可以定义为常量
  • 当修改常量时只需要修改一处即可,这样就可以接上时间
  • 为数字起有意义的名字作为常量使用可以提高程序的可读性
  • 子主题 5
  • 子主题 6

静态变量

  • 在子程序块中(FORM,FUNCTION)中要持续保存局部变量值时定义为静态变量

  • 在FORM语句块内用STATICS定义的局部变量的值可以保持到程序结束

  • LV_VAL在每次调用PERFORM语句时

    • 不会初始化,一直保持原有值
  • 没有使用STATIC语句而是使用DATA语句定义了变量lv_val

    • 因此每次调用PERFORM语句时,局部变量LV_VAL都会被初始化,丢失原有值

TABLES

  • 使用TABLES语句定义ABAP数据字典中的数据表、视图、就结构体,会生成与ABAP数据字典具有相同结构的数据对象

  • 这种表工作区,在程序中与结构体的用法相同

ABAP命名规则

概述

  • 为什么要有命名规则

    • 可以提高代码可读性
    • 减少变量间的冲突
    • 提高结构统一性
  • SAP规定创建ABAP数据字典的程序及数据对象后命名时,要以Z或Y开头且不能使用如INSERT/APPEND等关键字

  • 每个客户自己制定统一规范并遵守即可

  • ABAP程序允许定义的变量名最大长度为30位

  • 包含“_“符号

  • 变量名的前两位表示范围及类型,区分符号“_”和最后单词将省略变量的具体功能

  • 如果需要戏份命名规则,可以吧前缀长度设为三位

    • 前缀一

      • 范围
    • 前缀二

      • 数据类型
    • 前缀三

      • 数据类型
    • 如GVF_CARRID变量中前缀GVF代表的意思是
      G全局,V字段,F浮点型

检查命名规则(Code Inspector)

  • 检查命名规则是检查ABAP程序是否符合命名规则的工具,执行T-CODE:SCI的效果

全局变量

  • 全局变量是指在一个程序或函数内可以访问的数据类型。在程序内部的所有领域里都可以参照并修改,因此没有局限性。在程序激活状态下全局变量一直占用着内存地址。
  • 定义全局变量时以G开头

局部变量

  • 是指只有在程序模块内部有效的变量。所谓的模块式只函数子程序等为了实现单位功能集合成块的代码。
  • 定义局部变量时以L开头

ABAP基本语法

ABAP程序使用句号“ . ”表示一个语句的结束

代码的注释方法有下列两种

  • 符号“*” 如 *abcd
  • 符号“ “ ” 如 “aaaaa

字符串使用单引号显示‘ ’

命令要用空格分开

冒号表示法

  • 如果每个语句的开头是相同的,则连续语句可以链接在一起。 这是使用冒号(:)运算符和逗号,用于终止单个语句,就像句点结束正常语句。

MOVE语句

  • MOVE语句与符号“=“有相同功能,用于赋值,另外还有MOVE-CORRESPONDING语句,两个不同结构的结构体或内边之间相互赋值时使用,此句的特点是复制时与顺序无关,自动查找仙童名字的变量进行复制。

Strlen语句

  • 用于返回字符串长度

WRITE语句

  • WRITE语句用于输出报表数据用“/”表示换行

关于系统变量SY-SUBRC

  • 在使用String的FIND时有个疑惑,为什么我前面没有定义这个变量,这个变量时哪来的,看前缀SY,猜测SY-SUBRC是系统变量

    • 使用SELECT语句选择查询:

      • SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。
      • SY-SUBRC = 4: 没有数据。
      • SY-SUBRC = 8: 只有使用“SELECT SINGLE FOR UPDATE”时才会有,
      •           表示: WHERE条件指定的记录不止一行,结果是没有记录被选中。
        
    • 使用INSERT语句,向表中插入一行,必须注意INSERT的顺序与表中字段的顺序一致

      • SY-SUBRC = 0: 插入成功,SY-DBCNT包含了插入的行数,0或1。
      • SY-SUBRC = 4: 由于有相同的KEY存在,所以插入失败。
    • 使用LOOP语句来遍历一个内表:

      • SY-SUBRC = 0: 循环至少被执行一次。
      • SY-SUBRC = 4: 循环没有被执行,可能是没有数据,也可能是没有符合条件的记录。
    • 使用DELETE语句来删除一条记录:

      • SY-SUBRC = 0: 找到一行并删除之,如果该表有不唯一主键,也就是有多条重复的记录,则只删除第一条记录。
      • SY-SUBRC = 4: 没有找到符合条件的记录,也没有删除。
    • 使用UPDATE语句来更新一条记录:

      • SY-SUBRC = 0: 找到记录并更新,(如果有多条记录呢?)
      • SY-SUBRC = 4: 没有找到符合条件的记录,也没有更新。
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值