56. SAP S/4HANA FICO:FI 验证、替代与用户出口实战


SAP S/4HANA FICO 第 56 课:FI 验证与替代

56. SAP S/4HANA FICO:FI 验证、替代与用户出口实战

验证和替代都用于控制 FI 凭证质量,但职责完全不同:验证在条件满足时检查数据,不合格就提示或阻止过账;替代在条件满足时自动写入或替换字段。本课成功完成了一个“供应商行项目文本必填”的验证,也设计了“使用 GST 税码时业务地点必填”的用户出口方案;后半段尝试把凭证日期替代到过账日期,但最终凭证证明替代没有生效,因此本文只把它写成失败案例和排查方法,不写成已完成配置。

视频信息

  • 原视频:SAP FICO FOR BEGINNERS | FULL COURSE | DAY 33
  • 视频时长:48 分 20 秒
  • 视频地址:https://www.youtube.com/watch?v=v7Rb8jX_WhQ
  • 本文范围:FI 验证、FI 替代、调用点、布尔类、用户出口、字段开放、激活与失败排查
  • 截图规则:只引用视频中的 SAP GUI 原始画面;Excel 中的逻辑草稿已翻译成中文表格,不直接使用原图

说明:公司代码 SKPI、验证名 SKPI_L、替代名 SKPI_H、消息号和用户出口名称均为训练系统数据。生产系统必须使用本公司的命名、消息类、授权和传输规范。

一、验证与替代到底有什么区别

对比项验证 Validation替代 Substitution
核心目的判断当前输入是否允许自动写入或替换目标字段
规则结果通过、警告或错误常量、其他字段、规则或用户出口的返回值
用户做错时根据消息类型提示或阻止过账系统在支持的范围内纠正或补全值
基本结构前提条件 + 检查 + 消息前提条件 + 目标字段 + 替代值
复杂逻辑可调用用户出口可调用用户出口

一个常见误区是把“必填”全部交给屏幕字段状态。字段状态适合固定规则;如果只有特定公司代码、账户类型、税码或业务场景才必填,就更适合使用验证。替代则不能被当作任意改写凭证的万能工具,只有当前调用点和布尔类开放的字段才能使用。

二、三个 FI 调用点

SAP 官方说明,调用点决定验证或替代在凭证处理的哪个时刻运行,也决定当时可以访问哪些字段。FI 的经典调用点为:

调用点层级适合处理的内容
1凭证抬头 Document Header公司代码、凭证日期、抬头文本等抬头条件
2行项目 Document Line账户类型、总账科目、分配、项目文本等逐行条件
3完整凭证 Complete Document需要同时观察多条行项目或整张凭证的检查

本课的文本必填规则必须放在调用点 2,因为 BSEG-SGTXT 是行项目字段。假如一张凭证有 20 条行项目,调用点 2 会逐条运行;前提条件必须限定真正需要检查的行,否则所有行都可能被强制填写文本。

OB28 中的 FI 行项目验证定义

经典 SAP GUI 中可以通过 GGB0 维护验证,并通过 OB28 为 FI 会计凭证分配和激活;本课直接从 OB28 入口进入了相应维护界面。

三、已完成案例:供应商行项目文本必填

本课创建的验证步骤 002 可以翻译为下面的业务语句:

如果公司代码是 SKPI,并且当前行是供应商行项目,那么项目文本不得为空;否则发出错误消息。

1. 前提条件

视频中的技术表达式为:

BKPF-BUKRS = 'SKPI' AND BSEG-KOART = 'K'

限定公司代码 SKPI 和供应商账户类型 K

关键字段含义:

技术字段含义本课值
BKPF-BUKRS公司代码SKPI
BSEG-KOART账户类型K,供应商
BSEG-SGTXT行项目文本不允许为空

经典 FI 账户类型通常使用 K 表示供应商、D 表示客户、S 表示总账。规则只限定 K,所以不会把同一凭证的所有总账行都强制成供应商文本规则。

2. 检查条件

检查表达式是:

BSEG-SGTXT <> ' '

也就是项目文本不等于空值。

验证检查项目文本 BSEG-SGTXT 不为空

如果把操作符反过来写成 BSEG-SGTXT = ' ',含义就变成“该字段必须保持为空”。视频短暂使用这个反向条件来说明验证也能禁止用户填写某字段,但它只是教学实验,不是最终业务要求。

3. 消息必须与规则一致

验证消息只在前提满足而检查失败时输出。生产配置至少要保证:

  • 消息类型符合控制强度;关键完整性规则通常使用错误消息;
  • 消息文本明确说明哪个字段、哪类行项目需要处理;
  • 消息类和消息号属于当前项目,而不是复用其他公司代码的临时文本;
  • 文本与实际检查字段一致,不能把“项目文本”写成“税值”。

课堂因为消息维护被锁,临时复用了其他练习消息。讲师也明确指出该消息不准确。文章不把这个临时消息当作标准配置。

4. 在 FB60 中测试

进入 FB60 后,供应商发票包含供应商行和总账费用行。本课先让供应商行项目文本为空,系统按规则报错;补充文本后,验证通过。

FB60 中供应商行项目的文本字段

这里的重点不是界面标签,而是技术字段 BSEG-SGTXT。不同版本或屏幕变式可能显示为“Text”“Item Text”或类似名称,判断规则时应以技术字段为准。

四、用户出口设计:使用 GST 税码时业务地点必填

第二个案例来自印度本地化场景。FB60 基本数据中可以看到业务地点/部门代码字段。

FB60 中的业务地点和部门代码字段

视频提出的业务要求是:当特定公司代码使用属于 GST 税务过程的税码时,业务地点 BUPLA 必须填写。Excel 草稿翻译成中文后如下:

条件或结果表/字段示例值或要求
公司代码BKPF-BUKRSSKPI
税务过程T007A-KALSM训练系统示例 ZTAXIN
税码T007A-MWSKZ属于该税务过程的任一适用税码
业务地点BSEG-BUPLA必须非空
失败消息项目自建消息类明确提示业务地点必填

视频口述和自动字幕多次把表名说成 T0078T307A,SAP 画面实际显示的是 T007A,税务过程技术字段为 KALSM,税码字段为 MWSKZ

T007A 中的税务过程和税码技术字段

这个需求要根据税务过程读取一组税码,再判断业务地点,逻辑比简单常量检查复杂。课堂因此把它设计为用户出口:功能顾问给出完整条件、字段、预期结果和消息,ABAP 顾问实现并返回布尔结果。

在验证检查中选择用户出口

需要明确:视频只选择了训练系统中已有的 UFP03 作为说明,并设想以后新增另一个出口;没有展示实际 ABAP 代码,也没有完成这个业务地点规则的端到端测试。因此不能把 UFP03 或设想中的名称复制到其他系统。

SAP 官方将此类用户出口定义为客户 FORM 例程。项目通常从 SAP 示例 form pool RGGBR000(验证/规则)或 RGGBS000(替代)复制到客户命名空间,并在 T80D 中维护客户 form pool;不应直接修改 SAP 标准示例程序。

五、替代案例:计划让过账日期等于凭证日期

后半段进入 FI 替代。经典事务通常用 GGB1 维护替代、用 OBBH 为公司代码和调用点分配并激活。本课在抬头调用点 1 使用替代 SKPI_H

OBBH 中的 FI 抬头替代

目标设计为:

角色技术字段含义
前提BKPF-BUKRS = 'SKPI'只处理训练公司代码
目标字段BKPF-BUDAT过账日期
来源字段BKPF-BLDAT凭证日期;在 FB60 界面显示为 Invoice date

维护画面中,过账日期被设置为由凭证日期字段替代。

将过账日期目标设置为凭证日期字段

测试时,讲师输入凭证日期 15.05.2025、过账日期 25.05.2025,预期系统在过账前把后者改成前者。

FB60 中输入不同的凭证日期和过账日期

替代还需要在 OBBH 中按公司代码、调用点和激活级别启用。本课显示了公司代码 SKPI、调用点 1、替代 SKPI_H、激活级别 1。

在 OBBH 中分配并激活替代

六、为什么这个替代不能写成成功案例

课堂第一次测试因未激活而没有运行。激活后再次过账,结果依然没有按预期改写日期。讲师又尝试调用点 3“完整凭证”。

创建完整凭证调用点 3 的替代

但系统提示当前事件不允许替代该字段。最终在 FB03 查看已过账凭证时,凭证日期仍是 15.05.2025,过账日期仍是 25.05.2025,直接证明替代没有生效。

FB03 证明过账日期仍未被替代

所以本课只能确认:规则被创建并激活、测试凭证已过账、目标结果未实现。视频没有找出唯一根因,也没有完成修复后的回归测试。

七、关键官方校正:不要修改 GB01

为了让 BKPF-BUDAT 出现在可替代字段中,视频进入了 GB01 维护视图并尝试去掉排除标识。这个操作不能按视频照做。

SAP 官方说明:

  • GB01 是 SAP 交付的、跨客户端控制表,不能由客户修改;
  • 客户可配置字段应通过客户端相关的 GB01C,维护视图为 V_GB01C
  • 如果字段在 GB01 中已经被排除,GB01C 不能反向覆盖,因为 GB01 优先;
  • 并非显示在结构中的每个字段都允许在任意布尔类或调用点被替代。

因此,正确做法不是删除 GB01 的排除标识,而是:

  1. 先确认应用区域、调用点和对应布尔类;
  2. 在官方支持范围内检查 GB01C/V_GB01C
  3. 确认目标字段在该布尔类中可读还是可写;
  4. 如果 SAP 明确排除该字段,停止标准替代方案并评估受支持的替代设计;
  5. 任何自定义出口都要经过技术评审、传输和回归测试。

这也解释了为什么“画面中把字段放出来”不能被当成成功证据。字段即使出现在维护器中,也可能在后续处理被限制或覆盖。

八、用户出口该怎么交付

功能顾问不能只对开发人员说“帮我把业务地点设成必填”。最少应提供:

交付项本课案例应写清的内容
业务目的GST 相关供应商行项目必须归属业务地点
触发范围公司代码、凭证来源、账户类型、税务过程和税码集合
数据来源BKPF-BUKRST007A-KALSMT007A-MWSKZBSEG-BUPLA
预期结果业务地点为空时返回失败并发出错误消息
非适用范围非目标公司代码、非 GST 税码、无需业务地点的交易
测试矩阵条件命中/不命中、字段空/非空、手工/自动凭证、正向/冲销
传输依赖客户代码、用户出口注册、验证/替代配置和消息对象的顺序

复杂逻辑适合用户出口,不代表所有简单逻辑都必须开发。先用标准前提、检查、集合和规则表达;确实无法覆盖时才进入客户代码。

九、排查验证或替代不生效

顺序检查项完成标准
1规则是否保存、生成并激活公司代码、调用点、规则名和激活级别正确
2调用点是否匹配字段层级抬头字段不误放到行项目,逐行检查不误放到抬头
3前提条件是否真的命中用实际凭证数据逐项核对,不凭感觉判断
4字段是否属于当前布尔类GB31GB01/GB01C 的官方范围内确认
5字段是否允许被替代可读取不等于可写入;排除字段不能强行开放
6是否被后续程序覆盖对比输入、模拟、过账和 FB03 最终结果
7使用标准跟踪功能优先用验证/替代 Trace 查看调用和表达式结果
8必要时由开发调试仅在受控非生产环境、具备授权并由 ABAP 顾问执行

视频输入 /h 启动 ABAP 调试,准备追踪替代为何没有运行。

使用 /h 启动受控 ABAP 调试

但本课没有完成调试结论。/h 只是打开调试器,不会自动解释问题;生产系统也不应由普通业务用户随意调试。SAP 还提供验证/替代总跟踪功能,通常应先用它确认规则是否被调用以及每个表达式的结果。

十、课程结果与边界

内容本课状态
供应商行项目文本必填验证已创建并在 FB60 中验证生效
反向检查“文本必须为空”仅用于解释逻辑,不是最终配置
GST 税码触发业务地点必填已设计功能与技术逻辑,未完成用户出口开发和端到端测试
凭证日期替代过账日期已创建并激活,但测试失败
完整凭证调用点替代尝试后发现目标字段不可在该事件中替代
/h 调试已启动,未得出根因或修复结果
GST、APP、新总账、现金日记账只安排为后续课程,未在本课实施

十一、字幕与课堂表达校正

视频或自动字幕表达本文采用的准确表达
tax / tax text本段实际字段是行项目文本 BSEG-SGTXT
T0078 / T307AT007A
FB6FB60,供应商发票录入
BBH / OBBAOBBH,FI 会计凭证替代分配与激活
competition levelComplete Document,完整凭证调用点 3
直接改 GB01 解除排除不可复制;官方客户配置入口是 GB01C/V_GB01C,且不能覆盖 GB01 的排除
日期替代已经完成未完成;FB03 显示过账日期仍为 25.05.2025

SAP 官方核验资料

结论

本课最有价值的不是“点完几个事务码”,而是建立可验证的边界:简单条件可以用标准验证或替代;复杂的多表判断可以设计用户出口;调用点和布尔类决定字段能不能用;任何替代都必须用最终凭证证明结果。供应商文本验证已经通过测试,而日期替代没有生效,正确做法是保留失败证据、按官方字段开放规则排查,绝不能通过修改 GB01 强行绕过限制。

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

发表评论

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

56. SAP S/4HANA FICOFI 验证替代用户出口实战
SAP S/4HANA FICO 入门 55:FI 凭证替代、调用点用户出口
SAP S/4HANA FICO 入门 54:FI 校验规则、GGB0 OB28
61. SAP S/4HANA FICO:销售税码自动确定 SD、MM、FI 集成
49. SAP S/4HANA FICO:手工银行对账实战电子银行对账单入门
SAP S/4HANA MM模块培训 56 - 灵活工作流:采购订单审批、场景激活My Inbox
SAP S/4HANA FICO 入门 59:税务访问顺序、税码进项税测试
SAP S/4HANA FICO 入门 39:LSMW 续讲供应商业务伙伴配置
62. SAP S/4HANA FICO:税码测试、行项目字段不可抵扣税
65. SAP S/4HANA FICO:FBZP 配置 F110 自动付款
SAP S/4HANA FICO模块培训 31 - 公司代码会计年度变式
SAP S/4HANA MM模块培训 09 - 字段状态验证 CO 基础配置
SAP S/4HANA FICO 入门 50:客户收款、未清项统驭科目
SAP S/4HANA MM模块培训 49 - 自动科目确定:MM-FI集成、事务键OBYC
SAP S/4HANA FICO 入门 58:印度 GST 基础配置 Business Place
SAP S/4HANA FICO 入门 46:银行对账、House Bank Account ID
SAP S/4HANA FICO 入门 51:训练系统刷新恢复检查
SAP S/4HANA FICO 入门 60:GST 条件技术、Business Place 主数据
SAP S/4HANA培训 32 - FICO入门第2天:系统景观、传输请求、迁移项目角色
SAP S/4HANA FICO模块培训 36 - 凭证暂存批量过账设计