深入理解WebAPI工作原理及示例分析

  • 系统对接顾问

1. WebAPI的工作原理

WebAPI的核心在于模拟录单过程。通过传入的Json数据包,逐一填充对应字段值,触发相关事件、实体服务和插件逻辑。构造完成后调用Save接口(提交、审核),并执行相应的操作校验和逻辑。

参考链接:

2. WebAPI示例与自测

登录Cloud系统,导航至基础管理 -> 动态服务定义 -> WebAPI 或直接搜索WebAPI关键字。

WebAPI001.jpg

3. 特殊参数及常见问题

常见问题1:Json字段值保存失败

分析:

  1. 字段值不合法。测试方法:手动录入Json中的值。
  2. 字段顺序不正确导致覆盖。调整顺序即可。
  3. 插件或其他逻辑影响字段值。使用插件调试DataChange事件和保存事件。

常见问题2:销售套件业务仅第一行成功

原因:参数IsEntryBatchFill需设置为False,因为套件父项物料依赖前置字段产品类型,不适用批量填充。

常见问题3:负库存提示

原因:由于WebAPI无法支持交互弹出界面,需要设置参数InterationFlags为"STK_InvCheckResult"。

其他可能的交互校验忽略标识:

预计可发量检查: Sal_ExpectQtyCheckDetail
最低限价检查: SAL_DOWNPRICECHECK
允许负库存: STK_InvCheckResult
价格来源检查: SAL_CHECKPRICESOURCEFB

常见问题4:自动建立上下游关联关系

解决方案:WebAPI保存接口实现上下游关联

常见问题5:未购买模块提示

原因分析:某些单据需要购买相关模块才能使用。解决方案是根据已购买模块设置SubSystemId参数。例如,销售管理子系统ID为23。

常见问题6:物料不合法导致分录行缺失

原因分析: 未启用IsVerifyBaseDataField参数导致不会校验基础资料合法性。开启该参数可以进行校验,但会影响性能。此外,由于大部分单据BOS设置分录属性为关键字段,因此物料未录入时会被自动删除。

常见问题7:修改保存单据Json构造

修改保存单据无需构造复杂字段,只需提供FID和FEntryId以及需要修改的字段:

{
    "NeedUpDateFields": [],
    "NeedReturnFields": [],
    "IsDeleteEntry": "True",
    "IsVerifyBaseDataField": "false",
    "IsEntryBatchFill": "True",
    "Model": {
        "FID": "188888",
        "FSaleOrderEntry": [
            {"FEntryId": "255555", "FQty": "3"}
        ]
    }
}

4. WebAPI对接性能优化建议

优化点1: 精简Json构造,仅保留必要字段,例如单位、计价单位、税率等自动携带的字段无需构造。

优化点2: 避免触发取价服务和取折扣服务。如果Json中已有价格,则无需触发这些耗时操作。

5. 超高性能大数据量对接方案与建议

大数据量对接建议步骤:

  1. 将第三方数据对接到ERP中间表,中间表仅包含简单字段及状态字段。
  2. 数据分批通过执行计划对接,通过ERP执行计划插件进行少量多次处理。