2022年abap学习视频 2.pdf





《2022年abap学习视频 2.pdf》由会员分享,可在线阅读,更多相关《2022年abap学习视频 2.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程目标: 1)了解 Open SQL 和 Native SQL 2)使用 Open SQL 对数据表进行增删查改3)Native SQL 的简单示例4)LUW(Logical Unit of Works ,作业逻辑单元) SAP AG 1999Overview:Database UpdatesOpen SQLNative SQLINSERT .UPDATE .DELETE .MODIFY .INSERT .UPDATE .DELETE .MODIFY .EXEC SQL.INSERT .ENDEXEC. . .EXEC SQL.INSERT .ENDEXEC. . .DMLDMLEXEC S
2、QL.CREATE TABLE .ENDEXEC. . .EXEC SQL.CREATE TABLE .ENDEXEC. . .DDLABAPspecificcluster databaseIMPORT FROMDATABASE .EXPORT TO DATABASE .IMPORT FROMDATABASE .EXPORT TO DATABASE .DML一、 Open SQL 和 Native SQL 在 ABAP 中,可以使用Open SQL 或者是 Native SQL 进行数据库的操作。(1)用 Native SQL 访问数据库允许使用特定数据库的命令。这需要关于语法的细节知识。使用
3、了Native SQL 命令的程序在被传输到不同的系统环境(不同的数据库系统) 后会需要附加的编程,因为基于特定数据库的SQL 命令语法通常需要调整。(2)Open SQL 命令是与数据库无关的,它们被数据库接口自动转化为相应的SQL语句,并被传输给数据库。一个用Open SQL 操作的 ABAP 程序就是数据库无关的,可以在任何R/3 系统中使用它而无需调整。(3)使用 Open SQL 的另一个好处是可以在应用程序上缓存SAP 表,以便快速的读取,这也意味着减少了数据库加载。在分别对表做了设置后,数据会自动从缓冲区读出(4)Open SQL 命令集只包含数据操作语言(DML )的操作,不包
4、含数据定义语言(DDL )的操作,是因为这些操作包含在ABAP 字典中。(5)只有在必须用到某些Native SQL 功能,而Open SQL 没有提供时,才用Native SQL 实现数据库访问。二、 Open SQL 执行的返回值和影响的记录数量所有 Open SQL 命令都提供了关于数据库操作执行成功还是失败的返回信息。这个消息传输一个返回码给系统字段sy-subrc . sy-subrc 如果为 0 意味着操作成功完成,所有其它值意味着发生了错误。另外,系统变量sy-dbcnt 显示了刚才的数据库操作实际执行所影响的记录数量。三、 Open SQL 权限检查Open SQL 命令不执行
5、任何自动的权限检查 ,需要在程序中明确的执行这些权限检查。四、 Client (1)Client 即客户端、集团。在一个SAP 中可以分为多个Client,不同的Client名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 数据完全不同。实际上一个服务器的数据都是放在相同的表中的,它们通过MADNT这个字段来保存Client 信息并进行区分,所建数据为该Client 独享。MADNT为 SAP Table 保留字,一般情况下必填。
6、(2)SAP 系统是客户端系统。客户端概念是就业务而言彼此独立的若干个企业可以在一个系统中并行运行。就组织而言,客户端是系统中的独立单元。每个客户端都有自己的数据环境,因此也就有自己的主数据、交易数据和分配的用户主记录。(3)从法律和组织的角度来说,客户端是系统中的独立单元。决定是否设置客户端之前,应该考虑以下几点:A.客户端之间不经常交换数据。B.如果有员工更改了客户端,就必须重新创建人员编号。五、 Open SQL 访问 Client 相关的表(1)如果在Open SQL 命令中没有使用CLIENT SPECIFIED 附加关键字,在WHERE 子句中就不能指定Client ,则只会访问当
7、前运行的Client 的相应数据。(2)如果想要处理所有其他Client 的数据,必须在Open SQL 命令中指定附加关键字 CLIENT SPECIFIED ,并且在相应的WHERE 子句中指定Client。(3)注意,如果包含了附加关键字CLIENT SPECIFIED 的 Open SQL 命令没有指定集团的话,就会访问所有Client。六、 Open SQLINSERT 命令6.1 插入单条数据INSERT INTO VALUES INSERT ITNO CLIENT SPECIFIED FROM (1)其中, 必须与 结构相同;在命令被调用前把要插入的行放到结构中。(2)只有在指定
8、了CLIENT SPECIFIED 附加关键字的情况下,结构中的CLIENT字段才会被使用。如果没有附加关键字,则使用当前的CLIENT 。(3)还可以用视图来插入行。然而,视图必须已经在ABAP 字典中创建,并且维护状态设置为“读和修改”,此外还只能包含来自表的字段。(4)INSERT 命令有以下返回码0:成功插入行。4:由于已经存在相同主键的行,因此无法插入。6.2 插入多条数据INSERT FROM TABLE ACCEPTING DUPLICATE KEYS (1)其中, 必须跟 具有相同的行结构(2)与插入单条记录的时候一样,只有在指定了CLIENT SPECIFIED 附加关键字的
9、情况下, 中的 Client 字段才会被使用。如果没有这个附加关键字,则使用当前Clinet。(3)如果可以创建所有行,sy-subrc 就会设置为0;但是,即使只有一行不能被创建,也发生运行时错误这意味着整个插入操作都会被放弃(数据库回滚)。如果这时,想要把可以插入的行都真正插入数据库,就使用命令的附加关键字 ACCEPTING DUPLICATE KEYS。如果发生了错误,这个附加关键字抑制运行时错误(包括数据库回滚),设置返回值(sy-subrc)为4,并且插入所有没有错误的记录。系统字段sy-dbcnt 包含了成功插入数据库的行数。名师资料总结 - - -精品资料欢迎下载 - - -
10、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 七、 Open SQL -SELECT 例 1:利用结构读取单条记录data : wa type spfli. selectsingle carrid connid cityfrom cityto into CORRESPONDING FIELDSOF wa from spfli where carrid = 117and connid = 2222. if sy-subrc = 0. write : / wa-carrid,wa-c
11、onnid,wa-cityfrom,wa-cityto. else. write : / No Records!. endif. 例 2:重复行的处理DATA: itab TYPESTANDARD TABLEOF spfli, wa LIKELINEOF itab. DATA: line( 72 ) TYPEc , list LIKETABLEOF line( 72 ). line = CITYFROM CITYTO . APPEND lineTO list. SELECTDISTINCT (list) INTO CORRESPONDING FIELDSOF TABLE itab FROM s
12、pfli. IF sy-subrc EQ 0. LOOP AT itab INTO wa. WRITE : / wa-cityfrom, wa-cityto,wa-carrid. ENDLOOP. ENDIF . 例 3:AVG()- 求平均值SUM()- 求总和方式一 :DATA: average TYPE p DECIMALS 2, SUMTYPE p DECIMALS 2. SELECT AVG( luggweight ) SUM ( luggweight ) INTO (average, SUM ) FROM sbook. WRITE: / Average:, average, / S
13、um :, SUM . 方式二:DATA: BEGIN OF luggage, average TYPE p DECIMALS 2, sumTYPE p DECIMALS 2, END OF luggage. SELECT AVG( luggweight ) AS average SUM( luggweight ) AS sum名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - INTO CORRESPONDING FIELDSOF
14、 luggage FROM sbook. WRITE: / Average:, luggage-average, / Sum :, luggage-sum. 例 4:当 where 条件为动态的时候将用户在选择屏幕上输入的值拼接成where 条件,然后使用 select , from where () data : cond(72 ) typeC, itab liketableOF cond. PARAMETERS : city1(10) typeC, city2(10 ) typeC. data wa type spfli-cityfrom. concatenatecityfrom = ci
15、ty1 into cond. append cond to itab. concatenateOR cityfrom = city2 into cond. append cond to itab. concatenateOR cityfrom = BERLINinto cond. append cond to itab. write : / 拼接后的 where条件为: .LOOP AT itab into cond. write : / cond. ENDLOOP . SELECT cityfrom into wa FROM spfli WHERE (itab). write / wa. E
16、NDSELECT.八、 Open SQL-UPDA TE 命令8.1 方法一: UPDATE FROM (1) 必须跟被更新的数据表具有相同的结构(2)同样,只有指定了CLIENT SPECIFIED 附加关键字后,存在于 中的 Client 字段才会被使用,否则就使用当前Client。8.2 方法二: UPDATE SET = = . = WHERE (1)只有使用 SET 附加关键字指定的字段会在数据库端被用指定的值覆盖。(2)可以在 SET 附加关键字中指定数值字段的简单计算操作,例如:f = g , f = f + g ,f = f - g 。8.3 方法三: UPDATE FROM
17、TABLE 九、 Open SQL-MODIFY命令MODIFY CLIENT SPECIFIED FROM . MODIFY CLIENT SPECIFIED FROM TABLE . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - (1)MODIFY 命令是 SAP 特有的,它覆盖了两个命令UPDATE 和 INSERT。如果在 MODIFY 语句中指定的数据记录存在,这条记录就被更新;如果在MODIFY 语句中指定的数据记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年abap学习视频 2022 abap 学习 视频

限制150内