on 07-24-2013 6:48 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Dear All,
Please any help onthis?
Thanks,
Venkat.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
METHOD user_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,
* add fields for the display of your search input here
user_name TYPE string,
END OF lty_stru_input.
TYPES:
BEGIN OF lty_stru_list,
* add fields for the selection list here
user_id TYPE zuser_id,
first_name TYPE zfirst_name,
last_name TYPE zlast_name,
sapname TYPE char12,
END OF lty_stru_list.
DATA: ls_search_input TYPE lty_stru_input,
lt_select_list TYPE STANDARD TABLE OF lty_stru_list,
ls_select_list TYPE lty_stru_list,
lt_select_list1 TYPE STANDARD TABLE OF lty_stru_list,
ls_select_list1 TYPE 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.
FIELD-SYMBOLS: <ls_query_params> TYPE lty_stru_input,
<ls_selection> TYPE lty_stru_list.
CASE ovs_callback_object->phase_indicator.
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 = `USER_NAME`. "must match a field name of search
ls_text-value = `Search User`. "wd_assist->get_text( `001` ).
INSERT ls_text INTO TABLE lt_label_texts.
ls_text-name = `USER_ID`. "must match a field in list structure
ls_text-value = `User ID`. "wd_assist->get_text( `002` ).
INSERT ls_text INTO TABLE lt_column_texts.
ls_text-name = `FIRST_NAME`. "must match a field in list structure
ls_text-value = `First Name`. "wd_assist->get_text( `002` ).
INSERT ls_text INTO TABLE lt_column_texts.
ls_text-name = `LAST_NAME`. "must match a field in list structure
ls_text-value = `Last Name`. "wd_assist->get_text( `002` ).
INSERT ls_text INTO TABLE lt_column_texts.
lv_window_title = 'User Search'.
* lv_table_header = wd_assist->get_text( `004` ).
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 ).
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
* lt_select_list = ???
REPLACE ALL OCCURRENCES OF '*' IN <ls_query_params>-user_name WITH '%' .
IF <ls_query_params>-user_name IS NOT INITIAL.
DATA lv_len TYPE i.
DATA lv_query TYPE string.
lv_len = strlen( <ls_query_params>-user_name ).
IF lv_len GT 8.
lv_query = <ls_query_params>-user_name+0(7).
* CONCATENATE lv_query '%' INTO lv_query.
<ls_query_params>-user_name = lv_query.
ELSE.
lv_query = <ls_query_params>-user_name.
* CONCATENATE lv_query '%' INTO lv_query.
<ls_query_params>-user_name = lv_query.
ENDIF.
SELECT user_id first_name last_name sapname FROM zuser INTO CORRESPONDING FIELDS OF TABLE lt_select_list1.
LOOP AT lt_select_list1 INTO ls_select_list1 WHERE user_id CS <ls_query_params>-user_name
OR first_name CS <ls_query_params>-user_name OR last_name CS <ls_query_params>-user_name OR sapname CS <ls_query_params>-user_name.
APPEND ls_select_list1 TO lt_select_list.
ENDLOOP.
ELSE.
SELECT user_id first_name last_name FROM zuser INTO CORRESPONDING FIELDS OF TABLE lt_select_list.
ENDIF.
ovs_callback_object->set_output_table( output = lt_select_list ).
WHEN if_wd_ovs=>co_phase_3.
* apply result
DATA lv_uname TYPE string.
DATA lv_fname TYPE string.
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 = `user_id`
value = <ls_selection>-user_id ).
CONCATENATE <ls_selection>-last_name ',' INTO lv_fname.
CONCATENATE lv_fname <ls_selection>-first_name INTO lv_uname SEPARATED BY space.
ovs_callback_object->context_element->set_attribute(
name = `USER_NAME`
value = lv_uname ).
DATA lv_sapname TYPE char12.
CALL FUNCTION 'ZUSER_READ_USER_SAPNAMES'
EXPORTING
iv_userid = <ls_selection>-user_id
IMPORTING
ev_sapname = lv_sapname.
ovs_callback_object->context_element->set_attribute(
name = `SAPNAME`
value = lv_sapname ).
* or
* ovs_callback_object->context_element->set_static_attributes(
* static_attributes = <ls_selection> ).
ENDIF.
ENDCASE.
Here is the Output..
User | Count |
---|---|
89 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.