2020-08-27 13:13发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨
我是GOS的新手。 请帮助我满足以下要求。
我需要开发代码以在FB03附件列表中附加发票文件。 发票文件将出现在"存档"链接中。 我有TOA01表中发票的存档文件ID。
我想使用存档文档ID,检索针对存档文档ID存储的PDF,并将其填充到FB03屏幕的附件列表中。
如何将归档文件与GOS链接?
Harinay,
如果原始文档已经通过ArchiveLink存储,并且您希望该文档作为业务文档出现在另一个相关事务中,则根本不需要检索该文档。 只需转到TOAxx表,从现有链接中获取ArchiveID,文档ID,文档类型,文档类,然后在ARCHIV_CONNECTION_INSERT中使用它们来创建另一个链接表条目
在您的情况下,FB03是会计凭证(过帐会计凭证的SAP_OBJECT是BKPF和对象ID-公司代码,凭证编号,会计年度的组合)。
在尝试使用ARCHIV_CONNECTION_INSERT插入链接表条目之前,请确保已使用BKPF和文档类型/存储库ID正确配置了OAC3。
希望有帮助。
干杯
Sanjeev Gupta
最好是创建一个新问题,并链接到此帖子。
您必须检查对象的键(VBRK)仍然有效,检查表TOA01(有时,检查事务中使用的GOS SELECT语句更容易)
解决方案:
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来获得此解决方案。
在此类中,您可以找到许多用于创建附件,注释和删除所创建附件的方法。 这节课真的很有帮助。
仍在寻找避免批量上传性能问题的方法。 如果有,我将确保发布。
谢谢
大家好,
首先,对不起,您未回复您的消息。 由于我的交付品是有时间限制的,因此我无法在当时和那里查看帖子。
我将分享解决方案。 由于这将帮助许多人。 我已经搜索了很多,但发现很少有什么可以帮助我解决这个问题的。 还有一些解决方案还不清楚。 因此,我一定会发布与编码有关的内容。 我想用明确的解释起草步骤。
此外,我的编码处于测试阶段。 我想确认是否可以正常使用该解决方案,但我不想给出一个半途而废的解决方案,这会误导正在寻找的解决方案。 我在这里发布我找到解决方案的原因是,我不想浪费他人的宝贵时间。
测试完成后,我将准备详细的解决方案并将其发布。 我知道分享知识的价值。
仅发布FM并没有帮助。 因此,我想到了采取步骤以达到目标。
我将在一两天内发布解决方案。
谢谢。
此消息已被审核。
我自己解决了此问题。
感谢您的建议。
最多设置5个标签!
Harinay,
如果原始文档已经通过ArchiveLink存储,并且您希望该文档作为业务文档出现在另一个相关事务中,则根本不需要检索该文档。 只需转到TOAxx表,从现有链接中获取ArchiveID,文档ID,文档类型,文档类,然后在ARCHIV_CONNECTION_INSERT中使用它们来创建另一个链接表条目
在您的情况下,FB03是会计凭证(过帐会计凭证的SAP_OBJECT是BKPF和对象ID-公司代码,凭证编号,会计年度的组合)。
在尝试使用ARCHIV_CONNECTION_INSERT插入链接表条目之前,请确保已使用BKPF和文档类型/存储库ID正确配置了OAC3。
希望有帮助。
干杯
Sanjeev Gupta
最好是创建一个新问题,并链接到此帖子。
您必须检查对象的键(VBRK)仍然有效,检查表TOA01(有时,检查事务中使用的GOS SELECT语句更容易)
解决方案:
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来获得此解决方案。
在此类中,您可以找到许多用于创建附件,注释和删除所创建附件的方法。 这节课真的很有帮助。
仍在寻找避免批量上传性能问题的方法。 如果有,我将确保发布。
谢谢
大家好,
首先,对不起,您未回复您的消息。 由于我的交付品是有时间限制的,因此我无法在当时和那里查看帖子。
我将分享解决方案。 由于这将帮助许多人。 我已经搜索了很多,但发现很少有什么可以帮助我解决这个问题的。 还有一些解决方案还不清楚。 因此,我一定会发布与编码有关的内容。 我想用明确的解释起草步骤。
此外,我的编码处于测试阶段。 我想确认是否可以正常使用该解决方案,但我不想给出一个半途而废的解决方案,这会误导正在寻找的解决方案。 我在这里发布我找到解决方案的原因是,我不想浪费他人的宝贵时间。
测试完成后,我将准备详细的解决方案并将其发布。 我知道分享知识的价值。
仅发布FM并没有帮助。 因此,我想到了采取步骤以达到目标。
我将在一两天内发布解决方案。
谢谢。
此消息已被审核。
我自己解决了此问题。
感谢您的建议。
一周热门 更多>