You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SAP Cloud SDK获取销售订单与发票(偏好OData v4端点)

SAP Cloud SDK (TypeScript) 提取销售订单与发票(OData v4)

API选择指引

优先选择SAP官方提供的OData v4标准服务:

  • 销售订单:使用API_SALES_ORDER_V4_SRV服务(对应业务对象:销售订单),支持读取、创建、修改等操作
  • 发票(开票凭证):使用API_BILLING_DOCUMENT_V4_SRV服务(对应业务对象:开票凭证),覆盖发票的读取与管理

这些服务是S/4HANA Cloud/On-Prem中针对销售单据的标准v4端点,无需自行开发自定义API。

TypeScript实现示例

前提

确保已通过SAP Cloud SDK Generator生成对应服务的客户端代码(或直接使用通用OData v4请求构建器),且目标系统配置已完成(即defaultDestination可正常连接)。

1. 读取销售订单

import { SalesOrder, SalesOrderApi } from './generated/api_sales_order_v4_srv';
import { defaultDestination } from './your-destination-config'; // 替换为你的目标配置路径

async function fetchSalesOrders(): Promise<SalesOrder[]> {
  try {
    // 构建查询:筛选特定客户、指定字段、限制条数
    const salesOrders = await SalesOrderApi.requestBuilder()
      .getAll()
      .select(
        SalesOrder.SALES_ORDER,
        SalesOrder.SALES_ORDER_DATE,
        SalesOrder.TOTAL_NET_AMOUNT,
        SalesOrder.CUSTOMER
      )
      .filter(SalesOrder.CUSTOMER.equals('10000000'))
      .top(10)
      .execute(defaultDestination);

    return salesOrders;
  } catch (error) {
    console.error('销售订单查询失败:', error);
    throw error;
  }
}

// 调用执行
fetchSalesOrders().then(orders => console.log('查询到的销售订单:', orders));

2. 读取发票(开票凭证)

import { BillingDocument, BillingDocumentApi } from './generated/api_billing_document_v4_srv';
import { defaultDestination } from './your-destination-config';

async function fetchBillingDocuments(): Promise<BillingDocument[]> {
  try {
    // 构建查询:筛选2024年之后的发票,关联销售订单字段
    const billingDocs = await BillingDocumentApi.requestBuilder()
      .getAll()
      .select(
        BillingDocument.BILLING_DOCUMENT,
        BillingDocument.BILLING_DATE,
        BillingDocument.TOTAL_NET_AMOUNT,
        BillingDocument.SALES_ORDER
      )
      .filter(BillingDocument.BILLING_DATE.greaterThan(new Date('2024-01-01')))
      .execute(defaultDestination);

    return billingDocs;
  } catch (error) {
    console.error('发票查询失败:', error);
    throw error;
  }
}

// 调用执行
fetchBillingDocuments().then(docs => console.log('查询到的发票:', docs));

3. 无生成客户端时的手动请求方式

如果未生成服务客户端,可使用通用OData v4请求构建器:

import { ODataV4RequestBuilder, getRequestConfig } from '@sap-cloud-sdk/core';
import { defaultDestination } from './your-destination-config';

async function fetchSalesOrdersManual(): Promise<any[]> {
  const requestBuilder = new ODataV4RequestBuilder('GET', '/SalesOrder', {
    select: ['SalesOrder', 'SalesOrderDate', 'TotalNetAmount'],
    filter: "Customer eq '10000000'"
  });

  const requestConfig = await getRequestConfig(requestBuilder, defaultDestination);
  const response = await fetch(requestConfig.url, { headers: requestConfig.headers });

  if (!response.ok) throw new Error(`请求失败:${response.statusText}`);
  return response.json();
}

关键注意事项

  • 服务激活:确认目标S/4HANA系统已激活对应OData v4服务(可通过系统事务码/IWFND/MAINT_SERVICE检查)
  • 权限配置:确保连接系统的用户拥有销售订单和发票的读取权限(例如S/4HANA中的SD_SALES_ORD_VIEW、SD_BILLING_VIEW角色)
  • 关联查询:若需关联销售订单与发票,可通过SalesOrder字段作为关联条件,在发票查询中筛选对应订单的发票

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:04:56