2020-08-27 13:13发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨 我是GOS的新手。 请帮... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨
我是GOS的新手。 请帮助我满足以下要求。
我需要开发代码以在FB03附件列表中附加发票文件。 发票文件将出现在"存档"链接中。 我有TOA01表中发票的存档文件ID。
我想使用存档文档ID,检索针对存档文档ID存储的PDF,并将其填充到FB03屏幕的附件列表中。
如何将归档文件与GOS链接?
解决方案:
1。 根据选择标准,从TOA01表中获取object_id。 在我的情况下,这是一个开票凭证,因此sap_object = VBRK。 (您可以根据需要根据ar_object进一步过滤。)
2。 使用FM ARCHIVOBJECT_GET_URI获取与Object_Id相关的URL。
呼叫功能'ARCHIVOBJECT_GET_URI'导出 objecttype ='VBRK' object_id = l_wa_output-object_id"从TOA01表中获取的对象ID 表格 uri_table = fp_i_uri_table 例外< br> error_archiv = 1 error_communicationtable = 2 error_kernel = 3 error_http = 4 error_dp = 5 其他= 6。
3。 为BKPF创建对象密钥。 对象键是<公司代码> <会计年度>的组合。 IN0094000000172016。 对象类型为BKPF。
4。 FM以下的用户获取文件夹ID。
CALL FUNCTION'SO_FOLDER_ROOT_ID_GET'"获取根ID EXPORTING region ='B' IMPORTING folder_id = l_wa_folder_id EXCEPTIONS 其他= 1。
5。 用&KEY&附加URL。
6。 用户FM SO_OBJECT_INSERT插入对象。 并使用BINARY_RELATION_CREATE创建"二进制关系"飞船。
代码:
读取表fp_i_uri_table INTO l_wa_uri_table索引1。如果sy-subrc是INITIAL。 l_wa_object-objkey = l_var2。"对象密钥 l_wa_object-objtype = c_bkpf。 对象类型 l_title = l_wa_output-object_id。"根据您的意愿的附件描述 l_wa_url_id = l_wa_uri_table-uri。" 附件的网址。 呼叫功能'SO_FOLDER_ROOT_ID_GET'"获取根ID EXPORTING region ='B' IMPORTING folder_id = l_wa_folder_id 例外情况其他 = 1. IF sy-subrc <> 0. *所需的异常处理程序。 ENDIF。 并非l_wa_url_id为INITIAL。 CONCATENATE'&KEY&'l_wa_url_id INTO l_wa_objcont。追加l_wa_objcont到fp_i_objcont。 SHIFT l_wa_url_id左移250个位置。结束。 l_wa_obj_data-objsns ='O'。 l_wa_obj_data-objdes = l_title。 呼叫功能'SO_OBJECT_INSERT'导出 folder_id = l_wa_folder_id object_type = c_url1 object_hd_change = l_wa_obj_data IMPORTING = l_wa_obj_id 表 objhead = fp_i_objhead objcont = fp_i_objcont 如果sy-subrc = 0. l_wa_document_id-foltp = l_wa_folder_id-foltp。 l_wa_document_id = -folyr。 l_wa_document_id-folno = l_wa_folder_id-folno。 l_wa_document_id-doctp = l_wa_obj_id-objtp。 l_wa_document_id-docyr = l_wa_obj_id-objyr。 l_wa_document_id-docno = l_wa_obj_id-objno。 ENDIF。 如果不是L_wa 是INITIAL。如果不是l_wa_document_id是ISINITIAL。清除l_wa_rel_doc。 l_wa_rel_doc-objkey = l_wa_document_id。 l_wa_rel_doc-objtype ='MESSAGE'。
调用函数'BINARY_RELATION_CREATE'导出 obj_rolea = l_wa_object obj_roleb = l_wa_rel_doc 关系类型='URL'例外其他= 1. IF sy-subrc =0。 l_ep_url = l_wa_document_id。 ENDIF。 ENDIF。 ELSE。 l_ep_url = l_wa_document_id。 ENDIF。提交工作。
实际上,此代码可以正常工作,因为它在FB03中附加了URL。
缺点:如果要一次性附加多个FI文档,则需要循环使用此功能。 并且在循环内部必须执行COMMIT WORK。 因此会影响性能。
如果音量较小,则可以使用此方法。
我通过调试类CL_GOS_DOCUMENT_SERVICE的方法CREATE_URL来获得此解决方案。
在此类中,您可以找到许多用于创建附件,注释和删除所创建附件的方法。 这节课真的很有帮助。
仍在寻找避免批量上传性能问题的方法。 如果有,我将确保发布。
谢谢
最多设置5个标签!
解决方案:
1。 根据选择标准,从TOA01表中获取object_id。 在我的情况下,这是一个开票凭证,因此sap_object = VBRK。 (您可以根据需要根据ar_object进一步过滤。)
2。 使用FM ARCHIVOBJECT_GET_URI获取与Object_Id相关的URL。
呼叫功能'ARCHIVOBJECT_GET_URI'
导出
objecttype ='VBRK'
object_id = l_wa_output-object_id"从TOA01表中获取的对象ID
表格
uri_table = fp_i_uri_table
例外< br> error_archiv = 1
error_communicationtable = 2
error_kernel = 3
error_http = 4
error_dp = 5
其他= 6。
3。 为BKPF创建对象密钥。 对象键是<公司代码> <会计年度>的组合。 IN0094000000172016。 对象类型为BKPF。
4。 FM以下的用户获取文件夹ID。
CALL FUNCTION'SO_FOLDER_ROOT_ID_GET'"获取根ID
EXPORTING
region ='B'
IMPORTING
folder_id = l_wa_folder_id
EXCEPTIONS
其他= 1。
5。 用&KEY&附加URL。
6。 用户FM SO_OBJECT_INSERT插入对象。 并使用BINARY_RELATION_CREATE创建"二进制关系"飞船。
代码:
读取表fp_i_uri_table INTO l_wa_uri_table索引1。
如果不是L_wa 是INITIAL。
如果sy-subrc是INITIAL。
l_wa_object-objkey = l_var2。"对象密钥
l_wa_object-objtype = c_bkpf。 对象类型
l_title = l_wa_output-object_id。"根据您的意愿的附件描述
l_wa_url_id = l_wa_uri_table-uri。" 附件的网址。
呼叫功能'SO_FOLDER_ROOT_ID_GET'"获取根ID
EXPORTING
region ='B'
IMPORTING
folder_id = l_wa_folder_id
例外情况
其他 = 1.
IF sy-subrc <> 0.
*所需的异常处理程序。
ENDIF。
并非l_wa_url_id为INITIAL。
CONCATENATE'&KEY&'l_wa_url_id INTO l_wa_objcont。
追加l_wa_objcont到fp_i_objcont。
SHIFT l_wa_url_id左移250个位置。
结束。
l_wa_obj_data-objsns ='O'。
l_wa_obj_data-objdes = l_title。
呼叫功能'SO_OBJECT_INSERT'
导出
folder_id = l_wa_folder_id
object_type = c_url1
object_hd_change = l_wa_obj_data
IMPORTING
= l_wa_obj_id
表
objhead = fp_i_objhead
objcont = fp_i_objcont
如果sy-subrc = 0.
l_wa_document_id-foltp = l_wa_folder_id-foltp。
l_wa_document_id = -folyr。
l_wa_document_id-folno = l_wa_folder_id-folno。
l_wa_document_id-doctp = l_wa_obj_id-objtp。
l_wa_document_id-docyr = l_wa_obj_id-objyr。
l_wa_document_id-docno = l_wa_obj_id-objno。
ENDIF。
如果不是l_wa_document_id是ISINITIAL。
清除l_wa_rel_doc。
l_wa_rel_doc-objkey = l_wa_document_id。
l_wa_rel_doc-objtype ='MESSAGE'。
调用函数'BINARY_RELATION_CREATE'
导出
obj_rolea = l_wa_object
obj_roleb = l_wa_rel_doc
关系类型='URL'
例外
其他= 1.
IF sy-subrc =0。
l_ep_url = l_wa_document_id。
ENDIF。
ENDIF。
ELSE。
l_ep_url = l_wa_document_id。
ENDIF。
提交工作。
实际上,此代码可以正常工作,因为它在FB03中附加了URL。
缺点:如果要一次性附加多个FI文档,则需要循环使用此功能。 并且在循环内部必须执行COMMIT WORK。 因此会影响性能。
如果音量较小,则可以使用此方法。
我通过调试类CL_GOS_DOCUMENT_SERVICE的方法CREATE_URL来获得此解决方案。
在此类中,您可以找到许多用于创建附件,注释和删除所创建附件的方法。 这节课真的很有帮助。
仍在寻找避免批量上传性能问题的方法。 如果有,我将确保发布。
谢谢
一周热门 更多>