FavoriteLoading
0

SAP Query 操作教程

[隐藏]

1, SAP query介绍

QUERY是SAP提供的方便无编程基础用户的报表工具,使用图形化的界面,让用户托托拽拽就能轻松完成报表编写。

我们可以将Query理解成QuickView的高级版本,它在QuickView的基础上增加的功能有:
a、能够实现统计、排序等计算功能
b、提供标准的图形形式显示列表。
c、用户之间能够共享。
d、作为SAP传输系统的一个部分,能够在系统之间传输。

Query的操作简单,包括建立用户组、建立信息集和建立查询报表,分别对应Tcode
:SQ01/SQ02/SQ03,下面以资产全息查询报表的建立介绍Query操作的完整理步骤。

2, 建立Query用户组(Tcode:SQ03)

4936150249e4b66114a68&690

如上图,你可能为各个模块建立查询报表,这些报表和SAP Tcode一样需要进行权限控制。

[1].走菜单环境->查询区域可选择查询的工作区,标准区域表示特定client(译成客户真是有才),全局区域则表示该用户组是跨client端的,大家知道同一SAP Server可允许多个client存在,象标准的ABAP程序就是跨client的,SAP已经为各模块预制了很多跨Client的查询,资产查询比较多,此处选择特定client, 特定client查询不会连接到SAP工作台组织器(Workbench Organizer),可使用程序RSAQR3TR进行传输。

[2].传输用户组,调用程序RSAQR3TR,也可以直接使用SE38执行RSAQR3TR传输,稍后详细介绍如何传输。

[3].建立用户组名为ZFICO。

[4].将用户组分配到SAP用户,比如将需要使用查询的财务关键用户和最终用户的SAP用户帐号分配到该用户组。

3, 建立信息集(Tcode:SQ02)

信息集是数据集的特定视图,数据集主要来自多表连接或逻辑数据库,建立信息集如下图

4936150249e4b6638a94c&690

[1].假设建立信息集ZFIAM001,建立信息集时,用户可自由选择基于表还是基于逻辑数据库,本例使用到资产相关表格ANLA,ANLB,ANLC,ANLU,ALNZ共5个表。

[2][3].按“角色/用户组分配”按钮将信息集分配到用户组ZFICO,你可将一个信息集分配给多个用户组,比如投资项目管理组用户也希望看到该资产查询。

到此,信息集->Query用户组->SAP用户就关联起来了。

介绍一下信息集的详细建立步骤,分abc三个步骤:

3.1, 添加信息集Table

新建信息集ZFIAM001的数据源选择“使用基础表进行表连接”,输入表ANLC,进入后到下图:

4936150249e4b6649dc2b&690

[1][2].按此图标添加表,新增表ANLA,ANLB,ANLU,ANLZ,系统自动形成表间的连接,注意添加表不能添加象BSEG一样的簇表。

*从数据存储角度,SAP table分透明表(Transparent Table),簇表(Cluster table)和池表/共享表(Pooler table).

[3].你还可以使用别名表,当一个查询重复用到同一个表时,可使用别名表。

表表之间的连接分两种:内部连接和左外连接,熟悉数据库的一定对此非常了解,将各表的连

接条件接下来,点击”信息集合”按钮正式建立信息集,如下图,进入步骤b。

3.2, 建立信息集

4936150249e4b66100b74&690

[1].按此按钮正式生成一个信息集。

[2].按“附加”按钮可增加附加Table和字段,有人问,在此附加Table和上一步的添加信息集表有什么不同呢?在添加信息集表时实际上各表是存在关联关系的,如果需要从某个不大能相互关联的表中取得一个字段,例如,需要取资产购置的供应商名称,那么可以将供应商表LFA1作为附加表,通过资产主数据表ANLA-LIFNR查找LFA1-NAME1,当然,也可直接使用附加字段,然后通过代码获取供应商名称。

[3].在Query中允许增加ABAP代码,当存在附加表和附加字段时尤其重要。

[4].假设新增了以下几个字段,其中包括本年已提折旧,年初累计折旧和当前累计折旧(当前累计折旧=本年已提折旧+年初累计折旧);本年已提减值,年初累计减值和当前累计减值(当前累计减值=本年已提减值 + 年初累计减值)等。

[5].信息集的字段组和每个字段组的数据字段,在建立信息集时系统会提示如下图的三个选择,选择包括所有表字段,则信息集将包含所有的表的所有字段,实际上,查询并不涉及所有表的所有字段,因此,通常人们会选择”创建空字段组”,系统默认为每个表建立一个默认不包括任何表字段的空字段组,然后,由创建者自行添加各表所需字段。

*有的人还可能喜欢将所有的默认空字段组删除,另外只建立一个空字段组包括所有的查询所需字段,如果设计表较多,本人不大推崇此法。

4936150249e4b660ae0c9&690

依次将各表所需字段添加到对应字段组,并将附加字段全部填加到附加字段组。

[6].按“连接”可回到步骤a去修改表连接或新增表。

3.3, 为附加字段添加代码

如下图,除了自定义代码,你还可在“选择”屏自定义选屏字段。

4936150249e4b662b63d5&690

自定义代码如下表,注意“代码部分”选择的是”5 记录处理“,在这里编写代码可以使用

信息集中的任何表来编写逻辑:

编写代码完毕后,就可以生成信息集了。

3.4, 一点FICO模块知识

注意下列表ANLC的以下几个字段:

*ANLC-NAFAG:记帐在当前年的正常折旧(本年计提累计数)
*ANLC-SAFAG:在当前财会年度中的记帐的特别折旧(本年计提累计数)
*ANLC-AAFAG:有关年的计划外折旧记帐(本年计提累计数)
*ANLC-KNAFA:累计正常折旧(年初累计数)
*ANLC-KSAFA:累计特殊折旧(年初累计数)
*ANLC-KAAFA:累积计划外折旧(年初累计数)

SAP的折旧包括普通的正常折旧和两种手工折旧:特殊折旧和计划外折旧, ANLC类似资产的价值汇总表,类似FI模块的GLT0, 在设计上,SAP将资产的各种价值分成了年初(累计)数和本年累计数,因此有下列公式:

当前累计折旧=本年已提折旧+年初累计折旧(包括正常折旧和特殊折旧)

当前累计减值=本年已提减值 + 年初累计减值(指计划外折旧部分)

采用资产重估实现减值的企业,则当前累计折旧包括正常折旧、特殊折旧和计划外折旧三部

分,资产减值对应到其它值字段。

特别需要指出的是: 假设使用计划外折旧做资产减值,如果发生过减值,则Tcode:ABST2 FI-AA财务资产模块将出现差异,也就说,财务角度的累计折旧值(类似总帐)和资产模块的累计折旧(类似明细帐)必定对不上,因为ABST2默认AA的累计折旧包括正常折旧、特殊折旧和计划外折旧3 部分,如果没有其它情况,FI-AA的差异恰好就是减值部分。

认识资产价值浏览器(Tcode:AW01N),如下图:

4936150249e4b6620815b&690

[1].资产浏览器中,将资产价值分为计划价值和实际过帐值,计划价浏览时的会计年度可选择上线初年度直到资产折旧完毕的年度; 这样可以预测出未来的折旧值,实务中很有意义,比如与投资管理模块和获利分析模块(计划版本)结合,可以预测出未来会计年度的折旧费用,从而计算出RoI。

而实际过帐值只能选上线初年度直到本年度,这个非常好理解,假设是2008年12期,过帐值是不能显示2009年度的价值,直到你做了资产年结(Tcode:AJRW/AJAB),资产年度的一大作用就是,将上年的价值作为下年的年初值,这点类似F.16/F.07年结,只不过是,每个资产在一会计年度的每个折旧范围只在ANLC中保留一条记录,并不是按期间保留的。

[2].资产的各种价值:APC原值,三种折旧值,增记,价值调整和帐面净值,后面还有预付定金和资产残值。固定资产通常有以下三种计价方法:

(i) 原始价值

(ii)重置价值(重新评估,可增值或减值,评估减值和计提减值应有区别)

(iii)净值或折余价值

国内资产负债表上有以下公式:

固定资产净值(折余价值)=固定资产原始价值或重置价值- 累计折旧

固定资产净额=固定资产原价-累计折旧-固定资产减值准备

显然,SAP将资产价值管理区分的更细,注意一下,“会计年度开始”列表示上年累计

也即本年年初数,“更改”列表示本年累计数。常规折旧行的“更改“数为9167.43元(2008年全年的计划正常折旧额,对应字段ANLC- NAFAP)。

再看实际过帐屏,常规折旧行的“更改“实际数为1527.90元(2008年1-2月实际正常折旧过帐金额, 对应字段ANLC- NAFAG),这是2008当年的折旧实际过帐值,正好是1-2月的折旧,如下图。

4936150249e4b66173c9a&690

SE16查看表结果如下,可以发现一项资产在每个会计年度每个折旧范围有一条记录。

4936150249e4b65f83cec&690

关于资产价值表ANLC字段多多,读者可以仔细去研究一番,现在举一个业务实例来说明如何处理ANLC的相关价值字段。

业务背景

2006年月,资产模块“固定资产减值准备”195,431,100元导入到单项资产上时方向错误,应为负数但错误地导入为正数!?导致FI与AA数据不符(Tcode:ABST2检查)。

原因分析:

资产期初数据导入大家都喜欢使用两个Tcode:AS91/OASV,此处就不细讲,下图是AS91输入接管价值的画面。

4936150249e4b66351a93&690

[1].累计购置价值即资产的原值。

[2].3个累计折旧实际上表示年初数(或上线初的,如果是年中上线)累计折旧。

[3].已记一般折旧表示本年度已提折旧。

从上图中,可以看到初始净值为8680,怎么计算出来的呢?AW01N看一下该资产的价值,如下图。

4936150249e4b65fd94c8&690

现在可能你有一个问题,为什么在接管价值中3个折旧都是输入正值,为了只有累计折旧反而成了负数呢?为了解答这个问题,首先看一下关于折旧方式的配置,如下图:(Tcode:OABN/OABS/OABU)。

493615020763abd655bb3&690

现在可以发现,

对于普通折旧,是“仅允许负值和零值”的,系统默认的,也就是说,正常的折旧只能是负值,这里的负值是相对于资产的整体价值而言,正常的累计折旧只能减少资产价值(所以叫负值似乎很怪异),实务中也非常好理解,而且正常的折旧(Tcode:AFAB)也绝对不允许冲销,所以最后一定这样设置,设置了“仅允许负值和零值”,在接管价值中无论如何输入(实际上只能输入一正值这样引起了混淆),在AW01N资产价值中它又只能是作为负数,冲减资产价值。

对于特殊折旧,是“允许的所有值”,输入正数后,因为允许所有值,则反映在资产价值上它就真的作为正值去增加资产价值,如果输入负数,则反映在资产价值上减少资产价值。

对于计划外折旧,如果设置的是“允许的所有值”,它输入正值,则反映在资产价值上就真的是正值,增加了资产价值,如果设置的是“仅允许负值和零值”,则反映在资产价值上一定是减少资产价值。

现在根本原因找到,也就是说,使用计划外折旧做资产减值,并且计划外折旧折旧范围过帐选择的是“允许的所有值”,输入正值后才造成本来该减值的东西变成增加资产价值。

普通折旧可设置“仅允许负值和零值”,特殊折旧是用来调整折旧的,所以它必须允许所有值,对于计划外折旧,我们知道新准则规定:固定资产减值不允许转回,设置“仅允许负值和零值”不正好防止计提资产减值准备计提反了吗?理论上是,我于是如此这般设置了,不久,有家企业打电话过来,他家很多资产计提了减值准备,但审计说不合理,现在要冲销,哈哈,因为设置了“仅允许负值和零值”,冲销不可以做,自找麻烦,哎,还是允许所有值好!

也就是说,OABN/OABS/OABU都是针对折旧对资产总价值的递增(仅允许正值,折旧只能递增资产价值,如在建工程转暂估资产,等在建工程完毕后发现暂估资产高估,则使用特殊折旧来减少折旧,也就是资产价值增加)/递减(仅允许负值,折旧只能递减资产价值,比如已折旧的暂估资产低估,在建工程完毕后再转资则需要补提折旧,,也就是资产价值减少)的。

处理方案

I. 修改计划外折旧,设置的是“允许的所有值”,

II. 如果必要,修改ANLC表从2006到当年的2008的计划外折旧(减值)字段,资产年结已将资产减值作为年初数分别带到2007和2008。

如何设置报表按月查询折旧?

单个资产涉及的主要表格分两类:一是资产主数据,一是资产业务数据。

单个资产主数据相关表格(主数据):

ANEA:比例值的资产行项目

ANLA:资产主记录段

ANLB:折旧期限

ANLC:资产值字段

ANLH:主资产号

ANLZ:时间相关资产分配

资产凭证/会计凭证(业务数据):

ANEK:凭证抬头资产过帐

ANEP:资产行项目

BKPF:会计凭证抬头

BSEG:会计凭证行项目

思路:ANLC再加ANEK/ANEP, ANEK/ANEP纪录了资产每个月的折旧情况。

4, 建立查询(Tcode:SQ03)

建立查询首先按下图[1]选择一用户组,然后按[2]创建,选择该用户组下的信息集

ZFIAM001(注意用户组下可针对各模块建立多个信息集),建立查询也叫ZFIAM001(可以针对一个信息集根据不同需求建立多个查询)。

4936150249e4b6623f127&690

4936150249e4b660e2b77&690

一直按clip_image030[6]到选择字段屏幕,表示将该查询将从信息集中选择这些字段内容,如上图,然后再按clip_image030[7],进入下图。

4936150249e4b65fe2a97&690

[1].选择字段前面打勾,表示查询将使用这些字段做屏幕选择,并且给这些屏幕选择字段设置排序位置,如业务范围为1,则表示为选择屏幕的第一个选屏条件字段。

[2].接下来选择“基本清单“标志,为查询选择显示的字段,见下图。

4936150249e4b6613bf67&690

基本清单实际上设置查询结果的显示格式。

[1].选种表示查询结果将显示这些字段内容。

[2].到此,可以选择测试按钮测试sap query了,测试出现的选择屏幕如下图,注意业务范围正是第1个选择字段。如果各步骤正确,运行就能得到正确的查询结果!

4936150249e4b662e9647&690

5, 为查询建立Tcode(Tcode:SE93)

首先,走菜单查询->其他功能->生成程序,然后显示报表名称。

493615022e2ef1fcbe2dd&690

SE93,建立Tcode:ZFIAM001,开始对象如下图选择.

4936150249e4b660cdb44&690

进入下图:

493615020763abd6de4af&690

[1].输入查询ZFIAM001对应的自动程序名称。

[2].输入开发类,为该Tcode产生一个传输请求,可以传输到生产系统。

[3].测试一下,结果和直接使用sq01运行查询ZFIAM001一样。

6, 关于SAP query的几个总结

A.sq03建立用户组,一个用户组query可包含多个sap登录用户,一个sap用户也可被分配到多个Sap query用户组。

B.sq02建立query信息集,一个信息集可以分配给多个用户组或角色,一个信息集通常是从多个相互连接的表或逻辑数据库中取数,信息集从这些关联表中获取字段或自定义附加字段。

C.sq03建立查询,一个信息集可根据需要建立多个查询,查询的字段从信息集获取。

想象一下,信息集涉及10个数据库表,每个表250个字段,信息集从各表中共选择出250个常用字段,而查询1只用到其中25个字段,查询2…,查询n全部用到信息集的250字段。

以上。