SAP 内表2008-11-27 22:531.内表的声明
Internal Table 的宣告
ABAP/4的 Internal Table 如同其它语言的数组结构, 在操作上可以有复制,删除,新增插入等功
能.
1.使用 TYPE 叙述
语法:
TYPES <t> <type> OCCURS <n>
宣告一个数组 <t>, 型态为 <type>, 长度为 <n>
Example:
TYPES A TYPE I OCCURS 10.
A 是个10个元素的数值Internal Table
Example:
TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL3 TYPE I,
END OF LINE.
TYPES ITAB TYPE LINE OCCURS 10.
宣告一个Internal Table ITAB, 总共有10个元素, 其WORK AREA 名称
为 LINE
2.使用 DATA 叙述
若使用DATA叙述来宣告Internal Table, 可分成要不要有HEADER LINE, HEADER LINE 就
是所谓的 WORK AREA, 用在数据的存取上.
语法:
DATA <f> <type> OCCURS <n> [WITH HEADER LINE]
Example:
DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.
3.直接宣告, 不使用 WORK AREA
语法:
DATA: BEGIN OF <f> OCCURS <n>,
<component 宣告>
END OF <f>.
Example:
DATA: BEGIN OF ITAB OCCURS 10,
COL1 TYPE I,
COL2 TYPE I,
END OF ITAB.
如此产生的Internal Table 不会有 Work Area, 也就是宣告时不会 Reference
其它的 Conponent 宣告
4.Append Line
语法:
APPEND [<wa>] TO [Initial Line To] <itab>
[Initial Line To] 为增加一预设初值的元素
Example: 使用 Work Area
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
DO 2 TIMES.
LINE-COL1 = SY-INDEX. “SY-INDEX为迥圈的 Counter
LINE-COL2 = SY-INDEX **2.
APPEND LINE INTO ITAB. “新增至 Internal Table中
ENDDO.
LOOP AT ITAB INTO LINE. “ITAB 总共有两个元素
WRITE: / LINE-COL1,LINE-COL2.
ENDLOOP.
执行结果为:
1 1
2 4
Example: 不使用 Work Area
DATA: BEGIN OF ITAB OCCURS 10,
COL1 TYPE I,
COL2 TYPE I,
END OF ITAB.
DO 2 TIMES.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX **2.
APPEND ITAB. “新增至 Internal Table中
ENDDO.
LOOP AT ITAB. “ITAB 总共有两个元素
WRITE: / ITAB-COL1,ITAB-COL2.
ENDLOOP.
执行结果为:
1 1
2 4
5.加入另一Internal Table的元素
语法:
APPEND LINES OF <itab1> [FROM <n1>] [TO <n2>] TO <itab2>
将<itab1>的元素加入至<itab2>中, 可选取自<n1>至<n2>的范围
Example:
APPEND LINES OF ITAB TO JTAB.
将ITAB所有元素加入JTAB中
&Collect Line
在加入新元素时将有相同standard key(非数值字段)的数值字段汇总
语法:
COLLECT [<wa> INTO] <itab>
Example:
DATA: BEGIN OF ITAB OCCURS 3,
COL1(3) TYPE C,
COL2 TYPE I,
END OF ITAB.
ITAB-COL1 = ‘ABC’. ITAB –COL2 = 10.
COLLECT ITAB.
ITAB-COL1 = ‘XYZ’. ITAB-COL2 = 20.
COLLECT ITAB.
ITAB-COL1 = ‘ABC’. ITAB-COL2 = 30.
COLLECT ITAB. “汇总COL2 至 COL1=ABC 的元素上
LOOP AT ITAB.
WRITE: / ITAB-COL1,ITAB-COL2.
ENDLOOP.
执行结果:
ABC 40
XYZ 20
&Insert Line
插入元素在指定的Internal Table位置之前
语法:
INSERT [<wa> INTO] [INITIAL LINE INTO] <itab> [INDEX <idx>]
Example:
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
DO 3 TIMES.
LINE-COL1 = SY-INDEX *10.
LINE-COL2 = SY-INDEX *20.
APPEND LINE INTO ITAB.
ENDDO.
LINE-COL1=100.
LINE-COL2=200.
INSERT LINE INTO ITAB INDEX 2. “插入在位置2之前
LOOP AT ITAB INTO LINE.
WRITE: / SY-TABIX,LINE-COL1,LINE-COL2. “SY-TABIX为Table位置
ENDLOOP.
执行结果:
1 10 20
2 100 200 “插入的元素
3 20 40
4 30 60
&插入另一Internal Table元素
语法:
INSERT LINES OF <itab1> [FROM <n1> TO <n2>] TO <itab2> INDEX <idx>
将<itab1>的元素插入至<itab2>中, 位置在 <idx>之前, 可选取自<n1>至<n2>的范围
Example:
APPEND LINES OF ITAB TO JTAB INDEX 3.
将ITAB所有元素插入JTAB中, 位置在第三个元素之前
&Internal Table元素数据的读取
语法:
LOOP AT <itab> [INTO <wa>] [FROM <n1> TO <n2>] [WHERE <condition>]
<loop expression>
ENDLOOP.
根据设定的范围选取原素资料, 读完后自动移往下一笔
Example:
LOOP AT ITAB INTO LINE WHERE COL1 >100.
WRITE: / SY-TABIX,LINE-COL1.
ENDLOOP.
仅读取 COL1 > 100 的元素
&读取Internal Table指定位置的元素
语法:
READ TABLE <itab> [INTO <wa>] INDEX <idx>
自指定位置 <idx> 读取元素数据
Example:
READ TABLE ITAB INTO LINE INDEX 5
读取 ITAB的第5个元素数据, 放入 LINE的字段中
&根据字段内容寻找
语法:
READ TABLE <itab> INTO <wa>
Example:
ITAB-COL1 = ‘ABC’.
READ TABLE ITAB INTO LINE.
找出ITAB 中 COL1 字段内容是 ABC 的元素, 找到的值放入 LINE 中
若找到 SY-SUBRC传回0, 找不到则传回 4, <itab>必须宣告有 work area
&异动元素内容
语法:
MODIFY <itab> [FROM <wa>] [INDEX <idx>] [TRANSPORTING <f1>…<f2>]
[WHERE <condition>]
TRANSPORTING <f1> ..<f2> : 指定异动的字段名称
Example:
LINE-COL1 = 4.
LINE-COL2 = 100.
MODIFY ITAB FROM LINE.
将目前位置元素以LINE的内容异动
Example:
LINE-COL1 = 10.
MODIFY ITAB FROM LINE INDEX 3 TRANSPORTING COL1.
将第三个元素的COL1字段异动为 10
&Delete Lines
删除Internal Table 的元素
语法:
DELETE <itab> INDEX <idx>
Example:
DELETE ITAB INDEX 4
删除第四个元素
加上删除条件:
DELETE <itab> [FROM <n1> TO <n2>] [WHERE <condition>
Example:
DELETE ITAB FROM 3 TO 10.
删除第3至第10个元素
&Internal Table Sorting
语法:
SORT <itab> [<order>] [BY <f1>] ….
[<order>] : 可分成递减(DESCENDING)和递增(ASCENDING), 空白表 ASCENDING
<f1>:为指定的字段
Example:
SORT ITAB DESCENDING BY COL2.
将 ITAB 根据 COL2字段递减排序
&计算数值字段总和
语法:
SUM
计算得总和存在work area 中, 但只能存在 LOOP 叙述中
Example:
LOOP AT ITAB INTO LINE.
SUM.
ENDLOOP.
WRITE: / LINE-COL1,LINE-COL2.
LINE-COL1 和 LINE-COL2 存数值总和
&Initial Table
1. REFRESH <itab>
使用在没有 HEADER LINE 的 Internal Table中, 清除所有元素
Example:
REFRESH ITAB.
2. CLEAR <itab>[ ]
使用在有 HEADER LINE 的 Internal Table中, 清除所有元素
Example:
CLEAR ITAB[ ].
3. FREE <itab>
释放(Release) Internal Table所占的内存空间, 用在 REFRESH和 CLEAR指令之后
Example:
FREE ITAB.
分享到:
相关推荐
SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP...
Python连接SAP NetWeaver RFC(Remote Function Call)主要依赖于SAP提供的NetWeaver RFC SDK,这是一个允许外部系统与SAP系统进行交互的开发工具包。本文将深入探讨如何利用Python通过SAP NetWeaver RFC SDK进行...
SAP屠夫,也被称为SAP Security或SAP Security Guru,是指在SAP系统安全领域具有深厚专业知识和技术能力的专家。他们专注于SAP系统的安全配置、权限管理、审计和风险控制,以确保企业数据的安全性。本文件汇总了SAP...
在使用SAP系统时,有时会遇到一个常见的问题:当尝试输入中文时,屏幕上显示的不是预期的汉字,而是问号。这个问题可能给用户带来不少困扰,尤其是对于那些需要处理中文数据的企业。本文将深入探讨这个问题的原因,...
《SAP PI/SAP PO 详细教程:从基础到实践》 SAP PI(Process Integration)和SAP PO(Process Orchestration)是SAP提供的集成解决方案,用于连接不同的业务系统,实现数据交换和流程自动化。本教程将带你深入了解...
SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI ...
### SAP接口文档:关于SAP的接口介绍 #### 一、引言 SAP系统作为全球领先的业务管理和协同商务解决方案之一,在企业的信息化建设中扮演着重要角色。为了满足不同应用场景的需求,SAP提供了多种接口机制,包括但不...
SAP是一种全球领先的业务软件解决方案,它为企业提供了一个集成的平台来管理财务、人力资源、供应链、生产、销售等各个方面的业务流程。SAP JCo(Java Connector)是SAP提供的一个关键组件,允许Java应用程序与SAP...
SAP Process Orchestration The Comprehensive Guide, 2nd Edition SAP流程编制综合指南 1 Introduction to SAP Process Orchestration 1.1 Historical Overview and Evolution 1.1.1 SAP Process Integration ...
SAP NetWeaver Connector for .NET (简称SAP NCO或NCo) 是一个由SAP官方提供的类库,用于.NET应用程序与SAP系统之间的通信。这个库支持x64架构,使得64位的应用程序能够高效地与SAP ECC(Enterprise Central ...
在IT行业中,SAP(System Applications and Products)是一款广泛使用的业务流程管理软件,主要用于企业资源规划(ERP)。SAP GUI(Graphical User Interface)是访问SAP系统的主要工具,它为用户提供了与SAP系统...
"SAP安装包 GUI750 FOR 苹果MAC客户端GUI SAP LOGON.rar" 是一个专为苹果Mac用户设计的SAP GUI安装包,允许用户在Mac操作系统上运行SAP的图形用户界面,以便访问和操作SAP系统。 SAP ERP(Enterprise Resource ...
ABAP(Advanced Business Application Programming)是SAP公司推出的一种编程语言,主要用于开发SAP系统中的业务应用程序。SAP系统在全球企业资源规划(ERP)领域有着广泛的应用,而ABAP则是其核心开发语言,使得...
幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 ...
SAP JCo (Java Connector) 是一款用于连接Java应用程序与SAP系统的关键组件,它提供了在Java环境中访问SAP R/3系统或者SAP NetWeaver应用服务器的能力。"sapjco30"指的是SAP JCo的第三版,这个版本对应于JCo 3.0,是...
SAP是一种全球领先的业务软件,用于企业资源规划(ERP)和企业管理。SAP JCo(Java Connector)是SAP提供的一种软件组件,它允许Java应用程序与SAP系统进行交互,实现数据交换和功能调用。在本文中,我们将深入探讨...
在Java开发中,有时我们需要与SAP系统进行交互,实现数据的同步或者调用SAP的业务逻辑。这时,就需要使用到SAP提供的Java连接器,即JCo(Java Connector)。本文将详细介绍如何使用JAVA链接SAP的相关jar包,包括sap...
SAP S/4HANA 升级的 SAP 检查 SAP S/4HANA 升级的 SAP 检查是一个自助服务工具,旨在帮助客户升级到最新的 SAP S/4HANA 版本。该工具可以检查当前系统与目标版本中的应用程序兼容性,提供所需的准备步骤,并帮助...
SAP GUI 800 64位是SAP公司为Windows操作系统提供的一个图形用户界面,用于连接到SAP系统并进行交互操作。这个版本专为64位操作系统设计,能够充分利用64位架构的优势,提供更高效、更稳定、更大内存支持的SAP客户端...
在IT领域,SAP是一个知名的业务软件解决方案提供商,其产品广泛应用于企业的资源规划与管理。在.NET开发环境中,为了与SAP系统进行交互,开发者通常会利用SAP提供的.NET连接器,即SAP Connector。本篇文章将深入探讨...