SAP动态内表与动态SQL技术
- 格式:pptx
- 大小:462.10 KB
- 文档页数:11
SAP平台技术概述目录1概述 (3)1.1 SAP R/3系统概述 (3)1.2 ABAP/4开发环境 (4)1.3 ABAP开发语言 (4)2 SAP开发技术概览 (5)3 客户端基本操作方式 (7)3.1 创建新系统条目 (7)3.2 系统登录 (7)3.3 图标的含义 (8)3.4 功能操作 (9)1概述1.1 SAP R/3系统概述SAP R/3是一个基于客户/服务器架构、开放的、集成企业资源计划的系统,基功能覆盖企业的财务、后勤(采购、库存、生产、销售等)和人力资源管理、SAP业务工作流系统以及因特网应用链接功能等务个方面,如图1-1所示。
图3-1R/3应用软件体系采用模组代结构,它们既可以单独使用,也可以和其它解决方案相结合,从流程导向的角度而言,各应用软件体系间的整合程度越高,它们带来的好处就越多。
R/3系统有如下模块:FI 财务会计集中公司有关会计的所有资料,提供完整的文献和全面的资讯,同时作为企业实行控制和规划的最新基础。
TR 财务管理是一个高效率财务管理完整解决方案,确保公司在世界范围的周转,对财务资产结构实行盈利化组合,并限制风险。
CO 管理会计是公司管理系统中规划与控制工具的完整体系,具有统一的报表系统,协调公司内部处理业务的内容和过程。
EC 企业控制根据特制的管理资讯,连续监控公司的成功因素和业绩指标。
IM投资管理提供投资手段和专案,从规划到结算的综合性管理和处理,包括投资前分析和折旧模拟。
PP 生产计划提供各种制造类型的全面处理:从重覆性生产、订制生产、订装生产,加工制造、批量及订存生产直至过程生产,具有扩展MPRⅡ的功能。
另外还可以选择连接PDC、制程控制系统,CAD和PDM。
MM 物料管理以工作流程为导向的处理功能对所有采购处理最佳化,可自动评估供应商,透过精确的库存和仓储管理降低采购和仓储成本,并与发票核查相整合。
PM 工厂维护提供对定期维护、检查、耗损维护与服务管理的规划、控制和处理,以确保各操作性系统的可用性。
第1篇一、基础知识1. 请简述SAP ABAP开发环境的组成。
答案:SAP ABAP开发环境主要包括以下组成部分:(1)SAP GUI:用于与SAP系统交互的图形用户界面。
(2)SAP SE38/SE80:用于编写、调试和测试ABAP代码的编辑器。
(3)SAP SScr:用于开发SAP Screen Painter屏幕画家的工具。
(4)SAP ADT:用于开发SAP Advanced Business Application Programming技术的工具。
(5)SAP NetWeaver:SAP的集成平台,提供各种开发、运行和管理工具。
2. 请解释SAP ABAP中的数据类型。
答案:SAP ABAP中的数据类型分为以下几类:(1)基本数据类型:包括整型(INTEGER)、浮点型(FLOAT)、字符型(CHAR)、日期型(DATETIME)等。
(2)结构化数据类型:包括结构(STRUCTURE)、表(TABLE)、内表(INTERNAL TABLE)等。
(3)用户定义数据类型:包括类(CLASS)、接口(INTERFACE)等。
3. 请简述SAP ABAP中的模块化编程。
答案:SAP ABAP中的模块化编程是指将程序划分为多个模块,每个模块负责特定的功能。
模块化编程的优点如下:(1)提高代码的可读性和可维护性。
(2)方便代码的重用。
(3)便于调试和测试。
4. 请解释SAP ABAP中的异常处理。
答案:SAP ABAP中的异常处理是指程序在运行过程中遇到错误时,能够及时捕获并处理这些错误。
异常处理的基本步骤如下:(1)声明异常:在程序中声明可能发生的异常。
(2)抛出异常:当程序遇到错误时,抛出异常。
(3)捕获异常:在程序中捕获并处理异常。
二、高级应用1. 请解释SAP ABAP中的内表(Internal Table)。
答案:SAP ABAP中的内表是一种临时存储数据的结构,类似于C语言中的数组。
sap内表的概念# SAP内表的概念SAP内表(Internal Table)是SAP系统中用于存储和处理数据的一种重要数据结构。
它类似于其他编程语言中的数组或表格,可以通过行和列的组合来组织和存储数据。
SAP内表在SAP系统中广泛应用于各个模块和功能领域,如物料管理、销售和分销等。
## 内表的定义和声明在SAP系统中,内表的定义和声明是一个必要的步骤。
通过声明内表,我们可以创建一个具有特定结构和属性的内表,以便在程序中使用。
内表的定义基本语法如下:```DATA: <内表名称> TYPE STANDARD TABLE OF <数据类型> WITH DEFAULT KEY.```其中,`<内表名称>`是我们给内表起的一个唯一标识符。
`<数据类型>`是内表中存储的数据类型,这可以是简单的数据类型(如整数、字符串等)或结构体类型。
## 内表的操作和使用SAP内表提供了丰富的操作和使用方法,以方便对数据进行增删改查和处理。
下面介绍一些常用的内表操作:### 1. 内表的插入数据可以使用`INSERT`语句向内表中插入数据。
语法如下:INSERT <数据> INTO TABLE <内表名称>.```其中,`<数据>`是要插入的数据,可以是一个具体的值,也可以是一个变量。
### 2. 内表的删除数据可以使用`DELETE`语句从内表中删除数据。
语法如下:```DELETE <数据> FROM TABLE <内表名称>.```其中,`<数据>`是要删除的数据,可以是一个具体的值,也可以是一个变量。
### 3. 内表的遍历和处理可以使用`LOOP AT`语句对内表进行遍历和处理。
语法如下:```LOOP AT <内表名称> INTO <目标区域>."处理代码ENDLOOP.```其中,`<目标区域>`是一个具体的变量,用于存储每次遍历内表时所取得的值。
SAP 系统技术架构概述SAP(Systems, Applications, and Products in Data Processing)是一款出色的企业资源计划(ERP)软件,广泛应用于全球各个规模的企业中。
SAP系统的技术架构是支撑整个系统运行的基础,并且决定了其稳定性、可扩展性和性能。
本文将介绍SAP系统的技术架构以及其主要组件。
技术架构组件SAP系统的技术架构由多个组件组成,每个组件都有不同的功能和职责。
下面是这些组件的简要说明:1.应用服务器(Application Server):SAP系统的核心组件之一,负责处理用户的请求并执行相应的业务逻辑。
应用服务器可以是单机或者集群,并且可以根据业务需求进行水平和垂直的扩展。
它还管理着系统的资源,如内存、线程等。
2.数据库服务器(Database Server):SAP系统使用关系型数据库来存储和管理企业的数据。
数据库服务器承担了存储和提供数据的责任,同时还负责对数据进行备份和恢复、权限管理等功能。
目前,SAP系统支持多种数据库,如SAP HANA、Oracle、Microsoft SQL Server等。
3.消息服务器(Message Server):负责在应用服务器之间传递请求和消息。
当客户端请求到达SAP系统时,消息服务器将根据负载均衡算法将请求转发给合适的应用服务器。
这种基于消息的通信模式可以有效地提高系统的可伸缩性和性能。
4.应用程序(Applications):SAP系统提供了丰富的应用程序,包括财务和会计管理、人力资源管理、供应链管理等。
这些应用程序通过业务逻辑和数据处理将企业业务流程转化为软件功能。
5.前端用户界面(Front-End Interface):SAP系统的用户界面提供了直观和用户友好的方式来与系统进行交互。
这些界面可以是基于Web的,也可以是客户端应用程序。
用户可以通过这些界面访问系统的功能和数据。
除了以上列出的主要组件外,SAP系统还有其他一些关键组件,如分布式事务处理器、集群管理器等,用于提供更高的可靠性和可用性。
动态SQL的使⽤⽅法⼀般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使⽤SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使⽤,要想实现在PL/SQL中使⽤DDL语句及系统控制语句,可以通过使⽤动态SQL来实现。
⾸先我们应该了解什么是动态SQL,在Oracle数据库开发PL/SQL块中我们使⽤的SQL分为:静态SQL语句和动态SQL语句。
所谓静态SQL指在PL/SQL块中使⽤的SQL语句在编译时是明确的,执⾏的是确定对象。
⽽动态SQL是指在PL Oracle中动态SQL可以通过本地动态SQL来执⾏,也可以通过DBMS_SQL包来执⾏。
下⾯就这两种情况分别进⾏说明: ⼀、本地动态SQL 本地动态SQL是使⽤EXECUTE IMMEDIATE语句来实现的。
1、本地动态SQL执⾏DDL语句: 需求:根据⽤户输⼊的表名及字段名等参数动态建表。
create or replace procedure proc_test(table_name in varchar2, --表名field1 in varchar2, --字段名datatype1 in varchar2, --字段类型field2 in varchar2, --字段名datatype2 in varchar2--字段类型) asstr_sql varchar2(500);beginstr_sql:=’create table ’||table_name||’(’||field1||’ ’||datatype1||’,’||field2||’ ’||datatype2||’)’;execute immediate str_sql; --动态执⾏DDL语句exceptionwhen others thennull;end ; 以上是编译通过的存储过程代码。
下⾯执⾏存储过程动态建表。
SQL>execute proc_test(’dinya_test’,’id’,’number(8) not null’,’name’,’varchar2(100)’);PL/SQL procedure successfully completedSQL>desc dinya_test;Name Type Nullable Default Comments---- ------------- -------- ------- --------ID NUMBER(8)NAME VARCHAR2(100) YSQL> 到这⾥,就实现了我们的需求,使⽤本地动态SQL根据⽤户输⼊的表名及字段名、字段类型等参数来实现动态执⾏DDL语句。
Abap内表什么是内表:内表是内存中建立的一个临时表,你可以在程序运行时对表中的数据进行,插入,修改,删除等操作,程序跑完了,就会被释放。
--内表定义1内表有三种类型:标准表,哈希表,排序表(主要用标准表)。
2预定义的基本数据类型有:C(文本型数据)、N(数字型)、T(时间型)、X(十六进制)、D(日期型)、F(浮点型)、I(整数型)、P(压缩号)。
注意:在abap中要用data定义数据对象,也就是定义变量(内表也是一种变量)。
后面再用type或like来定义变量的类型,这里要要注意type和like的用法,一般能用like的地方都能用type。
当用type的不一定能用like。
因为type一般定义的预定义和自定义的类型,而like用于定义词典对象和已经存在的对象。
其中types直接定义的数据类型与结构,是没有分配内存空间的。
3内表定义三个步骤:1)定义类型2)参考类型定义结构、工作区域、变量3)参考类型定义内表定义类型:通过types开头定义TYPES: BEGIN OF line,field1 TYPE i,field2 TYPE i,END OF line.参考类型定义结构、工作区域、变量:定义结构通过data开头定义DA TA: WA _ITAB TYPE(LIKE) line. “ 声明一个内表工作区参考类型定义内表:定义内表通过data开头定义DA TA: ITAB TYPE(LIKE) line OCCURS 0. “ 声明一个无工作区的内表DA TA: ITAB TY PE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0. “ 声明一个有工作区的内表DA TA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE.DA TA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE.直接定义内表,这个内表是有工作区的DA TA: BEGIN OF ITAB OCCURS 0 ,CARR1 LIKE SPFLI-CARRID,CONN1 LIKE SPFLI-CONNID,END OF ITAB.[* DATA: ITAB1 TYPE ITAB.(错误的,定义出来的什么都不是)。
SAPABAP实用培训教程引言SAP(系统应用与产品)是一家德国公司,提供企业资源规划(ERP)软件,以帮助企业管理和整合业务运营。
ABAP(高级业务应用程序编程)是SAP的编程语言,用于开发SAP应用程序。
本教程旨在为初学者和希望提高ABAP编程技能的开发人员提供实用的培训。
第一部分:ABAP基础1.1ABAP概览ABAP是一种高级编程语言,专门用于SAP应用程序的开发。
它具有结构化和面向对象的特点,支持模块化、可重用性和可维护性。
ABAP编程环境包括ABAP工作台,它是开发SAP应用程序的主要工具。
1.2数据定义在ABAP中,数据定义是通过数据字典实现的。
数据字典是用于定义和描述数据元素、结构和表格的地方。
数据元素是基本的数据单位,结构是由多个数据元素组成的复合数据类型,表格是用于存储大量数据的集合。
1.3ABAP程序结构ABAP程序由多个块组成,包括声明、执行和异常处理块。
声明块用于定义变量和常量,执行块用于编写程序的主要逻辑,异常处理块用于处理程序运行时可能出现的错误。
第二部分:ABAP编程实践2.1报表开发报表是ABAP编程中最常见的应用程序之一。
通过编写SELECT 语句,可以从SAP数据库中检索数据,并通过报表显示格式化输出。
报表开发涉及定义选择屏幕、处理用户输入、执行数据库查询和显示结果。
2.2输入输出处理输入输出处理是ABAP编程中的重要部分。
输入屏幕用于收集用户输入,输出屏幕用于显示程序的结果。
通过使用屏幕元素,如字段符号、表格控制和循环结构,可以创建用户友好的界面。
2.3数据处理数据处理是ABAP编程中的核心任务。
通过使用内部表、工作区和数据库表,可以对数据进行读取、写入和修改。
ABAP提供了丰富的数据处理语句,如MODIFY、APPEND和DELETE,以及用于数据转换和验证的内建函数。
第三部分:ABAP高级特性3.1面向对象编程ABAP支持面向对象编程(OOP)的概念。
嵌入式SQL与动态SQL语句SQL语言有两种使用方式:一种是在终端交互方式下使用,称为交互式SQL;另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL,而这些高级语言可以是C、ADA、PASCAL、COBOL或PL/I等,称为宿主语言。
本章主要讲解以下4点知识:1 SQL的运行环境2 嵌入式SQL的使用规定3 嵌入式SQL的使用技术4 动态SQL语句SQL的运行环境宿主语言十嵌入式SQL↓预处理程序↓宿主语言十函数调用↓SQL函数定义库↓宿主语言编译程序↓目标程序嵌入式SQL的使用规定在程序中要区分SQL语句与宿主语言语句允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:(1) 引用时,这些变量前必须加冒号“:”作为前缀标识,以示与数据库中变量有区别。
(2) 这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。
SQL的集合处理方式与宿主语言单记录处理方式之间的协调。
(1) 游标定义语句(DECLARE)。
(2) 游标打开语句(OPEN)。
(3) 游标推进语句( FETCH )。
(4) 游标关闭语句(CLOSE)。
嵌入式SQL的使用技术1,不涉及游标的SQL DML语句2,涉及游标的SQL DML语句3,卷游标的定义和推进涉及游标的SQL DML语句(1)SELECT语句的使用方式当SELECT语句查询结果是多个元组时,此时宿主语言程序无法使用,一定要用游标机制把多个元组一次一个地传送给宿主语言程序处理。
(2)对游标指向元组的修改或删除操作在游标处于活动状况时,可以修改或删除游标指向的元组。
动态SQL语句1,动态SQL预备语句EXEC SQL PREPARE〈动态SQL语句名〉FROM〈共享变量或字符串〉这里共享变量或字符串的值应是一个完整的SQL语句。
这个语句可以在程序运行时由用户输入才组合起来。
此时,这个语句并不执行。
2,动态SQL执行语句EXEC SQL EXECUTE〈动态SQL语句名〉动态SQL语句使用时,还可以有两点改进:(1)当预备语句中组合而成的SQL语句只需执行一次时,那么预备语句和执行语句可合并成一个语句:EXEC SQL EXECUTE IMMEDIATE〈共享变量或字符串〉(2)当预备语句中组合而成的SQL语句的条件值尚缺时,可以在执行语句中用USING短语补上:EXEC SQL EXECUTE < 动态SQL语句名 > USING <共享变量>例3.33 下面两个C语言的程序段说明了动态SQL语句的使用技术。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系[SAP]ABAP动态生成经典应用之Dynamic SQL Excute 程序(转)开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Table又不能直接在Tcode:SE16中修改,使用的SAP ID又没有调试数据修改权限,这时我们应该怎么样修改数据呢?思路-- ABAP程序中的SQL 更新语句谁都有权限执行,只要我们能动态生成修改该Table字段的ABAP CODE动态执行即可!DATA: itab_sql LIKE abapsource OCCURS 0 WITH HEADER LINE, itab_prog LIKE abapsource OCCURS 0 WITH HEADER LINE. SET PF-STATUS ‘PFSTA00’. WRITE: /1 ‘Edit Your SQL ................’ COLOR 2. * ------------------------------------------------------------------* * Form editor_sql * ------------------------------------------------------------------* FORM editor_sql. * CALL Editor CALL FUNCTION ‘EDITOR_APPLICATION’ EXPORTING application = ‘BF’ display = ‘ ‘ name = ‘[Edit Your SQL......]’ IMPORTING fcode = fcode changed = changed TABLES content = itab_sql. * Translate Code Upper LOOP AT itab_sql. save_tabix = sy-tabix. tabix_count = tabix_count + 1. IF itab_sql-line = space OR itab_sql-line+(1) = ‘*’. DELETE itab_sql INDEX save_tabix. ENDIF. TRANSLATE itab_sql-line TO UPPER CASE. MODIFY itab_sql INDEX save_tabix. ENDLOOP. IF sy-tabix = 1. SHIFT itab_sql-line LEFT DELETING LEADING space. ENDIF. save_tabix = sy-tabix + 1. SPLIT itab_sql-line AT space INTO select_key etc. IF select_key = ‘SELECT’. MESSAGE i433 WE TABLE itab_sql LINES line_cnt. IF line_cnt = 0. WRITE: /1 ‘Edit Your SQL ................’ COLOR 2. ELSE. LOOP AT itab_sql. WRITE: /1 itab_sql-line. ENDLOOP. ENDIF. IF update_flag = ‘Y’. EXIT. ENDIF. ENDFORM. “ editor_sql * ------------------------------------------------------------------* * Form exec_modify * ------------------------------------------------------------------* FORM exec_modify. IF sy-ucomm = ‘EXEC’. * Modify dialog box CALL FUNCTION ‘POPUP_TO_CONFIRM_STEP’ EXPORTING textline1 = ‘Do you want to really UPDATE?’ titel = ‘Exit’ IMPORTING answer = confirm_flag. CASE。
sap内表的概念
SAP中的内表(Internal Table)是一种用于存储和组织数据的数据结构。
内表类似于其他编程语言中的数组或列表,但在SAP ABAP(Advanced Business Application Programming)语言中,内表提供了更为灵活和强大的数据处理功能。
内表的概念包括以下要点:
1.结构:内表是一个表格,包含若干行和列。
每一行代表一条记录,而每一列则表示记录中的一个字段。
2.类型:内表可以有不同的类型,例如标准内表、排序内表、或者哈希表。
每种类型都有其特定的用途和性能特征。
3.动态大小:内表的大小可以在运行时动态改变,可以动态添加或删除行,使其更适应不同的数据需求。
4.数据操作:内表支持各种数据操作,包括搜索、排序、过滤等。
这使得在SAP应用程序中能够方便地进行复杂的数据处理和分析。
5.遍历:使用循环结构,可以轻松地遍历内表中的所有记录,并对其进行操作。
在SAP的ABAP编程中,内表是一种关键的数据结构,广泛应用于报表生成、数据处理、以及与数据库交互等方面。
内表的灵活性和强大的功能使得它成为SAP系统中数据处理的核心组件。
将数据对象分配给字段符号在使用字段符号之前必须先分配数据对象给它。
对于结构化字段符号,必须在定义中包括这个分配(参见定义结构化字段符号)。
对于非结构化字段符号,可以自由决定何时何地首次分配数据对象。
在程序中,不管字段符号是否结构化,都可以将不同的数据对象分配给同样的字段符号。
要给字段符号分配数据对象,可以使用ASSIGN 语句。
ASSIGN 语句有几个变量和参数。
下列主题说明:ASSIGN 语句的基本格式将字段符号分配给其它字段符号分配字段串组件定义字段符号的数据类型更改小数位分配全局字段的局部副本ASSIGN 语句的基本格式ASSIGN 语句的基本格式包含两个静态变量和两个动态变量。
静态ASSIGN具有偏移量说明的静态ASSIGN动态ASSIGN表工作区的动态分配静态ASSIGN如果运行之前知道想要分配给字段符号的数据对象的名称,则如下使用ASSIGN 语句:语法ASSIGN <f> TO <FS>.分配之后,字段符号<FS> 具有数据对象<f> 的属性,并指向相同的内存区。
FIELD-SYMBOLS: <F1>, <F2> TYPE I.DATA: TEXT(20) TYPE C VALUE 'Hello, how are you?',NUM TYPE I VALUE 5,BEGIN OF LINE1,COL1 TYPE F VALUE '1.1e+10',COL2 TYPE I VALUE '1234',END OF LINE1,LINE2 LIKE LINE1.ASSIGN TEXT TO <F1>.ASSIGN NUM TO <F2>.DESCRIBE FIELD <F1> LENGTH <F2>.WRITE: / <F1>, 'has length', NUM.ASSIGN LINE1 TO <F1>.ASSIGN LINE2-COL2 TO <F2>.MOVE <F1> TO LINE2.ASSIGN 'LINE2-COL2 =' TO <F1>.WRITE: / <F1>, <F2>.输出如下:Hello, how are you? has length 20LINE-COL2 = 1,234示例定义两个字段符号<F1> 和<F2>。
ABAP动态SQL的语句是可以⽣成的,这个特性可以带给我们很多的便利。
⽐如SAP对费⽤的存储结构可能会采⽤ 将会计⽉作为栏位的情况,及period001,period002。
等这样⽅式来存储值。
通常取这样的值都是采⽤ Case when的⽅式或 If--else 等语句选择不同的执⾏语句获取不同列的值。
这样的处理⽅式⽆形中增加了代码的⾏数,⽽实际上除了数值列不⼀样之外,其他列都是⼀样的,如果这时候采⽤ 动态SQL ,就可以⼤⼤简化代码。
格式:SELECT(column_syntax)FROM(dbtab_syntax)其中:column_syntax can be a character-typeobject or an internal table with a character-type data type(可以是字符串,也可以⼀个字符类型栏位的内表)dbtab_syntax can be a character-type data object or an internal table with a character-type data object(可以是字符串,也可以⼀个字符类型栏位的内表)使⽤前处理⽅式:If Period = ‘001’.select obj wk001 from tableNameinto .......where con........Endselect.ElseIf Period = '002'.select obj wk002 from tableNameinto ......where con........Endselect.ElseIf .....Endif.使⽤动态处理:data_key = 'wk'.concatenate data_key period into data_key separated by space.concatenate ' obj ' data_key into column_syntax separated by spaceselect (column_syntax) From tableNameinto ....where con..........Endselect.应该说代码是有明显简化的。
七⼗五、SAP中数据库的使⽤SQL
⼀、在SAP中可以使⽤两张数据库,⼀直是NativeSQL和OPEN SQL。
Native SQL(本地SQL)特点:
1.每种关系型数据库都有其对应的 SQL,是数据库相关的。
2.不同的 SAP 系统可能使⽤各种不同的数据库,使⽤本地SQL 的 ABAP 程序⽆法适应所有的 SAP 系统。
3.可直接对数据库表进⾏修改删除等,有⼀定安全风险。
4.能实现⼀些OpenSQL⽆法实现的功能。
Open SQL(开放SQL)特点:
1.SAP 为 ABAP 定义的数据库⽆关的 SQL 标准。
2.在ABAP程序运⾏时由系统动态的转化成当前数据库使⽤的本地SQL。
3.在编写程序时不需要考虑 SAP 系统使⽤的数据库差异。
结论:由于各个SAP⽤户可能使⽤不⼀样的数据库,如Oracle或者Mysql等,使⽤Native SQL会造成在这个⽤户能⽤,在其他⽤户不能⽤的情况。
且Native SQL⼀旦执⾏操作,危险性极⼤。
建议:SAP中数据库操作,全部使⽤Open SQL来操作。
SAP之内表SAP开发的语言是ABAP(C/S模式),ABAP语言中没有数组,它有内表,就相当于其它语言的数组,我们平时开发都是与内表打交道,先说说内表的定义:DATA:itab_mseg LIKE TABLE OF mseg WITH HEADER LINE. 这个语句就是定义一个内表,它的结构是mseg表的结果,它里面可以存放mseg表字段的数据。
在定义中,我们使用到了WITH HEADER LINE 这个语句的意思是定义的这个内表的名字可以在操作内表时同时当作工作区使用,例如:LOOP AT itab_mseg.WRITE: / itab_mseg-mblnr. " 输入凭证号ENDLOOP.在上面语句中itab_mseg是内表的名称,但在输入语句中我们使用到了itab_mseg ,这时itab_mseg就是工作区的名字了,它是指用于操作数据时的一个名字。
在上面的定义中我们使用到了SAP自己的一个表就是mseg(物料凭证行项目表(MM Module))。
SAP的内表也可以自己定义自己用到的字段,在定义中,我们可以先定义一个结构(Structure),再定义一个结构类型的内表,或者直接定义一个工作区,再定义一个内表,定义方式如下:一、先定义一个结构:TYPES: BEGIN OF struc_material,mblnr LIKE mseg-mblnr, " 定义物料凭证号,使用SAP已定好的类型name TYPE char(20), " 通过TYPE 定义字符类型的,长度为20END OF struc_material.DATA: itab_material TYPE TABLE OF struc_material WITH HEADER LINE.在这我们会看到,我们在定义内表时使用的是TYPE TABLE OF 而不是 LIKE TABLE OF 因为我们使用的struc_material 是一个结构类型通过 TYPES定义的。