IMG-FI-SA-30-04 财务凭证的替代(复杂)_第1页
IMG-FI-SA-30-04 财务凭证的替代(复杂)_第2页
IMG-FI-SA-30-04 财务凭证的替代(复杂)_第3页
IMG-FI-SA-30-04 财务凭证的替代(复杂)_第4页
IMG-FI-SA-30-04 财务凭证的替代(复杂)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

财务凭证的替代 复杂 一 适用范围 本文档适用于复杂的替代 涉及到 ABAP 涉及到出口 exit 二 替代 Substitution 在凭证保存前根据设置条件判断此凭证是否有效 其中可以按 抬头 行项目或完全凭证来判断 然后根据替代规则把原有字段替换当前字段 三 替代的逻辑 简单理解 首先将用户自屏幕上输入的值临时保存在内表中 当通过了所有的业 务检查 最后保存到数据库 替代则是根据用户设置的条件去替换掉内表的一些临时内容再 保存到数据库 四 使用到的 TCODE 五 财务凭证的替代 Substitution 和 Validation 不同的是 Validation 只做检测 一般不做相应数据的修改 Substitution 弥补了这反 面的缺陷 它和 user exit 结合将方便用户编写更复杂的逻辑 注意的是 如果 Substitution 使用 User exit 在程序中只做检查而不替代内容 此时 Substitution 可以完全取代 Validation 简单地讲 替代就是在会计凭证生产时 包括手工和自动过帐 允许用户根据需求对凭证抬头和 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 各模块全部替代 凭证行项目进行一定的内容修改 这种灵活的功能可以满足一些非常变态的需求 六 实例 1 比如国内很多企业都要求会计凭证有个文本摘要可对某些自动凭证根据规则写入一些文本摘要 或修改凭证的利润中心 功能范围等 同样 理论上讲 SAP 系统几乎允许你修改会计凭证的任 何内容 甚至包括会计科目 SAP 一直强调科目没有级别 对自动科目设置非常严谨 所以修改 会计科目通常发生在自动过账时人工无法干预科目的情况 典型的是 MIRO 时科目只能对应供应 商主数据科目 如果一个供应商发票校验需要对应应付或其他应付 系统就无法自动实行 就可 采用科目替代 按照国内很多企业的内部制度 所有的会计凭证都需要文本摘要并且多数凭证要打印出来存档 对于很多自动凭证却并不能产生文本摘要 此时可以使用替代塞一个文本进去 有的企业连 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 通过上面的业务我们可以看到 替代 用户出口能实现更复杂的业务 而这些业务通常是简单 的拖拽实现不了的 再举一个典型的有用的替代实例 七 实例 2 业务背景 在 SAP 中 供应商主数据的科目只有一个比如通常设置的是应付帐款 在 SAP 中 科目和中 国传统会计不一样 其科目是不强调层级的 比如应付帐款 国内 ERP 可能会带供应商项目 等几个核算项目 SAP 采用另一种方式 它将供应商直接看成明细科目 从其主数据自动带 出应付帐款 如果还需要区分是什么项目的应付 则可采用统计内部订单或特殊总帐标志 但是 在后勤发票校验 Tcode MIRO 时却不能使用特殊总帐标志 这样 比如企业从同 一供应商购买生产用材料 对应普通应付帐款 和项目材料 对应应付项目款 且需要从会 计科目上就直接区分时两种应付时就有点小麻烦 一般的思路有这么些 I 因为同一供应商主数据中只能有一个科目又不能特殊总帐标志 建议拆分成多个虚拟供应商来 对应不同科目 此法严重违反编码唯一性原则 贼笨 II 会计科目还是使用同一个应付帐款科目 附加一个字段比如文本 参考字段来区分同一个供应商 的不同应付 假设供应商还承包了你的在建项目有涉及应付劳务 如果仅用一个文本区分不严谨 也没有从科目上直接区分那样直观 III 使用科目替代方式解决 直接从科目上区分不同应付款 参考步骤如下 a SE16 V T053 定义行文本标志 其中 ZNOR MIRO 普通应付和 ZPSC MIRO 项目应付 b 建立特殊总帐标志 9 表示应付项目款 并设置好应付项目款会计科目 在 MIRO 的时候抬头的 文本 选择 a 步骤中建立的文本 c 使用 Only exit 出口替代 这样使用替代就直接从科目上就区分出了应付帐款类型 e 基本设置 1 2 3 4 SE38 参考代码如下表 参考使用 责任自负 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 表示应付项目款 SELECT SINGLE 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 将能选的项目全选上手工重新编译就行 SE38 输入 RGUGBR00 F8 运行 替代如何工作 相关表格 GB01 T001Q T80D GB03 GB03T GB31 GB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论