华为MetaERP OE_ORDER_LINES_ALL.LINE_TYPE_ID 在 OM 标准 API 中的使用全景核心前提:LINE_TYPE_ID 用来读取 OE_LINE_TYPES_B

OE_ORDER_LINES_ALL.LINE_TYPE_ID 在 OM 标准 API 中的使用全景

核心前提: LINE_TYPE_ID 用来读取 OE_LINE_TYPES_B 中的配置开关(INVENTORY_ITEM_FLAG、MODEL_FLAG、OPTION_FLAG、RETURN_FLAG、DEFAULT_LINE_FLOW_ID),所有履约、定价、库存、工作流分支判断都依赖它。 区分两种场景: 1)入参传入 LINE_TYPE_ID:创建 / 更新订单行; 2)内部读取 LINE_TYPE_ID:业务逻辑路由、校验、分支判断(绝大多数 API)。

一、核心公共 API(开发最常用)

1. OE_ORDER_PUB(OM 入口核心包)

PROCESS_ORDER

最关键 API,LINE_TYPE_ID 双重用途

  1. 创建 / 更新订单行:入参 l_line_tbl().LINE_TYPE_ID
    • 新建行必须传入;不传则通过默认规则自动推导;
    • 更新行时,如果放开处理约束,可以修改 LINE_TYPE_ID;
  2. 内部校验逻辑
    • 根据 LINE_TYPE_ID 读取行类型属性:
      • 是否实物物料、是否模型行、是否退货行;
      • 校验数量正负(销售行正数、RMA 退货行负数);
      • 加载默认 Line Flow 工作流;
    • 控制:是否允许 ATP、是否允许库存预留、是否允许发运;
    • 控制处理约束(Processing Constraints)校验:能否修改字段、能否取消、能否调度。
GET_ORDER

根据 LINE_ID 读取订单完整行记录,返回结构中携带 LINE_TYPE_ID; 外部程序拿到行数据后,依靠 LINE_TYPE_ID 区分商品行 / 运费 / 模型行用于报表、二次逻辑。

LOCK_ORDER

锁定订单头行,加载行记录,内部缓存 LINE_TYPE_ID 用于后续业务校验。

2. OE_SCHEDULE_PUB(调度 / ATP / 库存预留)

SCHEDULE_LINE / UNSCHEDULE_LINE 内部逻辑:

sql

根据LINE_TYPE_ID关联OE_LINE_TYPES_B.INVENTORY_ITEM_FLAG
IF INVENTORY_ITEM_FLAG = 'Y' THEN
    执行ATP检查、创建/删除MTL_RESERVATIONS库存预留
ELSE
    跳过ATP、跳过库存预留(运费、服务费行不调度)
END IF
  • 运费行、费用行调用调度 API 会直接返回警告,不生成调度行;
  • MODEL 模型父行禁止创建预留,仅 Option 组件行参与调度。

3. OE_CANCEL_PUB(订单行取消)

CANCEL_LINE 读取 LINE_TYPE_ID 做分支判断:

  1. RMA 退货行取消逻辑与销售行不一样;
  2. 实物行取消 → 自动释放库存预留;
  3. 非库存行(运费)取消不触碰 INV;
  4. 判断是否为 Model 行,禁止直接取消顶层模型行(必须先取消子 Option 行)。

4. OE_HOLD_PUB(冻结 / 释放冻结)

APPLY_HOLD / RELEASE_HOLD 支持头级、行级冻结;API 内部读取 LINE_TYPE_ID: 部分冻结来源(信贷冻结)可配置只对实物销售行生效,忽略运费 / 费用行

5. OE_PRICE_PUB(重新定价)

PRICE_LINE / REPRICE_ORDER LINE_TYPE_ID 作为定价上下文传入 QP 定价引擎; 价目表、修改器可以设置行类型过滤条件,不同行类型适用不同折扣规则; 运费行使用单独的定价逻辑。

6. OE_WF_API(工作流控制)

  • START_LINE_FLOW:根据 LINE_TYPE_ID 读取 OE_LINE_TYPES_B.DEFAULT_LINE_FLOW_ID,启动对应行工作流;
  • CONTINUE_FLOW:履约节点(发运、开票)校验行类型,RMA 行走退货工作流,销售行走标准履约流程;

经典故障:LINE_TYPE_ID 配置错误 → 绑定错误 Line Flow,导致发运后无法自动推送 AR 接口。

二、集成与底层私有 PVT API(系统后台并发、模块集成调用)

7. OE_SHIPPING_INTEGRATION_PVT(OM ↔ WSH 发运集成)

挑库发放、Ship Confirm 核心内部包:

  1. 读取 LINE_TYPE_ID,非 INVENTORY_ITEM_FLAG 行不生成 WSH_DELIVERY_DETAILS 发运行
  2. 运费行不会下发到仓库执行拣货;
  3. 区分销售出库行 vs RMA 退货接收行,传递不同方向给 WSH。

8. OE_BULK_PROCESS_LINE(Order Import 批量导入底层)

OE_HEADERS_IFACE_ALL / OE_LINES_IFACE_ALL 转正逻辑:

  • 校验传入 LINE_TYPE_ID 是否有效、是否启用;
  • 根据行类型校验数量符号、物料是否必填;
  • 自动填充默认属性(MODEL_FLAG、OPTION_FLAG)。

9. OE_SCHEDULE_UTIL(调度底层工具包)

ATP 可用性计算、预留创建 / 释放; 依靠 LINE_TYPE_ID 过滤不需要参与供需规划的费用行。

10. OE_LINE_UTIL(订单行通用工具)

Query_Row、Validate_Line_Type; 几乎所有 OM API 都会调用此工具加载行类型缓存。

三、QP 定价模块联动 API(QP_PUB_PRICING.PRICE_REQUEST)

OM 调用 QP 时,会把 LINE_TYPE_ID 作为定价上下文传入; 高级定价修改器(Modifier)可以设置条件:仅对指定行类型生效。

四、RMA 退货相关 API

OE_RMA_PUB 创建退货行时,自动分配 RETURN_FLAG=Y 的 LINE_TYPE_ID; 后续收货、贷项通知单接口流程全部依靠 LINE_TYPE_ID 区分退货业务。

五、API 层面 LINE_TYPE_ID 两大典型使用模式

模式 A:【入参输入】创建 / 更新订单

plsql

l_line_tbl(i).LINE_TYPE_ID := xxx;
OE_ORDER_PUB.PROCESS_ORDER(..., p_line_tbl => l_line_tbl);

适用:新建 SO、新建 RMA、接口导入变更订单。

模式 B:【内部读取路由判断】(绝大多数业务 API)

plsql

--伪代码,所有调度/取消/发运/工作流通用逻辑
SELECT INVENTORY_ITEM_FLAG,MODEL_FLAG,RETURN_FLAG
INTO l_inv_flag,l_model_flag,l_return_flag
FROM OE_LINE_TYPES_B
WHERE LINE_TYPE_ID = l_line_rec.line_type_id;

IF l_inv_flag = 'Y' THEN
    执行库存、ATP、挑库相关逻辑;
ELSE
    跳过库存履约;
END IF;

六、开发高频踩坑点

  1. 调用 PROCESS_ORDER 更新订单时,不要随意修改 LINE_TYPE_ID 标准处理约束默认禁止,强行传值会报错;放开约束后修改,会重新加载一套全新 Line Flow,极易造成 Workflow 卡死。
  2. 不要硬编码 LINE_TYPE_ID 数字 开发报表 / 客户化 API,必须关联OE_LINE_TYPES_B,用标志(INVENTORY_ITEM_FLAG)判断,不能直接写 LINE_TYPE_ID=1001
  3. 外部接口导入(Order Import)LINE_TYPE_ID 错误后果
    • 运费行配成实物行:尝试 ATP、创建预留、挑库报错;
    • 实物行配成费用行:无法生成发运行,不能发货。
  4. CTO PTO/ATO 场景 Model 父行与 Option 子行 LINE_TYPE_ID 不同,API 内部依靠该标识区分是否需要展开选配结构。

七、API 清单精简汇总(速查)

公共 API(对外推荐调用)

  1. OE_ORDER_PUB.PROCESS_ORDER 【读写传入 + 内部校验】
  2. OE_ORDER_PUB.GET_ORDER
  3. OE_SCHEDULE_PUB.SCHEDULE_LINE / UNSCHEDULE_LINE
  4. OE_CANCEL_PUB.CANCEL_LINE
  5. OE_HOLD_PUB.APPLY_HOLD / RELEASE_HOLD
  6. OE_PRICE_PUB.REPRICE_ORDER
  7. OE_WF_API.START_LINE_FLOW

私有 PVT / 底层工具(一般不直接客户化调用)

  1. OE_SHIPPING_INTEGRATION_PVT
  2. OE_BULK_PROCESS_LINE
  3. OE_LINE_UTIL
  4. OE_SCHEDULE_UTIL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金牌架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值