Oracle EBS / Fusion SLA 判定树生成会计科目真实业务案例
说明:全部为实施项目常见需求,可直接写入 FDS 设计文档;每个案例包含:业务需求、判定树(IF‑ELSE)、SLA 设置要点、测试业务场景、生成会计分录、常见坑点。 COA 示例(5 段):公司‑成本中心‑自然科目‑子科目‑产品,例:01‑110‑2201‑0000‑0000;EBS 与 Fusion 逻辑一致,Fusion 将 ADR 叫 Account Rule。 SLA 科目判定两种实现方式:①条件规则(IF‑ELSE 判定树);②Mapping Set 映射集(适合离散枚举条件)。
案例 1:AP 应付发票,按供应商类型区分应付负债科目(高频)
业务需求:普通外部供应商、政府单位、员工供应商,入账不同负债科目,不使用供应商站点默认负债科目,全部由 SLA ADR 判定输出。
- 事件实体:应付;事件类:发票;事件类型:发票已验证;分录行:负债(贷方行)ADR 判定树(条件规则)
IF 供应商类型 = '政府' THEN 科目 = 01‑110‑2202‑0000‑0000 应付账款‑政府 ELSIF 供应商类型 = '员工' THEN 科目 = 01‑110‑2203‑0000‑0000 其他应付款‑员工 ELSIF 供应商类型 = '外部供应商' THEN 科目 = 01‑110‑2201‑0000‑0000 应付账款‑外部 ELSE 【默认科目】01‑110‑2200‑0000‑0000 应付账款‑通用兜底 END IFSLA 设置要点
- JLD 分录行定义,贷方负债行,ADR 选择上述条件规则;
- 源字段:
Supplier Type(供应商类型); - 必须配置默认科目,否则 SLA 创建会计报错;
- 也可以改用 Mapping Set 实现,输入:供应商类型,输出完整科目组合。
测试场景
业务:录入员工报销发票 10000,供应商类型 = 员工,验证发票,创建会计 输出分录: 借:01‑110‑6601‑0000‑0000 管理费用‑办公费 10000 贷:01‑110‑2203‑0000‑0000 其他应付款‑员工 10000
坑点:供应商类型源字段拿不到值,检查 SLA 会计源是否启用;全部条件不命中,无默认科目,事件状态 = 错误。
案例 2:AP 发票,费用借方按部门判定费用科目(条件分支判定树)
业务需求:发票分配行的部门(成本中心)不同,入不同费用科目;不使用 AP 分配行带入的科目,SLA 覆盖重写借方费用科目。 事件实体:应付;事件类:发票;分录行:费用借方行
IF 发票分配行.部门 = '110(行政部)' THEN 科目=01‑110‑6601‑0000‑0000 管理费用‑办公 ELSIF 发票分配行.部门 = '120(生产部)' THEN 科目=01‑120‑6401‑0000‑0000 制造费用‑物料 ELSIF 发票分配行.部门 = '130(销售部)' THEN 科目=01‑130‑6602‑0000‑0000 销售费用‑其他 ELSE 默认:01‑110‑6699‑0000‑0000 管理费用‑其他费用 END IF测试场景:生产部采购办公用品 5000,发票验证
借:01‑120‑6401‑0000‑0000 制造费用‑物料 5000 贷:01‑110‑2201‑0000‑0000 应付账款‑外部 5000
拓展:可以只派生单个段(只改写自然科目段,公司、成本中心沿用事务源),不需要输出完整 CCID,SLA 支持按段 ADR。
案例 3:PO 采购接收,按 PO 行资产 / 费用标识判定暂估与存货科目(采购暂估核心)
业务需求:PO 接收业务,区分库存物料接收、费用类 PO 接收,SLA 生成不同借方,应付暂估区分物资暂估、服务暂估。 事件实体:采购;事件类:接收;事件类型:接收交货
①借方(接收借方)判定树
IF PO行资产标识 = 'Y'(库存物料) THEN 取物料子库的存货科目 01‑200‑1401‑0000‑0000 原材料 ELSIF PO行资产标识 = 'N' AND PO目的地类型='费用' THEN 取PO分配行费用科目 ELSE 默认:01‑200‑1499‑0000‑0000 采购过渡科目 END IF②贷方(应付暂估)判定树
IF PO类型 = '物资采购' THEN 01‑200‑2301‑0000‑0000 应付暂估‑物资 ELSIF PO类型 = '服务采购' THEN 01‑200‑2302‑0000‑0000 应付暂估‑服务 ELSE 默认:01‑200‑2300‑0000‑0000 应付暂估‑通用 END IF业务场景:库存物料 PO 接收,金额 20000
借:01‑200‑1401‑0000‑0000 原材料 20000 贷:01‑200‑2301‑0000‑0000 应付暂估‑物资 20000
后续 AP 发票匹配 PO 时,SLA 自动生成冲暂估分录。 坑点:费用 PO 接收,目的地项目,源字段 “PO 目的地类型” 取不到,需要检查 SLA 源定义。
案例 4:FA 固定资产折旧,按资产类别 + 归属部门双重条件判定树(多条件 AND)
业务需求:折旧贷方累计折旧按资产类别;折旧借方费用,按资产归属部门入账管理 / 制造 / 销售费用。 事件实体:资产;事件类:折旧;事件类型:运行折旧 1)贷方:累计折旧 ADR
IF 资产类别 = '房屋建筑物' THEN 01‑110‑1602‑0100‑0000 累计折旧‑房屋 ELSIF 资产类别 = '机器设备' THEN 01‑110‑1602‑0200‑0000 累计折旧‑机器设备 ELSIF 资产类别 = 'IT电子设备' THEN 01‑110‑1602‑0300‑0000 累计折旧‑电子设备 ELSE 默认:01‑110‑1602‑9900‑0000 累计折旧‑其他 END IF2)借方折旧费用 ADR(双重条件 AND)
IF 资产类别='机器设备' AND 资产归属部门='120生产部' THEN 01‑120‑6402‑0000‑0000 制造费用‑折旧费 ELSIF 资产归属部门='110行政部' THEN 01‑110‑6601‑0100‑0000 管理费用‑折旧费 ELSIF 资产归属部门='130销售部' THEN 01‑130‑6602‑0100‑0000 销售费用‑折旧费 ELSE 默认:01‑110‑6601‑0100‑0000 管理费用‑折旧费 END IF业务场景:机器设备归属生产部,折旧金额 8000
借:01‑120‑6402‑0000‑0000 制造费用‑折旧费 8000 贷:01‑110‑1602‑0200‑0000 累计折旧‑机器设备 8000
注意:SLA 条件支持 AND/OR 组合;Fusion 界面直接添加多个条件行,逻辑 AND。
案例 5:AR 应收发票,按客户地区 + 物料类别双重条件判定收入科目
业务需求:国内客户外销、内销;物料区分主营产品、服务类,收入科目分开。 事件实体:应收;事件类:标准发票 贷方收入行 ADR 判定树
IF 客户地区='国内' AND 物料类别='主营产成品' THEN 01‑310‑6001‑0100‑0000 主营业务收入‑内销 ELSIF 客户地区='海外' AND 物料类别='主营产成品' THEN 01‑310‑6001‑0200‑0000 主营业务收入‑外销 ELSIF 物料类别='服务类' THEN 01‑310‑6051‑0000‑0000 其他业务收入‑服务 ELSE 默认:01‑310‑6099‑0000‑0000 其他业务收入‑其他 END IF测试场景:海外客户,产成品发票金额 50000
借:01‑310‑1122‑0200‑0000 应收账款‑外销 50000 贷:01‑310‑6001‑0200‑0000 主营业务收入‑外销 50000
案例 6:进阶:只改写某一个科目段(负债科目成本中心取自发票分配行)【真实实施案例】
业务需求:AP 发票负债科目,公司、自然科目、子科目沿用供应商站点负债科目;成本中心段,强制取自发票分配行的成本中心段。
原生 EBS 标准:负债科目全部来自供应商站点;客户要求负债行成本中心跟随费用分配行,一张发票多行分配生成多条负债 SLA 行。
实现方式:分段 ADR,不是输出完整 CCID
- 公司段:源取供应商站点负债科目‑公司段
- 成本中心段:ADR 判定,源取【发票分配科目‑成本中心段】
- 自然科目段:源取供应商站点负债科目‑自然科目段
- 子科目段:源取供应商站点负债科目‑子科目段
判定逻辑伪代码:
公司段 = 供应商站点负债科目的公司段 成本中心段 = 发票分配行科目的成本中心段 自然科目段 = 供应商站点负债科目的自然科目段 子科目段 = 供应商站点负债科目的子科目段 拼接完整科目组合,校验GL_CODE_COMBINATIONS业务效果:一张发票 2 条分配行,成本中心分别 110、120;SLA 生成 2 条负债分录,分别携带 110、120 成本中心段。
案例 7:Mapping Set 映射集替代判定树(适合枚举值多的场景)
当 IF‑ELSE 分支超过 5 条,Oracle 实施最佳实践优先 Mapping Set,减少 ADR 条件维护量。 需求:AP 付款,根据付款银行账户 ID 映射银行存款科目。 Mapping Set 定义: | 输入源(银行账户 ID)| 输出完整科目组合 | | ---- | ---- | |BANK‑ICBC|01‑110‑1002‑0101‑0000 银行存款‑工行 | |BANK‑CCB|01‑110‑1002‑0102‑0000 银行存款‑建行 | |BANK‑ABC|01‑110‑1002‑0103‑0000 银行存款‑农行 |
ADR 设置:值类型 = 映射集,选择上面 Mapping Set,设置默认科目兜底。
等价判定树逻辑:
IF 付款银行账户ID = BANK‑ICBC THEN 工行科目 ELSIF 付款银行账户ID = BANK‑CCB THEN 建行科目 ELSIF 付款银行账户ID = BANK‑ABC THEN 农行科目 ELSE 默认银行科目 END IF实施通用设计规范(写 FDS 文档)
- 所有 ADR 必须配置默认科目,这是 SLA 硬性要求,全部条件不命中时兜底,否则会计事件报错;
- 分支超过 5 个优先 Mapping Set,少分支用条件判定树;
- 可以输出完整科目组合 CCID,也可以分段派生(部分段来自事务源,部分由规则判定);
- 条件支持多条件 AND,不建议过深嵌套;复杂业务建议用映射集;
- 每一套判定逻辑,必须设计 2‑3 条测试用例:命中分支、不命中分支(触发默认科目);
- Fusion 与 EBS 的差异:Fusion 的 Account Rule 条件 UI 更友好,支持 flexfield 源;底层 XLA 表逻辑不变。
SLA 判定树伪代码模板(可直接复制 FDS)
/* ADR:XX规则名称,应用:XX,事件类:XX */ FUNCTION GET_ACCOUNT_CCID(p_event IN XLA_EVENTS%ROWTYPE, p_ae_line_source IN XLA_AE_LINES%ROWTYPE) RETURN NUMBER IS BEGIN IF (条件1) THEN RETURN 科目组合ID1; ELSIF (条件2 AND 条件3) THEN RETURN 科目组合ID2; ELSIF (条件4) THEN RETURN 科目组合ID3; ELSE RETURN 默认CCID; /* 必填兜底 */ END IF; END;