所以我正在研究一个小程序,该程序将从ECC中提取质量通知数据。到目前为止,我已经使用标准的“ BAPI_QUALNOT_GETDETAIL”来提取通知的文本数据。我要做的是也提取与通知相关的附件。
为此,我找到了“ BAPI_DOCUMENT_GETDETAIL2”,希望可以满足我的要求。我的问题是,在哪里可以获取运行BAPI所需的以下信息;
我仅有的信息是我从BAPI_QUALNOT_GETDETAIL提取的数据,到目前为止,我找不到与根据通知上传的任何附件相关的任何信息。
以下是t代码IQS3中文档流的屏幕快照,显示了与通知相关的3个附件。
如果使用GOS存储附件,请尝试使用以下FM来获取附件:
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
.
[质量通知编号以及其他属性,都保存在VIQMEL
DB表中。
如果附件存储在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.