业 务 链 类 的 需 求 , 在 项 目 实 施 中 很 常 见 。 也 就 是 我 们 常 说 的
业 务 联 动 。 一 个 集 团 公 司 , 如 果 存 在 集 中 采 购 和 销 售 公 司 这
类 的 架 构 , 业 务 联 动 不 可 避 免 。 S A P 有 标 准 的 业 务 联 动 功
能 , 但 它 是 通 过 i D o c 实 现 。 很 多 人 不 喜 欢 , 配 置 复 杂 ,
追 踪 问 题 不 方 便 。 很 多 A B A P 宁 愿 加 班 撸 代 码 , 也 不 喜 欢
碰 i D o c 。 这 可 以 理 解 。 本 文 不 探 讨 S A P 标 准 功 能 和 自
开 发 功 能 的 优 劣 , 只 是 假 设 有 这 类 的 需 求 给 到 A B A P 头 上
了 , 我 们 要 怎 样 简 便 、 高 效 地 实 现 需 求 。 单 纯 集 团 内 业 务 ,
比 如 各 种 调 拨 , 本 文 不 涉 及 。
1 、 业 务 节 点 配 置 。 作 者 本 人 的 一 个 建 议 是 , 无 论 你 的 业 务 链 需 求 多 么 简 单 , 也 要 把 业 务 链 上 的 各 个 节 点 以 配 置 表 的 方 式 实 现 。 这 样 做 的 主 要 目 的 是 直 观 。 无 论 你 自 己 , 还 是 后 来 的 开 发 , 都 能 通 过 配 置 表 一 眼 看 出 来 整 个 流 程 是 怎 么 走 的 。 如 果 业 务 复 杂 , 有 大 量 业 务 链 , 配 置 表 的 存 在 更 重 要 。 比 如 在 某 天 老 板 要 在 销 售 业 务 链 上 增 加 一 家 公 司 , 或 者 把 销 售 业 务 从 A 公 司 转 到 B 公 司 , 我 们 在 配 置 表 里 增 加 或 者 修 改 一 个 节 点 即 可 , 而 不 用 在 代 码 里 一 通 改 逻 辑 , 既 麻 烦 又 容 易 出 错 。 鉴 于 一 个 业 务 流 至 少 有 两 个 节 点 , 配 置 表 至 少 要 两 个 。 不 要 嫌 麻 烦 , 后 续 可 以 把 这 两 个 表 做 成 视 图 。 示 例 : 为 方 便 , 以 B F 代 指 业 务 流 , M 代 表 生 产 工 厂 , P 代 表 集 采 公 司 , S 代 表 销 售 公 司 。 表 1 。 业 务 链 I D | 业 务 链 描 述 | 业 务 类 别
---|---|---
B F 0 0 1 | M 0 0 1 工 厂 标 准 销 售 流 程 | 0 1 销 售
B F 0 0 2 | M 0 0 1 工 厂 标 准 采 购 流 程 | 0 2 采 购
表 2 。 业 务 链 I D | 节 点 序 号 | 节 点 工 厂 | 加 价 规 则
---|---|---|---
B F 0 0 1 | 0 0 1 | M 0 0 1 | 1 . 0 0 0
B F 0 0 1 | 0 0 2 | S 0 0 1 | 1 . 0 0 5
B F 0 0 2 | 0 0 1 | P 0 0 1 | 1 . 0 0 3
B F 0 0 2 | 0 0 2 | M 0 0 1 | 1 . 0 0 0
这 是 最 简 单 的 例 子 。 节 点 的 顺 序 以 货 物 移 动 的 顺 序 为 参 考 。
真 正 项 目 上 的 需 求 一 定 复 杂 得 多 , 但 大 的 思 路 是 一 样 的 , 无
非 节 点 多 逻 辑 多 。
2 、 初 始 单 据 和 基 准 单 据 。 初 始 单 据 指 触 发 业 务 链 的 单 据 。
它 的 来 源 可 能 有 多 种 方 式 。 比 如 手 工 创 建 的 单 据 通 过 某 种 增
强 逻 辑 触 发 业 务 链 , C R M / S R M 等 外 围 系 统 通 过 接 口 触
发 业 务 链 , 其 他 自 开 发 程 序 创 建 的 单 据 同 时 触 发 业 务 链 等 等
。 初 始 单 据 一 定 要 体 现 核 心 的 业 务 数 据 。 以 销 售 为 例 , 原 始
销 售 订 单 上 要 体 现 物 料 , 数 量 , 发 货 工 厂 , 真 实 客 户 , 以 及
其 他 自 定 义 的 字 段 。 业 务 链 出 了 问 题 , 要 从 这 条 原 始 单 据 开
始 一 层 一 层 追 。 原 始 单 据 的 业 务 数 据 不 需 要 存 日 志 表 。 在 发
货 之 前 , 这 个 单 据 随 时 可 能 会 修 改 , 存 了 也 没 太 大 意 义 。 需
要 的 时 候 通 过 原 始 单 据 号 直 接 取 值 。 基 准 单 据 指 真 实 的 货 物
移 动 单 据 。 还 是 以 销 售 为 例 , 销 售 某 物 料 9 0 0 件 到 客 户 1
0 0 0 0 1 , M 0 0 1 工 厂 负 责 发 货 。 本 次 的 业 务 链 初 始 单
据 就 可 以 是 M 0 0 1 工 厂 的 销 售 订 单 , 售 达 方 是 集 团 内 客 户
S 0 0 1 , 送 达 方 是 真 实 客 户 1 0 0 0 0 1 ( 或 者 送 达 方 也
是 S 0 0 1 , 但 通 过 增 强 字 段 体 现 1 0 0 0 0 1 , 这 属 于 技
术 细 节 , 不 过 多 展 开 ) 。 生 产 这 9 0 0 件 可 能 需 要 一 周 , 但
客 户 未 必 愿 意 等 你 一 周 , 要 求 你 生 产 3 0 0 件 就 要 发 一 次 货
, 分 3 次 发 完 。 对 这 3 0 0 件 发 货 过 账 时 , 就 要 触 发 业 务 链
联 动 发 货 。 这 3 0 0 件 货 的 交 货 单 , 就 是 基 准 单 据 。 所 以 不
能 用 原 始 单 据 当 基 准 单 据 , 两 者 的 数 量 可 能 对 不 上 。 如 果 能
通 过 管 理 方 式 , 在 系 统 外 就 强 行 约 定 , 发 3 0 0 件 货 , 就 建
3 0 0 件 的 销 售 订 单 , 那 当 然 非 常 N i c e 。 即 便 如 此 , 还
是 建 议 基 准 单 据 用 交 货 单 。 如 果 是 采 购 业 务 , 基 准 单 据 就 用
1 0 1 收 货 凭 证 , 有 内 向 交 货 单 也 可 以 。 这 3 0 0 件 货 的 发
货 联 动 过 程 大 概 就 是 这 样 : M 0 0 1 工 厂 原 始 单 据 S O 1 (
触 发 业 务 链 ) → 创 建 3 0 0 件 货 的 交 货 单 D N 1 ( 触 发 联 动
交 货 ) → D N 1 发 货 过 账 → S 0 0 1 工 厂 创 建 采 购 订 单 P O
1 , 供 应 商 是 M 0 0 1 → P O 1 收 货 → S 0 0 1 创 建 对 客 户
1 0 0 0 0 1 销 售 订 单 S O 2 → S O 2 创 建 对 外 交 货 单 D N
2 → D N 2 发 货 过 账 。 每 一 步 的 单 据 和 凭 证 肯 定 要 存 表 , 这
就 要 设 计 业 务 数 据 表 。 初 始 单 据 \+ 基 准 单 据 组 合 可 以 作 为 业
务 链 的 K e y , 不 过 还 是 建 议 自 己 搞 一 个 S N R O 作 为 每 个
业 务 链 的 主 键 , 观 感 上 比 较 干 净 。 上 边 这 个 流 程 的 业 务 日 志
表 可 以 设 计 成 这 样 。
其 中 表 5 是 各 节 点 的 抬 头 数 据 , 和 表 4 可 以 合 并 成 一 个 表 。
我 个 人 感 觉 各 节 点 无 论 执 行 成 功 还 是 失 败 , 最 好 都 把 抬 头 数
据 存 下 来 , 字 段 不 多 , 数 据 量 也 不 大 , 不 会 影 响 数 据 库 的 效
率 。 表 3 、 4 、 5 可 以 做 成 一 个 视 图 方 便 取 数 。 表 6 是 基 准
单 据 的 错 误 日 志 。 还 是 参 考 上 面 的 例 子 , 如 果 创 建 D N 1 交
货 单 时 报 错 , 或 者 发 货 过 账 时 报 错 , 行 项 目 上 的 业 务 数 据 要
存 下 来 , 以 备 补 偿 程 序 处 理 。 后 续 的 各 种 单 据 如 果 报 错 , 就
没 必 要 存 数 了 , 可 以 根 据 基 准 单 据 从 标 准 表 取 数 。 如 果 继 续
发 货 , 是 否 需 要 创 建 新 的 交 易 流 水 号 。 我 个 人 觉 得 都 可 以 ,
交 易 流 水 号 并 未 附 加 业 务 属 性 , 多 一 个 少 一 个 不 影 响 大 局 。
只 是 如 果 多 次 发 货 只 用 一 个 交 易 流 水 号 , 每 次 新 生 成 的 交 货
单 要 作 为 主 键 。 看 你 自 己 习 惯 。
3 、 模 块 化 和 补 偿 程 序 。 各 节 点 的 创 建 和 过 账 功 能 , 要 封 装
成 单 独 的 F u n c t i o n 或 者 方 法 , 也 就 是 所 谓 的 L U W
。 各 F u n c t i o n 的 抬 头 和 行 项 目 参 数 , 最 好 能 做 到 统
一 , 这 个 统 一 肯 定 是 带 冗 余 字 段 的 , 但 这 样 会 减 少 开 发 量 ,
可 以 肆 无 忌 惮 m o v e \- c o r r e s p o n d i n g 。 这
里 简 单 罗 列 一 下 可 能 涉 及 的 B A P I / F M , 具 体 怎 么 用 ,
各 位 读 者 才 华 横 溢 , 不 用 我 班 门 弄 斧 。 创 建 销 售 订 单 : B A
P I _ S A L E S O R D E R _ C R E A T E F R O M D A
T A / S D _ S A L E S D O C U M E N T _ C R E A T E
。 创 建 外 向 交 货 单 : B A P I _ O U T B _ D E L I V E R
Y _ C R E A T E _ S L S 。 发 货 过 账 : B A P I _ O U T
B _ D E L I V E R Y _ C O N F I R M _ D E C / 录 屏 。
创 建 采 购 订 单 : B A P I _ P O _ C R E A T E 1 。 创 建 内
向 交 货 单 : B A P I _ D E L I V E R Y P R O C E S S I
N G _ E X E C / B B P _ I N B _ D E L I V E R Y _ C
R E A T E 。 采 购 订 单 收 货 : B A P I _ G O O D S M V T
_ C R E A T E 。 F u n c t i o n 里 是 否 要 附 加 更 新 自 建
表 的 逻 辑 , 这 要 看 你 想 把 F u n c t i o n 做 成 通 用 的 还 是
专 用 的 。 通 用 的 就 别 加 了 , 专 用 的 可 以 加 上 。 有 了 各 种 自 建
表 和 F u n c t i o n , 写 补 偿 程 序 就 比 较 简 单 了 。 判 断 各
种 单 据 是 否 已 更 新 到 自 建 表 , 如 果 这 个 没 更 新 , 就 调 用 这 个
F M , 如 果 那 个 没 更 新 , 就 调 用 那 个 。 从 上 文 的 表 5 取 抬 头
数 据 , 从 基 准 单 据 取 行 项 目 数 据 , 重 新 执 行 一 遍 。
4 、 即 时 更 新 。 业 务 链 的 执 行 是 高 度 有 序 集 成 的 , 比 如 创 建
了 采 购 订 单 , 马 上 就 要 1 0 1 收 货 。 鉴 于 S A P 的 异 步 更 新
机 制 , 这 时 如 果 采 购 订 单 只 是 创 建 成 功 , 但 是 没 有 写 入 数 据
库 表 , 执 行 1 0 1 收 货 就 会 报 错 P O 不 存 在 , 很 尴 尬 。 解 决
这 个 问 题 有 两 个 办 法 , 一 个 是 在 每 个 F u n c t i o n 里 加
一 句 S E T U P D A T E T A S K L O C A L . 相 当 于 强 行
插 队 更 新 。 还 有 一 个 原 始 粗 暴 的 办 法 , B A P I 执 行 完 , C
o m m i t 之 后 , 用 D o 循 环 取 数 和 W a i t 语 句 傻 等 , 直
到 取 到 值 退 出 。 两 个 办 法 都 可 以 , 看 你 自 己 习 惯 。
5 、 冲 销 。 开 发 一 个 业 务 链 报 表 , 在 报 表 基 础 上 增 加 冲 销 功
能 , 倒 着 一 步 一 步 冲 销 即 可 。 冲 销 时 最 常 见 的 错 误 是 账 期 问
题 , 注 意 一 下 。