数据字典中的数据类型与ABAP中的中数据类型对应关系

学ABAP一段时间了,一直误打误撞的,没看理论知识,每次看到系统标准表里的字段类型,然后再看看ABAP的类型,两个总对不上。也没去谷歌,也没去问人。

今天看到这个文档,才解释清楚之前的疑惑。哈,今天赚了。

知识点(1)

数据字典预置类型ABAP类型运行长度说明
ACCPN(6)6会计计算周期
CHARC(n)1-255字符
CLNTC(3)3集团,数据区域代码
CUKYC(5)5货币代码
CURR(n,m)P((n+1)/2)DECIMALm42736货币金额
DATSD(8)8日期
DEC n,mP((n+1)/2)DECIMALmn(1-31)m(1-17)数值计算
FLTPF(8)18浮点数
INT1X(1)(类型b)3单字节整形数
INT2X(2)(类型s)5双字节整形数
INT4X(4)(类型i)10四字节整形数
LANGC(1)内部1位外部2位语言代码
LCHRC(n)256-最大值长字符
LRAWX(n)256-最大值长位字串
NUMC nN(n)1-255数值文字
PRECX(2)16精确度
QUAN n,mP((n+1)/2)DECIMALm42736数量
RAW nX(n)1-255位字串
TIMST(6)6时间
VARC nC(n)255-最大值长字符(仅3.0前可用)
STRINGSTRING1-最大值字符串
RAWSTRINGXSTRING1-最大值位字符串
UNITC(n)2~3单位

数据定义: 知识点(2)

TYPES:BEGIN OF t_staff,
                     S_no(3) type n,
                     Name(20),
              END OF t_staff.
DATA staff TYPEt_staff.

定义了一个结构类型t_staff, 里面包含了 员工工号,员工姓名两个字段。并根据其声明了一个结构体对象staff.

结构比作人,社会赋予人人的各属性是这个结构的字段。

TYPES:BEGIN OF HUMAN,
        ID(18)  TYPE N,  "身份证号码
       NAME(20),   "姓名
      AGE(2) TYPE N,  "年龄
      BOB  TYPE D, " 生日
     HIGE TYPE F,  "身高
    WIGHTH TYPE F, "体重
     END HUMAN.

 知识点(3)

通用逻辑表达式列表:  把后面的英文记住了,这几个符号也就记住了。

运算符

意义

EQ=

等于 (Equal)

NE<>><

不等于(NotEqual)

LT<

小于(LESSTHAN)

LE<=

小于等于(Less than orEqual to)

GT>

大于(GreaterThan)

GE>=

大于等于(Greater than orEqual to)

       知识点(4)    

types定义的并不是结构体对象,只是结构类型,不能作为工作区,当定义的内表没有表头行(工作区),必须为其定义一个结构体作为工作区,否则无法使用此内表.如果没有给内表定义工作区,则在定义内表时必须声明表头行(withheader line).

DATA:BEGIN OFline, "work area(structure)结构类型且结构体对象
     num TYPE i,
     sqr TYPE i,
    END OF line,
   "无表头行内表,内表定义都使用data关键词.
itab TYPE(LIKE)STANDARD TABLE OF line WITH KEY table_line.

DATADIRTAB LIKE CDIR OCCURS 10 WITH HEADER LINE.定义标准内表

 

知识点(5)

1.TYPESDATA区别:TYPES是用来定义某种类(),(DATA语句)实例化以后才可以使用,DATA是用来定义数据对象(实例变量),对于用DATA直接定义的结构体对象(不参照其它结构类型),其同时也是一个结构类型.

2.TYPELIKE区别:TYPE后面跟随的只能是某种类(),LIKE后面可以跟随类型或实例对象,参照结构体对象生成内表时只能用LIKE,不能用TYPE,因为结构体对象不是类型,只是一种实例对象,参照结构类型生成内表时可以用LIKE也可以用TYPE.其中通过LIKE定义的内表直接拥有参照结构类型的元素结构,而通过TYPE定义的内表只能间接拥有被参照结构类型的元素结构,结构类型不能作为内表的工作区,只有结构体对象才可以.

 

知识点(6)

:CLEAR itab[].表示操作的是内表对象.CLEAR itab.itab有表头行时表示操作表头行,如无表头行时表示操作内表对象.

内表分有表头的内表和没表头的内表。

clear itab 和clear itab[] 是有区别的,clear itab[] 操作两种情况的内表。clear itab 操作的是当内表有表头时,操作表头;没表头时,操作内表对象。这样理解对吗?

理解错了,CLEARitab[].:只清空整个内表对象数据.不清空表头行

 

知识点(7)

 下面这个很难理解,我都看了5遍了。

控制级操作(用于总计,缩进,格式控制等)

AT FIRST|LAST|NEW f|END OF f.

       <statement block>

ENDAT.

说明:

l  FIRST:当循环为内表的第一行时,执行语句块中语句.在工作区中,系统用*填充所有关键词内容.

l  LAST:当循环为内表的最后一行时,执行语句块中语句.在工作区中,系统用*填充所有关键词内容.

l  NEW f:字段f前面(即左边)的全部字段内容之一不同于上一行时,执行语句块中语句.在工作区中,系统用*填充f后面所有关键词内容.

l  END OF f:如果下一行行组中的任何字段内容不同于上一行,执行语句块中语句.在工作区中,系统用*填充f后面所有关键词内容.

:在控制级操作期间,在工作区中,对于非标准关键词段,将全部进行初始化,在执行完控制操作后(ENDAT语句后)工作区中的数据将全部还原到进入控制级操作语句前(即进入AT)状态.

 知识点(8)

 FOR ALL ENTRIES IN ITAB  相当于循环输出内表在WHERE子句中出现的   意义相当于where子句。

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值