在使用的组件中添加组件对象

Outbound Plug中添加外向连接:OP_PRODUCT

METHOD op_product.
DATA: lv_title TYPE string,
lr_context TYPE REF TO cl_bsp_wd_context_node,
lr_qs TYPE REF TO cl_crm_bol_dquery_service,
lr_current TYPE REF TO cl_crm_bol_entity,
ls_general TYPE zcorder_general,
lv_low TYPE string,
lr_col TYPE REF TO if_bol_bo_col,
lv_col TYPE REF TO if_bol_bo_col,
lr_param TYPE REF TO if_bol_bo_property_access,
lr_iterator TYPE REF TO if_bol_bo_col_iterator,
ls_selection TYPE genilt_selection_parameter,
lv_country TYPE land1,
lv_bp_guid TYPE bu_partner_guid,
lv_sales_org TYPE crmt_sales_org.
IF gr_product_vh_popup IS NOT BOUND.
lv_title = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT/PRODUCT_SEARCH' ).
gr_product_vh_popup = comp_controller->window_manager->create_popup(
iv_interface_view_name = 'SearchHelpWindow'
iv_usage_name = 'CUProductValueHelp'
iv_title = lv_title ).
ENDIF.
gr_product_vh_popup->set_display_mode( if_bsp_wd_popup=>c_display_mode_surrounded ).
gr_product_vh_popup->set_on_close_event( iv_view = me iv_event_name = 'SELECTPRODUCT' ).
gr_product_vh_popup->open( iv_inbound_plug = 'CLEAR_ALL'
iv_collection = lv_col ).
lr_context = gr_product_vh_popup->get_context_node( 'SEARCH' ). CHECK lr_context IS BOUND.
* Get DQuery object to add search parameter
lr_qs ?= lr_context->collection_wrapper->get_current( ).
* lr_qs = cl_crm_bol_dquery_service=>get_instance( 'ProdAdvSearchRgProducts' ).
lr_current ?= me->typed_context->zcorder->collection_wrapper->get_current( ).
lr_current->get_properties( IMPORTING es_attributes = ls_general ).
lv_low = ls_general-sales_org.
lr_col = lr_qs->get_selection_params( ).
lr_iterator = lr_col->get_iterator( ).
lr_param = lr_iterator->get_first( ).
WHILE lr_param IS BOUND.
lr_param->get_properties( IMPORTING es_attributes = ls_selection ).
IF ls_selection-attr_name = 'SALES_ORG' .
lr_col->remove( lr_param ).
EXIT.
ENDIF.
IF ls_general-country EQ 'JP'.
IF ls_selection-attr_name = 'ZZ0016' .
lr_col->remove( lr_param ).
EXIT.
ENDIF.
ENDIF.
lr_param = lr_iterator->get_next( ).
ENDWHILE. IF lv_low IS INITIAL. CALL FUNCTION 'BP_CENTRALPERSON_GET'
EXPORTING
iv_username = sy-uname
IMPORTING
ev_bu_partner_guid = lv_bp_guid
EXCEPTIONS
no_central_person =
no_business_partner =
no_id =
OTHERS = .
IF sy-subrc = . SELECT SINGLE b~country
FROM but000 AS a INNER JOIN but020 AS c
ON a~partner = c~partner
INNER JOIN adrc AS b
ON c~addrnumber = b~addrnumber
INTO lv_country
WHERE a~partner_guid = lv_bp_guid. SELECT SINGLE sales_org
INTO lv_sales_org
FROM zbp_sales
WHERE bu_group IN ('Z001','Z021')
AND country = lv_country.
lv_low = lv_sales_org.
ENDIF.
ENDIF. lr_qs->add_selection_param( iv_attr_name = 'SALES_ORG'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = lv_low ). lr_qs->add_selection_param( iv_attr_name = 'CATEGORY_ID'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = 'MAT_FERT' ). IF ls_general-country EQ 'JP'.
lv_low = ls_general-zzzmodeno.
lr_qs->add_selection_param( iv_attr_name = 'ZZ0016'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = lv_low ).
ENDIF.
lr_col = lr_qs->get_selection_params( ).
lr_iterator = lr_col->get_iterator( ).
lr_param = lr_iterator->get_first( ). WHILE lr_param IS BOUND.
lr_param->get_properties( IMPORTING es_attributes = ls_selection ).
IF ls_selection-attr_name = 'SALES_ORG' AND ls_selection-low IS INITIAL.
lr_col->remove( lr_param ).
ENDIF.
IF ls_general-country EQ 'JP'.
IF ls_selection-attr_name = 'ZZ0016' AND ls_selection-low IS INITIAL.
lr_col->remove( lr_param ).
ENDIF.
IF ls_selection-attr_name = 'CATEGORY_ID' AND ls_selection-low IS INITIAL.
lr_col->remove( lr_param ).
ENDIF.
ENDIF.
lr_param = lr_iterator->get_next( ).
ENDWHILE. IF ls_general-country EQ 'JP'.
gr_product_vh_popup->open( iv_inbound_plug = 'CLEAR_ALL'
iv_collection = lr_col ).
ELSE.
gr_product_vh_popup->open( iv_inbound_plug = 'SEARCHPRODANDOBJECTS'
iv_collection = lr_col ).
ENDIF.
ENDMETHOD.

重定义PRODUCT的GET_V方法:

METHOD get_v_product_id.

  CREATE OBJECT rv_valuehelp_descriptor
TYPE
cl_bsp_wd_valuehelp_navdescr
EXPORTING
iv_outbound_plug = 'OP_PRODUCT'.
ENDMETHOD.

新建SELECTPRODUCT事件,将返回的搜索结果带回界面:

METHOD eh_onselectproduct.
DATA lv_outbound_plug TYPE seocmpname.
DATA lr_context_node TYPE REF TO cl_bsp_wd_context_node.
DATA lr_col_wrapper TYPE REF TO cl_bsp_wd_collection_wrapper.
DATA lr_current TYPE REF TO if_bol_bo_property_access.
DATA lr_iobject_id TYPE REF TO data.
DATA lr_product_guid TYPE REF TO data.
DATA lr_product_id TYPE REF TO if_bol_bo_property_access.
DATA lr_ent TYPE REF TO cl_crm_bol_entity.
DATA l_prd_desc TYPE comt_prshtextx.
DATA l_prd_guid TYPE comt_product_guid.
FIELD-SYMBOLS <lv_product_id> TYPE any.
FIELD-SYMBOLS <lv_product_guid> TYPE any. lr_context_node = gr_product_vh_popup->get_context_node( iv_cnode_name = 'PRD' ).
lr_col_wrapper = lr_context_node->collection_wrapper.
lr_current ?= lr_col_wrapper->get_current( ). IF lr_current IS BOUND. * check outbound plug
lv_outbound_plug = gr_product_vh_popup->get_fired_outbound_plug( ).
CHECK lv_outbound_plug = 'RETURNRESULT'. lr_iobject_id ?= lr_current->get_property( iv_attr_name = 'PRODUCT_ID' ).
lr_current->get_property_as_value( EXPORTING iv_attr_name = 'PRODUCT_GUID'
IMPORTING ev_result = l_prd_guid ). ASSIGN lr_iobject_id->* TO <lv_product_id>.
* Get Product Description
SELECT SINGLE short_text
INTO l_prd_desc
FROM comm_prshtext
WHERE product_guid = l_prd_guid
AND langu = sy-langu. * lr_product_guid ?= lr_current->get_property( iv_attr_name = 'PRODUCT_GUID' ).
* ASSIGN lr_product_guid->* TO <lv_product_guid>. * lr_ent = get_main_ref_object( ).
DATA:
lr_cn TYPE REF TO cl_bsp_wd_context_node. FIELD-SYMBOLS:
<lr_cn> TYPE any. * ASSIGN me->context->('') TO <lr_cn>.
* IF <lr_cn> IS ASSIGNED.
* lr_cn ?= <lr_cn>.
lr_ent ?= me->typed_context->zcorder->collection_wrapper->get_current( ).
* ENDIF.
lr_ent->set_property( iv_attr_name = 'PRODUCT_ID' iv_value = <lv_product_id> ).
lr_ent->set_property( iv_attr_name = 'PRODUCT_ID_DES' iv_value = l_prd_desc ).
* lr_ent->set_property( iv_attr_name = 'GUID_OBJECT' iv_value = <lv_product_guid> ).
ENDIF.
ENDMETHOD.

UI基础七:给普通其他界面的PRODUCT 添加标准的搜索帮助的更多相关文章

  1. (转)iOS7界面设计规范(2) - UI基础 - iOS应用解析

    今天再来一发,然后结束掉周六的忙碌,去吃零食,还有冰啤酒:其实现在打嗝还有小龙虾味儿呢. 第二篇更多的是从技术的角度对iOS界面组成原理进行了简单的解析,篇幅很短,可稍作了解:更多关于iOS开发入门的 ...

  2. iOS开发——UI基础-屏幕适配

    一.适配 1.什么是适配?适应.兼容各种不同的情况 2.移动开发中,适配的常见种类 2.1系统适配 针对不同版本的操作系统进行适配 2.2屏幕适配 针对不同大小的屏幕尺寸进行适配 二.点和像素 1.在 ...

  3. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  4. 【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】

    原文:[Xamarin 挖墙脚系列:IOS 开发界面的3种方式] xcode6进行三种基本的界面布局的方法,分别是手写UI,xib和storyboard.手写UI是最早进行UI界面布局的方法,优点是灵 ...

  5. UI基础UIWindow、UIView

    UI基础UIWindow.UIView 在PC中,应用程序多是使用视窗的形式显示内容,手机应用也不例外,手机应用中要在屏幕上显示内容首先要创建一个窗口承载内容,iOS应用中使用UIWindow.UIV ...

  6. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...

  7. iOS UI基础-1.0加法计算器

    1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...

  8. 实现 在子界面的button按下,在主界面的label显示。

    不知道理解的对不对,反正功能是实现了. 这是子界面,COM口配置界面的 .H文件的定义.下面的Private:定义了Ui:MainWindow  *main_ui;的指针变量      要   注  ...

  9. day 72 Django基础七之Ajax

    Django基础七之Ajax   本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 六 同源策略与 ...

随机推荐

  1. Java环境变量的简记

    1,安装版的jre或jdk.安装后如果不做开发用,则只是做Java运行时环境,则不需要手动配置任何Java环境变量. 2,绿色解压版(拷贝版)jdk或jre.运行和开发都需要配置环境变量. 运行Jav ...

  2. Lamp下安全配置随笔

    Apache方面: 1.apache有两个指令可以输出服务器的细节,即ServerSignature和ServerTokens. 当这两个指令一起使用时,会输出apache的版本号,php的版本号,i ...

  3. yii2在ubuntu下执行定时任务

    一.编辑yii console/controllers TestController.php 二./usr/ 包括与系统用户直接有关的文件和目录创建sh_scripts目录,/usr/sh_scrip ...

  4. android performClick使用

    performClick 是使用代码主动去调用控件的点击事件(模拟人手去触摸控件) ----------------------------------------- boolean android. ...

  5. 第七届蓝桥杯javaB组真题解析-凑算式(第三题)

    题目 /* 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比 ...

  6. java最全时间类及用法

    对于时间类,这篇主要说明各种现实情况下如何取值,怎么定向取值,得到自己想要的时间参数.在java中时间类主要有Date.Calendar,暂时只介绍 java.util.*下的时间类,对于java.s ...

  7. Tigase-01 使用spark或spi登录Tigase服务器

    喜欢研究IM技术的同学们,欢迎加入群 310790965 一起来学习,有什么问题可以一起讨论. 本源码是基于tigase v7.1.0来分析的,群里文件中会上传一个完整能跑的源代码压缩包,网上tiga ...

  8. 加密入门(三):TrueCrypt(转)

    http://terrychen.info/encryption-truecrypt/ TrueCrypt 是一款功能强大的开源加密工具,利用 TrueCrypt 可以创建一个加密文件作为虚拟加密卷, ...

  9. http头之keep-alive

    1.什么是keep-alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HT ...

  10. asp.net core跨平台开发从入门到实战文摘

    第1章 .NET Core 第2章 dotnet命令 第3章 VS Code安装及介绍 第4章 VS2015开发.NET Core 第5章 ASP.NET Core 第6章 EF Core 第7章 A ...