如何通过ECC更新TM中货运单附件文件夹中的链接?

2020-08-31 18:59发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我需要使用入站代理从...

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

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


大家好,

我需要使用入站代理从ECC更新TM中的吓人令附件文件夹中的链接。

我首先尝试测试一个示例代码以更新FO中的附件文件夹。

下面是代码:

数据:ls_key TYPE/bobf/s_frw_key,
       lt_key TYPE/bobf/t_frw_key,
       lt_target_key类型/bobf/t_frw_key,
       lt_data类型/BOBF/T_ATF_DOCUMENT_K,
       lo_message类型参考/bobf/if_frw_message。


 数据:lref_srvmgr_tor类型参考/bobf/if_tra_service_manager,
       lt_doc/bobf/s_atf_document_k类型表,
       lref_doc类型参考/bobf/s_atf_document_k,
       root_key TYPE/bobf/conf_key,
       lt_mod TYPE/bobf/t_frw_modification,
       lref_change类型参考/bobf/if_tra_change,
       lref_message类型参考/bobf/if_frw_message,
       lt_failed_key TYPE/bobf/t_frw_key,
       lt_doc_trkey TYPE/bobf/t_frw_key,
       lo_chg类型参考/bobf/if_tra_change,
       lo_msg_all类型参考/bobf/if_frw_message,
       lo_tra类型参考/bobf/if_tra_transaction_mgr,
       lv_rejected TYPE abap_bool,
       lt_rej_bo_key TYPE/bobf/t_frw_key2,
       lt_tor_source TYPE/bobf/t_atf_root_k,
       lv_text_assoc_key类型/bobf/conf_key。


 FIELD-SYMBOLS: TYPE/scmtms/s_tor_root_k,
                 TYPE/bobf/s_frw_modification,
                 TYPE/bobf/s_atf_root_k,
                类型/bobf/s_frw_key。


 *创建BO TOR实例
 DATA(lo_srv_mgr)=/bobf/cl_tra_serv_mgr_factory => get_service_manager(
    /scmtms/if_tor_c => sc_bo_key)。


 DATA(lo_frw_conf)=/bobf/cl_frw_factory => get_configuration(
      iv_bo_key =/scmtms/if_tor_c => sc_bo_key)。


 * BO Tor的示例根密钥
 ls_key-key ='022AB6755DFC1EE9A4D2D7496D17CC26'。
 附加ls_key至lt_key。


 *设置节点和关联
 DATA(lv_root_node)=/scmtms/if_tor_c => sc_node-root。
 DATA(lv_target_node)=/scmtms/if_tor_c => sc_node-ATTACHMENTFOLDER。
 DATA(lv_association)=/scmtms/if_tor_c => sc_association-root-ATTACHMENTFOLDER。
 DATA(lv_do_assoc_key)=/BOBF/IF_ATTACHMENT_FOLDER_C => sc_association-root-document。


 *字-黑名单警告!
 *我没有写单词a_s_s !!!!  ;-)-好的,让我们这样尝试:
 DATA(lv_content_cat)=/bobf/if_conf_c => sc_content_a $$。


 *读取目标节点的关联密钥


 数据(lv_assoc_key)= lo_frw_conf-> get_content_key_mapping(
      iv_content_cat = lv_content_cat
      iv_do_content_key = lv_do_assoc_key
      iv_do_root_node_key = lv_target_node)。


 *读取目标密钥
 lo_srv_mgr-> retrieve_by_association(
     出口
       iv_node_key = lv_root_node
       it_key = lt_key
       iv_association = lv_association
     输入
       et_target_key = lt_target_key)。


 *检索节点附件文件夹的数据
 lo_srv_mgr-> retrieve_by_association(
     出口
     iv_node_key = lv_target_node"在这里,我们必须使用目标节点作为节点密钥
     it_key = lt_target_key" ...并将目标键作为键
     iv_association = lv_assoc_key" ...和映射的关联密钥
     iv_fill_data = abap_true
     输入
     eo_message = lo_message
     et_data = lt_data)。

 **现在在文件夹中创建一个新链接

 将表lt_target_key读入数据(lw_attach_key)索引1。
 data(lv_attach_key)= lw_attach_key-key。


 将初始行添加到lt_doc参考中,并添加到lref_doc中。
 lref_doc-> key = lo_srv_mgr-> get_new_key()。
 lref_doc-> parent_key = lv_attach_key。
 lref_doc-> root_key = ls_key-key。
 lref_doc-> name ='URL'。
 lref_doc-> alternative_name ='URL'。
 * lref_doc-> schema ='DEFAULT'。
 lref_doc-> attachment_type ='LINK'。
 lref_doc-> external_link_web_uri ='https://testurl.com'。
 *
/scmtms/cl_mod_helper => mod_create_single(
   出口
     is_data = lref_doc-> *
     iv_node =/scmtms/if_tor_c => sc_node-attachment文件夹
     iv_key = lref_doc->密钥
     iv_root_key = lref_doc-> root_key
     iv_association = lv_assoc_key
     iv_source_node =/scmtms/if_tor_c => sc_node-root
     iv_parent_key = lref_doc-> parent_key
   输入
     es_mod = DATA(ls_modification))。
 *
 追加ls_modification到lt_mod。
 清除ls_modification。


 读取表lt_mod ASSIGNING FIELD-SYMBOL()索引1。
 如果sy-subrc = 0。
    -change_mode =/bobf/if_frw_c => sc_modify_create。
 万一。


 在lt_doc_trkey ASSIGNING FIELD-SYMBOL()上附加初始行。
 -键= lref_doc->键。


 如果lt_mod不是INITIAL。
   lo_srv_mgr->修改(
   出口
    it_modification = lt_mod)。
 万一。


 *"举报活动
 lo_srv_mgr-> do_action(
   出口
     it_key = lt_doc_trkey
     iv_act_key =/BOBF/IF_ATTACHMENT_FOLDER_C => sc_association-root-document"'483ED376A4351B4EE10000000A42172E'
   输入
     et_failed_key = lt_failed_key
     eo_change = lref_change
     eo_message = lref_message)。


 lo_tra =/bobf/cl_tra_trans_mgr_factory => get_transaction_manager()。
 lo_tra-> save(
 正在导入ev_rejected = lv_rejected
           eo_change = lo_chg
           eo_message = lo_message
           et_rejecting_bo_key = lt_rej_bo_key)。
 

但是执行" DO_ACTION"时出现转储。如果我跳过该部分,则附件文件夹不会更新。

能帮我吗?

3条回答
打个大熊猫
2020-08-31 19:25

嗨,拉吉夫,

非常感谢您的输入和源代码。

我尝试执行相同的操作,它确实对我有用,但是存在一个问题:-确实在转发订单的附件文件夹中创建了一条记录,但URL字段为空。 我无法找出相同的确切原因。 货运单也发生了同样的事情。 配置中是否缺少任何内容或任何授权问题?

请帮助。

此致

Manish

一周热门 更多>