ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.38KB ,
资源ID:10592054      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10592054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SAP ABAP PA certification 培训笔记 part 4.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SAP ABAP PA certification 培训笔记 part 4.docx

1、SAP ABAP PA certification 培训笔记 part 4- SAP ABAP PA certification 培训笔记 part 4课前复习Table key 由三部分构成1. Components:组成key的字段2. Sequence:字段顺序3. Unique/non-unique是否具有唯一性Data itab type table of 内表类型. 没有语法错误,只是意义完全不同注意:相当于定义了一个一位数组 每一个元素都是一个内表元素.访问物理表1. 根据 物理表 所对应的 透明表 建立 结构体 或者 内表2. 单条数据访问 需要使用建立的结构体进行操作3. 多

2、条数据访问 使用建立的内表进行操作通过一个内表变量 ,建立与内表line type类型相同的结构体waData wa like line of itab. 根据内表变量定义Data wa type line of . 根据内表类型定义读取数据库表Select from which tableInto wheretoWhere which line需要声明一个 结构体 或 内表单条记录 into 到结构体.多条记录 into 到内表.Reading by single record access 读取单条记录对于java 来说, sql 和java 互不相干. Java执行的SQL并非java元

3、素, sql对于java来说只是简单的字符串.Abap中的open sql 是abap中的一部分. OpenSQL 是基于sql的拓展只读一条记录时, 一定要加single关键字Select single *From scarrInto wa_scarrWhere carrid = pa_car.重点:无论查询结果有多少条, single读取只返回第一条记录.Left justified 从左到右匹配.概念:根据字段在表中的顺序,对where条件中的字段进行从左到右排序Where语句中的条件顺序 会影响查询性能, 要遵循从左到右匹配查询.多表查询1. 先根据多张表中所需的字段建立结构体.2.

4、通过这个结构体对数据进行操作3. 要使用 corresponding fields of 对字段赋值进行匹配操作.注意:不使用corresponding 不会出异常 ,但拷贝结果不一定会正确多条记录读取Select carrid connid fldate.Endselect.当数据库操作执行完毕, 要根据 sy-subrc 判断操作是否成功.0 成功 非0 失败数据库查询小节数据库查询分两种1. 单条 select single2. 多条 select . Endselect , array fetch.多条记录查询1. Select . endselect:逐条读取 稳定,但速度较慢2.

5、Array fetch:把符合查询条件的 记录一次性插入到内表中 速度快, 但不稳定(当内存不足或数据过大时,会导致内存溢出)运行机制:例如查询10条记录,大小10k a) 使用select-endselect方式访问, 会访问10次,每次访问1k,b) Array fetch 将数据看成一整个数据. 一次性放入到内表中Into clause 对同名并且类型相同的字段进行拷贝 需要使用corresponding fields of,虽然速度较慢,但较稳定名字相同 类型不同, 则拷贝不会成功.对于 client-specific 表的查询client-specific 表中的第一个主键字段为ma

6、ndt,作用是标识client该查询分为两种情况1. 默认情况查询client-specific表2. 通过特定的mandt查询client-specific默认情况查询查询条件中 没有 mandt字段Select . from spfliWhere (mandt = 100 )carrid LH.底层默认在where中加入了 mandt字段作为查询条件, 而此时的mandt的值为当前操作该程序的client的值注: 使用这种查询方法,不同的client运行该程序 会极大可能的产生不同运行结果通过特定的mandt查询client-specific指定特定 mandtSelect * from

7、spfliClient specifiedInto .Where mandt in (401,402) 注意:mandt一定写在第一位And carrid EQ AA.使用特定的mandt , 系统将通过该特定mandt 进行数据访问, 返回结果与client无关Secondary index 第二索引索引优点:加快数据库查询速度劣势:索引仅对数据查询有利, 对update语句(例如:删除,插入)会降低其效率.注意: 索引并不是越多越好,适当的索引可以加快查询效率索引分为两类1. 第一索引(物理索引 或者 主索引)该索引是基于数据库表主键所包含的所有字段创建的,有且只有一个, 当主键 被创建时

8、 , 主索引就会被系统自动创建2. 第二索引根据主键之外的字段所创建的索引,可以包含多字段主键的其中之一或多个作为第 二索引,但不能包含主键的所有字段.注意:第二索引的数量应该适当,不应太多.索引机制在索引创建的时候,系统会自动创建相应的索引表例如:1) 一个表中的前2个字段为主键,2) 此时系统会创建一个3个字段的索引表3) 其中包括 两个主键字段 和一个 index字段(为了根据主键定位对应的表数据)4) 创建的索引表与数据表拥有相同的数据条数写查询语句的时候 where 条件语句要遵循 left justified 机制从左到右写入索引字段Database optimizer 数据库优化

9、器它会根据查询操作,选择出最佳的查询方案.Authorization checks 权限检查运行流程:1) 用户在选择屏幕上输入查询条件 例如:AA2) 用户确定输入3) 在数据库查询之前,ABAP程序会到数据库查看当前用户的用户主数据,查看用户是否具有对该数据进行操作的权限, 如果有 sy-subrc = 0 , 如果没有权限 sy-subrc = 4 , 检查失败 sy-subrc = 8.Authorization objects and authorizations.权限对象 和 权限权限查询流程1) 查看用户是否又有相应权限2) 当具有查询的权限时就在if语句中对该表进行相应操作3)

10、 如果没有权限 就通过屏幕提示给用户Authorization_check object: s_carrid 包含两个字段1. Carrid: 用来指定carrid的值2. Actvt: activities 可操作的权限类型Actvt 可取的值:1. Create = 01 是否有创建的权限2. Change = 02 修改权限3. Display = 03 查看权限一个权限对象可以生成多个权限carrid : *Actvt : 03 用户对所有航空公司编码所对应的数据具有查看权限carrid : HlActvt : 02该用户可以对HL航空公司对应的数据可以更改.Authority-che

11、ckObject S_CARRIDID CARRID field LHID ACTVT field 02.(查看数据库的二维表,查看权限是否存在,然后返回给sy-subrc)If sy-subrc NE 0.Endif.Dummy:当忽略字段的值时,可以使用dummyAuthority-check object S_CARRIDID CARRID DUMMYID ACTVT field 02.插入权限检查点击pattern在authority_check 中输入 s_carridReading Linkable database tables读取多表连接对于对表的访问有两种方式1. 静态连接:

12、从多中取出所需字段, 根据提取的字段创建 视图2. 动态连接:在abap中使用连接语句对多表连接并读取表连接分类1. 内连接 inner join2. 外连接 outer join (包含:左外连接 右外连接 注:ABAP不支持右外连接)内连接: inner join例如: 对两个表进行内连接, 将两个表中符合连接条件的记录的字段合并为一条记录,相当于把这些符合条件的记录又重新组成了一个新表.SELECT FROM spfli INNER JOIN scarrON spflicarrid = scarrcarridWhere注:由于多表中可能出现重复字段, 索引因该使用 进行区分外连接:out

13、er join左外连接:例如: 两张表进行外连接, 一张为左表, 另一个为右表当进行左外连接时, 无论左表是否符合连接条件,它的字段都会在新集合中, 而右表只有符合连接条件,字段才会被插入到新集合中右外连接(abap不支持):与左连接顺序相反,BAPI :business API可以理解为 abap的方法封装了select语句,可以直接使用Logical database 逻辑数据库不是物理数据库 ,而是ABAP程序, 可以充当数据库使用警告:对数据库进行插入,更新,删除,修改 是很危险的.所以推荐初学者只进行查询操作subroutines子程序功能:封装了程序中经常使用的代码,可以简化代码量

14、.(相当与其他语言的 方法)子程序的定义定义子程序interface1. 参数个数2. 参数类型形式参数与实际参数1) 形式参数: 子程序定义中的参数2) 实际参数: 调用子程序时的参数形式参数的三种方式1. Call-by-value 值传2. Call-by-reference 引用传3. Call-by-value-and-result 值传并带有返回值Call-by-value 值传类型1. 变量首先进行自身拷贝2. 拷贝变量被传到子程序中3. 子程序对拷贝变量的修改不会关系到原变量的变化.Call-by-reference 引用传1. 该传递会将变量的内存地址传送至子程序中2. 子程

15、序会直接操作内存,所以源变量也会随之改变Call-by-value-and-result 值传并带有返回值1. 与值传相同,首先变量自身拷贝,并将拷贝变量传送到子程序中2. 子程序对拷贝变量修改完毕后,会将该拷贝变量重新覆盖回源变量中去注意:修改的值不一定每一次都返回成功.当出现异常错误时,拷贝变量将可能不会返回.子程序的声明在形式参数中:USING Value() 值传CHANGING value() 值传带有返回值USING (推荐:内表形参使用) / CHANGING 引用传子程序定义时的参数类型:1. 简单类型: 一般类型(不可分解)2. 复合类型: 内表类型形参的简单类型1. 指定类

16、型: 例 USING value(f_1) TYPE i.2. 任意类型: 该形参可匹配任何类型 例:USING value(f_1) TYPE ANY. (不推荐, 运行过程中很可能出现类型不一致的运行错误)形参的复合类型重点:复合类型形参必须为特定类型,以访问内部的字段.复合类型的形参 推荐使用 call-reference 引用传作为传递类型.例: 使用内表作为形参, 当调用子程序 并传递 内表参数的时候,由于内表数据量相对较大,使用值传 或值传带返回值都会对内表变量进行拷贝, 这样会降低运行效率.所以使用引用传 可以避免拷贝过程 以 提高效率.但是引用传会使内表被修改.因此推荐 将该引

17、用传 参数 写在 USING 关键字后,以提醒编程人员不要轻易修改.重点:在子程序中定义的变量,只有在子程序中才有效而在主程序中的变量,子程序依然可以调用,但不推荐,因为这样可能会导致程序出现错误,所以在使用子程序时要传入相应参数子程序的调用1. 将子程序从导航中托到主程序中2. 使用 pattern 的 perform选项调用子程序Abap runtime system 运行环境Abap程序是若干处理得块的集合代码块分类1. Event block事件块2. subroutines子程序3. module 块Load-of-program 程序启动时被调用一个报表的运行1. 首先执行load

18、-of-program或initialization.2. 推出选择屏幕3. 用户确定屏幕以后,启动start-of-selection事件4. 通过列表缓冲区,运行环境把列表返回给用户注意:Load-of-program 和 start-of-selection 有且只能触发一次.重点:事件块的特点1. 通过关键字开始2. 事件块的开始意味着上一个事件块的结束3. 每一个事件块执行不同的任务4. 事件块的执行是有顺序的,虽然在编写上没有要求,但建议按照顺序编写5. 标准的事件块Initialization 只能在可执行程序中初始化程序创建报表必须使用start-of-selection事件块

19、List attributes报表功能:可以被打印可以格式化输出(不通的货币和长度单位)输出日期格式根据登陆语言选择特定语言生成一个屏幕列表屏幕的标准功能Back /exit /cancelScrollPrintFineSave一个列表拥有一个list header 和四个 column header.Multilingual capability多语言编程Text-ccc(三位数字)1. Write text-001.2. 双击 text-001 进行创建.3. Goto- translate4. 修改翻译语言5. 使用相应的登陆语言登陆,就会输出相应语言Write语句会将数据写到缓冲区1.

20、 用select 语句取出数据2. 每write一次就会把数据放到缓冲区中3. 当start-of-selection 结束后, 运行环境将会把所有的write skip uline数据全部推到屏幕上Detail listAt line-selection事件1. 在list screen中, 双击记录或者单击并按F2键 会出发at line-selection事件2. 通过该事件,可以生成下一级的报表,通过该报表还可以再生成下一级报表,每一个屏幕都有一个编号. Start-of-selection 所生成的屏幕叫做 basic list screen 其编号为0,而后所生成的屏幕的编号为依次

21、加1.重要: 最大屏幕号为 20, 最多有21层除了第一层在start-of-selection其他的屏幕都在at line-selection后生成Sy-lsind 列表屏幕的索引编号 lsind = list index在detail list使用back按钮 ,可以跳到上一级屏幕重要:当双击list 的数据后, 系统首先将sy-lsind 加1 然后再触发at line-selection用array fetch 很难做双击后的listHide area 隐藏域Hide area隐藏域是系统运行环境中的一张内表.其中包含3个字段1. Line : 标示行号2. Field name: 字段名3. Value : 字段的值隐藏域的使用1. 通过 select endselect 对数据库进行循环查询,2. 通过 write 语句, 打印出basic list screen 中的列表信息3. 通过 hide 语句, 将指定的字段,存放到隐藏域中4. Basic list screen 生成后,用户双击信息行,触发at line-selection 事件,5. 此时,系统将根据该信息行到隐藏域中查找相应字段6. 最后将该字段返回给对应的全局变量的字段中去, 以便于在下一个detail list 中继续使用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1