从自建页面跳转到标准订单或者BP页面的例子
2016-05-11 11:31
411 查看
以一个Table中跳转为例。首先是在P函数中增加事件。
事件代码如下:
View的OP代码:
Window的OP代码:
如果是跳转到BP页面,有标准函数,可以简单点。
METHOD op_bp.
DATA lr_core TYPE REF TO cl_crm_bol_core.
lr_core = cl_crm_bol_core=>get_instance( ).
*--加载组件集
CALL METHOD lr_core->load_component_set
EXPORTING
iv_component_set_name = 'ONEORDER'.
DATA lv_bpid TYPE bu_partner .
lv_bpid = '1234567890'.
CALL METHOD cl_crm_uiu_bp_tools=>navigate_with_id_or_guid
EXPORTING
iv_partner_id = lv_bpid
* iv_partner_guid =
* iv_account_id =
* iv_entity_name =
.
ENDMETHOD.
METHOD get_p_object_id. DATA: current TYPE REF TO if_bol_bo_property_access. DATA sstr TYPE string . current = collection_wrapper->get_current( ). CALL METHOD current->get_property_as_string EXPORTING iv_attr_name = 'OBJECT_ID' RECEIVING rv_result = sstr. IF sstr IS NOT INITIAL. 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 = 'LINKTODISPLAY'. "弹出屏幕 rv_value = 'NAV' . "跳转 ENDCASE. ENDIF. ENDMETHOD.
事件代码如下:
method EH_ONNAV. DATA: lv_index TYPE i, lv_column TYPE string, lr_col TYPE REF TO if_bol_bo_col, lr_core TYPE REF TO cl_crm_bol_core, lr_entity TYPE REF TO if_bol_bo_property_access, lr_root TYPE REF TO cl_crm_bol_entity, lr_window TYPE REF TO cl_bsp_wd_window, lr_ent TYPE REF TO cl_crm_bol_entity. cl_thtmlb_util=>get_event_info( EXPORTING iv_event = htmlb_event_ex IMPORTING ev_index = lv_index ev_column = lv_column ). CHECK lv_index IS NOT INITIAL. *****可以把当前行的信息存入全局变量 * CLEAR gv_selected_line. "GV_SELECTED_LINE Instance Attribute Public Type STRING * gv_selected_line = lv_index. *****根据行号获取这一行的实体 lr_entity ?= typed_context->result->collection_wrapper->find( iv_index = lv_index ). CHECK lr_entity IS BOUND. ******从实体中获取订单的guid DATA lv_guid TYPE crmt_object_guid. lv_guid = lr_entity->get_property_as_string( iv_attr_name = 'GUID' ). ***获取当前实例进程 lr_core = cl_crm_bol_core=>get_instance( ). *--加载组件集,调用订单页面使用 CALL METHOD lr_core->load_component_set EXPORTING iv_component_set_name = 'ONEORDER'. lr_ent = lr_core->get_root_entity( iv_object_name = 'BTOrder' iv_object_guid = lv_guid ). ***上面这两步的动作产生了一个订单页面的实例 传入参数就是guid ***下面的代码为创建一个实体,这个实体里面放入了订单页面实例 ***然后我们用op的形式跳转过去 op带的参数就是这个实体 即实现了跳转到订单页面 CREATE OBJECT lr_col TYPE cl_crm_bol_bo_col. lr_col->add( iv_entity = lr_ent iv_set_focus = abap_true ). *--这句话的作用是使调用订单界面后,点击返回时可以返回到原报表界面 * RAISE EVENT history_trigger . op_singleselection( lr_col ). ***上面的跳转必须在UI里面进行,注意这里的跳转只是View级别的跳转,还没有从当前的页面到订单页面 ****实现页面跳转的另一种形式 * lr_window = me->view_manager->get_window_controller( ). * lr_window->call_outbound_plug( iv_outbound_plug = 'SINGLESELECTION' * iv_data_collection = lr_col ).
View的OP代码:
METHOD op_singleselection. "#EC NEEDED * Added by wizard: Outbound plug 'SINGLESELECTION' 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 = 'SINGLESELECTION' iv_data_collection = iv_data_collection ). ****这里的代码指调用window级op,实现跳转到其他window,比如订单window ENDMETHOD.
Window的OP代码:
METHOD op_singleselection. CALL METHOD cl_crm_uiu_bt_navigate=>prepare_col_for_navigate EXPORTING ir_collection = iv_data_collection iv_ui_action = 'B' EXCEPTIONS no_nav_descriptor_inserted = 1 OTHERS = 99. CHECK sy-subrc = 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 ). me->fire_outbound_plug( iv_outbound_plug = 'SINGLESELECTION' iv_data_collection = iv_data_collection ). * RAISE EVENT history_trigger. ENDMETHOD.
如果是跳转到BP页面,有标准函数,可以简单点。
METHOD op_bp.
DATA lr_core TYPE REF TO cl_crm_bol_core.
lr_core = cl_crm_bol_core=>get_instance( ).
*--加载组件集
CALL METHOD lr_core->load_component_set
EXPORTING
iv_component_set_name = 'ONEORDER'.
DATA lv_bpid TYPE bu_partner .
lv_bpid = '1234567890'.
CALL METHOD cl_crm_uiu_bp_tools=>navigate_with_id_or_guid
EXPORTING
iv_partner_id = lv_bpid
* iv_partner_guid =
* iv_account_id =
* iv_entity_name =
.
ENDMETHOD.
相关文章推荐
- GUI - Web前端开发框架
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- 配置View桌面时找不到域的解决方法
- 完全克隆的虚拟桌面部署问题
- Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
- C#页面之间跳转功能的小结
- 实例讲解JavaScript的Backbone.js框架中的View视图
- 根据IP跳转到用户所在城市的实现步骤
- 为Yahoo! UI Extensions Grid增加内置的可编辑器
- Android开发之activiti节点跳转
- Android中View自定义组合控件的基本编写方法
- Android重写View实现全新的控件
- Cocos2d-x UI开发之文本类使用实例
- C#网页跳转方法总结
- php download.php实现代码 跳转到下载文件(response.redirect)
- 谈谈对jquery ui tabs 的理解
- 解决ASP中http状态跳转返回错误页的问题
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- 两款JS脚本判断手机浏览器类型跳转WAP手机网站
- 基于JavaScript代码实现pc与手机之间的跳转