You need to enable JavaScript to run this app. SAP B1 9.3 Service Layer OTSH自定义字段不返回及entity属性配置问询
优惠活动
大模型
产品
解决方案
定价
更多

SAP B1 9.3 Service Layer OTSH自定义字段不返回及entity属性配置问询

SAP B1 9.3 Service Layer 不返回OTSH表自定义字段的配置方案

操作无效的核心原因

  • 直接在OTSH表手动新增数据库列的操作,未同步到SAP B1的元数据层,Service Layer仅识别通过官方工具注册的字段
  • 常规的服务重启、站点更新操作不会强制重载B1的全局字段元数据缓存

落地配置步骤

1. 修正自定义字段创建方式

  • 禁止直接在数据库表中手动新增列,必须通过SAP B1客户端的用户字段管理工具注册字段:
    • 登录目标公司账套的SAP B1客户端
    • 进入 工具 > 自定义工具 > 用户字段管理
    • 选择对应业务对象(OTSH对应服务调用表头实体),在节点下新增2个自定义字段
    • 系统会自动完成元数据注册、权限映射,无需手动修改数据库结构
  • 若已经手动在OTSH加了列,需要先删除手动添加的列,再通过上述流程重新创建字段,避免字段冲突

2. 开启Service Layer的自定义字段暴露开关

  • 进入SAP B1客户端 管理 > 系统初始化 > 常规设置 > 服务层 标签页
  • 勾选暴露用户定义字段到Service Layer选项,保存设置后触发元数据变更

3. 强制刷新Service Layer元数据缓存

之前仅对Service Layer执行更新/重启无效,是因为缓存未被清空,正确操作:

  • 打开IIS管理器,找到Service Layer对应的应用池,执行停止操作
  • 进入Service Layer默认安装路径 C:\Program Files\SAP\SAP Business One ServerTools\Service Layer,删除根目录下的cache缓存文件夹
  • 重新启动对应应用池,Service Layer启动时会自动从B1数据库拉取最新的字段元数据

4. 调用接口时的返回配置

  • Service Layer中自定义字段的固定返回格式为U_你定义的字段名,调用时如果使用$select参数,需要显式将这两个U_字段加入选择列表,否则默认返回集不会携带自定义字段,示例调用:
    https://<SL服务地址>:<端口>/b1s/v1/ServiceCalls?$select=DocNum,CardCode,U_CustomField1,U_CustomField2
    
  • 可通过访问元数据接口验证字段同步状态:调用https://<SL服务地址>:<端口>/b1s/v1/$metadata,在返回的XML中查找ServiceCall实体下是否存在对应的U_字段,存在则说明元数据同步完成

版本兼容注意事项

  • SAP B1 9.3版本的Service Layer对自定义字段的支持,最低需要服务端安装PL08及以上补丁,若补丁版本过低,需要先升级服务端补丁包后再重复上述步骤
  • 确认接口调用时连接的公司账套,和你创建自定义字段的账套为同一数据库,避免跨账套调用导致字段缺失

内容的提问来源于stack exchange,提问作者Ana Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 07:15:01