SAPQuery应用(2009-02-0910:38:35)QUERY是SAP的一项简单报表工具,它可为没有编程基础的用户用来生成简单的报表。第一次接触QUERY的时候,感觉也不是很复杂,因为它有图形化的界面,你可在上面托托拽拽,然后就可以见到你要的报表,可是这只是简单的应用,其实每个工具功能都是比较完善的,QUERY也不例外。要全面的理解QUERY,首先看一下QUICKVIWER。事务代码:SQVI。我感觉这是QUERY的一个简化,大体流程基本一致,但是在许多方面的功能都“缩水“了。体现如下:1。QuickViewer所生成的报表是用户自定义的报表,只能由此用户自己使用、维护2。QuickViewer只能使用存于数据库内的数据,不能进行计算(除小计、累计)3。提供与SAP内部工具如EIS,ABC,ALV及外部工具如Word,Excel借口4。无须也无法利用用户组、Functionalarea统一管理5。无法传输比较而言,QUERY就比较完善了,可是做起来也比较麻烦一下:1。生成用户组SAP菜单→工具→ABAP工作台→实用程序→SAP查询→用户组T-Code:SQ032。创建Functionalarea(功能区)SAP菜单→工具→ABAP工作台→实用程序→SAP查询→信息集T-Code:SQ023。创建SAPQuerySAP菜单→工具→ABAP工作台→实用程序→SAP查询→查询T-Code:SQ01这些组件之间的关系有:1。Query的管理包括建立Functionalarea(功能区)和UserGroup(用户组),并将功能区分配到相应的用户组中去。2。Functionalarea(功能区)中定义query中需引用的表和字段。3。只有当一个用户属于至少一个用户组才可以创建、运行Queries。一个用户可以属于几个用户组。用户组中的用户享有相同的权力。4。当Functionalarea(功能区)分配给了某用户组,该用户组的成员即可以访问此功能区。SAPquery应用指南SAPQuery操作手册QUERY是SAP提供的方便无编程基础用户的报表工具,使用图形化的界面,让用户托托拽拽就能轻松完成报表编写。Query的操作简单,包括建立用户组、建立信息集和建立查询报表,分别对应Tcode:SQ01/SQ02/SQ03,下面以资产全息查询报表的建立介绍Query操作的完整理步骤。一.建立Query用户组(Tcode:SQ03)如上图,你可能为各个模块建立查询报表,这些报表和SAPTcode一样需要进行权限控制。[1].走菜单环境-查询区域可选择查询的工作区,标准区域表示特定client(译成客户真是有才),全局区域则表示该用户组是跨client端的,大家知道同一SAPServer可允许多个client存在,象标准的ABAP程序就是跨client的,SAP已经为各模块预制了很多跨Client的查询,资产查询比较多,此处选择特定client,特定client查询不会连接到SAP工作台组织器(WorkbenchOrganizer),可使用程序RSAQR3TR进行传输。[2].传输用户组,调用程序RSAQR3TR,也可以直接使用SE38执行RSAQR3TR传输,稍后详细介绍如何传输。[3].建立用户组名为ZFICO。[4].将用户组分配到SAP用户,比如将需要使用查询的财务关键用户和最终用户的SAP用户帐号分配到该用户组。二.建立信息集(Tcode:SQ02)信息集是数据集的特定视图,数据集主要来自多表连接或逻辑数据库,建立信息集如下图:[1].假设建立信息集ZFIAM001,建立信息集时,用户可自由选择基于表还是基于逻辑数据库,本例使用到资产相关表格ANLA,ANLB,ANLC,ANLU,ALNZ共5个表。[2][3].按“角色/用户组分配”按钮将信息集分配到用户组ZFICO,你可将一个信息集分配给多个用户组,比如投资项目管理组用户也希望看到该资产查询。到此,信息集-Query用户组-SAP用户就关联起来了。介绍一下信息集的详细建立步骤,分abc三个步骤:a.添加信息集Table新建信息集ZFIAM001的数据源选择“使用基础表进行表连接”,输入表ANLC,进入后到下图:[1][2].按此图标添加表,新增表ANLA,ANLB,ANLU,ANLZ,系统自动形成表间的连接,注意添加表不能添加象BSEG一样的簇表。*从数据存储角度,SAPtable分透明表(TransparentTable),簇表(Clustertable)和池表/共享表(Poolertable).[3].你还可以使用别名表,当一个查询重复用到同一个表时,可使用别名表。表表之间的连接分两种:内部连接和左外连接,熟悉数据库的一定对此非常了解,将各表的连接条件接下来,点击”信息集合”按钮正式建立信息集,如下图,进入步骤b。b.建立信息集[1].按此按钮正式生成一个信息集。[2].按“附加”按钮可增加附加Table和字段,有人问,在此附加Table和上一步的添加信息集表有什么不同呢?在添加信息集表时实际上各表是存在关联关系的,如果需要从某个不大能相互关联的表中取得一个字段,例如,需要取资产购置的供应商名称,那么可以将供应商表LFA1作为附加表,通过资产主数据表ANLA-LIFNR查找LFA1-NAME1,当然,也可直接使用附加字段,然后通过代码获取供应商名称。[3].在Query中允许增加ABAP代码,当存在附加表和附加字段时尤其重要。[4].假设新增了以下几个字段,其中包括本年已提折旧,年初累计折旧和当前累计折旧(当前累计折旧=本年已提折旧+年初累计折旧);本年已提减值,年初累计减值和当前累计减值(当前累计减值=本年已提减值+年初累计减值)等。[5].信息集的字段组和每个字段组的数据字段,在建立信息集时系统会提示如下图的三个选择,选择包括所有表字段,则信息集将包含所有的表的所有字段,实际上,查询并不涉及所有表的所有字段,因此,通常人们会选择”创建空字段组”,系统默认为每个表建立一个默认不包括任何表字段的空字段组,然后,由创建者自行添加各表所需字段。*有的人还可能喜欢将所有的默认空字段组删除,另外只建立一个空字段组包括所有的查询所需字段,如果设计表较多,本人不大推崇此法。依次将各表所需字段添加到对应字段组,并将附加字段全部填加到附加字段组。[6].按“连接”可回到步骤a去修改表连接或新增表。C.为附加字段添加代码如下图,除了自定义代码,你还可在“选择”屏自定义选屏字段。自定义代码如下表,注意“代码部分”选择的是”5记录处理“,在这里编写代码可以使用信息集中的任何表来编写逻辑:ZCDL=ANLA-GDLGRP(2).资产大类ZCEL=ANLA-GDLGRP(4).资产小类IFANLB-AFABE'04'.04表示税务折旧BNZJ=ANLC-NAFAG+ANLC-SAFAG.NCZJ=ANLC-KNAFA+ANLC-KSAFA.ZCLJZJ=NCZJ+BNZJ.BNJZ=ANLC-AAFAG.NCJZ=ANLC-KAAFA.ZCLJJZ=BNJZ+NCJZ.ENDIF.ZCYZ=ANLC-KANSW+ANLC-ANSWL.编写代码完毕后,就可以生成信息集了。注意下列表ANLC的以下几个字段:*ANLC-NAFAG:记帐在当前年的正常折旧(本年计提累计数)*ANLC-SAFAG:在当前财会年度中的记帐的特别折旧(本年计提累计数)*ANLC-AAFAG:有关年的计划外折旧记帐(本年计提累计数)*ANLC-KNAFA:累计正常折旧(年初累计数)*ANLC-KSAFA:累计特殊折旧(年初累计数)*ANLC-KAAFA:累积计划外折旧(年初累计数)SAP的折旧包括普通的正常折旧和两种手工折旧:特殊折旧和计划外折旧,ANLC类似资产的价值汇总表,类似FI模块的GLT0,在设计上,SAP将资产的各种价值分成了年初(累计)数和本年累计数,因此有下列公式:当前累计折旧=本年已提折旧+年初累计折旧(包括正常折旧和特殊折旧)当前累计减值=本年已提减值+年初累计减值(指计划外折旧部分)采用资产重估实现减值的企业,则当前累计折旧包括正常折旧、特殊折旧和计划外折旧三部分,资产减值对应到其它值字段。特别需要指出的是:假设使用计划外折旧做资产减值,如果发生过减值,则Tcode:ABST2FI-AA财务资产模块将出现差异,也就说,财务角度的累计折旧值(类似总帐)和资产模块的累计折旧(类似明细帐)必定对不上,因为ABST2默认AA的累计折旧包括正常折旧、特殊折旧和计划外折旧3部分,如果没有其它情况,FI-AA的差异恰好就是减值部分。认识资产价值浏览器(Tcode:AW01N),如下图:[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月的折旧,如下图。SE16查看表结果如下,可以发现一项资产在每个会计年度每个折旧范围有一条记录。关于资产价值表ANLC字段多多,读者可以仔细去研究一番,现在举一个业务实例来说明如何处理ANLC的相关价值字段。业务背景:2006年月,资产模块“固定资产减值准备”195,431,100元导入到单项资产上时方向错误,应为负数但错误地导入为正数!?导致FI与AA数据不符(Tcode:ABST2检查)。原因分析:资产期初数据导入大家都喜欢使用两个Tcode:AS91/OASV,此处就不细讲,下图是AS91输入接管价值的画面。[1].累计购置价值即资产的原值。[2].3个累计折旧实际上表示年初数(或上线初的,如果是年中上线)累计折旧。[3].已记一般折旧表示本年度已提折旧。从上图中,可以看到初始净值为8680,怎么计算出来的呢?AW01N看一下该资产的价值,如下图。现在可能你有一个问题,为什么在接管价值中3个折旧都是输入正值,为了只有累计折旧反而成了负数呢?为了解答这个问题,首先看一下关于折旧方式的配置,如下图:(Tcode:OABN/OABS/OABU)。现在可以发现,对于普通折旧,是“仅允许负值和零值”的,系统默认的,也就是说,正常的折旧只能是负值,这里的负值是相对于资产的整体价值而言,正常的累计折旧只能减少资产价值(所以叫负值似乎很怪异),实务中也非常好理解,而且正常的折旧(Tcode:AFAB)也绝对不允许冲销,所以最后一定这样设置,设置了“仅允许负值和零值”,在接管价值中无论如何输入(实际上只能输入一正值,这样引起了混淆),在AW01N资产价值