(转自)
http://zhouwubin.blogbus.com/logs/14351256.html
刚开始学
ABAP
的时候
,
学到
iternal table
时
,
感觉一阵混乱
.
搞不清楚什么是
work area,
什么是
header line,
以及
occurs
是干什么用的
.
今天终于差不多搞明白了
(
我还是太弱啊
...BS
自己一下
)
所以还是记录下来
..
省得自己以后再忘记
...
先是用
TYPES
关键字定义一个行
(row)
的类型
.
如下
:
TYPES: BEGIN OF line,
field1 TYPE i,
field2 TYPE i,
END OF line.
这里的
line,
就相当于一个自定义的类型
,
表示一行
(row)
的字段
(field).
这里一行有两个字段
field1
和
field2.
然后是声明一个
work area:
DATA wa TYPE line.
我用
C++(
还是对
cpp
最有好感
^^)
的概念理解就是
,
line
是一个
class,
而
wa
是一个
object.
接着是声明一个每一行的类型是
line
的
internal table:
DATA itab TYPE line OCCURS 0.
我在暂时把
OCCURS
作为了区别工作区和内表的标志
.
OCCURS
应该有更深层次的意义
,
但我目前只能领悟至此
...
当我们用以上这个方法来声明一个
iternal table
时
,
可以选择是否有无
header line.
上面这句就是没有
header line
的
.
改成如下就有了
:
DATA itab TYPE line OCCURS 0 WITH HEADER LINE.
有无
header line
的区别就是
,header line
可以当作一个
work area
来使用
(
参照我之前的一个日志
).
有一下两种方式操作
itab:
1).
wa-field1 = 1.
wa-field2 = 2.
APPEND wa TO itab.
2).
itab-field1 = 1.
itab-field2 = 2.
APPEND itab.
这里
wa
就是上面那个已经定义的
work area.
有
header line
的时候
,
这两种都可以
.
无
header line
的时候
,
只能用第
1
种
.
第
2
种里
,itab
的意义是一个
header line,
而不是内表
.
因为
"DATA itab TYPE line OCCURS 0 WITH HEADER LINE."
这样的声明
,
已经隐式声明了一个与内表同名的
header line.
所以
OCCURS
用来声明内表可能造成二义性
(ambiguous).
于是
,OCCURS
被认为是
old
的东西
,
采用一下方式声明一个内表比较好
:
DATA itab TYPE STANDARD TABLE OF line.
还有一种声明内表的方法
:
DATA: BEGIN OF itab OCCURS 0,
field1 TYPE i,
field2 TYPE i,
END OF itab.
这样的
itab
就自动有了一个同名的
header line.
好像不会有
WITHOUT HEADER LINE
或者
NOT WITH HEADER LINE
这样的用法
...
如果没有
OCCURS 0,
比如这样
:
DATA: BEGIN OF itab,
field1 TYPE i,
field2 TYPE i,
END OF itab.
那么这个
itab
就不是内表咯
,
只是一个
structure,
可以作为
itab
的
work area.
写到这里发现
,
归根到底就是
TYPES
和
DATA
这两个关键字的区别嘛
.
还有有无
OCCURS
的区别
.
这样一想
,
简单明了
~~
分享到:
相关推荐
IAR常见错误详解 IAR是目前市场上最流行的嵌入式开发工具之一,但是在使用IAR时,经常会遇到各种错误,这些错误可能会导致开发效率降低,甚至导致项目延期。因此,了解IAR常见错误的解决方法非常重要。...
【Navicate Premium 12 64bit】是一款专为Windows操作系统设计的高效能数据库管理工具,尤其适用于64位环境。Navicat是著名的数据库管理和开发软件,它集成了多种数据库系统的连接功能,包括MySQL、Oracle、SQL ...
“lecture 2 Iternal Representation of Data and Numbering Systems.pdf”深入讲解了计算机内部如何存储数据,如二进制、八进制、十进制和十六进制之间的转换,以及浮点数的表示方式(如IEEE 754标准)。...
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot生鲜鲜花类及数据处理平台源码+论文+视频.zip
毕设和企业适用springboot企业数据智能分析平台类及汽车管理平台源码+论文+视频
毕设和企业适用springboot社区物业类及企业创新研发平台源码+论文+视频
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Floating Text Example</title> <style> .floating-text { font-size: 24px; position: relative; animation: float 3s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } } </style> </head> <body> <div class="floating-text">Hello, I'm floating!</div> <script> document.addEventListener('DOMContentLoaded', function() {
毕设和企业适用springboot社交媒体分析平台类及智慧医疗管理平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及餐饮管理平台源码+论文+视频
毕设和企业适用springboot人工智能客服系统类及用户行为分析平台源码+论文+视频
毕设和企业适用springboot全渠道电商平台类及个性化广告平台源码+论文+视频
毕设和企业适用springboot社交互动平台类及线上图书馆源码+论文+视频
毕设和企业适用springboot企业知识管理平台类及供应链优化平台源码+论文+视频
毕设和企业适用springboot企业健康管理平台类及数据处理平台源码+论文+视频.zip
内容概要:本文档是一份面向初学者的详细指南,重点介绍如何利用Vue.js 2.0快速创建和运行简单的Todo List应用。首先指导安装必需的Node.js、npm/yarn等环境准备,接着通过Vue CLI工具生成新的Vue项目,再详细介绍项目目录和组件的构建方式。最后提供了具体的方法实现添加和删除待办事项,并指导如何使用命令启动应用,查看结果。 适合人群:具备基础Web开发技能的前端开发新手,尤其是对Vue框架感兴趣的学习者。 使用场景及目标:作为初学者入门级的学习资料,本文档的目标是让读者能够在最短时间内掌握Vue.js的基础概念和技术栈的应用方式,以便日后可以独立地构建更加复杂的Vue应用。 其他说明:除了学习如何构建应用程序之外,本文档还涵盖了Vue的基本语法和数据绑定、事件处理机制等重要概念,对于理解Vue框架的工作原理十分有帮助。
毕设和企业适用springboot企业健康管理平台类及智能化系统源码+论文+视频.zip
毕设和企业适用springboot企业健康管理平台类及远程医疗平台源码+论文+视频.zip
毕设和企业适用springboot数据可视化类及数据智能化平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及用户体验优化平台源码+论文+视频.zip