TYPES、DATA、TYPE、LIKE、CONSTANTS、STATICS、TABLES
TYPES、DATA、TYPE、LIKE. 42
创建数据类型与变量... 44
TYPES 语句... 44
DATA 语句... 46
CONSTANTS 语句... 48
STATICS 语句... 48
TABLES 语句
TYPES、DATA、TYPE、LIKE
TYPES语句是定义数据类型,而DATA语句声明变量。
TYPES:定义数据类型
- 数据类型是纯粹的说明。
- 没有与数据类型相关联的内存。
- 数据类型描述数据对象的技术属性。
- 数据类型是数据对象的属性并与数据对象联系紧密。
DATA:声明数据对象(变量、常量)
- 数据对象是程序在运行时使用的物理单元。
- 每个数据对象都有分配给它的特定数据类型。
- 每个数据对象占据一些内存空间。
- ABAP/4 根据数据对象的数据类型处理数据对象。
TYPES定义的类型需要用来声明一个变量(DATA)来使用,即TYPES定义的类型是供DATA语句来声明一个变量来使用的。
使用自定义的类型使用TYPE,引用其他变量所属类型要使用LIKE
TYPES znumtype TYPE i.
TYPES num1 TYPE znumtype."只能使用TYPE关键字来使用自定义类型znumtype
DATA num2 TYPE znumtype.
DATA znumobj TYPE i.
TYPES num5 LIKE znumobj."只能使用LIKE关键字来使用自定义变量znumobj
DATA num6 LIKE znumobj.
TYPES : BEGIN OF address1,
street(20) TYPE c,
city(20) TYPE c,
END OF address1.
TYPES type1 TYPE address1-city."只能使用TYPE关键字来使用自定义结构体类型或其中的组件类型
DATA obj1 TYPE address1-city.
TYPES type2 TYPE address1.
DATA obj2 TYPE address1.
DATA : BEGIN OF zaddress2,
street(20) TYPE c,
city(20) TYPE c,
END OF zaddress2.
TYPES type3 LIKE zaddress2-city."只能使用LIKE关键字来使用自定义结构体变量或其中的组件变量
DATA obj3 LIKE zaddress2-city.
TYPES type4 LIKE zaddress2.
DATA obj5 LIKE zaddress2.
透明表即可看作是一种类型,也可看作是对象,所以即可使用TYPE,也可以使用LIKE:
TYPES type6 TYPE mara-matnr.
TYPES type7 LIKE mara-matnr.
DATA obj6 TYPE mara-matnr.
DATA obj7 LIKE mara-matnr.
注:定义的变量名千万别与词典中的类型相同,否则表面上即可使用TYPE也可使用LIKE,就会出现这两个关键字(Type、Like)都可用的奇怪现像,下面是定义一个变量时与词典中的结构同名的后果(导致)
DATA : BEGIN OF address2,
street(20) TYPE c,
city(20) TYPE c,
END OF address2.
DATA obj4 TYPE STANDARD TABLE OF address2."这里使用的实质上是词典中的类型address2
DATA obj5 LIKE STANDARD TABLE OF address2."这里使用是的上面定义的变量address2
上面程序编译通过,按理obj4定义是通过不过的(只能使用LIKE来引用另一定义变量的类型,TYPE是不可以的),但由于address2是数字词典中定义的结构类型,所以obj4使用的是数字词典中的结构类型,而obj5使用的是LIKE,所以使用的是address2变量的类型。注:结构(Structure)类型也只能使用TYPE,而不能使用LIKE。
数据类型和数据对象是有不同的命名空间的,即同一程序中可以出现同名的数据类型和对象,但程序中的同名局部数据类型将覆盖数据字典中定义的同名类型。
如果使用的是数据词典中的类型,则即可以使用Like 也可使用 Type:
"SFLIGHT为表类型
DATA plane LIKE sflight-planetype.
DATA plane2 TYPE sflight-planetype.
DATA plane3 LIKE sflight.
DATA plane4 TYPE sflight.
"syst为结构类型
DATA sy1 TYPE syst.
DATA sy2 LIKE syst.
DATA sy3 TYPE syst-index.
DATA sy4 LIKE syst-index.
创建数据类型与变量
数据对象和数据类型有独立的名称空间。这意味着一个名称既可以是数据类型名,同时又可以是数据对象名,如:
DATA c .
TYPES c.
在程序中,可以使用数据声明语句静态地定义数据对象,或者利用操作语句动态地创建数据对象。ABAP/4 包括下列用于静态地创建数据对象和数据类型的关键字:
DATA 语句 |
用于创建变量 |
CONSTANTS 语句 |
用于创建常量 |
STATICS语句 |
用于创建变量,这些变量在程序运行期间一直存在,但仅在过程中可见 |
TABLES语句 |
用于创建表工作区 |
TYPES 语句 |
用于创建用户定义的数据类型 |
TYPES 语句
基本类型: TYPES { {dtype[(len)] TYPE abap_type [DECIMALS dec]} TYPES: c, |
参照已存在的类型: TYPES dtype { {TYPE [LINE OF] type} TYPES itab_typ TYPE TABLE OF string. |
引用类型: TYPES dtype { {TYPE REF TO type} INTERFACE i1. CLASS c1 DEFINITION. TYPES: iref TYPE REF TO i1, |
结构类型: TYPES BEGIN OF struc_type. TYPES: BEGIN OF street_type, |
INCLUDE { {TYPE struc_type} | {STRUCTURE struc} } 该语句只能用在定义结构的BEGIN OF and END OF之间。作用是将结构类型struc_type与结构变量struc的所有组件字段拷贝到当前结构定义的指定位置,INCLUDE就是将可以重复使用的东西先做好,再包含进来。 AS name:给包含进来的结构类型(或结构变量)取一个别名,这样就可以通过结构组件符(-)来选取这个结构类型(或结构变量) RENAMING WITH SUFFIX suffix:如果include进来的结构类型(或结构变量)的组件字段与现有的重复,则可以使用此选项重命名include进来的结构类型(或结构变量)的各组件字段名,具体做法只是在原来组件名后加上了指定的后缀suffix TYPES: BEGIN OF t_day, 可以通下面的方式来访问week结构变量: 直接看作是week结构变量组件:week-work_mon, week-free_mon, week-work_tue 由于使用as别名,所以还可以这样访问:week-monday-work, week-monday-free, week-tuesday-work |
内表类型 |
Ranges Table Types 条件内表类型 TYPES dtype {TYPE RANGE OF type}|{LIKE RANGE OF dobj} 定义了以下相同行结构的内表: TYPES: BEGIN OF linetype, |
DATA 语句
预定义类型 DATA { {var[(len)] TYPE abap_type [DECIMALS dec]} DATA p LENGTH 2 TYPE p VALUE '1.1' DECIMALS 1. 或 DATAp(2)TYPEpVALUE'1.1'DECIMALS1. DATA p(2) TYPE p VALUE IS INITIAL DECIMALS 1. DATA: text_buffer TYPE string VALUE `Text`, |
参照已存在类型 DATA var { {TYPE [LINE OF] type} DATA: spfli_wa1 TYPE spfli, 在这种情况下,<itab>必须是某个内表数据对象。 在ABAP中,定义内存变量时,除了可以参照标准的ABAP的数据类型与词典中的表(或表字段)、结构(或表字段)、视图(或视图字段))外,还可以直接参考词典中的Data Element,但不能直接引用Domain。以下是两句等效: DATA mycarrid2 TYPE spfli-carrid."参照数据库表字段 如果要定义一个屏幕字段时,最好是参照结构体中的一个字段或透明表中的一个字段,或直接采用一个Data Element,这样屏幕字段会自动带有应Data Element上语文上以及技术上的属性,即该输入域将自动带有F1 Help和F4 Help |
引用类型 DATA ref { {TYPE REF TO type} "因为没有定义方法,所以这里不需要 C1 的Implements类 DATA: oref TYPE REF TO c1, CREATE OBJECT oref. CREATE DATA dref2. WRITE: dref2->*." 1 |
结构类型 DATA BEGIN OF struc . RENAMING WITH SUFFIX具体用法请参照前面的TYPES语句中的结构定义 |
内表 |
条件内表类型: DATA rtab {TYPE RANGE OF type}|{LIKE RANGE OF dobj} 或者: RANGES: s_ebeln1 FOR ekko-ebeln.
DATA: spfli_wa TYPE spfli, r_carrid_line-sign = 'I'. SELECT * |
CONSTANTS 语句
CONSTANTS<c>[<length>] <type>[<decimals>]<value>.
CONSTANTS: BEGIN OF <fstring>,
<component declaration>,
利用<value>参数指定的初始值,在程序的执行期间不能更改。
STATICS 语句
如果要在过程的运行时间之外仍保留某变量的数值,可以在该过程中利用 STATICS 语句定义该变量。
STATICS <s>[<length>] <type> [<value>] [<decimals>].
STATICS: BEGIN OF <fstring>,
<component declaration>,
..............
如果在程序中多次调用某过程,对于利用 STATICS 定义的变量,过程总是使用该变量的最新(近)值,但不能从过程外部来访问静态局部变量。
TABLES 语句
利用 TABLES 语句,可以创建称为表工作区的内存变量。表工作区是参考 ABAP/4 词典对象的结构。语法如下:
TABLES <transparent table_type>.
<dbtab>是 ABAP/4 词典对象的名称,同时也是创建的内存变量名。可以用来参照的的有效 ABAP/4 词典对象是
表工作区提供一个接口,通过该接口可以将数据从数据库表加载到程序,或利用OPEN SQL 语句修改数据库表的内容。
转载于:https://www.cnblogs.com/jiangzhengjun/p/4292833.html
TYPES、DATA、TYPE、LIKE、CONSTANTS、STATICS、TABLES相关推荐
- NILM非侵入式负荷识别(papers with code、data)带代码的论文整理——(公开数据集、工具、和性能指标篇) 全网最全
说在最前面 这篇文章主要介绍用于非侵入式负荷识别领域目前的公开数据集.工具和其它等,如果需要看论文及具体代码实现,看我上一篇的文章. 其外,不是所有数据集我都用过,我只用过UK-DALE,所以其它数据 ...
- $.post html5,$.post(url,[data],[fn],[type])_jQuery之家-自由分享jQuery、html5、css3的插件库...
示例 1描述: 请求 test.php 网页,忽略返回值: jQuery 代码: $.post("test.php"); 2描述: 请求 test.php 页面,并一起发送一些额外 ...
- Intent的七大属性, ComponentName、 Action 、 Category 、 Data 、Type、 Extra 、Flags。
目录 Intent的七大属性: ComponentName. Action . Category . Data .Type. Extra .Flags. (一).ComponentName属性 ...
- NILM非侵入式负荷识别(papers with code、data)带代码的论文整理——(论文及实现代码篇) 全网最全
说在最前面 研究生三年快毕业了,毕业前整理一下该领域的研究工作.正所谓,我栽树,后人乘凉.研究NILM的时候,个人觉得最快的方法是直接复现别人的论文,或者甚至用别人论文的代码直接跑出来体会整个流程(数 ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)
接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...
- jQuery源码解析(1)—— jq基础、data缓存系统
闲话 jquery 的源码已经到了1.12.0 版本,据官网说1版本和2版本若无意外将不再更新,3版本将做一个架构上大的调整.但估计能兼容IE6-8的,也许这已经是最后的样子了. 我学习jq的时间很短 ...
- SQL 语句代编代写、DATA MANAGEMENT SYSTEMS代写代做
SQL 语句代编代写.DATA MANAGEMENT SYSTEMS代写代做 DATA MANAGEMENT SYSTEMS DESIGN PROJECT Purpose of this projec ...
- 静态分析:IDA逆向代码段说明 text、idata、rdata、data
通常IDA对一个PE文件逆向出来的代码中, 存在四个最基本的段text.idata.rdata.data, 四个段为PE文件的结构中对应的段. 一.text段: 该段位程序代码段,在该段一开始就可以看 ...
最新文章
- harmonyos2.0开发者beta,华为鸿蒙 HarmonyOS 2.0 手机开发者 Beta 活动(广州站)报名开启...
- HTML语言利用函数求中位数,javascript-使用OnClick()计算用户放入HTML表中的数字的平均值...
- python爬取股票大单历史记录_利用bs4爬取股票的历史交易数据
- 什么样的网站建设公司才是值得信赖的?
- 06-JavaScript的流控制语句
- BAJT 中高级 Java 面试题答案
- VB.NET水晶报表控件经验总结
- 全屋wifi测试软件,全屋WIFI评测
- 16 计算二叉树叶子结点数目(耿 6.14)
- CodeCraft-20 (Div. 2) E. Team Building(状压dp)
- Java生成随机图片验证码工具类
- to be top。。。
- Android USB 扫码枪获取扫描内容
- Filter过滤器导致CSS样式失效
- 八、QOS队列调度与报文丢弃
- jar包——jar包的打包
- [仅ESP32] BT AT命令
- 如何用代码在Delphi 7.0中安装TeeChart 7.0
- EDR与态势感知,到底有啥区别?
- 血色先锋队——bfs
热门文章
- 数据库完整性概念和数据库安全性概念之间的区别与联系
- c++餐饮管理系统_扎哈·哈迪德建筑事务所赢得深圳湾超级总部基地C塔项目国际竞赛...
- python迭代器是什么意思_python 迭代器(第二次总结)
- FreeRTOS+STM32F103中断中发送任务通知单片机死机问题
- 宅在家里写数据库中DQL(查询)
- 滑动窗口1——无重复字符的最长字串
- ElasticSearch通过Scroll方式遍历索引(Python代码)
- 一张图带你了解Android5.0中的colorPrimary、colorPrimaryDark、colorAccent
- linux安装操作系统以及配置ip地址
- Servlet具体解释