abap - 通过 Web 服务上传 DMS 文档
问题描述
有人可以解释如何通过休息服务上传 DMS 文件。我正在使用 BAPI_DOCUMENT_CREATE2 就像一些指南建议的那样,但我看不到如何在服务器上获取文件。
如果您查看我在下面链接的指南,他会传递文件名,但不会传递内容。谁能解释一下他是如何获得内容的?
顺便说一句,我不能使用网关,所以我只使用 SICF 服务。
https://blogs.sap.com/2016/08/22/upload-document-into-dms-server-using-net-weaver-gateway/
"Variables
DATA: LS_DOCDATA TYPE BAPI_DOC_DRAW2.
DATA: LS_OBJECTLINK TYPE BAPI_DOC_DRAD.
DATA: LT_OBJECTLINKS TYPE TABLE OF BAPI_DOC_DRAD.
DATA: LS_OBJECTDESCR TYPE BAPI_DOC_DRAT.
DATA: LT_OBJECTDESCR TYPE TABLE OF BAPI_DOC_DRAT.
DATA: LS_OBJECTFILE TYPE BAPI_DOC_FILES2.
DATA: LT_OBJECTFILES TYPE TABLE OF BAPI_DOC_FILES2.
DATA: LV_DOCTYPE TYPE DOKAR.
DATA: LV_DOCNUMBER TYPE DOKNR.
DATA: LV_DOCPART TYPE DOKTL_D.
DATA: LV_DOCVERSION TYPE DOKVR.
" SET VALUES
LS_DOCDATA-DOCUMENTTYPE = 'DRW'.
LS_DOCDATA-DOCUMENTVERSION = '00'.
LS_DOCDATA-DOCUMENTPART = '000'.
LS_DOCDATA-LABORATORY = '001'.
LS_OBJECTDESCR-DESCRIPTION = 'test dms doc'.
LS_OBJECTDESCR-LANGUAGE = 'E'.
LS_OBJECTDESCR-LANGUAGE_ISO = 'EN'.
APPEND LS_OBJECTDESCR TO LT_OBJECTDESCR.
LS_OBJECTFILE-ORIGINALTYPE = '1'.
LS_OBJECTFILE-SOURCEDATACARRIER = 'SAP-SYSTEM'.
LS_OBJECTFILE-CREATED_BY = SY-UNAME
LS_OBJECTFILE-DOCFILE = 'test'.
LS_OBJECTFILE-WSAPPLICATION = 'JPG'.
APPEND LS_OBJECTFILE TO LT_OBJECTFILES.
LS_OBJECTLINK-OBJECTTYPE = 'EQUI'.
LS_OBJECTLINK-OBJECTKEY = '000000000210100004'.
APPEND LS_OBJECTLINK TO LT_OBJECTLINKS.
" CREATE ATTACHMENT
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING
DOCUMENTDATA = LS_DOCDATA
HOSTNAME = SY-HOST
PF_FTP_DEST = 'SAPFTPA'
PF_HTTP_DEST = 'SAPHTTP'
IMPORTING
DOCUMENTTYPE = LV_DOCTYPE
DOCUMENTNUMBER = LV_DOCNUMBER
DOCUMENTPART = LV_DOCPART
DOCUMENTVERSION = LV_DOCVERSION
RETURN = LT_RETURN
TABLES
DOCUMENTDESCRIPTIONS = LT_OBJECTDESCR
OBJECTLINKS = LT_OBJECTLINKS
DOCUMENTFILES = LT_OBJECTFILES.
IF SY-SUBRC <> 0.
MESSAGE 'Error uploading attachment' TYPE 'E'.
ENDIF.
" COMMIT
COMMIT WORK.
解决方案
您应该给出文件路径和存储类别。这应该可以解决问题。
LS_OBJECTFILE-ORIGINALTYPE = '001'. "**
LS_OBJECTFILE-storagecategory = 'DMS_C1_ST'.. "**
LS_OBJECTFILE-CREATED_BY = SY-UNAME
LS_OBJECTFILE-DOCFILE = IV_SLUG. "path that comes from the OData service.
LS_OBJECTFILE-WSAPPLICATION = 'JPG'.
APPEND LS_OBJECTFILE TO LT_OBJECTFILES.
推荐阅读
- java - 将图像添加到 java 中的问题
- blender - 使用自定义启动 .blend 文件从命令行运行搅拌机
- javascript - 如何从 JavaScript 源映射中获取键值?
- python - pythonnet clr 如何添加对 dll 程序集的引用?
- viewmodel - 在共享视图模型中杀死片段观察实时数据实例
- mysql - 为什么我的查询只搜索以 a 开头和结尾的名称而忽略以 m 开头和结尾的名称?
- html - 部署 Web 应用程序时无法从文件夹内访问图像
- django - Django 的 http.response 的 _container 属性是什么?
- database - Apache Cassandra:auto_bootstrap 属性是否允许新(非种子)节点从另一个 DC 中的节点流式传输数据?
- javascript - 如何在wordpress中将外部js文件输出为内联脚本?