当前位置:网站首页>ALV报表流程图解

ALV报表流程图解

2022-07-26 05:03:00 月阴荒

https://zhuanlan.zhihu.com/p/355316708

写一个ALV报表的步骤如下:
1.声明需要用到的变量

TABLES: mseg , mkpf  , ztmm063h ,  mara , makt , ekpo , ekko ,ztbc120h.

2.定义屏幕的各种选项:

例如

SELECT-OPTIONS :	 s_mblnr FOR mseg-mblnr,
									 s_budat FOR mkpf-budat,
									 s_werks FOR mseg-werks,
									 s_lgort FOR mseg-lgort,
									 s_matnr FOR mara-mathn,
									 s_charg FOR ztmm063h-charg,
									 s_ebeln FOR ekpo-ebeln,
									 s_lifnr FOR mseg-lifnr.
SELECT-OPTIONS END OF BLOCK b1.	 

3.引用输出结构

DATA: gt_alv TYPE TABLE OF zsmm141a_alv,
			gwa_alv TYPE zsmm141a_alv.

4.定义数据加工逻辑

START-OF-SELECTION.
	PERFORM frm_get_data.

在这里插入图片描述

相关知识点

内部表

内部表是一个包含相同类型的数据对象的序列。
内部表只在程序运行过程中存在。

1.内部表的用途:
暂时存放从数据库表中读取的数据,以便作进一步的处理
暂时存放用于显示的清单数据
作为数据缓冲用于同其他程序进行数据交换

2.内部表的特性
内部表的行数不是预先定义的,而是动态增长的(每次增长8K)
内部表的行类型(LINETYPE)可以是任意一种ABAP数据类型。

3.内部表的类型:
标准表,有一个线性索引,主要通过索引访问。
排序表,定义了主键,可以通过主键和索引访问。
哈希表,没有索引,只能通过主键访问。

4.内部表的处理关键字
APPEND: 将工作区的内容添加到内部表的末尾
INSERT: 将工作区的内容添加到内部表指定的位置(行号)
COLLECT: 比较非数值型字段,将数值型字段累加到内部表中
MODIFY: 将工作区的内容覆盖内部表指定的行
DELECT: 从内部表中删除指定的行
LOOP AT: 将内部表的数据逐行读到工作区中
READ TABLE: 将内部表的某一特定行的数据读到工作区中
SORT: 对内部进行排序
CLEAR: 清楚工作区的内容
REFRESH:删除内部表中的所有记录

数据库

在ABAP程序中,可以通过两种方式访问数据库

OPEN SQL :标准SQL的子集,与ABAP完全集成,具有数据库无关性,数据库接口会自动将其转换为所使用的的数据库的标准SQL。

NATIVE SQL: 与数据库相关,使用数据库提供的标准SQL,不经过数据库接口的语法检查和转换。

避免使用NATIVE SQL

OPENSQL访问介绍

OPENSQL只包含函数据操作语言DML,数据定义语言DDL通过ABAP字典对象控制。

通过OPEN SQL可以执行的操作:SELECT , UPDATE , INSERT , DELETE , MODIFY

可以通过系统变量SY-SUBRC判断操作成功与否,SY-SUBRC = 0 表示执行成功 , SYBRC <>0 则表示执行不成功,
更详细的信息参考在线帮助文档

SAP SQL基本格式

SELECT子句用于确定读取什么数据-结果包含哪些字段-需要读取单挑记录还是多条记录(SINGLE)-结果是否可以包含重复记录(DISTINCT)

INTO子句表示读取的数据放入内存的声明位置(变量,工作区,内部表)FROM子句表示数据源(表或者视图)

SAP SQL读取方式

可以使用SELECT SINGLE读取单条记录,要确保读出的记录是唯一的,需要在WHERE语句中判断所有主键

如果不适用SINGLE关键字,则读取所有满足WHERE条件的记录,读取方式有两种:

1.以循环的方式逐行读入目标区域,需要由ENDSELECT语句配合使用。

2.使用SELECT…INTO TABLE 语句,一次将所有满足条件的记录读入内部表中,没有使用循环,步需要ENDSELECT。这种方式读取数据比前一种由更高的效率。

3.在INO子句中,可以使用CORRENPSONDING FIELDS OF , 系统只填充由相同名称的字段,如果不适用,则按照从左向右的顺序填充

4.在字段清单和WHERE子句中,只需指定字段名称,不需指定表名称。•WHERE子句中可以使用AND或OR实现复杂的逻辑条件。

5.SELECT *语句读取透明表的所有字段,可以没有INTO子句,但是必须使用TABLES声明透明表。

SAP SQL表链接方法

可以使用JOIN连接多个透明标进行查询
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
透明表可以使用别名。
字段如果只存在于一个表中,不需要指定表名称

原网站

版权声明
本文为[月阴荒]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43847969/article/details/125946268