美文网首页SAPSAP 实用篇
玩转SAP ABAP|写出你的ALV报表

玩转SAP ABAP|写出你的ALV报表

作者: syjf1976_abap | 来源:发表于2021-03-10 06:55 被阅读0次

    如果你已经能够独立完成了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

    •透明表可以使用别名。

    •字段如果只存在于一个表中,不需要指定表名称

    <扫描下面二维码,可添加笔者个人微信。任何问题也可直接在下方评论区留言,将一一解答>

    相关文章

      网友评论

        本文标题:玩转SAP ABAP|写出你的ALV报表

        本文链接:https://www.haomeiwen.com/subject/hftuqltx.html