所以我正在开发一个小程序,它将从ECC中提取质量通知数据。到目前为止,我已使用标准“ BAPI_QUALNOT_GETDETAIL ”来提取通知的文本数据。我想要做的是提取与通知相关的附件。
为此,我发现了“ BAPI_DOCUMENT_GETDETAIL2 ”,我希望能满足我的要求。我遇到的问题是在哪里可以获得运行BAPI所需的以下信息;
我所拥有的唯一信息是我从 BAPI_QUALNOT_GETDETAIL 中提取的数据,到目前为止,我找不到与根据通知上传的任何附件相关的任何信息。< / p>
以下是t代码IQS3中文档流程的屏幕截图,显示了与通知相关的3个附件。
答案 0 :(得分:0)
如果您使用GOS存储附件,请尝试使用以下FM获取附件:
numberOfTrackableResults
质量通知编号以及其他属性保存在CALL FUNCTION 'BDS_GOS_CONNECTIONS_GET'
IMPORTING
logical_system = <system name> * << optional parameter
classname = BUS2078 * << object type for quality notification
objkey = 1014866112016 * << quality notification number + year
client = XXX
TABLES
gos_connections = lt_attachments
.
数据库表中。
答案 1 :(得分:-2)
如果附件存储在DMS系统中,请使用以下代码进行检索。
REPORT qn_attachments.
DATA ls_docfile TYPE bapi_doc_files2.
DATA lv_objkey TYPE objky.
DATA lv_objekt TYPE dokob.
DATA lt_drad TYPE TABLE OF drad.
DATA lt_docfiles TYPE bapi_tt_doc_files2.
DATA lv_msg TYPE string.
DATA lt_content_bin TYPE sdokcntbins.
DATA lt_access_info TYPE STANDARD TABLE OF scms_acinf.
DATA ls_access_info TYPE scms_acinf.
DATA ls_packing_list TYPE sopcklsti1.
DATA lv_xstring TYPE xstring.
DATA lv_type TYPE string.
DATA lv_name TYPE string.
DATA lv_dot_offset TYPE i.
DATA lv_extension TYPE mimetypes-extension.
DATA lv_mimetype TYPE mimetypes-type.
data lv_qmnum type qmnum.
lv_objkey = lv_qmnum." QMNUM
lv_objekt = 'QMQMEL'.
CALL FUNCTION 'DOKUMENTE_ZU_OBJEKT'
EXPORTING
key = lv_objkey
objekt = lv_objekt
TABLES
doktab = lt_drad
EXCEPTIONS
kein_dokument = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
LOOP AT lt_drad INTO DATA(ls_drad).
CLEAR: lt_docfiles, ls_docfile.
CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'
EXPORTING
documenttype = ls_drad-dokar
documentnumber = ls_drad-doknr
documentpart = ls_drad-doktl
documentversion = ls_drad-dokvr
getactivefiles = 'X'
TABLES
documentfiles = lt_docfiles.
LOOP AT lt_docfiles INTO ls_docfile.
* Get binary content for documents
REFRESH lt_access_info.
REFRESH lt_content_bin.
CALL FUNCTION 'SCMS_DOC_READ'
EXPORTING
stor_cat = ls_docfile-storagecategory
doc_id = ls_docfile-file_id
TABLES
access_info = lt_access_info
content_bin = lt_content_bin
EXCEPTIONS
bad_storage_type = 1
bad_request = 2
unauthorized = 3
comp_not_found = 4
not_found = 5
forbidden = 6
conflict = 7
internal_server_error = 8
error_http = 9
error_signature = 10
error_config = 11
error_format = 12
error_parameter = 13
error = 14
OTHERS = 15.
IF sy-subrc EQ 0.
APPEND LINES OF: lt_access_info TO lt_access_info,
lt_content_bin TO lt_content_bin.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_msg.
ENDIF.
READ TABLE lt_access_info INTO ls_access_info INDEX 1.
IF sy-subrc = 0.
CLEAR ls_packing_list.
"Convert DMS document content to XSTRING
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = ls_access_info-comp_size
first_line = ls_access_info-first_line
last_line = ls_access_info-last_line
IMPORTING
buffer = lv_xstring
TABLES
binary_tab = lt_content_bin
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
DELETE lt_content_bin FROM ls_access_info-first_line TO ls_access_info-last_line.
CONTINUE.
ENDIF.
DELETE lt_content_bin FROM ls_access_info-first_line TO ls_access_info-last_line.
* File extension
FIND FIRST OCCURRENCE OF REGEX '\.[^\.]+$'
IN ls_access_info-comp_id MATCH OFFSET lv_dot_offset.
lv_extension = ls_access_info-comp_id+lv_dot_offset.
TRANSLATE lv_extension TO LOWER CASE.
lv_type = ls_access_info-mimetype.
ENDIF.
ENDLOOP.
ENDLOOP.