“如果你已经能够独立完成了ABAP 的“Hello World”程序,发现自己有一定的逻辑思维能力,那么建议你先阅读一下SAP BC400的课程,详细了解一下程序的处理逻辑。(毕竟我们这个课程是玩转系列,不是系统教学。需要的小伙伴可以在文末关注本人微信,索要课程),接下来我们就可以来玩一个更实用的小程序,采用这个程序,可以完成SAP 80%左右的业务需求。”
SAP ALV说白了就是一个数据列表,它的基本逻辑就是“查询-取值-输出”, 其中涉及到的两个小知识点,就是了解1.SAP内表处理逻辑 2.数据库查询逻辑。
Step by Step
—
STEP 1 模板代码复制(可在文末添加笔者微信索取)。
STEP2、修改程序代码 a.选择屏幕字段 b.修改取值逻辑 c.输出结构
STEP3 修改报表抬头信息。
STEP4 保存、检查和激活程序。如果您有任何错误,它们将显示在页面底部。
STEP 5如果未显示任何错误,您可以运行程序。
STEP6: 接下来的屏幕会输出标题和字符串。
选择屏幕
输出结果
相关知识点
—
1 内表处理逻辑
1 了解内部表
•内部表( Internal table )是一个包含相同类型的数据对象的序列。
内部表只在程序运行过程中存在。
•内部表的用途:
–暂时存放从数据库表中读取的数据,以便作进一步的处理
–暂时存放用于显示的清单数据
–作为数据缓冲用于同其他程序进行数据交换
2 内部表的特性
•内部表的行数不是预先定义的,而是动态增长的(每次增长8K)。
•内部表的行类型(LINETYPE)可以是任意一种ABAP数据类型。
•内部表的类型:
–标准表(Standard tables),有一个线性索引,主要通过索引访问。
–排序表(Sorted tables),定义了主键,可以通过主键和索引访问。
–哈希表(Hashed tables),没有索引,只能通过主键访问。
3 内部表的处理关键字
•APPEND:将工作区的内容添加到内部表的末尾
•INSERT:将工作区的内容添加到内部表指定的位置(行号)
•COLLECT:比较非数值型字段,将数值型字段累加到内部表中
•MODIFY:将工作区的内容覆盖内部表指定的行
•DELETE:从内部表中删除指定的行
•LOOP AT:将内部表的数据逐行读到工作区中
•READ TABLE:将内部表的某一特定行的数据读到工作区中
•SORT:对内部进行排序
•CLEAR:清除工作区的内容
•REFRESH:删除内部表中的所有记录
系统变量SY-TABIX可以表示内部表当前所在行
2 数据库查询逻辑
1两种方式访问数据库
•在ABAP程序中,可以通过两种方式访问数据库
–OPEN SQL:标准SQL的子集,与ABAP完全集成,具有数据库无关性,数据库接口会自动将其转换为所使用的数据库的标准SQL。
–NATIVE SQL:与数据库相关,使用数据库提供的标准SQL,不经过数据库接口的语法检查和转换。
•避免使用NATIVE SQL
2 OPEN SQL访问介绍
•OPEN SQL只包含数据操作语言(DML),数据定义语言(DDL)通过ABAP字典对象控制。
•通过OPEN SQL可以执行的操作:SELECT、UPDATE、INSERT、DELETE、MODIFY
•可以通过系统变量SY-SUBRC判断操作成功与否,SY-SUBRC = 0表示执行成功,SY-SUBRC <> 0表示执行不成功,更详细的信息请参考在线帮助文档。
3 SAP SQL基本格式
•SELECT子句用于确定读取什么数据–结果包含那些字段–需要读取单条记录还是多条记录(SINGLE)–结果是否可以包含重复记录(DISTINCT)
•INTO子句表示读取的数据放入内存的什么位置(变量、工作区、内部表)•FROM子句表示数据源(表或者视图)
•WHERE子句表示记录必须满足的条件
4 SAP SQL读取方式
•可以使用SELECT SINGLE读取单条记录,要确保读出的记录是唯一的,需要在WHERE语句中判断所有主键。
•如果不使用SINGLE关键字,则读取所有满足WHERE条件的记录,读取方式有两种:
–以循环的方式逐行读入目标区域,需要有ENDSELECT语句配合使用。
–使用SELECT … INTO TABLE语句,一次将所有满足条件的记录读入内部表中,没有使用循环,不需要ENDSELECT。这种方式读取数据比前一种有更高的效率。
•在INTO子句中,可以使用CORRESPONDING FIELDS OF,系统只填充有相同名称的字段,如果不使用,则按照从左向右的顺序填充。
•在字段清单和WHERE子句中,只需指定字段名称,不需指定表名称。•WHERE子句中可以使用AND或OR实现复杂的逻辑条件。
•SELECT *语句读取透明表的所有字段,可以没有INTO子句,但是必须使用TABLES声明透明表。
5 SAP SQL表链接方法
•可以使用JOIN连接多个透明表进行查询。
–INNER JOIN
–LEFT OUTER JOIN
–RIGHT OUTER JOIN
•透明表可以使用别名。
•字段如果只存在于一个表中,不需要指定表名称
<扫描下面二维码,可添加笔者个人微信。任何问题也可直接在下方评论区留言,将一一解答>
点我留言(小程序功能,可能需要授权第一次使用,设置错误了)