WEB UI基础八:链接跳转到标准的工单界面-程序员宅基地

技术标签: ui  

接以前做的例子,用组件做了个搜索界面,明细里添加了object_id的链接:

  method GET_P_OBJECT_ID.
"#EC NEEDED
** generated by search page wizard

if me->running_in_f4_popup( ) = abap_false.
  case iv_property.
    when if_bsp_wd_model_setter_getter=>fp_fieldtype.
      rv_value = cl_bsp_dlc_view_descriptor=>field_type_event_link.
    when if_bsp_wd_model_setter_getter=>fp_onclick.
      rv_value = 'CLICKONLINK'.
  endcase.
endif.
  endmethod.

 

DATA lv_index       TYPE i.
    DATA: lv_action TYPE c.
    cl_thtmlb_util=>get_event_info(
      EXPORTING
        iv_event = htmlb_event_ex
      IMPORTING
        ev_index = lv_index ).
    DATA lr_node   TYPE REF TO  if_bol_bo_property_access.
    lr_node ?= me->typed_context->searchresultnode->collection_wrapper->find( iv_index = lv_index ).
    DATA lv_guid TYPE CRMT_OBJECT_GUID." REF TO data.
    DATA lv_obj  TYPE crmt_object_id.

    lr_node->get_property_as_value(
      EXPORTING
        iv_attr_name = 'OBJECT_ID'
       IMPORTING
         ev_result    = lv_obj ).
    SELECT SINGLE GUID INTO LV_GUID FROM CRMD_ORDERADM_H WHERE OBJECT_ID = LV_OBJ.
    DATA: lv_bol_core TYPE REF TO cl_crm_bol_core.
    lv_bol_core = cl_crm_bol_core=>get_instance( ).
    lv_bol_core->start_up( 'BT' ).
    DATA lr_entity   TYPE REF TO cl_crm_bol_entity.
    lr_entity = lv_bol_core->get_root_entity( iv_object_name = 'BTOrder' iv_object_guid = LV_GUID ).

* 将跟对象传递到window_controller
    DATA lr_col TYPE REF TO cl_crm_bol_entity_col.
    CREATE OBJECT lr_col.
    lr_col->if_bol_bo_col~add( lr_entity ).
    DATA: lr_window TYPE REF TO cl_bsp_wd_window.
    lr_window = me->view_manager->get_window_controller( ).
    lr_window->call_outbound_plug( iv_outbound_plug = 'DEFAULT'
                                   iv_data_collection = lr_col ).
  method OP_DEFAULT.
    CONSTANTS lv_ui_action TYPE crmt_ui_actions VALUE 'B'. "display
    DATA lr_ent TYPE REF TO if_bol_bo_property_access.
    DATA lr_descriptor_object TYPE REF TO cl_crm_ui_descriptor_object.

    lr_ent ?= iv_data_collection->get_first( ).
    CATCH SYSTEM-EXCEPTIONS move_cast_error = 4.
      lr_descriptor_object ?= lr_ent.
    ENDCATCH.
    IF sy-subrc NE 0.
      CALL METHOD cl_crm_uiu_bt_navigate=>prepare_col_for_navigate
        EXPORTING
          ir_collection              = iv_data_collection
          iv_ui_action               = lv_ui_action
        EXCEPTIONS
          no_nav_descriptor_inserted = 1
          OTHERS                     = 2.
    ENDIF.
    IF sy-subrc EQ 0.
      DATA lr_nav TYPE REF TO if_crm_ui_navigation_service.
      lr_nav = cl_crm_ui_navigation_service=>get_instance( me ).
*    Navigate to Target Component
      lr_nav->navigate_dynamically( iv_data_collection  ).
    ENDIF.
  endmethod.

上面是做成通用的,下面是给单独事件的:

  METHOD eh_onclickno.

    DATA: lv_index        TYPE int4,
*        lr_comp_controller    TYPE REF TO cl_bt111s_o_bspwdcomponen_impl,
*        lr_cuco               TYPE REF TO cl_bt111s_o_cucosearch_impl,
          lr_entity       TYPE REF TO if_bol_bo_property_access,
          lv_event        TYPE REF TO cl_htmlb_event_tableview,
          lr_msg_srv      TYPE REF TO cl_bsp_wd_message_service,
          lv_subrc        TYPE sy-subrc,
          lv_tableview_ex TYPE REF TO cl_thtmlb_table_view.


    CALL METHOD cl_thtmlb_util=>get_event_info
      EXPORTING
        iv_event = htmlb_event_ex
      IMPORTING
        ev_index = lv_index.

*   set entity as current one
    lr_entity ?= me->typed_context->result->collection_wrapper->find( iv_index = lv_index ).

    CHECK lr_entity IS BOUND.

    DATA l_guid TYPE crmd_orderadm_h-guid.
    CALL METHOD lr_entity->get_property_as_string
      EXPORTING
        iv_attr_name = 'GUID'
*       iv_use_iso_format = ABAP_FALSE
      RECEIVING
        rv_result    = l_guid.

    DATA lr_core TYPE REF TO cl_crm_bol_core.
    DATA lr_bt TYPE REF TO cl_crm_bol_entity.
    lr_core = cl_crm_bol_core=>get_instance( ).
*初始化 BT为组件集名称
    lr_core->start_up( 'BT' ).

    TRY.
        CALL METHOD lr_core->get_root_entity
          EXPORTING
            iv_object_name = 'BTOrder'
            iv_object_guid = l_guid   " 单句对应的GUID
          RECEIVING
            rv_result      = lr_bt.
      CATCH cx_crm_genil_model_error .
    ENDTRY.


    CHECK lr_bt IS BOUND.

RAISE EVENT history_trigger.

    DATA: lr_nav_descr   TYPE REF TO if_bol_bo_property_access.
    DATA: lr_navigation  TYPE REF TO if_crm_ui_navigation_service.
    DATA: lr_col         TYPE REF TO cl_crm_bol_bo_col.
    DATA: rv_value_node  TYPE REF TO cl_bsp_wd_value_node.

    cl_crm_ui_descriptor_obj_srv=>create_ui_object_based(
      EXPORTING iv_ui_object_type   = 'BT116_SRVO'
                iv_ui_object_action = 'B'
      RECEIVING rr_result           = lr_nav_descr ).

    CHECK lr_nav_descr IS BOUND.
    lr_navigation = cl_crm_ui_navigation_service=>get_instance( me ).
    CHECK lr_navigation IS BOUND.

* Check whether navigation is supported
    IF lr_navigation->is_dynamic_nav_supported( lr_nav_descr ) NE abap_true.
      RETURN.
    ELSE.
      CREATE OBJECT lr_col.
      lr_col->if_bol_bo_col~add( iv_entity = lr_nav_descr ).
      lr_col->if_bol_bo_col~add( iv_entity = lr_bt iv_set_focus = abap_true ).
      lr_navigation->navigate_dynamically( lr_col ).
    ENDIF.


  ENDMETHOD.

 

转载于:https://www.cnblogs.com/sapSB/p/10137668.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30640769/article/details/95623042

智能推荐

金融评测指标empyrical库详解Sortino、calmar、omega、sharpe、annual_return、max_drawdown-程序员宅基地

文章浏览阅读1.9w次,点赞14次,收藏99次。empyreal生平empyrical是常用金融风险和表现度量。被zipline和pyfolio采用。三者都是quantopian开发维护。Github 官方文档API参考sortino_ratioempyrical.sortino_ratio(returns, required_return=0, period='daily', annualization=None, ..._empyrical库

.NET高级工程师面试经历_高级.net高级高频面试-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏20次。1.SQL Server数据库操作的原子性,出Select之外,Update、Insert、Delete的操作都是原子性的,不可拆分,执行的最小单位;可以用于充值交费中 ,如果多个请求进行更新同一条 数据时,直接使用update Table1 set money=money+100 这种方式就可以避免多个语句,更新一条记录导致的更新失败的问题(一般想法是,先查询当前的账户余额,然后进行更新,这..._高级.net高级高频面试

Consider defining a bean of type ‘com.csf.mapper.UserMapper‘ in your configuration_consider defining a bean of type 'mapper.usermappe-程序员宅基地

文章浏览阅读882次。SpringBoot整合mybatis时,启动报错:**Field userMapper in com.csf.controller.UserController required a bean of type ‘com.csf.mapper.UserMapper’ that could not be found.The injection point has the following annotations:- @org.springframework.beans.factory.annotati_consider defining a bean of type 'mapper.usermapper' in your configuration.

ORA-02062: distributed recovery 引起的 ORA-02019: connection description for remote database not found...-程序员宅基地

文章浏览阅读5.9k次。一个测试数据库隔三差五的报一个ORA-02019出来,查找alert文件,有一个详细的trace:*** 2007-10-12 21:47:55.083ERROR, tran=2.34.74876, sessio..._connection description for remote database not found

用html标记语言编写一个简单的网页代码,一个简单的网页设计代码-程序员宅基地

文章浏览阅读1w次。html网页设计:一个简单的登录界面代码!http.w3;"tr> bgcolor="/button"body> /是这样的效果吗; &lt.w3;3登 录"tr>head>td>/...求html静态页面的代码,简单点的?滚动字幕 请进入音乐休闲屋看我还会动呢,并且是...求一段简单的网页的代码js特效 function submit() { documen..._简单网页设计代码资料

科大讯飞2020完整事件抽取系统(bert+数据集)-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏63次。向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx事件抽取将非结构化文本中的事件信息展现为结构化形式,在舆情监测、文本摘要、自 动问答..._事件抽取数据集

随便推点

攻防世界-pwn pwn-100(ROP)_攻防世界pwn pwn-100-程序员宅基地

文章浏览阅读2.8k次,点赞4次,收藏7次。此题是LCTF 2016年的pwn100参考文章:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=42933&ctid=1570x01 文件分析64位elf无stack无PIE 0x02 运行分析 看起来像一个无限循环,不断接收输入。 0x03 静态分析main:sub_40068E:..._攻防世界pwn pwn-100

ssh连接失败_serialssh false-程序员宅基地

文章浏览阅读892次。连接新装系统的机器后报错@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS _serialssh false

使用Eclipse RCP进行桌面程序开发(三):视图和透视图_eclipsercp snippets-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏3次。Eclipse RCP开发中,和用户进行交互最多的界面,应该是视图了,而透视图就是将已有的视图、菜单、工具栏、编辑器等等进行组合和布局。看完这一节,我们就可以建立如下图这样的程序界面了。首先我们来介绍一下视图,建立一个视图其实非常简单,只要从org.eclipse.ui.part.ViewPart继承一个类,然后在plugin.xml中进行视图的配置。其中,向视图中添加控件的操作,我们即可以手工编_eclipsercp snippets

.NET Framework 3.5(包括.NET和3.0) 错误代码0x800F0954 Win10_net framework 3.5(包括 net 2.0 和 3.0 无法完成更改.错误代码: 0x-程序员宅基地

文章浏览阅读646次。1.打开注册表:cmd+r 输入regedit,确定;2.找到路径HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU,其中UseWUServer默认值为1,改成0;3.打开服务列表,重启Windows Update service;此时可以正常安装.net framework 3.5;4将第二步的修..._net framework 3.5(包括 net 2.0 和 3.0 无法完成更改.错误代码: 0x800f0954

Glide4.0 与 共享元素动画 一起使用时 动画效果 异常_glide 共享动画-程序员宅基地

文章浏览阅读1.1k次。使用Glide4.0加载网络上的图片,同时采用共享元素动画时动画效果出现了问题动画效果异常一如下:界面跳转时图片会变模糊原因:Glide使用了placeholder(...)占位图: GlideApp.with(this) .load(mRecipe.getImageUrl()) // 使用了占位图......_glide 共享动画

CentOS7安装Oracle21c-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏6次。Oracle 21cCentOS 安装Oracle 21c_centos7安装oracle21c