SAP 特别总帐一日通.docx

上传人:b****8 文档编号:23813030 上传时间:2023-05-21 格式:DOCX 页数:26 大小:889.90KB
下载 相关 举报
SAP 特别总帐一日通.docx_第1页
第1页 / 共26页
SAP 特别总帐一日通.docx_第2页
第2页 / 共26页
SAP 特别总帐一日通.docx_第3页
第3页 / 共26页
SAP 特别总帐一日通.docx_第4页
第4页 / 共26页
SAP 特别总帐一日通.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

SAP 特别总帐一日通.docx

《SAP 特别总帐一日通.docx》由会员分享,可在线阅读,更多相关《SAP 特别总帐一日通.docx(26页珍藏版)》请在冰豆网上搜索。

SAP 特别总帐一日通.docx

SAP特别总帐一日通

特别总帐一日通

特别总帐(SpecialPurposeLedger)

SAP的应用和实施其实远不象传说中的那么神秘,特别是现在相信ERP的概念已经深入”民心”,不象多年前你实施一个ERP项目甚至还得负责企业用户的基本电脑操作培训.

我做ERP开发已经近十年了,第一次听说SAP应该是98年,那时我在修补BAAN,我的第一印象就是听说干SAP的待遇其高.

我开始接触SAP是2004年下年,我的感觉是其实SAP的应用不过如此,最搞笑的是似乎很多人已经忘却了SAPTMD首先也是一个软件系统,既然这样,相对ERP设计来讲,它的应用和实施本来就应该不是复杂的,一个系统本来就应该是Keepusageassimplyaspossible,而设计才应该是Considerbusinessprocessascomplexaspossible,除非你设计的ERP的系统专门只为了解决某行业的某企业的某阶段的某些问题.

有人说俺杀猪的还没领悟SAP的精髓(注,精髓此二字是他们经常挂在嘴边的,不过估计他们是自己也没搞清楚,如果没错的话,我记得猪呀牛的只有骨髓,你硬要说我没吃过骨髓那就真的是诬陷).

我和老婆讲,每天起床不用浪费时间折被子吧,这晚上不又要铺下来吗?

老婆回答:

如果今天你不折被子,明天你又会找借口说睡觉不用洗脚吧,反正洗完了又会变脏,如果不会或没有变脏又何苦洗,这叫生活规则,懂啵?

这个问题正好回答为什么SAP应用如此简单可是你企业却要耗费巨资去请顾问,这就是游戏规则.

一位学者这样阐述人生的3重境界,第1重:

见山是山,见水是水,第2重:

见山不是山,见水不是水,第3重是:

见山仍是山,见水仍是水.企业ERP的应用也该如此,第1,ERP是一个信息系统,第2,ERP是一个(辅助)管理系统,第3,ERP是一个信息系统.

有位兄弟说了一句话:

不上ERP是等死,上了是找死.如果你从这个角度来讲,就很容易理解,之前国内大部分企业都是经过多年计划经济时代的国企,管理水平如何我不多说,我应用台湾张五常的一句话:

国企不倒,天理难容.

如果你的企业要靠ERP来代退人管理,一个企业吹嘘上了ERP后堵住了资金黑洞,另一个企业更得意上了ERP后采购猫腻没了,真是I服了U,这是什么跟什么呀,就不多评论了.

一个真正的高管理水平的公司应该将ERP看成一个信息系统,能及时提供正确数据的信息系统(管理决策还是靠人),管理应已成习惯,无为而治,MD,现在好好再宰两年SAP以后再慢慢来吹,等以后俺得势了一定要高薪聘请象俺老弟SAP搅肉机这样的专门能吹善写的高手做秘书天天也整点管理方面的文章到处去晒晒…

问:

你为什么把这篇文章叫特别总帐一日通.

没当此时,我总很谦虚地回答,主要一是屠宰SAP真TMD太容易了,你只要花一天的时间看看这篇文章就已经能成为传说中的超级SPL杀手,二是SAPAG估计暂时还没设计出比较有难度的复杂东西来(据可靠消息,本来SAPAG那帮鸟人也不服气确实曾想设计一些专门难一下屠夫这样的刺头的东西,后来经慎重考虑觉得没有必要这样刁难俺老人家,同时主要是就算整出来了,最后还不照样惨死在俺刀下,只是时间问题,就不了了之.).

1基本设置(BasicSettings)

下面10项的IMGpath基于上图.

(1)PerformPreparation

T-code:

GCVOSE16:

T000C

如图1,在此定义允许LocalLedger,GlobalLedgerpost到特别总帐和允许一些文本使用多语言版本.

使用SPL是如此的简单,如果读着使用SAP标准的SPLLedgerL0(表GLT1)的话,读者不必要去了解SPL的具体细节,要做的只有两步,

1GCVO启动SPL,

2Tcode:

GCL2Maintainledger时加上您的CompanyCodes就可以(请参照(6)MasterData->MaintainLedgers),如需要,你可为LedgerL0选择不同于一般总帐的会计年度变式.

FB50记笔帐,使用GD23或SE16:

GLT1就能看到数据被Post到LedgerL0了,如果你的Ledger0和LedgerL0的会计年度不同,你特意做个TestScenario,相信你已经看到FI数据post到了SPLLedgerL0.如果这时你很高兴以为SPL真的很TMD容易混,那就TNND错了.

特殊总帐的原理很简单,就是在记帐时数据Post到Leger0(一般总帐)同时根据你的配置将数据记到特别总帐相关表而已.

(2)MaintainCodingBlock

T-code:

OXK1|OXK2|OXK3

什么是Codingblock?

为了让读者彻底理解它举一个简单的例子,假设你设计了一个学生成绩管理系统,其中记录学生成绩表XSCJ有这些字段XhID(学号),Name(姓名),grade(年级),Class(班级),Chinesescore(语文成绩),Mathscore(数学成绩)等,现在需要在填写学生成绩同时输入学生的年纪身高信息(在此姑且不讨论设计范式,因为按设计范式,XSCJ表保留XhID就足够,Name,Grade,Class你通常会建立另一学生资料表XSZL,如果你看SAP的物料主数据设置,就是物料描述都建立MAKT表,已经是第N范式).

这时需要的是更改XSCJ加入这些字段或在XSCL表中加入一个结构,这结构包含年纪身高字段.然后在记录学生成绩时定义一个子屏幕弹出(或默认带出,SAP管这叫AccountAssginmentcodingblockscreen)一个窗口让用户维护学生信息,在保存学生成绩时将这些信息也一并保存.

SAPCodigblock一般原理基本如下,它允许增加字段,自动将增加的字段加入各模块的相关表中,并且动态产生一些支持程序.

各模块的相关表究竟是哪些表?

下面将继续详细阐述codingblock的设置.

OXK3Maintaincodingblockfields进入后界面如图2.

[1]专家模式

如果读者对ABAP很熟悉,使用此模式,你将一步步建立domain,dataelement,structure

(CI_COBL,CI_COBL_BI),然后是将增加的field加入表BSEG(当然还有其它模块的表和Structure),如果读者觉得自己还不是专家,就使用默认的Lightmode(简易模式)吧,它自动完成这些操作.你按F6键Add自定义Field,选择开发类(47后是Package),输入字段类型和长度.

[2]codingblocksubscreenOXK1

你想在记帐的accountassignment屏幕自动加入刚才自定义字段(本例是ZZCB1),请使用它

[3]产生一些程序

[4]SAP标准的科目分配字段,这些字段使用SE16:

TCOBF可看到,ZZCB1也在此中.

[5]自定的ZZCB1,需要指出的是如果使用的是includestructure,这字段将假如COBL,TCOBF,BSEG等表

[6]只是将此结构Append到COBL中,OXK1并不可见,它将被用在一些用户自定义程序中.

激活字段ZZCB1的Log

codingblockfieldZZCB1激活过程由于修改了大量标准表和结构(即要将这字段插到各模块可能设计的表中),你可能需要AccessKey.

读者必须耐心等待整个激活过程,在此过程中,读者可发现所有的记帐操作都可能会错误,毕竟连BSEG表都正在更新.那个著名的记帐总程序SAPMF05A需要重新编译(不知读者对半解释型的ABAP的运行速度反应如何?

).

图3读者可看到激活fieldZZCB1更新了的ABAP对象,包括CO用到的一些ABAP对象,典型的比如COLineitem表COEP和SPL共用的SendtableACCIT_GLX(结构)等,SE11你看到有了ZZCB1.

1.在等待激活时你唯一要做的就是耐心等待,如果过程中途意味Cancel,这将有一定风险,你可能会发现记帐出了问题,这就意味大多数会产生财务凭证的交易失败,开PO出了问题….你可根据ABAP错误使用SE11直接去激活ABAP对象.

如果需要,可执行这些程序重新生成程序或排错,SE38:

RGUGBR18|RGUGBR00|

RGUGBR26|RSINCL00..

2.为什么激活过程会如此长?

很容易理解,SAP是一个庞大的集成系统,但是会计凭证的产生(表BSEG)就有个模块Post过来的相关数据,你在BSEG加了一个字段,这些模块的相关程序或程序中使用的结构肯定要做相应调整.至于激活内部的设计逻辑如何,SAPAG的设计人员应该最清楚.

3.什么时候要自定义Codingblock字段?

一企业希望费用能按多种用途分析,InternalOrder,Costcenter,Functionalarea等还是不能满足其需求,LineitemText已做它用,财务部依旧要求费用区分能By类,By个人,By区域,By..,总之,似乎你已经没辙,这样的情况下,你就字定义codingblock字段,上面已经知道这些字段是可用于Accountassignment的(OXK1).

一般的财务软件都会提供一个类似功能,就是允许用户自由定义Accountassignment字段.

4.SAP允许定义最多7个codingblockfields,这些自定义字段也可用在SPL中,因为在SPLSendtableACCIT_GLX(结构)你能看到它(前提是你必须将ZZCB1加入你定义的SPL表,请看接下来的相关配置).

CO相关表比如COEP你可看到ZZCB1,这意味自定义字段的数据也能传到CO模块,很不幸的是,你不能将自定义字段ZZCB1内容传到CO-PCA模块,因为似乎没有相关配置允许你更改Ledger8A的表GLPCA/GLPAP/GLPCT(比如你可将LedgerL0的GLT1改成你自定义的table,而这table你包含了ZZCB1).

关于如何使用OXK1定义Accountassignmentsubscreen请看例2维护codingblockscreen

(3)Tables

一.ExecuteExpressInstallation

Tcode:

GCIQ

如图4,快速安装(Expressinstallation)你可建立更改删除tablegroup,Fieldmovement和SPLLedger,在此介绍如何建立SPL的tablegroup.

[1]建立一个tablegroupZSTSPL.

[2]在按此按钮时会提示STSPLT->Summarytable,ZSTSPLA->Actuallineitemtable

ZSTSPLP->Planlineitemtable,ZSTSPLO->Objecttable_1(object/partner)和,ZSTSPLC->Objecttable_2(transactionattributes)5个表将被建立.

[3]在installTablegroup时,会产生一些程序,SAP强烈推荐reinstalltablegroup,特别是test,和productionserver是同一台(估计没多少企业会这样),很显然,reinstall会重新更新这些程序,有ABAP知识的人知道程序激活后在同一server是跨client的,如果不这样做可能导致一些潜在错误.

随着计算机的迅猛发展,由于服务器的性能已经大大提供,SPL数据通常设置和一般总帐同步,SPL出错的后果是正常的财务操作也会做不下去,所以你reinstalltablegroup.

[4]所谓的sendfields,从[1]知道在建立tablegroup时会产生5个表,此些表的部分字段是SAP动态根据其自己设计逻辑动态产生的(比如ZSTSPLT->summarytable就类似GLsummarytableGLT0,其中包含TSL01-TSL16->对应各期间交易|凭证货币的累计金额和HSL01-HSL16则是对应累计本位币金额,这些字段必须在SPL的summarytable),你还可加入其他字段.

[5]细心的读者会发现这些额外的字段恰好就是accountassignmentfields

[6]只是这些字段前加了ZZ前缀,假设加入profitcenterZZPRCTR和自定义的ZZBC1字段

[7]自定义的ZZBC1字段.

1什么是tablegroup?

Tablegroup的意思就是将这些SPL表将组成一个group-ZSTSPL用在特殊总帐上,一套帐一般都要包含计划数据,实际数据和Summary数据,这概念适合各种特别总帐(包括利润中心帐).

作为一般总帐,就要复杂的多,比如我们都知道会计凭证表BKPF,BSEG,SummarytableGLT0,还有很多计划表.

2为什么加入利润中心字段ZZPRCTR和ZZCB1字段?

(一).之所以加入ZZBC1是便于是读者更理解codingblock,如需要你建立加入几个自定义字段都可以.

(二).无论是CostofsalesaccountingLedger0F(GLFUNCT)还是LedgerL0(GLT1)默认都没有利润中心,只有Businessarea(据称PCA是用来退代BA的,如果是这样,我猜测当时设计时可能就没考虑profitcenter字段,纯属臆猜,不必当真).

如果你需要在SPL中使用利润中心,请自定义tablegroup加入此字段.

在顺利建立tablegroup后,使用SE11可发现grouping的5个表中都包含了RZZPRCTR和RZZZCB1,只是前面多了R前缀.

这样做是否记帐时ZZCB1和利润中心字段数据就到SPL中了,当然不会,如SAP真有人工智能估计企业的SAPengineers就会大量失业.你还必须定义fieldmovement,请继续往下看.

似乎只能自加入7个字段,我想这主要是考虑性能问题.

自定义的codingblock字段不仅可用于一般总帐和成本模块而且可用于特殊总帐,SAP设计之精妙和完美不得不另人佩服,将所谓的非hardcoding(可配置)推到极点.难怪业界有闻SAP什么业务都可配置出来,虽有夸张,今日观之,信矣.

需要指出的是,在install时会有如图6的提示,特殊总帐的成功安装会将SPLtable转换成ReportWrite(Painter)table.

熟悉Reportpainter的读者一定不会对set,keyfigure,characteristic陌生,关于reportpainter请看本书相关Reportpainter的详细介绍.

图6中将costcenter和functionalarea做为固定特征值.

如图7,在installtablegroup时SAP提示其建立了一些report,读者可自行检查.

Reportwritetable和GRCT

我花了很长时间和一个印度FICO顾问向它解释实际上reportpainter所使用的CCSS并不是SE11看到的CCSS,reportpainter的GLT0和SE11的GLT0并不完全相同,他要求我能在ReportwritertableGLT0中增加Functionalarea字段以方便报表编制.

首先,你使用TcodeGRCT看看所谓的reportwritertable,它可理解为一个View,reportpainter的GLT0当然连接的是透明表GLT0的数据,但是它还有相关的程序支持,透明表GLT0加这些支持程序组成了reportwriter(painter)table.看看reportpainterCCSS,不但包含了表还有象CCSS这样的strucuture.

两点留给读者思考.

1tablegroup中的objecttable有什么用途?

几个SPLtable组成一个tablegroup.输入一tablegroup是如何找到其中包含的SPLtable的?

2InstallSPLtablegroup会建立一些reportpainterset,细心的读者会发现在建立

成本中心组(KSH1),成本要素组时(KAH1),会计科目组(KDH1)等等,这些数据也会作为

reportset存在,问题是这些数据保存在什么表中?

二.DefineTableGroup

Tcode:

GCI2

如图8,将上面的tablegroup设置为Localtable.

三.DisplayAssignmentsGraphically

T-code:

GCD6

没什么特别,你输入一个SPLtable,将同一tablegroup的tables以图形界面显示出来而已.

四.TechnicalHelp

T-code:

GCCG|GCGG|GCU2|GCI2|GCVB

通常在你create和installtablegroup,SPL产生了相关表,结构和一些程序,这种动态产生ABAP对象的例子在很多地方都可见到,比如凭证的确定和退代被激活后会自动产生一些程序;CO-PA激活后自动产生一些CO-PA相关表和支持程序.

技术帮助是说如果在这些自动产生对象的过程中出现错误,读者可手工再去产生一次,通常这步并不是必需要的,尽管如此,依旧介绍几个TechnicalHelp的Tcode.

1GCCG

用户要求在GLT0增加Functionalarea字段,显然SE11直接增加Functionalarea后假设在SPL做了类似installtablegroup的动作会自动产生一些支持程序,这些动作会重新编译记帐程序,于是在记帐时提示Functionalarea错误,SE11去除Functionalarea字段后,错误依旧,此时,就要使用GCCG.

GCCG用来就是更新SPL产生的语法错误.

2GCU2

SAP说SPL做多允许53个期,通常和一般总帐采用12+4period,当我们看OB29相关帮助是说最多可使用365期间.

如你的SPL想使用比如24(halfamonth),53period(week)先维护好此结构.

然后GCI2安装tablegroup,就能使用53period.

3GCVB

maintainupdatetype在SAP47已经被禁止,了解ABAP知识的用户可通过SE93输入TcodeGCVB然后找到程序RGISETGL就可发现程序在INITIALIZATION.时使用了messageE410(00).显然SAP认为采用同步实时更新SPLtable比较安全,毕竟采用Delaystart不能保证GL和SPL数据的完整性,当然这是以牺牲一定的Performance为代价的.

如果你确实想使用delayedupdate.编写程序将表TFDIR字段FUNCNAME=’G_GLDB_POSTING_1’的字段UTASK直接改成2.

(4)MaintainTableDirectory

T-code:

GCI3SE16:

V_T800A

如图9-[1],特别想指出的是,SPL中同样似乎也只能设置3种货币,Transactioncurrency,Secondcurreny和Thirdcurrency,通常secondcurrency在一般总帐是Localcurrency(companycodecurerency),Thirdcurrency是所谓的Additionalcurrency(groupcurrency),既然是SPL就不存在localcurrency的概念,当然如需要,你可更改让secondcurrency就不用localcurrency而用groupcurrency等.

在设置parallel货币(SE16:

V_T001A)时,似乎只能设置一个Additionallocalcurrency(通常是Groupcurrency),因为第一个localcurrency是必须的,你看GLT0表只有documentcurrency,Localcurrency,groupcurrency,即使你在V_T001A定义了3rdlocalcurrency,数据记到什么地方?

当然会有错误,至于怎样设置3rdlocalcurrency只有咨询SAPAG了.

有人说SPL可使用3rdlocalcurrency,和documentcurrency共4currencies,似乎也做不到,因为GCL2只能设置3种货币,所以图9-[1]的Fourthcurrency估计是用来做装饰美观用的,看看图,恰好可使Currencies和Quantities两行选项对称,哈哈.

(5)MaintainFixedFieldMovements

T-code:

GCI4SE16:

V_T800M

SAP帮助说”CodingisgeneratedfromtheentriesinT800M.ThiscodingisstoredinRGIMF000”,固定的字段移动,就是这些字段的移动是必须的,似乎在此你并不能增删这些配置,如你想自定义字段移动,请使用GCF1.

回顾一下CO-PA,即使你只建立一个characteristic和一个valuefiled,然后KEA0激活都可,然后你发现想recordtype,version,period,controllingarea,customer这样的字段已经在PA表中了,同样,Fixedfieldmovement表示FICOPost到SPL的某些字段是基本的必须的,如这些字段所承载的信息都未post到SPL,SPL就没有任何意义了.

我测试过,即使现在你直接从表T800Mdelete所有内容,SPL依旧没问题,我想此时数据从FICO过到SPL是通过程序RGIMF000了.

(6)MasterData

IMGPath:

如图10,关于MasterDataIMG的10项配置.

一.MaintainActivities

T-code:

GCV1|GCV2|GCV3|GCV4SE16:

T022|T022T

在理解什么是Activities,请读者做下面两个动作.

1使用SE16:

BKPF,查询条件BKPF-GLVOR依此分别输入RFBU|RMWA|

RMWL|RMWE|RMRP|SD00|KOAE|RMPR,然后着重看查询出的记录的两个字段

BKPF-TCODE,BKPF-AWTYP,我想读者对activiites就会有初步了解.

***需要指出的是BKPF-AWTYP是另一个重要字段,比如AWTYP=BKPF可判断此FIDOC是直接从FI模块post过来的,=MKPF是物料移动产生的,=VBRK是SDbilling产生的,细心的读者会发现BKPF,MKPF,VBRK恰好都是headertable.读者可自行检查其它值,了解这些对理解FICO非常有帮助特别是报表开发.

2另一个动作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1