欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年abap学习视频 2.pdf

    • 资源ID:32098668       资源大小:137.87KB        全文页数:9页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年abap学习视频 2.pdf

    课程目标: 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 SQL.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 访问数据库允许使用特定数据库的命令。这需要关于语法的细节知识。使用了Native SQL 命令的程序在被传输到不同的系统环境(不同的数据库系统) 后会需要附加的编程,因为基于特定数据库的SQL 命令语法通常需要调整。(2)Open SQL 命令是与数据库无关的,它们被数据库接口自动转化为相应的SQL语句,并被传输给数据库。一个用Open SQL 操作的 ABAP 程序就是数据库无关的,可以在任何R/3 系统中使用它而无需调整。(3)使用 Open SQL 的另一个好处是可以在应用程序上缓存SAP 表,以便快速的读取,这也意味着减少了数据库加载。在分别对表做了设置后,数据会自动从缓冲区读出(4)Open SQL 命令集只包含数据操作语言(DML )的操作,不包含数据定义语言(DDL )的操作,是因为这些操作包含在ABAP 字典中。(5)只有在必须用到某些Native SQL 功能,而Open SQL 没有提供时,才用Native SQL 实现数据库访问。二、 Open SQL 执行的返回值和影响的记录数量所有 Open SQL 命令都提供了关于数据库操作执行成功还是失败的返回信息。这个消息传输一个返回码给系统字段sy-subrc . sy-subrc 如果为 0 意味着操作成功完成,所有其它值意味着发生了错误。另外,系统变量sy-dbcnt 显示了刚才的数据库操作实际执行所影响的记录数量。三、 Open SQL 权限检查Open SQL 命令不执行任何自动的权限检查 ,需要在程序中明确的执行这些权限检查。四、 Client (1)Client 即客户端、集团。在一个SAP 中可以分为多个Client,不同的Client名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 数据完全不同。实际上一个服务器的数据都是放在相同的表中的,它们通过MADNT这个字段来保存Client 信息并进行区分,所建数据为该Client 独享。MADNT为 SAP Table 保留字,一般情况下必填。(2)SAP 系统是客户端系统。客户端概念是就业务而言彼此独立的若干个企业可以在一个系统中并行运行。就组织而言,客户端是系统中的独立单元。每个客户端都有自己的数据环境,因此也就有自己的主数据、交易数据和分配的用户主记录。(3)从法律和组织的角度来说,客户端是系统中的独立单元。决定是否设置客户端之前,应该考虑以下几点:A.客户端之间不经常交换数据。B.如果有员工更改了客户端,就必须重新创建人员编号。五、 Open SQL 访问 Client 相关的表(1)如果在Open SQL 命令中没有使用CLIENT SPECIFIED 附加关键字,在WHERE 子句中就不能指定Client ,则只会访问当前运行的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)只有在指定了CLIENT SPECIFIED 附加关键字的情况下,结构中的CLIENT字段才会被使用。如果没有附加关键字,则使用当前的CLIENT 。(3)还可以用视图来插入行。然而,视图必须已经在ABAP 字典中创建,并且维护状态设置为“读和修改”,此外还只能包含来自表的字段。(4)INSERT 命令有以下返回码0:成功插入行。4:由于已经存在相同主键的行,因此无法插入。6.2 插入多条数据INSERT FROM TABLE ACCEPTING DUPLICATE KEYS (1)其中, 必须跟 具有相同的行结构(2)与插入单条记录的时候一样,只有在指定了CLIENT SPECIFIED 附加关键字的情况下, 中的 Client 字段才会被使用。如果没有这个附加关键字,则使用当前Clinet。(3)如果可以创建所有行,sy-subrc 就会设置为0;但是,即使只有一行不能被创建,也发生运行时错误这意味着整个插入操作都会被放弃(数据库回滚)。如果这时,想要把可以插入的行都真正插入数据库,就使用命令的附加关键字 ACCEPTING DUPLICATE KEYS。如果发生了错误,这个附加关键字抑制运行时错误(包括数据库回滚),设置返回值(sy-subrc)为4,并且插入所有没有错误的记录。系统字段sy-dbcnt 包含了成功插入数据库的行数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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-connid,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 spfli. 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, / Sum :, 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 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 = city1 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. ENDSELECT.八、 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 TABLE 九、 Open SQL-MODIFY命令MODIFY CLIENT SPECIFIED FROM . MODIFY CLIENT SPECIFIED FROM TABLE . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - (1)MODIFY 命令是 SAP 特有的,它覆盖了两个命令UPDATE 和 INSERT。如果在 MODIFY 语句中指定的数据记录存在,这条记录就被更新;如果在MODIFY 语句中指定的数据记录不存在,这条记录就被插入。(2)MODIFY 操作同样可以作用于视图,对视图的规定如前所述。视图必须已经在 ABAP 字典中创建, 并且维护状态为 “允许读和写” ,所有字段都必须在表中。十、 Open SQL-DELETE命令DELETE FROM DELETE FROM CLINET SPECIFIED WHERE 十一、示例程序(测试Open SQL 中 INSET DELETE UPDATE SELECT命令)REPORT ZABAPLEAN5_3. tables : spfli. data : it_tab liketableof spfli. data : it_tab_wa likelineof it_tab. PARAMETERS : t_carrid like spfli-carrid OBLIGATORY, t_connid like spfli-connid OBLIGATORY, t_cifrom like spfli-cityfrom . write : / 屏幕上的数据为 . write : / t_carrid= , t_carrid, t_connid=, t_connid . 根据用户在屏幕上的选择,修改结构it_tab_wait_tab_wa-carrid = t_carrid. it_tab_wa-connid = t_connid. 将屏幕上的数据插入表spfli中.insertinto spfli values it_tab_wa. if sy-subrc = 0. write : / 数据插入成功 . else. write : / 数据插入失败 . endif. 查询当前表的记录select * from spfli into CORRESPONDING FIELDSOF TABLE it_tab. data : amount typei . amount = lines( it_tab ). write : / 数据库中数据条数为: ,amount. loopat it_tab into it_tab_wa. write : / it_tab_wa-carrid ,it_tab_wa-connid . endloop. 删除所有 carrid 为1111的数deletefrom spfli where carrid = 111. 记住这个地方要重新查询数据表select * from spfli into CORRESPONDING FIELDSOF TABLE it_tab. amount = LINES ( it_tab ). WRITE : / 删除所有 carrid 为111的记录之后,数据库中数据条数为: ,amount. LOOP AT it_tab INTO it_tab_wa. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - WRITE : / it_tab_wa-carrid ,it_tab_wa-connid . ENDLOOP . 修改 carrid = 117的记录的 cityto = 纽约 , cityfrom = 旧金山 update spfli set cityto = 纽约 cityfrom = 旧金山 where carrid = 117. SELECT * FROM spfli INTO CORRESPONDING FIELDSOF TABLE it_tab where carrid = 117. amount = LINES ( it_tab ). WRITE : / carrid = 117的所有记录条数为 :,amount. LOOP AT it_tab INTO it_tab_wa. WRITE : / it_tab_wa-carrid ,it_tab_wa-connid ,it_tab_wa-cityfrom,it_tab_wa-cityto. ENDLOOP .十二、Native SQL EXEC SQL PERFORMING SQL 语句ENDEXEC. PERFORMING -是个子程序,用于接收和处理SQL 语句的返回值例如:data : beginof wa, carrid typec , connid typec , endof wa. DATA c1 TYPE spfli-carrid VALUE 117. execSQL performing output. select carrid,connid into :wa from spfli WHERE carrid = :c1 endexec . FORM output . write : / wa-carrid,wa-connid. ENDFORM . output 输出结果:注意:通过以上程序,我们可以看出:在子程序output 中,可以循环输出SQL 语句所查询出得所有值,虽然子程序output 中没有显式的循环读取。十三、SAP LUW 与数据库 LUW 数据库 LUW ,是底层数据库自身提供的保持数据一致性的机制,与SAP 系统无关,对于ABAP 程序来说,主要的问题在于如何确定数据库的LUW 的触发时机。一个工作过程总是在下述情况下结束一个数据库LUW ,并隐式进行数据库提交:A 当一个对话步骤(Dialog step)结束,即显示一个新屏幕给用户时。B 当另一个工作过程继续程序的时候,这一般出现在RFC 的调用和返回过程中。相应的,下列情况将使数据库隐式地进行返回操作:A 当前 ABAP 程序出现运行错误B 一个 ABAP 程序因类型A 或 X 的消息而导致中止名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - SAP LUW :一个SAP LUW 可以包含多个对话步骤,即多个数据库LUW , 但一个 Open SQL语句不能被分割为几个对话步骤,即通过SAP LUW 可以将多个数据库LUW 进行捆绑,并保存整体初始状态,不进行真正的数据库修改。当SAP LUW 中的最后一个数据库LUW 结束时,再进行整体修改,或整体取消操作。SAP LUW 提供两种具体数据库LUW 捆绑机制 : 在定义 FUNCTION时将其定义为 Update module, 同时在调用时用如下方式:CALL FUNCTION .IN UPDATE TASK.则该模块不是马上被执行,而是被放置于应用服务器中的一个特殊的更新工作过程(Update work process) 中,因此可以将多个分布在不同对话过程中的类似模块捆扎在一起,当 SAP LUW 结束时 ,确保所有模块被同时成功执行或整体放弃,因此可通过该方式封装分布在不同对话过程中的所有数据库更新操作 .一个 SAP LUW 显式提交方式 :COMMIT WORT AND WAIT.该语句结束 SAP LUW 并触发更新工作过程 ,该过程在同一个数据库LUW 中进行更新操作 ,因而数据库 LUW 此时可以替代 SAP开始进行一致性控制 .这些进行更新工作的 FUNCTION 可以被设为同步 (加 AND WAIT) 或异步模式 .即是否要等到更新任务完成后才继续执行后续语句. PERFORM . ON COMMIT LEVEL n.效果与上面相同 ,此方法更高效 ,但此时子程序不能传递参数 . LEVEL 表示优先级 ,n 取整数 .n 越小越先执行 . ROLLBACK WORK.控制 SAP LUW 整体返回 ,在实现 SAP LUW 更新功能的FUNCTION 或子程序内部不能使用此语句及COMMIT语句 .TABLES SPFLI. DATA FLAG.SPFLI-CARRID = LH. SPFLI-CONNID = 1245. SPFLI-CITYFROM = . INSERT SPFLI. IF SY-SUBRC 0. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - FLAG = X. ENDIF. SPFLI-CARRID = AA. SPFLI-CONNID = 4574. SPFLI-CITYFROM = . INSERT SPFLI. IF SY-SUBRC 0. FLAG = X. ENDIF. . IF FLAG = X. ROLLBACK WORK. ELSE. COMMIT WORK. ENDIF. 十四、SAP LUW ( 作业逻辑单元 ) (1)一个 LUW 包含了 R/3 系统中逻辑上一体的修改,这些修改要么一起完整执行,要么完全不执行( “全部和全不”的概念)(2)一般来说,一个业务事务不会被一个单独的SAP LUW 处理。比如:从接受客户订单到出具发票,可以被分为多个独立的逻辑部分。每个部分对应一个 SAP LUW 。SAP LUW 的定义依赖于整个过程和它的模型。(3)关于更多信息,参考ABAP 关键字文档关于事务处理(transaction processing)的部分。(4)数据库 LUW 包含了一系列修改,直到数据库状态变成“密封的” (数据库提交)(5)在数据库 LUW 中,通常可以放弃所有已经执行到该点的修改(数据库回滚),这样,数据库就会恢复到当前数据库LUW 之前的状态。用这个数据库回滚功名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 能在发生错误的时候恢复到以前的(数据一致的)数据库状态。(6)使用 ABAP 语句 ROLLBACK WORK和 COMMIT WORK,可以强制实现数据库回滚和数据库提交。还有一些情况会隐式的触发数据库提交:(7)在数据库 LUW 中实现SAP LUW A、 如果在 SAP LUW 处理中发生错误,应该可以返回一个在SAP LUW 开始之前就存在的一致的数据库状态。为了完成这个目标,SAP LUW必须在数据库LUW 中处理B、 由于 SAP R/3 的客户端 /服务器架构, 这并非一个没有价值的事,因为 SAP R/3事务通常有多个屏幕来输入修改数据。任何时候有一个屏幕修改,系统就会自动触发一个 隐式的数据库 提交。然而,应该允许在一个事务中把用户的整个输入合成一个SAP LUW ,并且写入到数据库中。十五、R/3 系统的客户端 /服务器架构(1)SAP R/3 系统基于客户端/服务器系统的三层架构。三层分别是数据库服务器、应用服务器和表示层服务器。(2)这个架构, 与分布式用户请求(用户分配)一起,形成了一个高效而低成本的多用户系统。(3)三层架构意味着大量使用廉价台式计算机(低性能) 的用户, 可以使用高性能(通常也是非常昂贵的)应用服务器上的一定数量的工作进程。应用服务器上的每个工作都分配了一个高性能数据库服务器的工作进程。(4)分配用户请求到工作进程,就意味着, 在表示层服务器上的独立客户端在某段时间能分配到一个工作进程。同样的, 这个工作进程又使用了数据库上另一个工作进程。 在这个工作进程把用户的一个会话步骤的输入处理结束之后,这个用户以及程序上下文,都会被移除工作进程。这个工作进程就可以被其他用户使用。(5)三层架构比“胖”客户端架构(表示层和应用层都运行在一个服务器上)更具有伸缩性。 使用三层架构, 数据库用户的数量可以远远少于实际使用系统的用户数量。这也会给数据库的表现带来积极的影响。十六、隐式的数据库提交(1)在每个单独屏幕显示前,当前的工作进程会从应用服务器上释放。这时, 触发了对应的数据库工作进程,并且自动初始化一个隐式的数据库提交。(2)在每次用户会话前释放工作进程有以下好处:A、不锁定任何应用服务器或数据库服务器上的工作进程。这减少了数据库资源的负荷。B、只有当用户完成屏幕处理,将要请求内部程序处理时,用户才会跟程序上下文一起“回滚”。这意味着用户要返回一个工作进程做处理(3)隐式的数据库提交通常在程序必须等待时初始化,例如下列情形:A.当系统显示SAP 屏幕时B.当系统发送会话消息时C.当发生同步或者异步RFC(Remote Function Call )调用时D.在 CALL TRANSACTION 或者 SUBMIT 语句时(4)出于上面提到的原因,隐式的数据库提交或者属于SAP LUW 的修改可能不会放在不同的会话步骤(会话步骤即在一个屏幕后的程序处理)中。原因是这些步骤可能不在一个数据库LUW 中。十七、十五、标准教程:BC414 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

    注意事项

    本文(2022年abap学习视频 2.pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开