**广联智通科技公司信息系统**

**开发功能说明书**

<table><tr><td><p><strong>信息系统</strong></p></td><td><p>☑SAP</p></td></tr><tr><td><p><strong>功能名称</strong></p></td><td><p>定时自动填充销售订单行WBS</p></td></tr><tr><td><p><strong>开发类型</strong></p></td><td><p>□报表 □用户出口 □接口 □对话程序 ☑流程  </p><p>□表单</p></td></tr><tr><td><p><strong>开发记录号</strong></p></td><td></td></tr></table>

**2026年6月**

**目录**

- [**1** **创建修改记录** **3**](#_Toc531872890)
- **2** **开发类型** **4**
- [**3** **业务需求概述** **4**](#_Toc531872892)
    - [现有/样本报表](#_Toc531872893)
- [**4** **功能规范** **5**](#_Toc531872894)
    - [4.1 程序开发优先级](#_Toc531872895)
    - [4.2 权限要求](#_Toc531872896)
    - [4.3 程序运行频率](#_Toc531872897)
    - [4.4 屏幕设计及其布局](#_Toc531872898)
    - [4.5 参数和选择条件](#_Toc531872899)
    - [4.6 字段的定义](#_Toc531872900)
- [**5** **程序输出格式** **7**](#_Toc531872901)
    - [5.1 业务大概逻辑](#_Toc531872902)
    - [5.2 前台业务截图](#_Toc531872903)
    - [5.3 SAP方需要传入传出的参数](#_Toc531872904)
    - [5.4 数据转换](#_Toc531872905)
- [**6测试数据 9**](#_Toc531872906)
- [**7 附件或样本 9**](#_Toc531872907)
- [**8 测试记录 10**](#_Toc531872908)

<a id="_Toc531872890"></a>
# 1. **创建修改记录**

<table><tr><td><p>作者</p></td><td></td></tr><tr><td><p>业务顾问</p></td><td></td></tr><tr><td><p>创建日期</p></td><td><p>20260610</p></td></tr><tr><td><p>最近修改日期</p></td><td></td></tr><tr><td><p>开发</p></td><td></td></tr><tr><td><p>备注</p></td><td></td></tr></table>

<a id="_Toc135387408"></a>
# 2. **文档变更**

<table><thead><tr><th><p><strong>版本号</strong></p></th><th><p><strong>修正日期</strong></p></th><th><p><strong>修改人</strong></p></th><th><p><strong>修正描述</strong></p></th><th><p><strong>备注</strong></p></th></tr></thead><tbody><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>

<a id="_Toc531872892"></a>
# 3. **业务需求概述**

<table><tr><td><p><a></a><a></a><a></a>需求概述：</p></td><td colspan="3"><p>用户需要在销售订单上维护WBS字段用于后续COPA分析。因手工逐行填写WBS工作量过大，已在物料主数据上扩展自定义字段"型号"（YY1_BOSPECIFICATION_PRD）。需开发程序自动将物料主数据的型号值根据限制条件写入销售订单行的WBS字段。</p></td></tr><tr><td><p>开发难度(高/中/低)：</p></td><td><p>低</p></td><td><p>事务代码：</p></td><td></td></tr><tr><td><p>运行类型(在线/批处理):</p></td><td><p>在线</p></td><td></td><td></td></tr><tr><td><p>交易量：</p></td><td colspan="3"><p>低</p></td></tr><tr><td><p>备注：</p></td><td colspan="3"></td></tr></table>

<a id="_Toc531872893"></a>
## 3.1. **现有/样本报表**

<table><tr><td><p>现有报表名称：</p></td><td><p>N/A</p></td></tr><tr><td><p>系统菜单/交易代码：</p></td><td><p>N/A</p></td></tr></table>

<a id="_Toc531872894"></a>
# 4. **功能规范**

<a id="_Toc531872895"></a>
## 4.1. **程序开发优先级**

**优先级别	:**	□ 高		☑ 中		 低

<a id="_Toc531872896"></a>
## 4.2. **权限要求**

批处理程序需具备访问以下内容的权限：

•	CDS视图：I\_SalesDocumentItem、I\_Product

•	OData服务：API\_SALES\_ORDER\_SRV（PATCH方法）

•	接口账号：EXT\_USER\_TEST（或专用批处理账号）需拥有修改销售订单行项目的权限

<a id="_Toc531872897"></a>
## 4.3. **程序运行频率**

[请在此选择本程序的运行频率，并按照业务需要，说明具体的频率要求，例如，每日：具体到时；每周：具体到日和时；每月：具体到日和时；每年：具体到日和时]

随时	□ 周	 	□ 月 		□ 季		□ 年

<a id="_Toc531872898"></a>
## 4.4. **屏幕设计及其布局**

无

<a id="_Toc531872899"></a>
## 4.5. **参数和选择条件**

1. 获取CSRF Token：

<table><tr><td><p>方法</p></td><td><p>URL</p></td><td><p>认证方式</p></td></tr><tr><td><p>GET</p></td><td><p>https://my201453-api.s4hana.sapcloud.cn/sap/opu/odata4/sap/api_salesorder/srvd_a2x/sap/salesorder/0001/$metadata</p></td><td><p>Basic Auth</p></td></tr></table>

1. 修改销售订单数据：

<table><tr><td><p>方法</p></td><td><p>URL</p></td><td><p>认证方式</p></td></tr><tr><td><p>PATCH</p></td><td><p>https://my201453-api.s4hana.sapcloud.cn/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1000000048',SalesOrderItem='20')</p></td><td><p>Basic Auth</p></td></tr></table>

<a id="_Toc531872900"></a>
## 4.6. **字段的定义**

[请在此处说明所涉及字段所对数据表及其字段名或结构及其字段名]

所用数据表/视图及字段说明：

<table><thead><tr><th><p><strong>数据源</strong></p></th><th><p><strong>字段名</strong></p></th><th><p><strong>数据类型</strong></p></th><th><p><strong>说明</strong></p></th></tr></thead><tbody><tr><td><p>I_SalesDocumentItem</p></td><td><p>SalesOrder</p></td><td><p>NVARCHAR(10)</p></td><td><p>销售凭证号</p></td></tr><tr><td><p>I_SalesDocumentItem</p></td><td><p>SalesOrderItem</p></td><td><p>NVARCHAR(6)</p></td><td><p>行项目号</p></td></tr><tr><td><p>I_SalesDocumentItem</p></td><td><p>Product</p></td><td><p>NVARCHAR(40)</p></td><td><p>物料号</p></td></tr><tr><td><p>I_SalesDocumentItem</p></td><td><p>TotalDeliveryStatus</p></td><td><p>CHAR(1)</p></td><td><p>总体交货状态</p></td></tr><tr><td><p>I_SalesDocumentItem</p></td><td><p>WBSElement</p></td><td><p>NVARCHAR(24)</p></td><td><p>WBS元素（目标字段）</p></td></tr><tr><td><p>I_Product</p></td><td><p>YY1_BOSPECIFICATION_PRD</p></td><td><p>自定义</p></td><td><p>物料主数据-型号</p></td></tr></tbody></table>

<a id="_Toc531872901"></a>
# 5. **程序输出格式**

<a id="_Toc531872902"></a>
## 5.1. **业务大概逻辑**

开始

│

├── 1. 查询 I\_SalesDocumentItem

│      条件：TotalDeliveryStatus = 'A'（未交货）

│

├── 2. 检查 WBSElement 字段

│      ├── 有值（非空且非"00000000"）→ 跳过，不处理

│      └── 为空 或 = "00000000" → 继续

│

├── 3. 取 Product（物料号）

│

├── 4. 查询 I\_Product CDS视图

│      条件：Product = 上一步的物料号

│      取字段：YY1\_BOSPECIFICATION\_PRD（型号）

│

├── 5. 判断型号字段

│      ├── 空值 → 跳过，不处理

│      └── 有值 → 继续

│

└── 6. 调用 OData API 更新销售订单行

URL: /sap/opu/odata/sap/API\_SALES\_ORDER\_SRV

METHOD: PATCH

Path: /A\_SalesOrderItem(SalesOrder='{SalesOrder}',SalesOrderItem='{Item}')

Body: { "WBSElement": "{型号值}" }

结束

限制条件

<table><thead><tr><th><p><strong>条件</strong></p></th><th><p><strong>规则</strong></p></th><th><p><strong>说明</strong></p></th></tr></thead><tbody><tr><td><p>交货状态</p></td><td><p>TotalDeliveryStatus = 'A'</p></td><td><p>'A' = 未交货（无后续单据），有后续单据的不修改</p></td></tr><tr><td><p>WBS已有值</p></td><td><p>WBSElement 非空且非'00000000'</p></td><td><p>已有值的不覆盖，避免人工已维护的数据被冲掉</p></td></tr><tr><td><p>物料主数据型号为空</p></td><td><p>YY1_BOSPECIFICATION_PRD IS NULL OR = ''</p></td><td><p>型号字段无值的物料不写入WBS</p></td></tr><tr><td><p>更新范围</p></td><td><p>仅更新WBS字段</p></td><td><p>不修改销售订单其他任何字段</p></td></tr></tbody></table>

<a id="_Toc531872903"></a>
## 5.2. **前台业务截图**

[请在此处附上前台业务的截图，并将所要取出的字段标记出来]

<a id="_Toc531872904"></a>
## 5.3. **传入传出的参数**

**［仅接口类型程序需要］**

### 5.3.1. **获取CSRF Token**

<table><tr><td><p><strong>接口URL</strong></p></td><td><p>https://my201453-api.s4hana.sapcloud.cn/sap/opu/odata4/sap/api_salesorder/srvd_a2x/sap/salesorder/0001/$metadata</p></td></tr><tr><td><p><strong>请求方式</strong></p></td><td><p>GET</p></td></tr><tr><td><p><strong>Header参数</strong></p></td><td><p>Content-Type: application/json;charset=UTF-8</p></td></tr><tr><td><p><strong>返回内容</strong></p></td><td><p>响应头中获取 x-csrf-token 值（如：QPhEehZIrhXWnJ8S0yDUSQ==）</p></td></tr></table>

<a id="_Toc531872905"></a>
### 5.3.2. **更新销售订单行WBS字段**

<table><tr><td><p><strong>接口URL</strong></p></td><td><p>https://my201453-api.s4hana.sapcloud.cn/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrderItem(SalesOrder='1000000048',SalesOrderItem='20')</p></td></tr><tr><td><p><strong>请求方式</strong></p></td><td><p>PATCH</p></td></tr><tr><td><p><strong>Content-Type</strong></p></td><td><p>application/json;charset=UTF-8</p></td></tr><tr><td><p><strong>Header参数</strong></p></td><td><p>x-csrf-token: {从GET获取的token值}</p></td></tr><tr><td><p><strong>请求Body示例</strong></p></td><td><p>{</p><p>"WBSElement": "TEST-201"</p><p>}</p></td></tr><tr><td><p><strong>成功响应</strong></p></td><td><p>HTTP 200 或 204</p></td></tr></table>

## 5.4. **数据转换**

[仅接口程序类型需要，请在此处描述SAP系统和对方系统之间的数据匹配]

<a id="_Toc531872906"></a>
# 6. **6测试数据**

[请在此处说明已经在开发环境准备好的可供程序员测试的数据]

<table><thead><tr><th><p><strong>编号</strong></p></th><th><p><strong>场景</strong></p></th><th><p><strong>前置条件</strong></p></th><th><p><strong>预期结果</strong></p></th></tr></thead><tbody><tr><td><p>TC01</p></td><td><p>WBS为空，型号有值</p></td><td><p>TotalDeliveryStatus=A, WBSElement='', 物料有型号</p></td><td><p>WBS更新为型号值，日志成功</p></td></tr><tr><td><p>TC02</p></td><td><p>WBS=00000000，型号有值</p></td><td><p>TotalDeliveryStatus=A, WBSElement='00000000', 物料有型号</p></td><td><p>WBS更新为型号值</p></td></tr><tr><td><p>TC03</p></td><td><p>WBS已有值</p></td><td><p>WBSElement='P-2026-001'</p></td><td><p>跳过，不处理</p></td></tr><tr><td><p>TC04</p></td><td><p>型号为空</p></td><td><p>物料主数据型号字段为空</p></td><td><p>跳过，不处理</p></td></tr><tr><td><p>TC05</p></td><td><p>已部分交货</p></td><td><p>TotalDeliveryStatus='B'</p></td><td><p>跳过，不处理</p></td></tr><tr><td><p>TC06</p></td><td><p>已完全交货</p></td><td><p>TotalDeliveryStatus='C'</p></td><td><p>跳过，不处理</p></td></tr></tbody></table>

<a id="_Toc531872907"></a>
# 7. **7 附件或样本**

<a id="_Toc531872908"></a>
# 8. **8 测试记录**

<table><tr><td><p>序号</p></td><td><p>CLIENT</p></td><td><p>测试人</p></td><td><p>测试日期</p></td><td><p>测试条件</p></td><td><p>预期测试结果</p></td><td><p>实际测试结果</p></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table>