基本概念
QUERY是SAP的一项简单报表工具,它可为没有编程基础的用户用来生成简单的报表。它有图形化的界面,你可在上面托托拽拽,然后就可以见到你要的报表,可是这只是简单的应用,其实每个工具功能都是比较完善的,QUERY也不例外。
1. 生成用户组
SAP菜单→工具→ABAP工作台→实用程序→SAP查询→用户组
T-Code:SQ03
2。创建Functional area(功能区)
SAP菜单→工具→ABAP工作台→实用程序→SAP查询→信息集
T-Code:SQ02
3。创建SAP Query
SAP菜单→工具→ABAP工作台→实用程序→SAP查询→查询
T-Code:SQ01
2. 这些组件之间的关系有:
1。Query的管理包括建立Functional area(功能区)和User Group(用户组),并将功能区分配到相应的用户组中去。
2。Functional area(功能区)中定义query中需引用的表和字段。
3。只有当一个用户属于至少一个用户组才可以创建、运行Queries。一个用户可以属于几个用户组。用户组中的用户享有相同的权力。
4。当Functional area(功能区)分配给了某用户组,该用户组的成员即可以访问此功能区。
5。一个Functional area(功能区)可以分配给多个用户组;多个Functional area(功能区)可以分配给一个用户组。
6。Queries通常为特定的用户组和特定的功能区而建立。这个用户组的用户可以访问所有分配给这个用户组的Queries。
3. 还有一点值得注意,在QUERY的管理时,有这样的概念:
标准区(Standard Area): 建立在标准区的查询往往用以满足特定用户的特定需求,因此属于Client独立(client-specific)的查询。这些查询不会连接到SAP工作台组织器(Workbench Organizer)上。
全局区域(Global Area): 建立在全局区域的查询是为整个系统开发的,因此属于Client交叉(cross-client)的查询。这些查询会在SAP 工作台组织器(Workbench Organizer)上注册,可以利用正常的流程传输到其他系统中。
这里提到的标准区的INFOSET,就是指QUICKVIWER中的一个数据源InfoSet(信息集),而全局区域的InfoSet是不支持QUICKVIWER的。
操作步骤
1. 建立用户组
截此为止,SQ03的工作已完成。
下一步: SQ02
这里有几个选项,我们常用的一般是前3项。
在这里我们想做一个基于航班及其计划的报表(可能要很多报表,而不是一个),
我们需要建立这样一个信息集,能够包含所出报表的各种信息,而这些信息可能来自多个表格。
基础表格连接方式:
添加新表后,系统会自动判断表之间的联系,用线联系起来,当然,如果有些联系不正确,我们可以右键删除。
如果要添加连接(也就是2个表的关联字段),则可以拖动一个表的字段到另外一个表的字段上,中间的连接线就自动出现了。
选项1:系统将把所有表的字段放到信息集里
选项2:系统将把表的关键字段放到信息集里
选项3:自定义字段
我们选择创建空字段组
在屏幕左侧出现的是表,右侧是字段组,我们根据需要建立自己的字段组,可以删除也可以改名,右键功能即可操作。我们将建立一个字段组名为“航班”
在做Query时,我们很容易遇到添加报表显示列的情况,无论是文本还是数字。就这个例子来讲,我们将添加一个“剩余座位”字段,单击“附加”按钮
在这个屏幕里,有几个选项,对于应用顾问来讲,我们通常选择附加字段。
因为如果附加表格会用到相对比较多的代码,对于不熟悉ABAP语言的人并不合适。
然后保存代码
并检查。
然后按后退按钮,根据提示保存并生成功能区。
然后单击 角色/用户组分配
选择开始建立的用户组,然后保存
然后进入SQ01建立查询
会出现如下屏幕
选择您配置的信息集。
如果界面中没有出现您刚做过的信息集,那需要用SQ03进入,填入信息集对应的用户组,然后回到SQ01中创建查询,这个屏幕里就会出现您刚做过的信息集了。或者通过
来实现显示有权的查询。
然后单击“基本清单”
在左侧,有字段清单和选择字段2列,众所周知,报表是要有选择条件和输出列的,
选择条件就是选择字段,输出列就是字段清单。这里单击区分先后顺序,先单击的出现在前面,后单击的出现在后面。你可以自己做一下测试。
操作后,可以保存。
然后退出程序返回SQ01界面,按F8执行此报表。
截此为止,最简单的Query就做完了。
ALV 输出是我们最常用的方式,它不仅灵活而且拥有保存变式、小计、汇总等多种功能,例如我们对同一航线承运人ID、起飞机场、目的机场进行座位小计,效果如下
当然我们可以针对这种格式保存为变式,下次进来时直接用这种方式
下次进来后,可以选择曾经保存的格式,也可以设为默认格式。这种小计及合计功能,我们也可以在制作Query时来实现。如下图
使用逻辑数据库
简单的讲,逻辑数据库就是系统在特定的业务里,自动关联一些表,我们可以直接使用其中的各种子段而无需考虑其逻辑关联关系。在SQ02新建的界面里,我们选择PNPCE这个逻辑数库,它代表HR主数据,如果HR主数据里包含表格PA0001,PA0002,PA0014,……这些表,我们完全可以不用自己关联这些表格,直接使用PNPCE即可。在F4菜单中,我们可以去选择系统内所有的逻辑数据库,用事物代码SLDB去查看逻辑数据库的帮助。如果这个逻辑数据库有选择屏幕版本,则在F4菜单中就会有选项,例如PNP就会有 000 和900 两个屏幕
我们选择PNPCE
PNPCE包括的信息类型如上,我们可以选择我们需要的类型,例如组织分配和个人数据。
进入维护界面后,就和表关联一样了,可以参考blog上半部分。
在这里,我们可能经常遇到下面的错误:
上图的这种情况就可能会出现错误,进入EN,这里就会有描述。(注:这种情况,我做了几次测试,第一次做时肯定会出现错误,但是用EN登陆做了之后,别的结构如有空项,也不再报错了)
对于熟悉ABAP语言的应用顾问,也可以创建自定义的选择屏幕元素,在SQ02->属性界面里,有个选择项,这里可以创建自定义的选择。然后在代码部分写检查代码。
特别注释:ALV的格式管理功能,是我们在使用Query时最常用的,用户可以自定义自己的报表样式,也可以设置全局变式及默认设置。