• UI基础二:下拉,F4,OP等


    常用的搜索帮助有SE11的SH,域,值列表,组件等。。。下面介绍一下经常用的:

    一:下拉

    dropdown是最经常用的,也是最简单的一种。

    不管是查询条件,还是结果清单,还是明细界面,下拉都是一样的

    1.设置字段属性为下拉。(界面查询组件,视图,字段,使用F2)

    T-code:BSP_WD_CMPWB进入组件界面,输入组件

    选择左侧对应的视图双击:

    展开CONTEXT节点,选择对应的context node,点开属性

    设置GET_P:字段属性

      CASE iv_property.
        WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype.
          rv_value = cl_bsp_dlc_view_descriptor=>field_type_picklist.
    
        WHEN if_bsp_wd_model_setter_getter=>fp_server_event .
          rv_value = 'ZSTAT'.
    
      ENDCASE.

    然后设置GET_V:VALUE 

    LR_CURRENT = ME->COLLECTION_WRAPPER->GET_CURRENT( ).
      CHECK LR_CURRENT IS BOUND.
      LR_CURRENT->GET_PROPERTIES( IMPORTING ES_ATTRIBUTES = LS_CURRENT ).
      CHECK LS_CURRENT-PROCESS_TYPE = 'ZWO3'.
    
      DATA:lt_ddlb TYPE bsp_wd_dropdown_table.
      DATA:ls_ddlb TYPE LINE OF bsp_wd_dropdown_table.
    
      DATA gr_ddlb_msale_gb TYPE REF TO cl_crm_uiu_ddlb.
    
      CREATE OBJECT gr_ddlb_msale_gb
        EXPORTING
          iv_source_type = 'T'.
    
      DATA:lt_tj30t TYPE TABLE OF tj30t,
           ls_tj30t TYPE          tj30t.
    
      SELECT *
        INTO TABLE lt_tj30t
        FROM tj30t
        WHERE STSMA = 'ZHIC_002'
        AND spras = sy-langu.
    
      LOOP AT lt_tj30t INTO ls_tj30t.
        ls_ddlb-key    = ls_tj30t-estat.
        ls_ddlb-value  = ls_tj30t-txt30.
        INSERT ls_ddlb INTO TABLE lt_ddlb.
    
        CLEAR: ls_tj30t,ls_ddlb.
      ENDLOOP.
    
      INSERT INITIAL LINE INTO lt_ddlb INDEX 1.
      IF sy-subrc = 0.
        gr_ddlb_msale_gb->set_selection_table( it_selection_table = lt_ddlb ).
      ENDIF.
    
      rv_valuehelp_descriptor = gr_ddlb_msale_gb.

     二:F4

    直接使用有搜索帮助或者有域的数据元素,或者手动给字段添加搜索帮助

    设置GET_V(map字段一定要对好,inmap是输入字段,这里使用ZZZSYMPTOMSGROUP对应到搜索帮助的CODEGRUPPE  ZZSECTIONCODE 对应 CODE 

    OUT 对应输出字段,对应到界面字段,如果没有默认值和搜索项之类的,可以只使用outmap)

      DATA:
        ls_map       TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping,
        lt_inmap     TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab,
        lt_outmap    TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab,
        lr_entity    TYPE REF TO cl_crm_bol_entity.
    
    
      ls_map-context_attr = 'STRUCT.ZZZSYMPTOMSGROUP'.
      ls_map-f4_attr      = 'CODEGRUPPE'.
      APPEND ls_map TO: lt_inmap.
      ls_map-context_attr = 'EXT.ZZSECTIONCODE'.
      ls_map-f4_attr      = 'CODE'.
      APPEND ls_map TO: lt_inmap.
    
      ls_map-context_attr = 'EXT.ZZSECTIONCODE'.
      ls_map-f4_attr      = 'CODE'.
      APPEND ls_map TO lt_outmap.
      ls_map-context_attr = 'ZSEC_DESC'.
      ls_map-f4_attr      = ' KURZTEXT'.
      APPEND ls_map TO lt_outmap.
    
    
      lr_entity ?= me->collection_wrapper->get_current( ).
      CREATE OBJECT rv_valuehelp_descriptor
        TYPE
          cl_bsp_wd_valuehelp_f4descr
        EXPORTING
          iv_help_id                  = 'ZPQCODE_Z6'
          iv_help_id_kind             = if_bsp_wd_valuehelp_f4descr=>help_id_kind_name
          iv_input_mapping            = lt_inmap
          iv_output_mapping           = lt_outmap
          iv_trigger_submit           = abap_true
          iv_object_ref               = lr_entity.

     三:组件搜索帮助:一般顾问就喜欢用标准的BP的那个搜索帮助,所以很多项目中只要是BP的字段,都会要求用那个搜索帮助。

    添加组件为搜索帮助

    METHOD BP_ACCOUNT_SEARCH.
    * only used for account search - Employee and Contact have separate search
    
      DATA : LV_TITLE           TYPE STRING,
             LV_EVENTNAME       TYPE STRING,
             LR_QS              TYPE REF TO CL_CRM_BOL_DQUERY_SERVICE,
             LR_CURRENT         TYPE REF TO CL_CRM_BOL_ENTITY,
             LR_COL             TYPE REF TO IF_BOL_BO_COL,
             LR_CONTEXT         TYPE REF TO CL_BSP_WD_CONTEXT_NODE,
             LV_EMPRESP         TYPE STRING,
             LV_COLLECTION      TYPE REF TO IF_BOL_BO_COL,
             LR_BTPARTNERSET    TYPE REF TO CL_CRM_BOL_ENTITY,
             LR_BTPARTNER       TYPE REF TO CL_CRM_BOL_ENTITY,
             LR_PARTNERSET_CTXT TYPE REF TO CL_CRM_UIU_BTPARTNERSET_CN.
      DATA:   LV_LOW TYPE STRING.
      DATA:   LS_SELECTION TYPE        GENILT_SELECTION_PARAMETER,
              LR_VALUENODE TYPE REF TO CL_BSP_WD_VALUE_NODE,
              LR_REF_ANY   TYPE REF TO DATA.
    
      FIELD-SYMBOLS: <LV_CONTEXT_NODE>            TYPE ANY,
                     <LV_PARTNERSET_CONTEXT_NODE> TYPE ANY.
      DATA:    LR_PARAM    TYPE REF TO IF_BOL_BO_PROPERTY_ACCESS,
               LR_ITERATOR TYPE REF TO IF_BOL_BO_COL_ITERATOR,
               LT_PARAMS   TYPE  GENILT_SELECTION_PARAMETER_TAB.
      DATA:    LS_GENERAL          TYPE  ZCORDER_GENERAL.
    
      DATA LV_SALES_ORG TYPE CRMT_SALES_ORG.
      DATA LV_LAND TYPE LAND1."当前账号所属国家
      CALL FUNCTION 'Z_GET_SALESORG_BY_USER'
        EXPORTING
          IV_USER    = SY-UNAME
        IMPORTING
          EV_COUNTRY = LV_LAND.
    
      LR_CURRENT ?= ME->TYPED_CONTEXT->ZCORDER->COLLECTION_WRAPPER->GET_CURRENT( ).
      LR_CURRENT->GET_PROPERTIES( IMPORTING ES_ATTRIBUTES = LS_GENERAL ).
    
      IF LS_GENERAL-COUNTRY EQ 'JP' AND ( IV_ROLE = 'ZHSI0CNN' OR IV_ROLE = 'RELAIER' ).
        ZCL_CRM_BUFFER=>GV_JP_FLAG = 'X'.
      ELSE.
        CLEAR ZCL_CRM_BUFFER=>GV_JP_FLAG.
      ENDIF.
    
      CASE IV_ROLE.
        WHEN 'SOLDTO'.
          LV_TITLE = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'CRM_UIU_BT/PARTNER_SEARCH' ).
          IF BPSEARCH_ACCOUNT_POPUP IS NOT BOUND.
            BPSEARCH_ACCOUNT_POPUP = COMP_CONTROLLER->WINDOW_MANAGER->CREATE_POPUP(
                IV_INTERFACE_VIEW_NAME = 'SearchHelpWindow'     "#EC NOTEXT
                IV_USAGE_NAME = 'CUBPSearchAccount'
                IV_TITLE = LV_TITLE ).
          ENDIF.
    
    * set display mode
          BPSEARCH_ACCOUNT_POPUP->SET_DISPLAY_MODE( IF_BSP_WD_POPUP=>C_DISPLAY_MODE_SURROUNDED ).
    * Open the Popup
          BPSEARCH_ACCOUNT_POPUP->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL' ).
    
    * Role dependand Event
          CONCATENATE 'SEL' IV_ROLE INTO LV_EVENTNAME.
          BPSEARCH_ACCOUNT_POPUP->SET_ON_CLOSE_EVENT( IV_VIEW = ME IV_EVENT_NAME = LV_EVENTNAME ).
    *     Get Query Context node
          LR_CONTEXT = BPSEARCH_ACCOUNT_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( ).
          CHECK LR_QS IS BOUND.
          LR_COL = LR_QS->GET_SELECTION_PARAMS( ).
          IF IV_ROLE = 'SERPR' OR IV_ROLE = 'RELAIER' OR IV_ROLE = 'SOLDTO'.
            CASE IV_ROLE.
              WHEN 'SERPR'.
                LV_LOW = 'Z003'.
                LS_SELECTION-ATTR_NAME = 'ZBP_GROUP'.
                LS_SELECTION-SIGN = 'I'.
                LS_SELECTION-OPTION = 'EQ'.
                LS_SELECTION-LOW  = LV_LOW .
                GET REFERENCE OF LS_SELECTION  INTO LR_REF_ANY.
                CREATE OBJECT LR_VALUENODE
                  TYPE
                  CL_BSP_WD_VALUE_NODE
                  EXPORTING
                    IV_DATA_REF = LR_REF_ANY.
                LR_COL->ADD( LR_VALUENODE ).
              WHEN 'RELAIER'.
                LV_LOW = 'Z005'.
                LS_SELECTION-ATTR_NAME = 'ZBP_GROUP'.
                LS_SELECTION-SIGN = 'I'.
                LS_SELECTION-OPTION = 'EQ'.
                LS_SELECTION-LOW  = LV_LOW .
                GET REFERENCE OF LS_SELECTION  INTO LR_REF_ANY.
                CREATE OBJECT LR_VALUENODE
                  TYPE
                  CL_BSP_WD_VALUE_NODE
                  EXPORTING
                    IV_DATA_REF = LR_REF_ANY.
                LR_COL->ADD( LR_VALUENODE ).
              WHEN 'SOLDTO'.
                IF SY-LANGU = 'J'."ADD BY LY 20170328
                  LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'COUNTRY'
                                    IV_SIGN      = 'I'
                                    IV_OPTION    =  'EQ'
                                    IV_LOW       = 'JP' ).
                ENDIF.
    
            ENDCASE.
          ENDIF.
          IF ZCL_CRM_BUFFER=>GV_UI_LOGIN_ORG = 'O 50000297'.
            LV_LOW = LS_GENERAL-SALES_ORG.
                    LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'CATEGORY'
                                       IV_SIGN      = 'I'
                                       IV_OPTION    =  'EQ'
                                       IV_LOW       =   '1' ).
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZSALES_ORG'
                                       IV_SIGN      = 'I'
                                       IV_OPTION    =  'EQ'
                                       IV_LOW       =   LV_LOW ).
    
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                        IV_SIGN      = 'I'
                                        IV_OPTION    =  'EQ'
                                        IV_LOW       = 'Z005' ).
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                        IV_SIGN      = 'I'
                                        IV_OPTION    =  'EQ'
                                        IV_LOW       = 'Z006' ).
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                        IV_SIGN      = 'I'
                                        IV_OPTION    =  'EQ'
                                        IV_LOW       = 'Z021' ).
          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 = 'ZBP_GROUP' AND ls_selection-low IS INITIAL AND ZCL_CRM_BUFFER=>GV_UI_LOGIN_ORG = 'O 50000297'..
              lr_col->remove( lr_param ).
              lr_param = lr_iterator->get_current( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            IF ls_selection-attr_name = 'ZSALES_ORG' AND ls_selection-low IS INITIAL AND ZCL_CRM_BUFFER=>GV_UI_LOGIN_ORG = 'O 50000297'..
              lr_col->remove( lr_param ).
              lr_param = lr_iterator->get_current( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            IF LS_GENERAL-COUNTRY EQ 'JP' AND LS_SELECTION-ATTR_NAME = 'COUNTRY' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
    
          BPSEARCH_ACCOUNT_POPUP->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL'
                                         IV_COLLECTION =    LR_COL ).
        WHEN 'SERPR'.
    
          LV_TITLE = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'CRM_UIU_BT/PARTNER_SEARCH' ).
          IF BPSEARCH_ACCOUNT_POPUP1 IS NOT BOUND.
            BPSEARCH_ACCOUNT_POPUP1 = COMP_CONTROLLER->WINDOW_MANAGER->CREATE_POPUP(
                IV_INTERFACE_VIEW_NAME = 'SearchHelpWindow'     "#EC NOTEXT
                IV_USAGE_NAME = 'CUBPSearchAccount'
                IV_TITLE = LV_TITLE ).
          ENDIF.
    
    * set display mode
          BPSEARCH_ACCOUNT_POPUP1->SET_DISPLAY_MODE( IF_BSP_WD_POPUP=>C_DISPLAY_MODE_SURROUNDED ).
    * Open the Popup
          BPSEARCH_ACCOUNT_POPUP1->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL' ).
    
    * Role dependand Event
          CONCATENATE 'SEL' IV_ROLE INTO LV_EVENTNAME.
          BPSEARCH_ACCOUNT_POPUP1->SET_ON_CLOSE_EVENT( IV_VIEW = ME IV_EVENT_NAME = LV_EVENTNAME ).
    *     Get Query Context node
          LR_CONTEXT = BPSEARCH_ACCOUNT_POPUP1->GET_CONTEXT_NODE( 'SEARCH' ).
          CHECK LR_CONTEXT IS BOUND.
    *     Get DQuery object to add search parameter
          LR_QS ?= LR_CONTEXT->COLLECTION_WRAPPER->GET_CURRENT( ).
          CHECK LR_QS IS BOUND.
          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_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZSALES_ORG'
                                     IV_SIGN      = 'I'
                                     IV_OPTION    =  'EQ'
                                     IV_LOW       =   LV_LOW ).
    
          LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                      IV_SIGN      = 'I'
                                      IV_OPTION    =  'EQ'
                                      IV_LOW       = 'Z003' ).
    
          IF SY-LANGU = 'J'.
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'COUNTRY'
                              IV_SIGN      = 'I'
                              IV_OPTION    =  'EQ'
                              IV_LOW       = 'JP' ).
          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 = 'ZBP_GROUP' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            IF LS_GENERAL-COUNTRY EQ 'JP' AND LS_SELECTION-ATTR_NAME = 'COUNTRY' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
          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 = 'ZSALES_ORG' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              EXIT.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
    
    
          BPSEARCH_ACCOUNT_POPUP1->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL'
                                         IV_COLLECTION =    LR_COL ).
        WHEN 'RELAIER' OR 'CONSIGNOR'.
          LV_TITLE = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'CRM_UIU_BT/PARTNER_SEARCH' ).
          IF BPSEARCH_ACCOUNT_POPUP2 IS NOT BOUND.
            BPSEARCH_ACCOUNT_POPUP2 = COMP_CONTROLLER->WINDOW_MANAGER->CREATE_POPUP(
                IV_INTERFACE_VIEW_NAME = 'SearchHelpWindow'     "#EC NOTEXT
                IV_USAGE_NAME = 'CUBPSearchAccount'
                IV_TITLE = LV_TITLE ).
          ENDIF.
    
    * set display mode
          BPSEARCH_ACCOUNT_POPUP2->SET_DISPLAY_MODE( IF_BSP_WD_POPUP=>C_DISPLAY_MODE_SURROUNDED ).
    * Open the Popup
          BPSEARCH_ACCOUNT_POPUP2->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL' ).
    * Role dependand Event
          CONCATENATE 'SEL' IV_ROLE INTO LV_EVENTNAME.
          BPSEARCH_ACCOUNT_POPUP2->SET_ON_CLOSE_EVENT( IV_VIEW = ME IV_EVENT_NAME = LV_EVENTNAME ).
    *     Get Query Context node
          LR_CONTEXT = BPSEARCH_ACCOUNT_POPUP2->GET_CONTEXT_NODE( 'SEARCH' ).
          CHECK LR_CONTEXT IS BOUND.
    *     Get DQuery object to add search parameter
          LR_QS ?= LR_CONTEXT->COLLECTION_WRAPPER->GET_CURRENT( ).
          CHECK LR_QS IS BOUND.
    
    *********add by dq-yuw 南非retailer 分组为z006
          IF LV_LAND EQ 'ZA' OR LS_GENERAL-COUNTRY EQ 'ZA'..
    *        lr_qs->add_selection_param( iv_attr_name = 'ZBP_GROUP'
    *                                    iv_sign      = 'I'
    *                                    iv_option    =  'EQ'
    *                                    iv_low       = 'Z006' ).
    
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'PARTNER'
                                        IV_SIGN      = 'I'
                                        IV_OPTION    =  'SW'
                                        IV_LOW       = '5' ).
          ELSE.
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                      IV_SIGN      = 'I'
                                      IV_OPTION    =  'EQ'
                                      IV_LOW       = 'Z005' ).
            IF IV_ROLE = 'CONSIGNOR'.
              LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                              IV_SIGN      = 'I'
                              IV_OPTION    =  'EQ'
                              IV_LOW       = 'Z006' ).
            ENDIF.
            IF IV_ROLE = 'RELAIER'.
              IF  LV_LAND EQ 'FR' OR ZCL_CRM_BUFFER=>GV_UI_LOGIN_ORG = 'O 50000297'...
                LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                IV_SIGN      = 'I'
                                IV_OPTION    =  'EQ'
                                IV_LOW       = 'Z006' ).
              ENDIF.
            ENDIF.
    
          ENDIF.
    
          IF LS_GENERAL-COUNTRY EQ 'JP'.
            IF IV_ROLE <> 'CONSIGNOR'.
              LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                      IV_SIGN      = 'I'
                      IV_OPTION    =  'EQ'
                      IV_LOW       = 'Z006' ).
            ENDIF.
    
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                    IV_SIGN      = 'I'
                    IV_OPTION    =  'EQ'
                    IV_LOW       = 'Z010' ).
          ENDIF.
    ****************end add
          IF SY-LANGU = 'J'."ADD BY LY 20170328
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'COUNTRY'
                              IV_SIGN      = 'I'
                              IV_OPTION    =  'EQ'
                              IV_LOW       = 'JP' ).
          ENDIF.
    
          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_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZSALES_ORG'
                                     IV_SIGN      = 'I'
                                     IV_OPTION    =  'EQ'
                                     IV_LOW       =   LV_LOW ).
          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 = 'ZBP_GROUP' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            IF LS_GENERAL-COUNTRY EQ 'JP' AND LS_SELECTION-ATTR_NAME = 'COUNTRY' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
    *          EXIT.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
          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 = 'ZSALES_ORG' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              EXIT.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
    
          BPSEARCH_ACCOUNT_POPUP2->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL'
                                         IV_COLLECTION =    LR_COL ).
    
        WHEN 'NETWORK' OR 'ZHSI0CNN'.
          LV_TITLE = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'CRM_UIU_BT/PARTNER_SEARCH' ).
          IF BPSEARCH_ACCOUNT_POPUP2 IS NOT BOUND.
            BPSEARCH_ACCOUNT_POPUP2 = COMP_CONTROLLER->WINDOW_MANAGER->CREATE_POPUP(
                IV_INTERFACE_VIEW_NAME = 'SearchHelpWindow'     "#EC NOTEXT
                IV_USAGE_NAME = 'CUBPSearchAccount'
                IV_TITLE = LV_TITLE ).
          ENDIF.
    
    * set display mode
          BPSEARCH_ACCOUNT_POPUP2->SET_DISPLAY_MODE( IF_BSP_WD_POPUP=>C_DISPLAY_MODE_SURROUNDED ).
    * Open the Popup
          BPSEARCH_ACCOUNT_POPUP2->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL' ).
    * Role dependand Event
          CONCATENATE 'SEL' IV_ROLE INTO LV_EVENTNAME.
          BPSEARCH_ACCOUNT_POPUP2->SET_ON_CLOSE_EVENT( IV_VIEW = ME IV_EVENT_NAME = LV_EVENTNAME ).
    *     Get Query Context node
          LR_CONTEXT = BPSEARCH_ACCOUNT_POPUP2->GET_CONTEXT_NODE( 'SEARCH' ).
          CHECK LR_CONTEXT IS BOUND.
    *     Get DQuery object to add search parameter
          LR_QS ?= LR_CONTEXT->COLLECTION_WRAPPER->GET_CURRENT( ).
          CHECK LR_QS IS BOUND.
          IF SY-LANGU = 'J'."ADD BY LY 20170328
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'COUNTRY'
                              IV_SIGN      = 'I'
                              IV_OPTION    =  'EQ'
                              IV_LOW       = 'JP' ).
          ENDIF.
    
          LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                      IV_SIGN      = 'I'
                                      IV_OPTION    =  'EQ'
                                      IV_LOW       = 'Z010' ).
    
          IF LS_GENERAL-COUNTRY EQ 'JP'.
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                 IV_SIGN      = 'I'
                                 IV_OPTION    =  'EQ'
                                 IV_LOW       = 'Z006' ).
          ENDIF.
    
    *      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_qs->add_selection_param( iv_attr_name = 'ZSALES_ORG'
    *                                 iv_sign      = 'I'
    *                                 iv_option    =  'EQ'
    *                                 iv_low       =   lv_low ).
          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 = 'ZBP_GROUP' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
            ENDIF.
            IF LS_GENERAL-COUNTRY EQ 'JP' AND LS_SELECTION-ATTR_NAME = 'COUNTRY' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
    
          BPSEARCH_ACCOUNT_POPUP2->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL'
                                         IV_COLLECTION =    LR_COL ).
        WHEN 'LOGICAL'.
          LV_TITLE = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'CRM_UIU_BT/PARTNER_SEARCH' ).
          IF BPSEARCH_ACCOUNT_POPUP IS NOT BOUND.
            BPSEARCH_ACCOUNT_POPUP = COMP_CONTROLLER->WINDOW_MANAGER->CREATE_POPUP(
                IV_INTERFACE_VIEW_NAME = 'SearchHelpWindow'     "#EC NOTEXT
                IV_USAGE_NAME = 'CUBPSearchAccount'
                IV_TITLE = LV_TITLE ).
          ENDIF.
    
    * set display mode
          BPSEARCH_ACCOUNT_POPUP->SET_DISPLAY_MODE( IF_BSP_WD_POPUP=>C_DISPLAY_MODE_SURROUNDED ).
    * Open the Popup
          BPSEARCH_ACCOUNT_POPUP->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL' ).
    * Role dependand Event
          CONCATENATE 'SEL' IV_ROLE INTO LV_EVENTNAME.
          BPSEARCH_ACCOUNT_POPUP->SET_ON_CLOSE_EVENT( IV_VIEW = ME IV_EVENT_NAME = LV_EVENTNAME ).
    *     Get Query Context node
          LR_CONTEXT = BPSEARCH_ACCOUNT_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( ).
          CHECK LR_QS IS BOUND.
    *      IF SY-LANGU = 'J'.
    *        lr_qs->add_selection_param( iv_attr_name = 'COUNTRY'
    *                                  iv_sign      = 'I'
    *                                  iv_option    =  'EQ'
    *                                  iv_low       = 'JP' ).
    *      ENDIF.
    
          LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                      IV_SIGN      = 'I'
                                      IV_OPTION    =  'EQ'
                                      IV_LOW       = 'Z003' ).
          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.
          IF LV_LOW IS NOT INITIAL.
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZSALES_ORG'
                                       IV_SIGN      = 'I'
                                       IV_OPTION    =  'EQ'
                                       IV_LOW       =   LV_LOW ).
          ENDIF.
    
          LV_LOW = LS_GENERAL-COUNTRY.
          IF LV_LOW IS NOT INITIAL.
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'COUNTRY'
                                       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 = 'ZBP_GROUP' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
            ENDIF.
            IF LS_GENERAL-COUNTRY EQ 'JP' AND LS_SELECTION-ATTR_NAME = 'COUNTRY' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
    
        WHEN 'ZHSI0DEL'.
          LV_TITLE = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'CRM_UIU_BT/PARTNER_SEARCH' ).
          IF BPSEARCH_ACCOUNT_POPUP2 IS NOT BOUND.
            BPSEARCH_ACCOUNT_POPUP2 = COMP_CONTROLLER->WINDOW_MANAGER->CREATE_POPUP(
                IV_INTERFACE_VIEW_NAME = 'SearchHelpWindow'     "#EC NOTEXT
                IV_USAGE_NAME = 'CUBPSearchAccount'
                IV_TITLE = LV_TITLE ).
          ENDIF.
    
    * set display mode
          BPSEARCH_ACCOUNT_POPUP2->SET_DISPLAY_MODE( IF_BSP_WD_POPUP=>C_DISPLAY_MODE_SURROUNDED ).
    * Open the Popup
          BPSEARCH_ACCOUNT_POPUP2->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL' ).
    * Role dependand Event
          CONCATENATE 'SEL' IV_ROLE INTO LV_EVENTNAME.
          BPSEARCH_ACCOUNT_POPUP2->SET_ON_CLOSE_EVENT( IV_VIEW = ME IV_EVENT_NAME = LV_EVENTNAME ).
    *     Get Query Context node
          LR_CONTEXT = BPSEARCH_ACCOUNT_POPUP2->GET_CONTEXT_NODE( 'SEARCH' ).
          CHECK LR_CONTEXT IS BOUND.
    *     Get DQuery object to add search parameter
          LR_QS ?= LR_CONTEXT->COLLECTION_WRAPPER->GET_CURRENT( ).
          CHECK LR_QS IS BOUND.
          IF SY-LANGU = 'J'."ADD BY LY 20170328
            LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'COUNTRY'
                              IV_SIGN      = 'I'
                              IV_OPTION    =  'EQ'
                              IV_LOW       = 'JP' ).
          ENDIF.
    
          LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                                      IV_SIGN      = 'I'
                                      IV_OPTION    =  'EQ'
                                      IV_LOW       = 'Z010' ).
    
          LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                               IV_SIGN      = 'I'
                               IV_OPTION    =  'EQ'
                               IV_LOW       = 'Z006' ).
          LR_QS->ADD_SELECTION_PARAM( IV_ATTR_NAME = 'ZBP_GROUP'
                              IV_SIGN      = 'I'
                              IV_OPTION    =  'EQ'
                              IV_LOW       = 'Z003' ).
    
    *      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_qs->add_selection_param( iv_attr_name = 'ZSALES_ORG'
    *                                 iv_sign      = 'I'
    *                                 iv_option    =  'EQ'
    *                                 iv_low       =   lv_low ).
          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 = 'ZBP_GROUP' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
            ENDIF.
            IF LS_GENERAL-COUNTRY EQ 'JP' AND LS_SELECTION-ATTR_NAME = 'COUNTRY' AND LS_SELECTION-LOW IS INITIAL.
              LR_COL->REMOVE( LR_PARAM ).
              LR_PARAM = LR_ITERATOR->GET_CURRENT( ).
              CONTINUE.
            ENDIF.
            LR_PARAM = LR_ITERATOR->GET_NEXT( ).
          ENDWHILE.
    
          BPSEARCH_ACCOUNT_POPUP2->OPEN( IV_INBOUND_PLUG = 'CLEAR_ALL'
                                         IV_COLLECTION =    LR_COL ).
      ENDCASE.
    
    
    
    ENDMETHOD.
      METHOD op_zhsi0cnn.
    * Added by wizard: Outbound plug 'ZHSI0CNN'
        bp_account_search( iv_role = 'ZHSI0CNN' ).
      ENDMETHOD.

    太懒了,不想说废话,直接代码吧。。。不懂的就算了

  • 相关阅读:
    String painter HDU
    GCD Counting-树形DP
    XOR UVALive
    BZOJ-9-3295: [Cqoi2011]动态逆序对
    E
    Stars HDU
    二维单调队列(理想的正方形+修筑绿化带)
    P3622 [APIO2007]动物园
    COJ1160[一本通 5.3 例 1」Amount of Degrees
    [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/sapSB/p/7676079.html
Copyright © 2020-2023  润新知