SAP S/4HANA FICO 入门 54:FI 校验规则、GGB0 与 OB28


SAP S/4HANA FICO 入门 54:FI 校验规则

SAP S/4HANA FICO 入门 54:FI 校验规则、GGB0 与 OB28

本集介绍 FI 凭证校验:在 GGB0 中定义前提条件、检查条件和消息,再通过 OB28 按公司代码与调用点分配、激活。课程分别演示了抬头参考号必填、行项目分配字段必填,以及过账日期与凭证日期的关系。本文保留完整操作思路,并修正课堂中出现的反向公式、错误消息复用和测试范围过宽等问题。

视频信息

  • 原视频:SAP FICO FOR BEGINNERS | FULL COURSE | DAY 31
  • 视频时长:1 小时 06 分 10 秒
  • 视频地址:https://www.youtube.com/watch?v=lPKY1VZ33cE
  • 本文范围:FI Validation、GGB0OB28GS01、抬头校验、行项目校验、集合与消息
  • 截图规则:只引用原视频中的 SAP 系统画面;非 SAP 课件不直接使用,内容已翻译为中文并用 SAP 官方资料核验

一、FI 校验解决什么问题

FI 校验是在凭证过账过程中检查字段组合。它适合阻止明显不符合企业规则的数据进入账簿,例如:

业务规则校验对象失败后的处理
指定公司代码录入供应商发票时必须填写参考号凭证抬头 BKPF-XBLNR提示用户补录参考号
FB60 的费用借方行必须填写分配字段行项目 BSEG-ZUONR阻止该行继续过账
某些业务要求过账日期不得早于凭证日期BKPF-BUDATBKPF-BLDAT日期不符合时给出明确消息

校验不是字段状态的替代品。只要标准字段状态、凭证类型、科目字段状态组或业务应用本身就能稳定完成控制,应优先使用标准配置;只有条件依赖多个字段或业务组合时,才需要布尔校验。

课程先打开一张会计凭证,区分抬头信息和多个行项目。这个结构决定了规则应该放在哪个调用点。

会计凭证由抬头与行项目组成

二、三个调用点必须选对

经典 FI 校验在 GGB0 中提供三个主要调用点:

调用点名称适用数据典型用途
0001凭证抬头BKPF公司代码、凭证类型、参考号、凭证日期等
0002行项目BSEG,并可结合部分抬头字段科目、过账码、分配、成本对象等单行检查
0003完整凭证整张凭证需要跨行或整张凭证关系的检查

GGB0 的 Financial Accounting 节点下,可以看到 Document header、Line Item 和 Complete document。

GGB0 中的 FI 凭证抬头调用点

不要因为某字段“在凭证里能看到”就随意选择调用点。规则需要什么结构、需要在什么时机获得数据,就选择对应调用点;调用点选错,常见结果是字段不可用、规则在错误行上重复执行,或者自动生成的会计行也被意外拦截。

三、一条校验步骤的真实逻辑

创建 Validation 后,每个步骤包含三个部分:Prerequisite、Check 和 Message。

一条校验步骤包含前提条件、检查和消息

它们不是三个并列条件,而是一条有顺序的判断链:

前提条件检查条件系统结果
不执行跳过本步骤,数据继续处理
校验通过
输出本步骤配置的消息

因此,Check 必须表达“什么数据才算正确”,不能写成“什么情况应该报错”。这是本集最容易写反的地方。

四、抬头示例:指定公司代码的参考号必填

课程在凭证抬头调用点建立校验 SKPI。正确的业务逻辑应写成:

前提条件:BKPF-BUKRS = 'SKPI'
检查条件:BKPF-XBLNR <> ''
消息:公司代码 SKPI 的凭证必须填写参考号

前提条件把规则限定在公司代码 SKPI

在公式编辑器中选择公司代码作为前提字段

检查条件选择凭证抬头的 Reference 字段,也就是 BKPF-XBLNR

选择 BKPF 参考号作为检查字段

课堂最初把检查写成 BKPF-XBLNR = ''。这会让“参考号为空”反而通过,而填写参考号后触发错误,正好与需求相反。因为 Check 描述的是合法状态,所以必填应使用“非空”:

BKPF-XBLNR <> ''

课程测试时还复用了“Kindly enter reference for company code VR04”消息,但正在测试的公司代码是 SKPI

课堂测试中消息文本仍引用了另一个公司代码

这类消息即使技术上能弹出,也不能进入正式配置。消息至少应准确说明字段、适用范围和用户动作;例如“公司代码 SKPI 的供应商发票必须填写参考号”。不要复用与规则无关的消息编号,也不要让错误文本暴露旧公司代码。

五、用 OB28 分配并激活

GGB0 负责定义规则;只有在 OB28 中分配到公司代码与调用点,并设置激活级别,规则才会在 FI 过账中运行。

课程为公司代码 SKPI 增加了抬头和行项目两条分配。

OB28 中按公司代码与调用点分配校验

经典 FI 校验的激活级别是:

级别含义
0不激活
1激活,包括联机和批输入
2激活,但排除批输入

课程主要在 01 之间切换。生产环境选择 2 前要明确批输入被排除是否符合控制目标;不能为了让接口或批处理通过而无审批地绕开校验。

六、行项目示例:只要求费用借方行填写分配

第二条校验 SKPI_L 建在行项目调用点 0002,课程先把前提写成:

BKPF-BUKRS = 'SKPI' AND BKPF-TCODE = 'FB60'

行项目校验最初只限定公司代码和事务码

检查条件为:

BSEG-ZUONR <> ''

选择行项目分配字段 BSEG-ZUONR

问题是:调用点 0002 会逐行执行。只限定公司代码和事务码,供应商行、费用 G/L 行及系统生成的其他行都可能被检查,于是用户可能在不该填分配的行上也收到错误。

课程随后用过账码进一步缩小范围。若业务需求是“FB60 的借方 G/L 费用行必须填写分配”,示例前提可以写成:

BKPF-BUKRS = 'SKPI'
AND BKPF-TCODE = 'FB60'
AND BSEG-BSCHL = '40'

检查仍为:

BSEG-ZUONR <> ''

测试结果显示:供应商贷方行的过账码是 31,费用借方行的过账码是 40;只有后者填写了 Assignment,凭证概览可以继续。

供应商行与费用行按过账码区分,分配值只填在费用行

生产规则不应只凭课堂示例认定所有费用行都使用过账码 40。还要盘点实际业务入口、总账账户、借贷方向、特殊总账、税行和自动生成行,明确真正需要控制的账户集合或字段组合,再做正反向测试。

七、多个公司代码或事务码应使用集合

如果规则要覆盖多个公司代码,不能写:

BKPF-BUKRS = 'SKPI' AND BKPF-BUKRS = 'ABCD'

同一字段不可能在同一时刻等于两个不同值,这个条件永远为假。少量值可以用 OR,值较多或需要集中维护时,可以用 GS01 建立集合,再使用 IN

课程为公司代码字段 BKPF-BUKRS 创建基础集合。

GS01 中为公司代码字段创建集合

随后又为事务码字段建立集合,并组合成前提条件:

BKPF-BUKRS IN CC_POST_DOC_DATE
AND BKPF-TCODE IN TCODE_POST_DOC_DATE

使用两个集合限定公司代码与事务码

集合只解决布尔公式中的成员维护,不会自动完成 OB28 分配。若多个公司代码都要运行这条规则,仍需在 OB28 中逐一分配并激活相应校验。

八、日期示例:先明确企业规则,再选择运算符

课程新增抬头步骤,目标是阻止“过账日期早于凭证日期”。若业务要求确实是“不得早于”,合法状态应表达为:

BKPF-BUDAT >= BKPF-BLDAT

课堂画面最终显示的是 Posting Date > Document Date

课堂日期检查画面使用了严格大于

严格大于会把“过账日期等于凭证日期”也判为失败,与“不得早于”的口述目标不一致。因此应按需求选择:

业务要求正确检查条件
过账日期不得早于凭证日期BUDAT >= BLDAT
过账日期必须晚于凭证日期BUDAT > BLDAT
两个日期必须相同BUDAT = BLDAT

课程用较早的过账日期进行负向测试,系统弹出日期消息。

过账日期早于凭证日期时触发校验消息

把过账日期调整到凭证日期之后,录入可以继续。

过账日期符合规则后供应商发票可以继续处理

但“凭证日期与过账日期的关系”不是 SAP 强制的统一会计规则。SAP 标准允许凭证日期按原始凭证填写,通常与过账日期相同,也可能因迟到发票、期间结账或补录而不同。企业要先定义会计政策、允许例外和审批方式,再决定是否用硬错误拦截;不能把课堂公式直接推广到所有公司代码和所有事务。

九、消息、锁与传输的正确处理

消息是校验设计的一部分,不是临时找一个可用编号即可。合格消息应做到:

  1. 与当前规则、公司代码和字段一致。
  2. 说明用户要修改什么,而不是只写“数据无效”。
  3. 根据控制强度选择 Error 或 Warning;必须阻止过账时才使用错误。
  4. 使用获准的消息类和维护入口,并随配置、消息对象一起测试和传输。
  5. 若消息对象被锁定,先确认锁持有人和变更责任,由负责人或管理员处理;不要强制绕过锁。

课程后段因消息维护被锁,又尝试通过 SM30 处理测试系统中的消息表问题。该做法不应作为生产操作步骤。应使用校验维护提供的消息编辑方式或受控的自定义消息类,并遵循开发、测试、传输和审批流程。

十、不要为通过校验测试去改无关配置

课堂测试 FB60 时遇到一条与 FI-MM 自动科目确定有关的错误,并临时修改了相关配置以继续模拟。这不是校验本身的问题,也不应纳入校验配置步骤。

正确处理方式是:

遇到的问题应采取的做法
测试凭证被无关配置错误挡住换用已知配置完整的测试场景,或在对应模块内修复根因
自动科目确定缺失由 FI/MM 共同确认业务事务、估价范围、科目键和总账科目
只想验证新校验是否触发准备一组其他条件均有效的基准凭证,再分别测试合法值和非法值

不能为了“让校验测试跑通”就改 OBYC 或底层自动科目确定表。无关变更可能影响采购收货、发票校验和自动过账,风险远大于本次验证。

十一、推荐的实施与测试清单

阶段必做检查
需求写清楚适用组织、业务入口、字段、合法状态、例外和消息级别
设计选择正确调用点,确保 Prerequisite 限定范围、Check 表达合法状态
配置GGB0 创建步骤,在 OB28 按公司代码和调用点分配、激活
消息文本与规则一致,不复用无关公司或无关权限消息
正向测试合法数据不应被挡住,包括边界值,例如两个日期相同
负向测试每个不合法条件都应触发准确消息
回归测试检查其他事务、批输入、接口、自动生成行和其他公司代码
传输校验、集合、消息及相关对象按完整依赖顺序传输

十二、本集完成与边界

项目本集结果
抬头校验已演示参考号必填,并修正“空值才通过”的反向公式
行项目校验已演示 Assignment 必填,并把范围收窄到 FB60 的过账码 40
日期校验已演示日期比较,并说明“不得早于”应使用 >=
集合已用 GS01 把多个公司代码和事务码组合进前提条件
激活已在 OB28 按公司代码与调用点分配
消息已指出课堂复用无关消息的问题,生产环境需使用准确、受控的消息
未覆盖替代规则、用户出口、复杂跨行校验、接口专项测试与具体生产传输

最终原则只有一句:Prerequisite 决定“要不要检查”,Check 描述“什么才算正确”,Message 只在前提成立且检查失败时出现。只要这三层含义不混淆,FI 校验就能成为清晰的业务控制,而不是让用户无法解释的过账障碍。

SAP 官方参考

本文依据视频中的实际操作整理,并用 SAP 官方资料校正课堂中的布尔逻辑、日期运算符和消息维护做法。事务、字段、调用点与应用入口会随 S/4HANA 版本、部署方式和权限而变化,请先在开发或测试系统验证,再进入生产环境。

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
MCP自动发表文章
评论列表

发表评论

评论内容
昵称:
验证码:
验证码
关联文章

SAP S/4HANA FICO 入门 54FI 校验规则GGB0 OB28
SAP S/4HANA FICO 入门 55:FI 凭证替代、调用点用户出口
SAP S/4HANA FICO 入门 58:印度 GST 基础配置 Business Place
56. SAP S/4HANA FICOFI 验证、替代用户出口实战
SAP S/4HANA FICO 入门 48:手工银行对账的账户符号过账规则
61. SAP S/4HANA FICO:销售税码自动确定 SD、MM、FI 集成
SAP S/4HANA FICO 入门 60:GST 条件技术、Business Place 主数据
SAP S/4HANA FICO 入门 57:印度 GST 税务计算程序
SAP S/4HANA FICO 入门 59:税务访问顺序、税码进项税测试
SAP S/4HANA FICO 入门 33:公司代码、SPRO 传输请求
SAP S/4HANA FICO 入门 46:银行对账、House Bank Account ID
SAP S/4HANA FICO 入门 52:客户收款清账、部分付款剩余项
SAP S/4HANA FICO入门 35:财务凭证过账、显示行项目报表
SAP S/4HANA FICO 入门 39:LSMW 续讲供应商业务伙伴配置
SAP S/4HANA FICO 入门 42:样本凭证、部分付款剩余项
SAP S/4HANA FICO 入门 51:训练系统刷新恢复检查
SAP S/4HANA FICO 入门 47:银行账户手工银行对账掩码
SAP S/4HANA FICO 入门 40:供应商 BP、CVI 非 PO 发票
SAP S/4HANA FICO 入门 64:预提税公式、重复发票供应商控制
SAP S/4HANA MM模块培训 28 - 发票校验(二):税码继承、OMR2默认值未完成议程补齐