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

如何用SO_DOCUMENT_READ_API1在SSIS/C#中下载SAP采购订单附件?

用C#/SSIS调用SAP函数下载采购订单附件

前提准备

确保项目已引用SAP .NET Connector 3.0(NCo3),这是C#连接SAP RFC的官方组件。同时确认SAP用户拥有S_SPO_DEV(文档操作权限)、S_DATASET(文件访问权限)及对应采购订单的权限。

步骤1:调用SO_DOCUMENT_READ_API1获取附件数据

你已通过SRGBTBREL拿到INSTID_B(附件密钥),接下来用该函数读取附件的详细信息和内容:

C#代码示例

using SAP.Middleware.Connector;
using System.IO;

// 1. 初始化SAP连接(需提前在配置文件中定义目标系统别名)
var sapDestination = RfcDestinationManager.GetDestination("YourSAPSystemAlias");
var sapRepository = sapDestination.Repository;

// 2. 创建函数实例并传入附件密钥
var docReadFunc = sapRepository.CreateFunction("SO_DOCUMENT_READ_API1");
docReadFunc.SetValue("DOCUMENT_ID", myAttachmentKey); // 传入你的INSTID_B

// 3. 执行函数
docReadFunc.Invoke(sapDestination);

// 4. 解析附件表并保存文件
var attachmentsTable = docReadFunc.GetTable("ATTACHMENTS");
foreach (var attachment in attachmentsTable)
{
    string fileName = attachment.GetString("FILENAME");
    byte[] fileContent = attachment.GetBytes("DATA");
    
    // 保存附件到本地指定路径
    var savePath = Path.Combine(@"C:\SAP_Attachments", fileName);
    File.WriteAllBytes(savePath, fileContent);
    
    // 处理外部存储链接(若附件未直接存在SAP内部)
    string docType = attachment.GetString("DOCUMENT_TYPE");
    if (docType is "URL" or "LINK")
    {
        // 链接通常存储在DESCRIPTION字段,需根据实际场景调整
        string fileLink = attachment.GetString("DESCRIPTION");
        // 可将链接存入变量或输出到SSIS目标组件
    }
}

步骤2:处理内容服务器存储的附件

如果附件存储在SAP内容服务器(而非SO文档容器内),SO_DOCUMENT_READ_API1仅返回引用信息,需额外调用SCMS_DOC_READ获取实际文件内容,或用SCMS_URL_GET生成访问链接:

获取内容服务器文件内容示例

var scmsReadFunc = sapRepository.CreateFunction("SCMS_DOC_READ");
scmsReadFunc.SetValue("DOC_ID", attachment.GetString("DOCUMENT_ID")); // 从ATTACHMENTS表提取DOCUMENT_ID
scmsReadFunc.Invoke(sapDestination);

byte[] contentServerFileData = scmsReadFunc.GetBytes("CONTENT");
// 执行保存文件逻辑(同步骤1)

SSIS集成方法

将上述C#代码封装为Script Task,在SSIS包中配置SAP连接参数,通过变量传递INSTID_B值,执行完成后可将文件路径或链接输出到SSIS变量,供后续流程使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:33:30