繁体   English   中英

SAP Cloud SDK for JavaScript的AttachmentService出现问题

[英]Problem with AttachmentService of SAP Cloud SDK for JavaScript

当前,我们使用SAP REST API上载和管理附件

我们想用SDK替换标准请求,因为在通过具有相应代理设置的CloudConnector获取连接时遇到问题,并且因为我们还将SDK用于所有其他请求。

var attContentSetBuilder = AttachmentContentSet.builder();
attContentSetBuilder.documentInfoRecordDocNumber("10000000008");
attContentSetBuilder.documentInfoRecordDocPart("000");
attContentSetBuilder.documentInfoRecordDocType("YBO");
attContentSetBuilder.documentInfoRecordDocVersion("01");
attContentSetBuilder.businessObjectTypeName("DRAW");
attContentSetBuilder.fileName("TEST.pdf")
attContentSetBuilder.content(fileToBase64("C:\\TEST.pdf"));
var attContentSet = attContentSetBuilder.build();
var requestBuilder = new AttachmentContentSetRequestBuilder();
var contentSetRequester = requestBuilder.create(attContentSet);
contentSetRequester.withCustomHeaders({ key: 'slug', value: 'TEST.pdf' }).execute({XXX}).then ...

function fileToBase64(filename: string): string {
    var fs = require('fs');
    return fs.readFileSync(filename, 'utf8');
}

带有二进制数据的内容/正文会这样设置吗? 标头值slug是否也必须设置? 附件服务是否还支持GOS 到目前为止,我们得到了错误:

“附件名称不能为空”

错误消息看起来像是您从S / 4HANA API获得的消息,因此您的请求似乎存在语义问题。 不幸的是,API Business Hub在传达请求的必需字段方面不是很好,但是这里有一些指示信息:

  1. 如果您查看实体定义,则以下字段不可为空:
documentInfoRecordDocType: string;
documentInfoRecordDocNumber: string;
documentInfoRecordDocVersion: string;
documentInfoRecordDocPart: string;
logicalDocument: string;
archiveDocumentId: string;
linkedSapObjectKey: string;
businessObjectTypeName: string;

所以也许为您所缺少的提供解决方案

  1. 此处提供有关此API的更多文档 (我到达Business Hub上的API页面,单击“详细信息”,然后单击页面底部的“业务文档”到达此处 )。

  2. 您的.withCustomHeaders看起来.withCustomHeaders ,我猜您想做的是: .withCustomHeaders({ slug: 'TEST.pdf' })

奖励:构建器和请求构建器具有流畅的API,因此您也可以像这样使用它:

const attContentSet = AttachmentContentSet.builder()
  .documentInfoRecordDocNumber("10000000008")
  .documentInfoRecordDocPart("000")
  .documentInfoRecordDocType("YBO")
  .documentInfoRecordDocVersion("01")
  .businessObjectTypeName("DRAW")
  .fileName("TEST.pdf")
  .content(fileToBase64("C:\\TEST.pdf"))
  .build();

当然,这是一个口味问题,我个人认为这在精神上更容易解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM