SAP动态内表与动态SQL技术

合集下载

SAP平台技术概述

SAP平台技术概述

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 工厂维护提供对定期维护、检查、耗损维护与服务管理的规划、控制和处理,以确保各操作性系统的可用性。

sapabap面试题目及答案(3篇)

sapabap面试题目及答案(3篇)

第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内表的概念# 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 ABAP基本语法介绍

SAP ABAP基本语法介绍
明 ➢用内表是一个处理大量结构化数据的简单办法
19
内表类型 ➢标准表
系统内建维护了表的行号(即索引),索引和键访问都是允许的。 当经常用索引访问表的时候就选择标准表。
➢排序表
数据记录在表内自动以升序进行排列,索引是系统自动维护的,索 引和键访问都可以用。如果经常使用键来访 问数据,或者希望数据 能够自动排序时,就用排序表。
往内表的最后追加一条记录,只能用于标准表
➢INSERT
向内表插入一条记录
➢READ
把表的指定行拷贝到结构中
➢LOOP
遍历内表
➢MODIFY
使用结构的内容重写表的指定行
➢DELETE
删除表的指定行
➢COLLECT
把结构中的内容累加到内表具有相同键的行上,只有非键字段才执 行累加,并且只有非键字段 都是数值的时候才能执行这个语句
➢CLEAR 语句根据类型清除数据对象,恢复成默认值。
15
基本ABAP语句:运算
➢ABAP 程序中,数学表达式可以进行任意多层嵌套
( 20 + 10) * 10 + 10 / 2
➢二元操作符包括:
+ :加法 - :减法 * :乘法 / :除法 ** :乘方 DIV :整除忽略余数 MOD(%) :取模
包含了接口。类和接口池 (程序类型为 J) 接口都在类制作器中管理,事务码 SE24。
➢类池 (程序类型为 K)
包含了类。类和接口都在类制作器中管理,事务码 SE24
7
数据类型和数据对象
➢形式上的变量描述叫做数据类型,由数据类型具体定义 的变量叫做数据对象 ➢数据类型
标准数据类型(预定义数据类型)、本地数据类型、全 局数据类型

SAP系统技术架构

SAP系统技术架构

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及动态SQL

嵌入式SQL及动态SQL

2. 嵌入式SQL语句的基本形式
首先在主语言中使用SQL语言,必须将主语言的语句同SQL语句区分开来。区分 的方法是在SQL语句最后以分号“;”作为语句结束符。这样,以PowerBuilder 作为主语言的嵌入式SQL语句的一般形式为: SQL_statement; 例如:delete from wpkc_gysdjb;
嵌入式SQL 嵌入式
嵌入式SQL语句的具体使用方法:
2) 打开游标 语句语法: open cursor_name; 语法说明: (1)打开游标实际上是执行相应的select语句,并把指定表中的所有满足查询条件 的记录放到内存缓冲区中。 (2)执行了“打开游标”后,游标处于活动状态,指针指向查询结果集的第一条记 录。 3) 提取游标中的记录 语句语法: fetch cursor_name into host_variable[,...n]; 语法说明: (1)提取游标,是指从缓冲区中将指针指向的当前记录取出来,送至主变量供主语 言进一步处理,同时移动游标指针。 (2)在fetch中的主变量个数及数据类型应与定义游标时的select语句目标列一致。 (3)由于执行fetch语句只能提取出结果集中的一条记录,因此fetch语句通常用在主 语言的一个循环结构中,通过循环执行fetch语句逐条取出结果集中的记录进行处 理。 4) 关闭游标 语句语法: close cursor_name;
但是由于sql语言具有面向集合非过程化的特点主要负责对数据库中数据的存取操作在用户界面及控制程序流程方面的功能较弱因此sql语言仅仅只在交互环境中执行很难满足应用需求
嵌入式SQL及动态 及动态SQL 嵌入式 及动态
嵌入式SQL 嵌入式
SQL语言是一种结构化查询语言,在许多数据库系统环境中,一般是作为独立语 言,由用户在交互环境下使用。 但是由于SQL语言具有面向集合、非过程化的特点,主要负责对数据库中数据的 存取操作,在用户界面及控制程序流程方面的功能较弱,因此SQL语言仅仅只在交 互环境中执行很难满足应用需求。而高级语言正好相反,它是一种过程化的、与运 行环境有关的语言,具有较强的用户界面设计及控制程序流程的能力。 由于上述原因,出现了SQL语言的另一种执行方式,就是将SQL语言嵌入到某种 高级语言中使用,以便发挥SQL语言和高级语言的各自优势。在这种方式下使用的 SQL语言称为嵌入式SQL(Embedded SQL),而嵌入SQL语句的高级语言称为主 语言。 在这种混合编程模式下,高级语言需要和SQL语句进行信息交换,两者之间的通信 SQL 内容如下: 1)SQL语句将执行状态信息传递给主语言,主语言根据SQL语句的执行状态来控制 程序流程。向主语言传递SQL执行状态信息,主要通过SQL通信区(SQL Communication Area,简称为SQLCA)实现。SQLCA是一个数据结构,其中有一个 返回执行状态的系统变量sqlcode,主语言在执行完一条SQL语句后均应测试sqlcode 的值,以决定该SQL语句的执行情况并做相应处理。 2)主语言需要提供一些变量参数给SQL语句,方法是在主语言中定义“主变 量”(Host Variable),通过主变量向SQL语句提供参数。 3)SQL语句需要将查询数据库的结果返回给主语言,以便主语言做进一步的处理。 如果SQL语句返回的是单条记录,则可以通过主变量将结果返回到主语言中;如果 SQL语句返回的是多条记录,则可以使用游标将结果返回到主语言中。

动态SQL的使用方法

动态SQL的使用方法

动态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基本语法和SQL语句(ABAP内表)

ABAP基本语法和SQL语句(ABAP内表)

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.(错误的,定义出来的什么都不是)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7
RTTI
2. 定义列结构 CLEAR: COMPDESC. WA_COMPONENTS-TYPE ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME( 'EKPO-MATNR WA_COMPONENTS-NAME = 'MATNR'. APPEND WA_COMPONENTS TO IT_COMPONENTS. WA_COMPONENTS-TYPE ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME( 'EKPO-MENGE WA_COMPONENTS-NAME = 'MENGE'. APPEND WA_COMPONENTS TO IT_COMPONENTS. WA_COMPONENTS-TYPE ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( CELLSTAB ). WA_COMPONENTS-NAME = 'CELLSTAB'. APPEND WA_COMPONENTS TO IT_COMPONREATE
使用CL_ALV_TABLE_CREATE创建动态内表:
1. 定义动态内表的数据类型
type-pools: slis. field-symbols: <dyn_table> type standard table,
<dyn_wa>, <dyn_field>. data: dy_table type ref to data, dy_line type ref to data, wa_fcat type lvc_s_fcat, it_fcat type lvc_t_fcat.
write:/ <dyn_field>. endif. endif.
6
RTTI
使用cl_alv_table_create=>create_dynamic_table动态创建内表的时候,如 果是Deep Structure的结构的内表,程序Dump。这时就需要使用RTTI来创建。
1. 定义数据类型
DATA:
8
RTTI
3. 创建内表
CL_STRU = CL_ABAP_STRUCTDESCR=>CREATE( COMPONENTS ). CL_TABL = CL_ABAP_TABLEDESCR=>CREATE( CL_STRU ). CREATE DATA CL_HANDLE TYPE HANDLE CL_TABL. ASSIGN CL_HANDLE->* TO <FS_TABLE>.
5
动态内表的操作
1. 获取内表的行指针; 2. 获取指定的字段; 3. 读/写指定字段的值;
read table <dyn_table> assigning <dyn_wa> index 1. if sy-subrc = 0.
assign component ‘MATNR’ of structure <dyn_wa> to <dyn_field>. if sy-subrc = 0.
clear wa_fcat. wa_fcat-fieldname = ‘MAKTX’. wa_fcat-datatype = ‘CHAR’. wa_fcat-intlen = 40. append wa_fcat to it_fcat.
4
CL_ALV_TABLE_CREATE
3. 创建内表
call method cl_alv_table_create=>create_dynamic_table
DATA: IT_CELLSTAB TYPE LVC_T_STYL, WA_CELLSTAB TYPE LVC_S_STYL.
FIELD-SYMBOLS: <FS_TABLE> TYPE STANDARD TABLE , <FS_LINE> TYPE ANY, <FS_CELLSTAB> TYPE LVC_T_STYL.
4. 操作 SELECT * FROM ekpo INTO CORRESPONDING FIELDS OF TABLE <GT_ITAB>
UP TO 10 ROWS.
WA_CELLSTAB-FIELDNAME = 'MENGE'.
WA_CELLSTAB-STYLE
= CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
exporting
it_fieldcatalog = it_fcat
importing
ep_table
= dy_table.
assign dy_table->* to <dyn_table>. create data dy_line like line of <dyn_table>. assign dy_line->* to <dyn_wa>.
” 内表指针 ” 工作区 ” 字段
”行 ” 列结构
3
CL_ALV_TABLE_CREATE
2. 定义列结构 动态内表表结构的定义必须使用表结构与table type: lvc_t_fcat一样的内表.
clear wa_fcat. wa_fcat-fieldname = ‘MATNR’. wa_fcat-datatype =’CHAR’. wa_fcat-intlen = 18. append wa_fcat to it_fcat.
CL_STRU TYPE REF TO CL_ABAP_STRUCTDESCR, CL_TABL TYPE REF TO CL_ABAP_TABLEDESCR, CL_HANDLE TYPE REF TO DATA, WA_COMPONENTS TYPE ABAP_COMPONENTDESCR, IT_COMPONENTS TYPE ABAP_COMPONENT_TAB.
SAP动态内表与动态SQL技术
1
动态内表的创建
当程序运行时才能确定内表的结构,我们就需要用到动态内表。 动态内表的创建一般有两种方法: 1. 使用类CL_ALV_TABLE_CREATE的方法CREATE_DYNAMIC_TABLE; 2. 使用RTTI(Run Time Type Services):CL_ABAP_TABLEDESCR
相关文档
最新文档