摘自FICO屠宰百刀.docx

上传人:b****7 文档编号:8804635 上传时间:2023-02-01 格式:DOCX 页数:14 大小:309.61KB
下载 相关 举报
摘自FICO屠宰百刀.docx_第1页
第1页 / 共14页
摘自FICO屠宰百刀.docx_第2页
第2页 / 共14页
摘自FICO屠宰百刀.docx_第3页
第3页 / 共14页
摘自FICO屠宰百刀.docx_第4页
第4页 / 共14页
摘自FICO屠宰百刀.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

摘自FICO屠宰百刀.docx

《摘自FICO屠宰百刀.docx》由会员分享,可在线阅读,更多相关《摘自FICO屠宰百刀.docx(14页珍藏版)》请在冰豆网上搜索。

摘自FICO屠宰百刀.docx

摘自FICO屠宰百刀

摘自FICO屠宰百刀

第6刀.IMG剖析和SE16

[摘选部分]

SAP能成为ERP系统的领军巨头,本人认为最重要的原因就在于这么个庞大的蕴涵先进管理思想的系统在逻辑结构如此紧密的同时,竟然还可允许不同行业的企业用户能在相当程度上通过配置达到企业自己需求,SAP甚至在各模快留下了许多用户增强接口,企业能通过再开发达到某些特殊需求.

这是国内ERP所远不能达到的,所以有人将SAP比成波音,国内的ERP只能是个自行车.

但是,本人认为,某些培训机构出于某种目的似乎过分渲染了SAP的复杂和神秘,其实快速学好SAP也不难.曾有人这么讲,做ABAP和BW顾问三个月就够,做MM,SD顾问6个月可,做FICO8个月足也,本人完全赞同,如用户确实能在这段规定时间接受到一个所谓资深顾问的倾心教诲的话.

相对于SAPAG开发SAP系统的工作,起码本人觉得做企业内部顾问工作真的容易!

这个例子是纯技术的,附带的ABAPCode起抛转引玉的作用,如有需要ABAP开发人员完全可使用/H跟踪函数STREE_EXTERNAL_DISPLAY找到IMGID的层次关系,然后建立一个类似SPRO的程序,但是此程序树状结中只显示企业所使用到的配置项.

REPORTZIMGLINE-SIZE120.

Tables:

TTREE,TTREET.

Data:

beginofZTypeIMG,

idlikeTTREE-ID,

textlikeTTREET-TEXT,

endofZTypeIMG.

Data:

ZitabIMGlikeZTypeIMGoccurs0withheaderline,

ZLinIMGlikeZTypeIMG.

Data:

ZFLDNAMElikeDD01L-DOMNAME,

ZFLDVALUElikeTTREET-TEXT.

***ReadIMGStrucutreID

RefreshZitabIMG.

selecta~IDb~Text

intotableZitabIMG

fromTTREEasa

LEFTOUTERJOINTTREETasbona~ID=b~ID

andb~SPRAS=SY-LANGU

Wherea~TYPE='IMG'.

***WriteStrutureIDtoScreen

ulineat/1(79).

LoopatZitabIMG.

write:

/1'|',ZitabIMG-TEXT,'|'.

ulineat/1(79).

endloop.

ulineat/1(79).

ATLINE-SELECTION.

clear:

ZlinIMG,ZFLDNAME,ZFLDVALUE.

GETCURSORFIELDZFLDNAMEVALUEZFLDVALUE.

ifZFLDNAME='ZITABIMG-TEXT'.

PerformEXEIMG.

endif.

FormEXEIMG.

***DisplayIMGStructure

READTABLEZitabIMGintoZlinIMGWITHKEYTEXT=ZFLDVALUE.

CALLFUNCTION'STREE_EXTERNAL_DISPLAY'

EXPORTING

STRUCTURE_ID=ZlinIMG-ID

LANGUAGE=SY-LANGU.

ENDFORM.

部分常用IMG表格.

***使用SE11,输入查询条件T*,能找出更多IMGtables,记记这些常用的IMG表是有一定帮助的.

DD01L,DD01T

DD02L,DD02T

FICO最常用配置表

相关描述

相关描述

T000

Client

T001

CompanyCode

T001B

PermittedPostingPeriod

T001D

ValidationinFIDoc.

T001K

ValuationArea

T001L

StorageLocation

T001Q

SubstitutioninFIDoc.

T001S

AccountClerk

T001W

Plant

T002

LanguageKey

T003

DocumentType

T003O

OrderType

T004(T)

ChartsofAccount

T004V

FieldStatusVariant

T005(T)

Country

T006

UnitsofMeasurement

T007A

TaxKeys

T009(T)

FiscalYearVariants

T009C

PeriodName

T014(T)

CreditControlAreas

T011

FinancialStatementsVersion

T023

MaterialGroups

T024

PurchasingGroup

T024D

MRPControllers

T024E

PurchasingOrganization

T025

ValuationClass

T030

StandardAccountsTable

T095

AMDepre.AreaAccounts

 

第7刀.凭证的有效检查

在HR,AP,AP,GL,Consolidation,RealEstate,SpecialPurposeLedger等多模快都能发现有效性检查(Validation)配置,所谓Validation不过是在凭证保存前根据设置条件判断此凭证是否有效,再根据Validation设置的消息类型(关于消息请参考第例消息控制)决定凭证是否允许保存(顺利保存的),对稍微了解ABAP开发基础的用户是很容易理解的.

凭证Validation,Substitution和UserExit的使用保证了凭证能成功通过某些企业实际的自订复杂业务检测最后保存在数据库中.

***可使用Validation检测在记帐时某些costcenter只能对应到具体某FunctionalArea(如上了FunctionalArea的话),某些费用类科目只能记到某具体

Costcenter等.

比较实用的ValidationIMGT-code有:

OB28:

AP/AR/GLDoc.|OAZ1:

AMPosting|

GCVW:

GlobalValidation(InSPL,CompanyLevel)|GCVV:

LocalValidation(InSPL,

CompanycodeLevel).

下面以OB28为例,详细说明Validation的用法.(IMGPath如图7-1标号1)

[1]定义记帐有效检查.

[2]定义会计凭证退代.

建立Validation步骤:

下面以LineValidationSTLINE只允许用户STONEF在5100(本位币HKD)记帐时本位货币金额不超过1000HKD为例子,详细介绍Validation的配置步骤.

***当然使用其他配置也能达到相同效果.

1.选择CallupPoint建立ValidationName(如图7-2).

[1]1.在凭证抬头触发2.凭证行项目触发3.整个凭证触发,触发通常发生在用户按Enter键和保存之时.

[2]新建Validation时按F2进入详细画面(如图7-3)

[3]1表示激活,只有选择激活后Validation才真正起作用.

2.Validation建立步骤详解(如图7-3).

[1]新建Validation,如在此新建Validation要回到图7-2按Newentries然后激活.

[2]新建Step,一个Step包含先决条件,检查和消息.图7-3Step001表示的是在

Companycode5100(LocalCurrencyHKD)下如果User是STONEF,如记帐本位币超过1000HKD,就弹出错误消息ZFIMSG017(关于消息剖析请参考第例消息控制).

***Validation触发的条件是满足先决条件但是不满足检查条件.

[3]Rule可用在Validation,Substitution,ReportWriteSelection甚至ATPcheck,简单理解,经常用到的一些判断条件可建立成Rule,将Prerequisite和check建立俩Rule-ZRULE1(图7-4)和ZRULE2(图略.BSEG-DMBTR<='1000.00'),和图7-2效果一样,不同的是此俩rule还可用在Substitution等中(请看第8例凭证的退代),可重复使用.

重复性的好处还表现在你只要修改rule(比如现在STONEF允许最大记帐金额是

2000),所有用到此rule的Validation,Substitution全部生效.

图7-5使用Rule和图7-2直接使用ABAPcode效果一样.

Rule做为一个条件可用在定义其它Rule,比如ZRULE3包含ZRULE1and其他条件.

[4]HeaderValidation只可选BKPF字段和只在凭证头回车或保存凭证触发.

[5]既然ItemValidation先决条件可选BKPF和BSEG,但是Check只能选BSEG字段,否则不被触发.

***比如先决条件条件是BKPF-BUKRS,Check是BKPF-USNAM,很明显这是无效的Validation.

另一个问题是如有多个行项目满足了条件会弹出多条消息.

[6]整个凭证有效,就是在DocHeader,Item回车和保存都触发.

[7]先决条件条件(参照[2]).

[8]检查(参照[2]).

[9]SAP消息使用在多种地方,比如想打印传真PO需要建立一个相应消息,另外消息还用在处理程序例外上,在这里是指后者(更详细请参考第例消息控制).

如上图7-6.

1.E表示消息定义为错误类别,此时不可保证凭证,I,W类别只是给出信息和警告,允许凭证保存,如选A,则会退出当前Tcode操作.

2.就是Tcode:

SE91定义的MessageClass(图7-7).

3.在此选择了消息号017使用了俩参数(&),&表示在实际弹出消息时能使用实际值取代&.

4.消息变量.

图7-8表示用户STONEF在使用FB50手工记帐时,Localcurrencyamount>1000

时出现的错误(使用ZSTLINE行Validation),出现的错误消息,由于凭证有俩行,此消息将弹出俩次.

1.ZSTLINE显然对USERSTONEF操作所产生的任何会计凭证都有效,比如只想限制STONE在使用FB50记帐但是F-53付款时却允许超过1000HKD,请在先决条件上再加上TcodeFB50则Validationi就只对FB50有效.

2.想用Tcode比如FB50测试新建Validation,起码要求退出当前操作再进入,否则SAP会从缓冲中读数据认为还是上次的配置,结果拥护却认为配置失败,最保证的方法是从ValidationIMG窗口使用/OFB50(或其它Tcode).

3.这种方法同样适用于任何其它相同情况的测试.

3.再谈建立Validation操作.(图7-9)

[1]删除Prerequisite和Check代码.

[2]合并字符字段

[3]比如对lineValidation,BKFF,BSEG,SYST(如想ByTcode选SYST-TCODE做条件)三对象可使用.

[4]选择rule做Prerequisite和Check(参考图7-5).

[5]可使用UserExit做Prerequisite和Check.(参考第8例凭证的退代).

[6]一些常用逻辑表达式.

[7]通常使用的是Constant(常量).

1.读者也许有这样的疑问,Validation究竟是怎么工作的?

很好,使用SE37在Function

FI_VALIDATION_HEADER和FI_VALIDATION_ITEM合适位置设置断点,就可知道更详细的程序逻辑.

另外,相关TableT001D|和相关程序GBTDMFI0|RGUGBR00,有兴趣的读者不妨研究一下.

2.另一个留给读者的疑问是,一个Validation可有多个Steps,不妨假设一LineValidation有俩Steps-STEP1和Step2,它们的Prerequisite都是:

BKPF-BUKRS=5100,但是Check却不同甚至是矛盾的,Step1check是BSEG-DMBTR<=1000.而Step2-check却是BSEG-DMBTR>1000,结果会如何?

第8刀.凭证的退代

和Validation一样,凭证的退代在多个模块中能找到,IMGPath(IMGPath如图7-1标号2).

比较实用的SubstitutionIMGT-code有:

OBBH:

AP/AR/GLDoc.|OACS:

AMCreateAssets|OA02:

MasschangeAssets|GCVY:

GlobalSubstitution(InSPL,CompanyLevel)|GCVX:

LocalSubstitution(InSPL,CompanycodeLevel).

和Validation不同的是,Validation只做检测,一般不做相应数据的修改,Substitution弥补了这反面的缺陷,甚至允许和user_exit相结合.

下面举一个简单实例,假设Costcenter51-460000的默认的利润中心是PFCT1,现在有笔帐希望能使用FB50记到PFCT3,出现下面错误,然后希望使用退代将PFCT1退成PFCT3.

关于此Case,系统默认的是,尽管在使用FB50(或其它Tcode)时输入非默认的ProfitCenterPFCT3,SAP依旧会将它Set回Costcenter主数据的PFCT1.

遗憾的是,SAPOSS提供的也是使用退代,实际上稍微修改下标准程序可能更好些.在SAP46C的判断Profitcenter的逻辑在程序LKAIPF1N中,SAP47为了程序的可读性将它移到程序LKAIPF29中的PROFIT_CENTER_CHECK子程序中,本人认为将此代码如此更改可能效果好些.

思路:

1.如使用Tcode:

OBA5(SE16:

V_T100C)中将消息KI399设置成-SwitchOff,则手工输入的PFCT3优先,不再Set回PFCT1,直接就保存凭证.

2.LKAIPF1N的逻辑是只要是手工输入了Profitcenter就一定Set为默认profitCenter,即使你使用OBA5将消息switchoff了,显然从业务上不大合理,更改LKAIPF1N的代码如下,这样就不用使用退代了.

将SAPLKAIPF1N的判断从

IFLD_PRCTR<>SPACE.

*sendingofmessagemovedtoFormPROFIT_CENTER_CHECK"DEL569565

SFR_COBL-PRCTR=LD_PRCTR.

ENDIF.

更改后如下,就不用使用退代了.

IFLD_PRCTR<>SPACE.

*sendingofmessagemovedtoFormPROFIT_CENTER_CHECK"DEL569565

*一个思路,实际还必须考虑MSGTB=’-‘的情况,程序完善让SAPAGABAPer去完善吧

*判断如果IMGswitchoff了消息,手工输入的profitcenter(变量SFR_COBL-PRCTR)优先.

TablesT100C.

SELECTSINGLE*FROMT100CWHEREARBGB='KI'

ANDMSGNR='339'

ANDUNAME=SPACE.

IFSFR_COBL-PRCTR<>SPACE.“如手工输入了ProfitCenter

IFSY-SUBRCEQ0.

CHECKT100C-MSGTS<>'-'.

SFR_COBL-PRCTR=LD_PRCTR.

ENDIF.

ELSE.

SFR_COBL-PRCTR=LD_PRCTR.

ENDIF.

一个题外话,除了此Case外,读者似乎还经常能发现这样一些cases,比如凭证行项目必须<=999,银行帐号不可超过18位,相信保留这些cases有两个原因(纯属玩笑).

1.SAPAG确实是太谨慎了,以致它一直持非常谨慎的态度对待这些问题.

2.如果系统确实太完美了,OSSMarketService的雇员恐怕要失业了.

下面再以上面例子详细讲解退代的使用,希望读者能举一反三,将退代用于其它实际业务.

1.定义自己的退代用户结构程序

Tcode:

GCX2.

[1]App.AreaGBLS

[2]输入自定义程序名ZSTSUB(取代SAP默认的标准程序RGGBS000)

相关表格T001Q|T80D|GB03|GB03T|GB31|GB31T||GB907|GB90|GB922|OXT_ER_GOBJDTL

|OXT_GENOBJDTL|,相关函数FI_SUBSTITUTION_ACTIVE|FI_SUBSTITUTION_DOC

|FI_SUBSTITUTION_HEADER|FI_SUBSTITUTION_ITEM.相关程序

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

当前位置:首页 > 初中教育 > 中考

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

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