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

2020-08-27 13:13发布

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

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


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

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

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

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

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

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


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

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

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

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

付费偷看设置
发送
6条回答
ZJXianG
1楼 · 2020-08-27 13:48.采纳回答

Harinay,

如果原始文档已经通过ArchiveLink存储,并且您希望该文档作为业务文档出现在另一个相关事务中,则根本不需要检索该文档。 只需转到TOAxx表,从现有链接中获取ArchiveID,文档ID,文档类型,文档类,然后在ARCHIV_CONNECTION_INSERT中使用它们来创建另一个链接表条目

在您的情况下,FB03是会计凭证(过帐会计凭证的SAP_OBJECT是BKPF和对象ID-公司代码,凭证编号,会计年度的组合)。

在尝试使用ARCHIV_CONNECTION_INSERT插入链接表条目之前,请确保已使用BKPF和文档类型/存储库ID正确配置了OAC3。

希望有帮助。

干杯

Sanjeev Gupta

Nir深蓝
2楼-- · 2020-08-27 14:07

最好是创建一个新问题,并链接到此帖子。

您必须检查对象的键(VBRK)仍然有效,检查表TOA01(有时,检查事务中使用的GOS SELECT语句更容易)

天桥码农
3楼-- · 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来获得此解决方案。

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


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


谢谢


哎,真难
4楼-- · 2020-08-27 13:58

大家好,

首先,对不起,您未回复您的消息。 由于我的交付品是有时间限制的,因此我无法在当时和那里查看帖子。

我将分享解决方案。 由于这将帮助许多人。 我已经搜索了很多,但发现很少有什么可以帮助我解决这个问题的。 还有一些解决方案还不清楚。 因此,我一定会发布与编码有关的内容。 我想用明确的解释起草步骤。

此外,我的编码处于测试阶段。 我想确认是否可以正常使用该解决方案,但我不想给出一个半途而废的解决方案,这会误导正在寻找的解决方案。 我在这里发布我找到解决方案的原因是,我不想浪费他人的宝贵时间。

测试完成后,我将准备详细的解决方案并将其发布。 我知道分享知识的价值。

仅发布FM并没有帮助。 因此,我想到了采取步骤以达到目标。

我将在一两天内发布解决方案。

谢谢。

Aaron 3364
5楼-- · 2020-08-27 13:52

此消息已被审核。

槿木_熙
6楼-- · 2020-08-27 13:49

我自己解决了此问题。

感谢您的建议。

一周热门 更多>