`
s103y
  • 浏览: 115702 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SAP替代和规则

    博客分类:
  • SAP
阅读更多
后台路径:IMG----财务会计(新)——工具——会计凭证中的替代


替代的逻辑:
1,    凭证生成的时候,将某字段根据某规则替换为另外一数值或字符。   
2,    比如我们在凭证输入时,前台只需输入A,如果我们在后台定义了,A替代为"成本",那么凭证保存后就自动变成"成本" ;
3,    举个例子:比如你们公司定义的业务范围和利润中心是完全一致,
业务范围有:BA1,BA2;利润中心有A1,PA2
当你输入凭证时,业务范围选择了BA1,利润中心必须选择PA1;
      业务范围选择了BA2,利润中心必须选择PA2;
这时就可以定义一个替换规则以后做凭证就不用手工输入利润中心了,系统会帮你自动填上)
STEP1:
条件是:公司代码='AAAA' AND 业务范围='BA1'     
替换值: 利润中心='PA1'
STEP2:
条件是:公司代码='AAAA' AND 业务范围='BA2'     
替换值: 利润中心='PA2'



需要替代哪个表里的字段,需要先把该表定义tables,下面才能做替代。


gcx2配置替代模块池 一般使用GBLS
obbh或者ggb1替代



规则不能替换数据,但是可以报错。

gcx2配置规则模块池 一般使用GBLR

ggb0是规则



要想做替代,还有一个很重要的表要做修改:

GB01这个表,找到想替代的字段,把BEXCLUDE(排除)的X去掉,这样才能做替代

去掉以后,要运行替代程序RGUGBR00重新生成一下标准程序,这样替代才能起作用



Validation不同的是,Validation只做检测,一般不做相应数据的修改,Substitution弥补了这反面的缺陷,它和user exit结合将方便用户编写更复杂的逻辑。注意的是,如果Substitution使用User exit在程序中只做检查而不替代内容,此时,Substitution可以完全取代Validation。

简单地讲,替代就是在会计凭证生产时(包括手工和自动过帐)允许用户根据需求对凭证抬头和凭证行项目进行一定的内容修改,这种灵活的功能可以满足一些非常变态的需求,要不怎么说SAP什么东西都能轻易配置出来呢?

比如国内很多企业都要求会计凭证有个文本摘要可对某些自动凭证根据规则写入一些文本摘要,或修改凭证的利润中心,功能范围等,同样,理论上讲,SAP系统几乎允许你修改会计凭证的任何内容,甚至包括会计科目,SAP一直强调科目没有级别,对自动科目设置非常严谨,所以修改会计科目通常发生在自动过帐时人工无法干预科目的情况,典型的是MIRO时科目只能对应供应商主数据科目,如果一个供应商发票校验需要对应应付或其他应付,系统就无法自动实行,就可采用科目替代。



替代Tcode:

OBBH:AP/AR/GL Doc.

OACS:AM Create Assets

OA02:Mass change Assets

GCVY:Global Substitution(In SPL,Company Level)

GCVX:Local Substitution(In SPL,Company code Level).

GGB1:各模块全部替代



按照国内很多企业的内部制度,所有的会计凭证都需要文本摘要并且多数凭证要打印出来存档,对于很多自动凭证却并不能产生文本摘要,此时可以使用替代塞一个文本进去,有的企业连ERP系统产生的特有的中间凭证也打印,真是不掀嫌浪费纸张。

图1是一个文本摘要的例子,和Validation不同的是,Substitution只有两步骤,图1表示的是如果凭证类型是折旧AF,并且科目是累计折旧类科目或折旧费用科目,则文本摘要为“计提本月折旧”。图1中建立Substitution和建立Validation步骤一样。

到目前为止,我们发现Validation和Substitution建立都非常简单,只要有简单逻辑思维的用户不需要任何编程经验拖拖拽拽就可以实现功能,国内的ERP设计者应该好好借鉴借鉴,ERP项目实施不容易,不要让可怜的业务顾问天天浪费时间去玩技术玩Coding 。

系统允许更复杂的替代逻辑,下面举一个结合用户出口的替代简单应用实例。

业务背景:

假设在公司代码5100中,如果发生业务招待费,则在其行项目文本摘要字段(BSEG-SGTXT)写入信息“业务招待费”以做统计。

同时,在公司代码5100的期初,会将一些调整凭证或月结凭证过帐到上期间,如果有这样的业务,无论用户输入上期间的任何一天,替代将自动将上期间的凭证的过帐日期换成上期间最后一天。

参考步骤如下:

(1).自定义的替代程序(Tcode:GCX2)



最好Copy系统默认的程序出来修改,起码不要申请Access Key! App. Area 选择GBLS,输入Copy出来的自定义程序ZRGGBS00,自定义的程序名称最好不超过8位,系统只能显示程序名的前8位。

(2)。建立替代步骤(Tcode:OBBH)

建立一个替代的Step包括先决条件和替代内容,如图3,你可选择一个替代字段,表示替代这个字段的内容,在此选择”Only exit”,表示使用用户出口编写程序来替代。



(3).剖析替代用户出口程序ZRGGBS00(Tcode:SE38).



用户出口程序ZRGGBS00分析.

究竟自定义的Form例程是field exit,header exit,line exit 或complete exit有系统参数c_exit_param_none, c_exit_param_field和c_exit_param_class决定。通常用户可以看到替代出口程序如下(粗体部分):

exits-name  = 'U100'.

  exits-param = c_exit_param_none. “能用在Field exit,only exit等任何地方

  exits-title = text-100.           

  APPEND exits.

  exits-name  = 'U101'.

  exits-param = c_exit_param_field.”此Form只用于字段出口Field exit

  exits-title = text-101.            

  APPEND exits.

exits-name  = 'U900'.

  exits-param = c_exit_param_class.”U801只能在complete doc才可使用.

  exits-title = text-900.         

  APPEND exits.

*............可以对着Copy增加自定义的例程

REFRESH ETAB.

  LOOP AT EXITS.

    ETAB = EXITS.

    APPEND ETAB.

  ENDLOOP.

增加一个例程就5个简单步骤:

1.Exits-name = ‘****’表示出口例程名称。

2.exits-param =‘***’只有c_exit_param_none/field/class3种,表示例程的用法.

3.exits-title=’***’ 例程的抬头显示

4.APPEND exits.表示增加该出口例程。

5.接下来定义一个例程Form  **** /endform .在例程中编写替代逻辑。


接下来根据业务背景编写逻辑,假设使用Form 100,其类型c_exit_param_none,可用于“Only Exit”,参考代码如下表:



FORM U100.    

DATA:Z_PSTDATE TYPE SY-DATUM,

     Z_CURPER  LIKE T009B-POPER,

     Z_CURYEAR LIKE T009B-BDATJ,

     Z_PSTPER  LIKE T009B-POPER,

     Z_PSTYEAR LIKE T009B-BDATJ,

     Z_PERLSTDAY LIKE SY-DATUM.

If bseg-hkont = ‘这填写您的业务招待费科目’.

BSEG-SGTXT = '业务招待费'. "For业务招待费用文本摘要.

Endif.

*如果期初发生上期的财务凭证过帐,则自动将过帐日期一律调整为上期期末最后一天.

*check posting date's period and fiscal year

CALL FUNCTION 'DETERMINE_PERIOD'

  EXPORTING

    DATE                      = BKPF-BUDAT

    VERSION                   = 'Z1' "你的会计年度变式,国内多是K4

IMPORTING

   PERIOD                    = Z_PSTPER

   YEAR                      = Z_PSTYEAR .

*check sysdate's period and fiscal year

CALL FUNCTION 'DETERMINE_PERIOD'

  EXPORTING

    DATE                      = SY-DATUM

    VERSION                   = 'Z1' "Fiscal Year Var.

IMPORTING

   PERIOD                    = Z_CURPER

   YEAR                      = Z_CURYEAR.

*能否在输入的posting date记帐让系统去判断.

CHECK Z_CURYEAR <> Z_PSTYEAR OR Z_PSTPER <> Z_CURPER.

*如posting date不在本期间得到其期间最后一天

Z_PSTPER = Z_PSTPER + 1 .

CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET'

  EXPORTING

    I_GJAHR              = Z_PSTYEAR

    I_PERIV              = 'Z1'

    I_POPER              = Z_PSTPER

IMPORTING

   E_DATE               =  Z_PERLSTDAY .

*无论用户选择过帐到上期哪一天,都将过帐日期设置为最后一天

BKPF-BUDAT = Z_PERLSTDAY - 1 .

BKPF-MONAT = Z_PSTPER .


通过上面的业务我们可以看到,替代+用户出口能实现更复杂的业务,而这些业务通常是简单

的拖拽实现不了的,再举一个典型的有用的替代实例。

业务背景:

在SAP中,供应商主数据的科目只有一个比如通常设置的是应付帐款,在SAP中,科目和中

国传统会计不一样,其科目是不强调层级的,比如应付帐款,国内ERP可能会带供应商项目

等几个核算项目,SAP采用另一种方式,它将供应商直接看成明细科目,从其主数据自动带

出应付帐款,如果还需要区分是什么项目的应付,则可采用统计内部订单或特殊总帐标志,

但是,在后勤发票校验(Tcode:MIRO)时却不能使用特殊总帐标志。这样,比如企业从同

一供应商购买生产用材料(对应普通应付帐款)和项目材料(对应应付项目款)且需要从会

计科目上就直接区分时两种应付时就有点小麻烦。

一般的思路有这么些:

I.因为同一供应商主数据中只能有一个科目又不能特殊总帐标志,建议拆分成多个虚拟供应商来对应不同科目,此法严重违反编码唯一性原则,贼笨。

II.会计科目还是使用同一个应付帐款科目,附加一个字段比如文本/参考字段来区分同一供应商的不同应付,假设供应商还承包了你的在建项目有涉及应付劳务,如果仅用一个文本区分不严谨,也没有从科目上直接区分那样直观。

III.使用科目替代方式解决,直接从科目上区分不同应付款。

参考步骤如下:

a.SE16:V_T053定义行文本标志,其中ZNOR:MIRO 普通应付和ZPSC:MIRO 项目应付。

b.建立特殊总帐标志9表示应付项目款,并设置好应付项目款会计科目。

c.使用Only exit 出口替代,这样使用替代就直接从科目上就区分出了应付帐款类型,

参考代码如下表(参考使用,责任自负):



FORM U100 .

DATA: IWA_T074 LIKE T074 ,

         I_ANS(1)  Type C .

  Check ( SY-Tcode = 'MIRO' OR  SY-Tcode = 'MR8M' )

    and BSEG-KOART = 'K' .  “检查是否为发票校验事务

  condense bseg-sgtxt .

*判断用户必须输入文本摘要而且MIRO/MR8M时只能是ZNOR和ZPSC

  if bseg-sgtxt <> 'MIRO 普通应付'  and  bseg-sgtxt <>'MIRO 项目应付'.

    message E001(00) with 'Choose ZNOR or ZPSC ' .

  endif.

*如果文本输入应付项目款则从特殊总帐配置中读取应付项目款项目替代应付帐款

  if  bseg-sgtxt = 'MIRO 项目应付' .

    I_ANS = '9' .   "特殊总帐标志9表示应付项目款

    _selectSINGLE_*INTO IWA_T074 FROM T074

          WHERE KTOPL = 'INT'

            AND KOART = 'K'

            AND UMSKZ = I_ANS

            AND HKONT = BSEG-HKONT .

    IF IWA_T074-HKONT NE SPACE.

      BSEG-HKONT = IWA_T074-HKONT.     "特殊总帐科目

      BSEG-UMSKZ = I_ANS .      "特别总帐标示

      BSEG-UMSKS = 'A' .      "特别总帐事务类型,A,W,O

*SAP高度集成替代必须考虑其它模块影响,替代同时也替代特殊总帐的计划层次。

      BSEG-FDLEV = IWA_T074-EBENE . "特殊总帐计划层次,如果启动CBM

      BSEG-BSCHL+1(1) = '9' .   "记账码的第一码

    ENDIF.

  endif .

  endform.                                  


为什么你的替代不起作用?

替代不起作用通常有两个原因:

一.系统默认不允许你替代该字段内容。

SAP将所有的允许字段替代关系维护在GB01表中,如果该表中没有出现你的替代字段,你是不能替代的,比如会计科目BSEG-HKONT通常是不允许替代的,你就需要在此表增加。

二.替代程序需要重新自动编译。

在一些特殊情况下,你发现你的Validaton和Substitution都不起作用了,SE38运行程

序RGUGBR00| RGUGBR00, 将能选的项目全选上手工重新编译就行。

替代如何工作?



相关表格:

GB01|T001Q|T80D|GB03|GB03T|GB31|GB31T||GB907|GB90|GB92|GB922|GB901

|OXT_GENOBJDTL|。

相关函数和程序:

FI_SUBSTITUTION_ACTIVE|FI_SUBSTITUTION_DOC||FI_SUBSTITUTION_HEADER|FI_SUBSTITUTION_ITEM| GBTDMFI0| GBTDMFIJ|RGUGBR00|RGUGBR00|GBTDMFIJ|GBTDMFIG|MF05AIENJ




在会计凭证的主程序SAPMF05A的子例程MF05AIENJ中,Module document_merge INPUT是检查和替代的处理入口,

简单理解, 系统将用户自屏幕上输入的信息首先保存在一些临时内表中,当通过所有的业务检查时最后保存到数据库,替代则是根据用户设置的条件去退换掉内表的一些临时内容从而保存到一些字段内容最终保存到数据库时是用户替换的内容。在叙述SAP增强时会详细描述这个机制。

分享到:
评论

相关推荐

    SAP替代料 SAP替代料

    ### SAP替代料的应用及配置详解 #### 替代料概念解析 在制造行业中,替代料是一种常见的物料管理手段,主要用于解决因原材料缺货、成本控制或其他特定情况导致原计划使用物料不可行的问题。通过合理设置替代料,...

    SAP方丈-FI-SAP中的确认和替代

    确认和替代通常用于增强系统,以满足特定的业务规则和流程。 首先,确认(Validation)是指在凭证保存前,根据已设置的条件判断该凭证是否有效。它是一种校验过程,如果凭证不符合预设的规则,系统会给出提示信息。...

    财务凭证的替代OBBH

    标题与描述中的“财务凭证...通过结合用户出口,替代功能可以应对更加复杂的业务场景,极大地提升了SAP系统的适用性和用户体验。这一功能不仅体现了SAP系统的配置灵活性,也为企业财务管理带来了更大的便利性和准确性。

    rxu笔记-GGB0GGB1财务替代和校验增强整理代码逻辑.docx

    文档标题涉及的是一个关于SAP财务模块中GGB0GGB1财务替代和校验增强的整理,主要针对ABAP编程。在这个文档中,我们详细分析了如何在SAP环境中进行凭证校验和替代功能的增强。 首先,SAP标准并不支持所有字段的替代...

    SAP用户出口和增强

    SAP用户出口和增强 SAP 灵活性的最集中的体现除了后台配置外,就是增强和修正,即为了让软件更好的满足 用户的需求,SAP 允许客户在标准软件的基础上做功能性的修改; 2. 为了避免用户修改失控,损坏标准系统,...

    SAP-FI中“凭证验证与替代”功能应用与配置

    在SAP-FI系统中,替代是指对凭证中的数据进行替换,以实现业务需求和财务会计规则的要求。替代可以用于替换凭证抬头、凭证项目和完全凭证中的数据,例如将某个字段的值替换为另一个字段的值。 在配置替代时,需要...

    A系列课程(SAP-FICO):第6课_ARAP重分类+自动支付+外币评估+校验和替代——入门版

    用户可以设置规则和条件,比如根据付款期限、金额或供应商评级来触发自动支付。这样不仅可以提高效率,还能减少人为错误,确保按时支付,维护良好的商业关系。 然后是外币评估,这是跨国公司必须面对的一个重要财务...

    SAP 双单位问题.docx

    解决这个问题的关键在于检查和调整SAP中的单位配置。首先,需要在SPRO(SAP的系统配置工具)中查找与计量单位相关的设置。这通常在"物料管理" -&gt; "计量单位"的路径下进行。在此处,可以查看到“米”、“码”以及“卷...

    sap分割分配和分摊KSV5 KSU5 KSS2

    ### SAP分割分配与分摊详解:KSV5 KSU5 KSS2 #### 一、作业分割(KSS2) **概念说明:** 作业分割是一种基于作业类型(也称为活动类型)的成本分配方法,其主要目的是将成本中心产生的费用合理地分摊到生产订单上,...

    Sap Script 资料

    - **Smart Forms and Adobe Forms**:随着时间的发展,SAP推出了Smart Forms和Adobe Forms作为SAP Script的替代品,它们提供了更现代的界面和更多的交互功能。 总的来说,SAP Script是SAP系统中不可或缺的一部分,...

    SAP财务模块

    - **定义功能范围**:功能范围主要应用于管理会计,它定义了成本中心、利润中心等的分配规则,用于成本和收益的核算和分析。 - **维护财务管理区**:财务管理区定义了财务数据的存储和报告结构,包括主会计方程式...

    SAP MRP基本视图详解

    ### SAP MRP基本视图详解 #### 一、基础数据 **1.1 产品组 (Division)** - **字段说明**: 对需销售的产品和服务进行分类。在SAP系统中,“division”通常被翻译为“产品组”。 - **字段作用**: - 确定物料、...

    SAP WM 功能缺陷分析.doc

    SAP WM 在上架生成 TO 时,检查货物状态,货物上架缺乏灵活的上架策略和规则定义,无法实现最大程度缩短输送距离,提高储存空间利用率,以及储位优化。 WM 21Picking Processing 拣货支持 SAP WM 在拣货支持方面,...

    SAP pp成本管理

    - **BOM选择**:系统能够根据物料属性和成本优化策略,自动选择或替代BOM,确保成本最小化。 #### 四、排产与能力需求规划 - **排产类型与规则**:不同的排产类型适用于不同生产模式,合理的排产规则可以减少等待...

    SAP利润中心会计配置及操作手册

    控制区域是SAP系统中的一个管理单位,它定义了成本控制的范围和边界。 - 输入控制区域的编号和描述。 - 设置控制区域的基本参数,包括货币类型、会计年度变式等。 - 定义控制区域的有效期。 2. **设置控制区域**...

    SAP外币评估配置及其操作

    5. **设置评估变式**:定义评估的范围和规则,如是否包括未清项等。 6. **创建评估程序**:通过事务代码OBA1等工具,创建自动执行评估任务的程序。 #### 实际操作流程 1. **准备工作**:确保所有必要的配置已完成,...

    SAP BusinessObject创建案例文档

    SAP BusinessObject Processing Framework(BOPF)是一个用于实现企业服务导向架构(eSOA)兼容业务对象的框架。...通过此文档提供的操作步骤和截图,用户可以逐步学习如何在SAP BOPF环境中创建和维护业务对象。

    SAPBI学习手册.pdf

    InfoCube 是 SAP BI 中的一种多维模型,它包含一个中心的事实表和几个围绕着的维度表。InfoCube 可以分类为基本信息立方体和实时信息立方体。基本信息立方体又分为标准信息立方体和实时信息立方体。标准信息立方体的...

    sap ui5通用组件例子

    2. **输入框**(Input):输入框用于收集用户输入的数据,支持多种验证规则和格式化。例如,`value` 属性定义了输入框的初始值,`type` 属性可以设置输入类型,如文本、数字、密码等,`liveChange` 事件则可以在用户...

Global site tag (gtag.js) - Google Analytics