WebClient UI增强-导航到文档详细信息失败

2020-09-20 00:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)亲爱的! 我增强了组件 A...

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

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


亲爱的!

我增强了组件 AIC_INCIDENT _ S视图 AIC_INCIDENT_S/IncidentSRL ,这是事件搜索的结果列表。 我在orrder的上下文中添加了一个customer字段,以显示更改请求的数量。

我的目标是用户可以单击此文档编号并导航到rfc详细信息。 但是不幸的是,导航不起作用(它无法导航),甚至更糟糕的是,在单击rfc之后,导航根本不起作用。


我实现了P方法,使其可点击。 要触发的事件名为 HEADEROV_RFC

方法get_p_zzfld00000h。
   检查gv_value_help_mode = abap_false。

   案例iv_property。
     当if_bsp_wd_model_setter_getter => fp_fieldtype时。
       rv_value = cl_bsp_dlc_view_descriptor => field_type_event_link。
     当if_bsp_wd_model_setter_getter => fp_onclick时。
       rv_value = gc_event_headerov_rfc。
   结束。
 终结法。
 

我在名为 EH_ONHEADEROV_RFC 的同一视图中创建了一个事件处理程序,其实现方式如下。

方法eh_onheaderov_rfc。
     数据:lo_col类型参考if_bol_bo_col,
           lo_entity类型参考if_bol_bo_property_access,
           lv_crmt_guid TYPE crmt_object_guid,
           lv_ui_usage TYPE标志。


     cl_thtmlb_util => get_event_info(
       出口
         iv_event = htmlb_event_ex
       输入
         ev_index = DATA(lv_index))。
     检查lv_index是否为INITIAL。


     lo_entity?= gr_result_list_cnode-> collection_wrapper-> find(iv_index = lv_index)。
     检查lo_entity是否绑定。


 *获得点击的文件编号
     数据lv_zzfld00000h类型zdtel000024。
     lo_entity-> get_property_as_value(
       出口
         iv_attr_name ='ZZFLD00000H'
       输入
         ev_result = lv_zzfld00000h
     )。

 *选择订单GUID
     选择单向导
              来自crmd_orderadm_h
              INTO @DATA(lv_guid)
             其中object_id = @ lv_zzfld00000h。
     检查sy-subrc = 0。

     lv_crmt_guid = lv_guid。


 *获取根对象
     数据:lo_bol_core类型参考cl_crm_bol_core,
           lo_btorder类型参考cl_crm_bol_entity,
           lv_object_guid类型crmt_genil_object_guid,
           lo_root类型参考cl_crm_bol_entity。

     lo_bol_core = cl_crm_bol_core => get_instance()。
     检查lo_bol_core是否绑定。

     尝试。
         lo_bol_core-> load_component_set('BT')。
         lv_object_guid = lv_guid。
         lo_btorder = lo_bol_core-> get_root_entity(iv_object_name ='BTOrder'
                                                    iv_object_guid = lv_object_guid)。

         如果lo_btorder绑定并且lo_btorder-> alive()= abap_true,则为假。
           lo_root?= lo_btorder。
         万一。

       捕获cx_crm_genil_general_error。
     ENDTRY。


     如果lo_root被绑定。
       如果cl_crm_uiu_bt_tools => check_display_authority(lo_root)是INITIAL。
         set_btorder_to_coco(lo_root)。
         op_singleselection()。
       万一。
     万一。
   终结法。
 

我尝试使用集合传递目标文档,而不是调用不带参数的方法 op_singleselection(),但这还是行不通的。

 DATA(lo_collection)=新的cl_bsp_wd_collection_wrapper()。
         lo_collection-> if_bol_bo_col〜insert(
           出口
             iv_bo = lo_root
             iv_index = 1
             )。
         op_singleselection(iv_data_collection = lo_collection)。

我希望你们中的一个可以帮助我解决这个问题。

亲切的问候,弗洛里安

3条回答
能不能别闹
2020-09-20 00:48

弗洛里安,

我不确定您为'gc_event_headerov_rfc'指定的值。 只是要进行交叉检查,请通过以下方式更改代码:

 if_bsp_wd_model_setter_getter => fp_onclick时。
       rv_value ='HEADEROV_RFC'。  

然后,在事件处理程序EH_ONHEADEROV_RFC中放置一个断点。

让我知道它是否有效。

-Ricky。

一周热门 更多>