Inloggen



Wie is online
We hebben 1 gast online

Web Dynpro for ABAP Component Usage: Object Value Selector

Gebruikerswaardering: / 0
LaagsteHoogste 

In een tweetal tutorials zal het gebruik van component usage in Web Dynpro for ABAP verduidelijkt worden. In deze tutorial wordt een zoekhulp gedefinieerd met behulp van component usage. Als een standaard zoekhulp niet voldoet, kan met behulp van OVS een eigen zoekhulp geschreven worden.

Achtereenvolgens worden de volgende stappen uitgevoerd:
Stap 1: Definiëren nieuw Web Dynpro Component.
Stap 2: Component Usage in de Componentcontroller definiëren.
Stap 3: Node toevoegen aan de Componentcontroller.
Stap 4: Node mappen naar MAIN_VIEW.
Stap 5: Voeg formulierveld toe aan view MAIN_VIEW.
Stap 6: OVS methode definiëren. 
Stap 7: Creëer en test een applicatie.

Stap 1: Definieer een Web Dynpro Component.

Selecteer “Comp./intf. Web Dynpro” in de ABAP Workbench en creëer een nieuw component. Selecteer Web Dynpro-component als Type, vul MAIN_WINDOW in als vensternaam en MAIN_VIEW als Viewnaam en klik op enter. Creëer het Component als lokaal object.

OVS Component

Stap 2: Definieer Component Usage.

In het tabblad Gebruikte Componenten, vul OVS als naam voor de Component Usage in en selecteer Component WDR_OVS.

OVS Component Usage

Creëer Controller usage voor de Component Usage OVS in het tabblad Properties van e ComponentController van de Web Dynpro Component. Event “OVS” is nu beschikbaar in de ComponentController. Dit event zal gebruikt worden voor de implementatie van de zoekhulp.

OVS Component Usage

Component Usage

Stap 3: Node creëren.

In de Context van de ComponentController, creëer een nieuwe node met naam SFLIGHT, Dictionary SFLIGHT, Cardinality 0..1 en Selection 0..1. Selecteer de velden CARRID, CONNID en FLDATE van structuur SFLIGHT en bevestig de selectie.

Node

Node

Property Input Help Mode van de attributen is standaard Automatic. Voor attribuut CONNID is zoekhulp H_SPFLI automatisch bepaald. Voor dit veld gaan we een eigen OVS zoekhulp creëren. Wijzig de Input Help Mode daarom in “Object Value Selector” en selecteer Component Usage “OVS”.

OVS Component

Stap 4: Node mappen naar MAIN_VIEW

In het tabblad Context van de MAIN_VIEW, sleep de node SFLIGHT van de ComponentController naar de Context van de MAIN_VIEW.

Context Mapping

Stap 5: Voeg een formulierveld toe.

In het tabblad Layout, voeg een element CONNID_LBL van het type Label toe en een element CONNID van het type InputField. Koppel de value property van het inputfield aan veld CONNID uit de context, koppel de labelFor property van de Label aan CONNID.

UI Element

UI Element

Stap 6: Creëer methode GET_CONNID.

Het opstarten van de zoekhulp van InputField CONNID, start automatisch event OVS. Dit even kan worden afgevangen door een Event Handler in de Context. In het tabblad Methods van de ComponentController, definieer een nieuwe methode van het type Event Handler. Koppel de methode aan event OVS van Component Usage OVS.

OVS Event

Een OVS methode bestaat uit 4 fases. In de eerste fase (fase 0) worden teksten voor kolomopschriften en zoekvelden gedefinieerd. Met behulp van methode set_configuration worden de teksten en het standaard aantal regels en kolommen vastgelegd. Voorbeeld:

DATA ls_text          TYPE wdr_name_value.
DATA lt_label_text    TYPE wdr_name_value_list.
DATA lt_column_header TYPE wdr_name_value_list.

CASE ovs_callback_object->phase_indicator.
WHEN if_wd_ovs=>co_phase_0.
ls_text-name = 'Luchtvaartmaatschappij'.
ls_text-value = wd_assist->if_wd_component_assistance~get_text( key = '001' ).
INSERT ls_text INTO TABLE lt_label_text.
ls_text-name = 'Code van vliegverbinding'.
ls_text-value = wd_assist->if_wd_component_assistance~get_text( key = '002' ).
INSERT ls_text INTO TABLE lt_label_text.
ls_text-name = Vluchtdatum'.
ls_text-value = wd_assist->if_wd_component_assistance~get_text( key = '003' ).
INSERT ls_text INTO TABLE lt_label_text.

ovs_callback_object->set_configuration(
label_texts  = lt_label_text
column_texts = lt_column_header
group_header = ' '
window_title = 'Invoerhulp'
table_header = 'Vluchten'
col_count    = 3
row_count    = 10 ).

In de tweede fase (fase 1) worden de zoekvelden bepaald met behulp van methode set_input_structure. Dit is een optionele stap. Als de stap wordt overgeslagen, worden geen zoekvelden getoond. Voorbeeld:

TYPES: BEGIN OF search_strc,
carrid   TYPE S_CARR_ID,
connid   TYPE S_CONN_ID,
fldate  TYPE S_DATE,
END OF search_strc.
DATA ls_search_input  TYPE search_strc.

WHEN if_wd_ovs=>co_phase_1.
ovs_callback_object->context_element->get_static_attributes(
IMPORTING static_attributes = ls_search_input ).

ovs_callback_object->set_input_structure( input = ls_search_input ).

In de derde fase (fase 2) worden de zoekvelden uitgelezen, het zoekresultaat wordt bepaald en het zoekresultaat wordt met behulp van methode set_output_table in het zoekscherm getoond. Voorbeeld:

DATA: BEGIN OF ls_output,
carrid   TYPE S_CARR_ID,
connid   TYPE S_CONN_ID,
fldate  TYPE S_DATE,
END OF ls_output,
lt_output LIKE TABLE OF ls_output.
FIELD-SYMBOLS <query_params> TYPE search_strc.

WHEN if_wd_ovs=>co_phase_2.
IF ovs_callback_object->query_parameters IS BOUND.
ASSIGN ovs_callback_object->query_parameters->*
TO <query_params>.
ENDIF.
* Get search result
ovs_callback_object->set_output_table( output = lt_result ).

Als de gebruiker een regel uit het zoekresultaat selecteert, wordt de laatste fase (fase 3) uitgevoerd. Hier wordt de geselecteerde waarde bepaald en verwerkt. In onderstaand voorbeeld wordt de waarde bepaald en in een context element weggeschreven:

WHEN if_wd_ovs=>co_phase_3.
IF ovs_callback_object->selection IS BOUND.
ASSIGN ovs_callback_object->selection->* TO <selection>.
ENDIF.
IF <selection> IS ASSIGNED.
lo_elem ?= client_event->get_object( name = 'OVS_CONTEXT_ELEMENT' ).
lo_elem->set_attribute( name = 'CONNID' value = <selection>-connid ).     
ENDIF.

Stap 7: Creëer een applicatie.

Open het context menu van de Web Dynpro for ABAP Component en selecteer Creëren -> Web Dynpro-applicatie. Vul en applicatie en omschrijving in en activeer het Component. Test de applicatie door ‘Testen’ te selecteren uit het context menu van de applicatie.

 
Find the Best Web Hosting which offers reliable service and top quality support