将发票文档附加到FB03-存档链接中的附件列表中

2020-08-27 13:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨 我是GOS的新手。 请帮...

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

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


我是GOS的新手。 请帮助我满足以下要求。

我需要开发代码以在FB03附件列表中附加发票文件。 发票文件将出现在"存档"链接中。 我有TOA01表中发票的存档文件ID。

我想使用存档文档ID,检索针对存档文档ID存储的PDF,并将其填充到FB03屏幕的附件列表中。

如何将归档文件与GOS链接?

6条回答
天桥码农
2020-08-27 14:04

解决方案:

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来获得此解决方案。

在此类中,您可以找到许多用于创建附件,注释和删除所创建附件的方法。 这节课真的很有帮助。


仍在寻找避免批量上传性能问题的方法。 如果有,我将确保发布。


谢谢


一周热门 更多>