• WDA学习(7):OVS Help in WDA


    1.8.OVS Help in WDA

           OVS(Object Value Selector)对象值选择器,通过Component Usage使用。对应Web Dynpro Component:WDR_OVS。

    1.创建Web Dynpro Component。

     

    Component Usage:WDR_OVS

     

    2.设置MAIN视图组件。

    Context页签,创建上下文

     

    设置Context的CARRID字段使用OVS

    Input Help Mode设置为Object Value Selector;

    OVS Component Usage:设置为OVS;

     

    Layout页签:

    创建Table视图控件,Create Binding,绑定上下文;

     

    Properties页签

    设置MAIN视图组件Used Contorller/Components

     

    Methods页签

    创建ON_OVS方法,类型为Event Handler,事件回调函数,Event栏位点击帮助小方块,选择Event:OVS

     

    默认生成Method:ON_OVS代码,但是需要修改:

    method ON_OVS .
    * declare data structures for the fields to be displayed and
    * for the table columns of the selection list, if necessary
      types:
        begin of lty_stru_input,
          "自定义查询字段search input
          carrid type SFLIGHT-CARRID,
          connid TYPE SFLIGHT-CONNID,
          fldate TYPE SFLIGHT-FLDATE,
        end of lty_stru_input.
      types:
        begin of lty_stru_list,
          "自定义显示查询结果selection list
          carrid type SFLIGHT-CARRID,
          connid TYPE SFLIGHT-CONNID,
          fldate TYPE SFLIGHT-FLDATE,
          currency TYPE SFLIGHT-CURRENCY,
        end of lty_stru_list.
    
      data: ls_search_input  type lty_stru_input,
            lt_select_list   type standard table of lty_stru_list,
            ls_text          type wdr_name_value,
            lt_label_texts   type wdr_name_value_list,
            lt_column_texts  type wdr_name_value_list,
            lv_window_title  type string,
            lv_table_header  type string.
    
      DATA: gs_where TYPE C LENGTH 72.
      DATA: gt_where LIKE TABLE OF gs_where.
      DATA: l_line TYPE I.
    
      field-symbols: <ls_query_params> type lty_stru_input,
                     <ls_selection>    type lty_stru_list.
    
      case ovs_callback_object->phase_indicator.
    
          "阶段0:配置ovs组件.
          "M_OVS_CALLBACK_OBJECT是IF_WD_OVS接口对象
          "提供SET_CONFIGURATION方法
          "TABLE_MULTI_SELECT:设置是否多行选择,abap_boolean
          "WINDOW_TITLE:设置窗口标题
          "LABEL_TEXTS:查询字段表,WDR_NAME_VALUE_LIST
          "COLUMN_TEXTS:结果字段表,WDR_NAME_VALUE_LIST
          "TABLE_HEADER:结果表头
        when if_wd_ovs=>co_phase_0.  "configuration phase, may be omitted
    *   in this phase you have the possibility to define the texts,
    *   if you do not want to use the defaults (DDIC-texts)
    
          ls_text-name = `CARRID`.  "must match a field name of search
          ls_text-value = `Airline Code`.
          insert ls_text into table lt_label_texts.
          ls_text-name = `CONNID`.  "must match a field name of search
          ls_text-value = `Flight Number`.
          insert ls_text into table lt_label_texts.
          ls_text-name = `FLDATE`.  "must match a field name of search
          ls_text-value = `Flight Date`.
          insert ls_text into table lt_label_texts.
    
          ls_text-name = `CARRID`.  "must match a field in list structure
          ls_text-value = `Airline Code`.
          insert ls_text into table lt_column_texts.
          ls_text-name = `CONNID`.  "must match a field in list structure
          ls_text-value = `Flight Number`.
          insert ls_text into table lt_column_texts.
          ls_text-name = `FLDATE`.  "must match a field in list structure
          ls_text-value = `Flight Date`.
          insert ls_text into table lt_column_texts.
          ls_text-name = `CURRENCY`.  "must match a field in list structure
          ls_text-value = `Currency of Flight`.
          insert ls_text into table lt_column_texts.
    
          lv_window_title = 'window title'.
          lv_table_header = 'table header'.
    
          ovs_callback_object->set_configuration(
                    label_texts  = lt_label_texts
                    column_texts = lt_column_texts
                    window_title = lv_window_title
                    table_header = lv_table_header
                    table_multi_select = abap_false ).
    
    
        when if_wd_ovs=>co_phase_1.  "set search structure and defaults
    *   In this phase you can set the structure and default values
    *   of the search structure. If this phase is omitted, the search
    *   fields will not be displayed, but the selection table is
    *   displayed directly.
    *   Read values of the original context (not necessary, but you
    *   may set these as the defaults). A reference to the context
    *   element is available in the callback object.
    
          ovs_callback_object->context_element->get_static_attributes(
              importing static_attributes = ls_search_input ).
    *     pass the values to the OVS component
          ovs_callback_object->set_input_structure(
              input = ls_search_input ).
    
    
        when if_wd_ovs=>co_phase_2.
    *   If phase 1 is implemented, use the field input for the
    *   selection of the table.
    *   If phase 1 is omitted, use values from your own context.
    
          if ovs_callback_object->query_parameters is not bound.
    ******** TODO exception handling
          endif.
          assign ovs_callback_object->query_parameters->* to <ls_query_params>.
          if not <ls_query_params> is assigned.
    ******** TODO exception handling
          endif.
    *     call business logic for a table of possible values
          "根据用户筛选条件,筛选结果
          IF <ls_query_params>-carrid IS NOT INITIAL.
            gs_where = 'CARRID = ' && ' ''' && <ls_query_params>-carrid && ''''.
            APPEND gs_where TO gt_where.
            gs_where = ' AND'.
            APPEND gs_where TO gt_where.
          ENDIF.
          IF <ls_query_params>-connid IS NOT INITIAL.
            gs_where = 'CONNID = ' && ' ''' && <ls_query_params>-connid && ''''.
            APPEND gs_where TO gt_where.
            gs_where = ' AND'.
            APPEND gs_where TO gt_where.
          ENDIF.
          IF <ls_query_params>-fldate IS NOT INITIAL.
            gs_where = 'CONNID = ' && ' ''' && <ls_query_params>-fldate && ''''.
            APPEND gs_where TO gt_where.
            gs_where = ' AND'.
            APPEND gs_where TO gt_where.
          ENDIF.
    
          "去掉最后一条and记录
          DESCRIBE TABLE gt_where LINES l_line.
          LOOP AT gt_where INTO gs_where.
            IF sy-tabix = l_line AND gs_where = ' AND'.
              DELETE gt_where INDEX l_line.
            ENDIF.
          ENDLOOP.
    
          "根据条件动态查询
          SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE lt_select_list WHERE (gt_where).
          "设置查询到数据
          ovs_callback_object->set_output_table( output = lt_select_list ).
    
        when if_wd_ovs=>co_phase_3.
    *   apply result
          if ovs_callback_object->selection is not bound.
    ******** TODO exception handling
          endif.
    
          assign ovs_callback_object->selection->* to <ls_selection>.
          if <ls_selection> is assigned.
            ovs_callback_object->context_element->set_attribute(
                                   name  = `CARRID`
                                   value = <ls_selection>-carrid ).
    *        ovs_callback_object->context_element->set_static_attributes(
    *                               static_attributes = <ls_selection> ).
          endif.
      endcase.
    
    endmethod.
    View Code

    OVS组件回调会有四个阶段:

    第一阶段:设置OVS帮助组件弹出框的标题,帮助的查询筛选字段,设置结果表栏位等;

    第二阶段:设置OVS帮助组件弹出框,初始化输入筛选条件;

    第三阶段:根据用户输入条件,筛选出结果;

    第四阶段:用户选择筛选出的记录,将所需栏位设置到帮助触发页面;

    3.创建Web Dynpro Application,运行应用。

     

    输入筛选条件

     

    选择筛选出来的数据

     

     将所选记录所需栏位值设置到触发帮助的栏位

  • 相关阅读:
    android SearchView配置
    把cmd命令行制作成bat程序文件
    2020 rou-yi开源框架后台运行
    android studio 干净卸载手机app只需三步
    android textview 部分内容的颜色字体修改
    16进制颜色编码-透明色
    数据结构——二叉查找树
    Java中的集合(一)——集合接口
    Effective Java阅读笔记——创建和销毁对象(一)
    数据结构——二叉树
  • 原文地址:https://www.cnblogs.com/tangToms/p/12838326.html
Copyright © 2020-2023  润新知