如何使用功能模块在MIRO tcode中附加文件(附件)

2020-08-15 05:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我的要求是以MIRO代码附件附加一个图像(.TIF格式)和一个文本文件(.TIF格式)。 在mycode中,它更新到表中,但不在tcode中,任何人都可以在我做错的地方检查我的代码。

我的代码在这里...

_______________________________________________________________________________________________________________________________

功能/wits/apiv_fm_miroattach。

*" ------------------------------------------------- -------------------------

*" *"本地接口:

*"导入

*" REFERENCE(IM_DOCNO)类型/WITS/APIV_QHEAD-QUEID

*" REFERENCE(IM_MIRO)类型RBKP-BELNR

*"表格

*" ET_RETURN TYPE BAPIRETTAB

*" ------------------------------------------------- -------------------------

数据lv_object_id类型/inowits/p_object_id。

数据lo_attach类型参考/inowits/p_cl_dms。

数据ls_bapiret类型TYPE bapiret2。

数据lt_files类型/inowits/p_t_attchments。

数据ls文件类似于lt文件。

数据lv_offset TYPE i。

DATA result_tab类型match_result_tab。

数据ls_result_tab类似于result_tab。

数据lt_return TYPE bapirettab。

数据ls_return TYPE bapiret2。

数据lv_ext TYPE字符串。

数据lv_xstring TYPE xstring。

***数据lo_save类型参考/inowits/cl_fitv_gos。

数据lv_string TYPE字符串。

数据lv_count类型i。

数据lv_file TYPE字符串。

数据iv_file_name TYPE字符串。

数据文件全名TYPE字符串。

DATA mime_type TYPE字符串。

数据大小TYPE i。

数据偏移量类型i。

DATA offset_old TYPE I。

数据temp_len TYPE i。

数据objname TYPE字符串。

数据l_obj_type类型so_obj_tp。

数据hex_null TYPE x长度1值'20'。

数据l_document_title类型so_text255。

solisti1初始大小6的数据lt_objcont类型标准表。

数据objcont之类的lt_objcont行。

sodocchgi1的数据lt_ls_doc_change类型标准表。

数据ls_doc_change之类的lt_ls_doc_change之行。

数据lt_data类型soli_tab。

DATA ls_data TYPE独奏。

数据lt_x数据类型solix_tab。

DATA ls_xdata TYPE独奏。

DATA l_folder_id TYPE sofdk。

数据ls_object_id类型soodk。

数据l_object_id_fol类型so_obj_id。

数据l_object_id类型so_obj_id。

DATA l_doc_info TYPE sofolenti1。

数据l_object_hd_change TYPE sood1。

DATA l_tab_size TYPE int4。

DATA l_retype TYPE breltyp-reltype。

sood-objdes的数据lt_urltab类型标准表。

solisti1的数据lt_obj_header类型标准表。

数据ls_header TYPE solisti1。

数据l_obj_rolea TYPE borident。

数据l_obj_roleb TYPE borident。

数据iv_app_name TYPE字符串。

DATA iv_object_id TYPE字符串。

数据iv_key TYPE字符串。

数据iv_objkey TYPE swo_typeid。

数据iv_objtype类型swo_objtyp。

iv_app_name ='abc'。

iv_objkey =51056015622015。" 5105601541。

iv_object_id = 69。

iv_objtype ='BUS2081'。

数据:queid类型/wits/apiv_qhead-queid。

数据:xblnr类型bkpf-xblnr。

创建对象lo_attach。

********根据对象ID ********获取文件数据

**

将iv_app_name转换为大写字母。

CONCATENATE iv_app_name iv_object_id iv_key INTO lv_object_id用'/'分隔。

数据:ls_qhead类型/wits/apiv_qhead,

lt_qhead/wits/apiv_qhead的类型表。

致电方法/wits/apiv_cl_dms =>阅读

导出

iv_queid = 69

iv_texts ='X'

iv_image ='X'

导入

es_qhead = ls_qhead。

将lt_qhead插入LOS_QHEAD。

********将文件上传到标准*******

通话功能'SO_FOLDER_ROOT_ID_GET'

导出

所有者= sy-uname

region ='B'

导入

folder_id = l_folder_id

size = xstrlen(lv_xstring)。

ls_doc_change-obj_name ='123.tif'。 " lv_file。

ls_doc_change-obj_descr ='123.tif'。 " lv_file。

ls_doc_change-obj_langu = sy-langu。

ls_doc_change-sensitiveivty ='F'。

ls_doc_change-doc_size =大小。

l_retype ='ATTA'。

l_obj_type ='RAW'。"'EXT'。

l_object_hd_change-objdes ='miro附件'。" ls_doc_change-obj_descr。

l_object_hd_change-file_ext ='TIF'。" lv_ext。

l_object_hd_change-ownnam ='WITS'。" lv_ext。

lv_file ='123.tif'。

*保存对象

通话功能'SO_OBJECT_INSERT'

导出

folder_id = l_folder_id

* object_fl_change ='object_fl_change'

object_hd_change = l_object_hd_change

object_type = l_obj_type

* originator_id ='owner_id'

所有者= sy-uname

导入

* object_fl_display = object_fl_display

* object_hd_display = object_hd_display

object_id = ls_object_id

表格

objcont = lt_data" lt_data

objhead = lt_obj_header

* objpara = object_para

* objparb = object_parb

例外情况

component_not_available = 01

folder_not_exist = 06

folder_no_authorization = 05

object_type_not_exist = 17

operation_no_authorization = 21

parameter_error = 23

其他= 1000。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4一起输入ls_return-message。

ls_return-type = sy-msgty。

ls_return-id = sy-msgid。

ls_return-number = sy-msgno。

ls_return-message_v1 = sy-msgv1。

ls_return-message_v2 = sy-msgv2。

ls_return-message_v3 = sy-msgv3。

ls_return-message_v4 = sy-msgv4。

追加ls_return到lt_return。

返回。

ENDIF。

*创建关系

* l_obj_rolea-objkey = QUEID。

l_obj_rolea-objkey = iv_objkey。 "'xblnr'。

l_obj_rolea-objtype = iv_objtype。 "'BUS2081'。

l_object_id_fol = l_folder_id。

l_object_id = ls_object_id。

CONCATENATE l_object_id_fol l_object_id INTO l_obj_roleb-objkey尊重空白。

l_obj_roleb-objtype ='MESSAGE'。

清除l_obj_roleb-logsys。

通话功能'BINARY_RELATION_CREATE'

导出

obj_rolea = l_obj_rolea

obj_roleb = l_obj_roleb

关系类型= l_retype

例外情况

其他= 1。

如果sy-subrc = 0。

通话功能'BAPI_TRANSACTION_COMMIT'

导出

等待='X'

***进行工作并等待。

ELSE。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4一起输入ls_return-message。

ls_return-type = sy-msgty。

ls_return-id = sy-msgid。

ls_return-number = sy-msgno。

ls_return-message_v1 = sy-msgv1。

ls_return-message_v2 = sy-msgv2。

ls_return-message_v3 = sy-msgv3。

ls_return-message_v4 = sy-msgv4。

追加ls_return到lt_return。

返回。

ENDIF。

如果lt_return不是INITIAL。

将lt_return追加到et_return的行。

ENDIF。

清除:ls_files,ls_result_tab,lv_ext,lv_xstring,lv_file,l_folder_id,

lv_file,lv_ext,lv_xstring,l_obj_rolea,l_obj_roleb,l_retype。

刷新:result_tab,lt_return,lt_data,lt_obj_header,lt_xdata。

ENDLOOP。

如果et_return是INITIAL。

ls_return-type ='S'。

ls_return-message ='文件已成功上传'。

APPEND ls_return TO et_return。

清除ls_return。

ENDIF。

ENDFUNCTION。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我的要求是以MIRO代码附件附加一个图像(.TIF格式)和一个文本文件(.TIF格式)。 在mycode中,它更新到表中,但不在tcode中,任何人都可以在我做错的地方检查我的代码。

我的代码在这里...

_______________________________________________________________________________________________________________________________

功能/wits/apiv_fm_miroattach。

*" ------------------------------------------------- -------------------------

*" *"本地接口:

*"导入

*" REFERENCE(IM_DOCNO)类型/WITS/APIV_QHEAD-QUEID

*" REFERENCE(IM_MIRO)类型RBKP-BELNR

*"表格

*" ET_RETURN TYPE BAPIRETTAB

*" ------------------------------------------------- -------------------------

数据lv_object_id类型/inowits/p_object_id。

数据lo_attach类型参考/inowits/p_cl_dms。

数据ls_bapiret类型TYPE bapiret2。

数据lt_files类型/inowits/p_t_attchments。

数据ls文件类似于lt文件。

数据lv_offset TYPE i。

DATA result_tab类型match_result_tab。

数据ls_result_tab类似于result_tab。

数据lt_return TYPE bapirettab。

数据ls_return TYPE bapiret2。

数据lv_ext TYPE字符串。

数据lv_xstring TYPE xstring。

***数据lo_save类型参考/inowits/cl_fitv_gos。

数据lv_string TYPE字符串。

数据lv_count类型i。

数据lv_file TYPE字符串。

数据iv_file_name TYPE字符串。

数据文件全名TYPE字符串。

DATA mime_type TYPE字符串。

数据大小TYPE i。

数据偏移量类型i。

DATA offset_old TYPE I。

数据temp_len TYPE i。

数据objname TYPE字符串。

数据l_obj_type类型so_obj_tp。

数据hex_null TYPE x长度1值'20'。

数据l_document_title类型so_text255。

solisti1初始大小6的数据lt_objcont类型标准表。

数据objcont之类的lt_objcont行。

sodocchgi1的数据lt_ls_doc_change类型标准表。

数据ls_doc_change之类的lt_ls_doc_change之行。

数据lt_data类型soli_tab。

DATA ls_data TYPE独奏。

数据lt_x数据类型solix_tab。

DATA ls_xdata TYPE独奏。

DATA l_folder_id TYPE sofdk。

数据ls_object_id类型soodk。

数据l_object_id_fol类型so_obj_id。

数据l_object_id类型so_obj_id。

DATA l_doc_info TYPE sofolenti1。

数据l_object_hd_change TYPE sood1。

DATA l_tab_size TYPE int4。

DATA l_retype TYPE breltyp-reltype。

sood-objdes的数据lt_urltab类型标准表。

solisti1的数据lt_obj_header类型标准表。

数据ls_header TYPE solisti1。

数据l_obj_rolea TYPE borident。

数据l_obj_roleb TYPE borident。

数据iv_app_name TYPE字符串。

DATA iv_object_id TYPE字符串。

数据iv_key TYPE字符串。

数据iv_objkey TYPE swo_typeid。

数据iv_objtype类型swo_objtyp。

iv_app_name ='abc'。

iv_objkey =51056015622015。" 5105601541。

iv_object_id = 69。

iv_objtype ='BUS2081'。

数据:queid类型/wits/apiv_qhead-queid。

数据:xblnr类型bkpf-xblnr。

创建对象lo_attach。

********根据对象ID ********获取文件数据

**

将iv_app_name转换为大写字母。

CONCATENATE iv_app_name iv_object_id iv_key INTO lv_object_id用'/'分隔。

数据:ls_qhead类型/wits/apiv_qhead,

lt_qhead/wits/apiv_qhead的类型表。

致电方法/wits/apiv_cl_dms =>阅读

导出

iv_queid = 69

iv_texts ='X'

iv_image ='X'

导入

es_qhead = ls_qhead。

将lt_qhead插入LOS_QHEAD。

********将文件上传到标准*******

通话功能'SO_FOLDER_ROOT_ID_GET'

导出

所有者= sy-uname

region ='B'

导入

folder_id = l_folder_id

size = xstrlen(lv_xstring)。

ls_doc_change-obj_name ='123.tif'。 " lv_file。

ls_doc_change-obj_descr ='123.tif'。 " lv_file。

ls_doc_change-obj_langu = sy-langu。

ls_doc_change-sensitiveivty ='F'。

ls_doc_change-doc_size =大小。

l_retype ='ATTA'。

l_obj_type ='RAW'。"'EXT'。

l_object_hd_change-objdes ='miro附件'。" ls_doc_change-obj_descr。

l_object_hd_change-file_ext ='TIF'。" lv_ext。

l_object_hd_change-ownnam ='WITS'。" lv_ext。

lv_file ='123.tif'。

*保存对象

通话功能'SO_OBJECT_INSERT'

导出

folder_id = l_folder_id

* object_fl_change ='object_fl_change'

object_hd_change = l_object_hd_change

object_type = l_obj_type

* originator_id ='owner_id'

所有者= sy-uname

导入

* object_fl_display = object_fl_display

* object_hd_display = object_hd_display

object_id = ls_object_id

表格

objcont = lt_data" lt_data

objhead = lt_obj_header

* objpara = object_para

* objparb = object_parb

例外情况

component_not_available = 01

folder_not_exist = 06

folder_no_authorization = 05

object_type_not_exist = 17

operation_no_authorization = 21

parameter_error = 23

其他= 1000。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4一起输入ls_return-message。

ls_return-type = sy-msgty。

ls_return-id = sy-msgid。

ls_return-number = sy-msgno。

ls_return-message_v1 = sy-msgv1。

ls_return-message_v2 = sy-msgv2。

ls_return-message_v3 = sy-msgv3。

ls_return-message_v4 = sy-msgv4。

追加ls_return到lt_return。

返回。

ENDIF。

*创建关系

* l_obj_rolea-objkey = QUEID。

l_obj_rolea-objkey = iv_objkey。 "'xblnr'。

l_obj_rolea-objtype = iv_objtype。 "'BUS2081'。

l_object_id_fol = l_folder_id。

l_object_id = ls_object_id。

CONCATENATE l_object_id_fol l_object_id INTO l_obj_roleb-objkey尊重空白。

l_obj_roleb-objtype ='MESSAGE'。

清除l_obj_roleb-logsys。

通话功能'BINARY_RELATION_CREATE'

导出

obj_rolea = l_obj_rolea

obj_roleb = l_obj_roleb

关系类型= l_retype

例外情况

其他= 1。

如果sy-subrc = 0。

通话功能'BAPI_TRANSACTION_COMMIT'

导出

等待='X'

***进行工作并等待。

ELSE。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4一起输入ls_return-message。

ls_return-type = sy-msgty。

ls_return-id = sy-msgid。

ls_return-number = sy-msgno。

ls_return-message_v1 = sy-msgv1。

ls_return-message_v2 = sy-msgv2。

ls_return-message_v3 = sy-msgv3。

ls_return-message_v4 = sy-msgv4。

追加ls_return到lt_return。

返回。

ENDIF。

如果lt_return不是INITIAL。

将lt_return追加到et_return的行。

ENDIF。

清除:ls_files,ls_result_tab,lv_ext,lv_xstring,lv_file,l_folder_id,

lv_file,lv_ext,lv_xstring,l_obj_rolea,l_obj_roleb,l_retype。

刷新:result_tab,lt_return,lt_data,lt_obj_header,lt_xdata。

ENDLOOP。

如果et_return是INITIAL。

ls_return-type ='S'。

ls_return-message ='文件已成功上传'。

APPEND ls_return TO et_return。

清除ls_return。

ENDIF。

ENDFUNCTION。

付费偷看设置
发送
2条回答
Nir深蓝
1楼-- · 2020-08-15 05:30

通过MIRO进行此附件可能很困难。 因为要执行附件,您将需要发票编号。 而且,在MIRO提交文档之前,您将没有该编号来执行附件。 因此,我认为,首先,请尝试在COMMIT语句之后在MIRO中搜索退出/增强功能。

谢谢

Juwin

天桥码农
2楼-- · 2020-08-15 05:35

您可以共享解决方案吗?

一周热门 更多>