Sei sulla pagina 1di 18

Webdynpro Usage:

1. Read context element:


It is used to read a row based on action on button or some other UI elements
CALL METHOD wdevent->get_context_element
EXPORTING
name = 'CONTEXT_ELEMENT'
RECEIVING
value = lo_el_nd_job_dtls.

2. Supply Function:
i.
Supply Function is a method that can be created in the node.
ii.
Here we can write the logic and set the data to the node
3. Multiple lead selection:
Below code is used for above purpose
DATA lo_nd_table TYPE REF TO if_wd_context_node.
lo_nd_table = wd_context->get_child_node( name = wd_this>wdctx_table ).
IF lo_nd_table IS NOT INITIAL.
DATA wa_temp TYPE REF TO if_wd_context_element.
DATA lt_temp LIKE TABLE OF wa_temp.
lt_temp = lo_nd_table->get_selected_elements( ).
LOOP AT lt_temp INTO wa_temp.
wa_temp->get_static_attributes(
IMPORTING
static_attributes = ls_table
).
APPEND ls_table TO lt_table.
CLEAR ls_table.
ENDLOOP.
ENDIF.

4. Subscribe action to button on pop up window


It is used to call an action on action of some button in the pop up window
Below code is used to achieve this.
DATA:lo_window_manager TYPE REF TO if_wd_window_manager,
lo_popup TYPE REF TO if_wd_window,
lv_title TYPE string,
ls_text TYPE string,
lt_text TYPE string_table,
lo_api TYPE REF TO if_wd_view_controller,
lo_cmp_api TYPE REF TO if_wd_component.
ls_text =
wd_assist->if_wd_component_assistance~get_text( '060' ).

APPEND ls_text TO lt_text.


CLEAR ls_text.
lv_title = 'Confirm Release Requisition'.
*display confirmation window
lo_cmp_api = wd_comp_controller->wd_get_api( ).
lo_window_manager = lo_cmp_api->get_window_manager( ).
lo_popup = lo_window_manager->create_popup_to_confirm(
text = lt_text
button_kind = if_wd_window=>co_buttons_yesno
window_title = lv_title
close_button = abap_false
message_type = if_wd_window=>co_msg_type_warning
window_position = if_wd_window=>co_center ).
lo_api = wd_this->wd_get_api( ).
lo_popup->subscribe_to_button_event(
button
= if_wd_window=>co_button_yes
action_name = 'ACT_RELEASE'
action_view = lo_api
is_default_button = abap_false ).
lo_popup->open( ).

Note: ACT_RELEASE is the action name, that should


exists in that view
5. Event Handler usage:
There are 3 types of methods that we can create in methods of webdynpro
i.
Method
ii.
Event Handler
iii.
Supply Function
Event handler method is useful to call that method in component controller. In
order to create event handler we have to create an event in events of component
controller.
To call this event handler we can use code wizard and select radio button called
method call in a current controller as shown in below screen shot.

6. Code for FPM buttons visibility::


DATA cnr_ovp TYPE REF TO if_fpm_cnr_ovp.
DATA lo_fpm TYPE REF TO if_fpm.
DATA lt_button TYPE if_fpm_ovp=>ty_t_toolbar_element.
DATA ls_button LIKE LINE OF lt_button.
DATA ls_button_vis TYPE if_fpm_ovp=>ty_s_toolbar_button.
* if wiid is not INITIAL.
lo_fpm = cl_fpm_factory=>get_instance( ).
IF lo_fpm IS NOT INITIAL."added for configure uibb
cnr_ovp ?= lo_fpm->get_service( if_fpm_constants=>gc_service_keycnr_ovp ).
cnr_ovp>get_toolbar_elements( IMPORTING et_toolbar_element = lt_button ).
* if me->v_shtype = .
ENDIF.
LOOP AT lt_button INTO ls_button.
CASE:ls_button-element_id.
WHEN 'ACTION_ID_3'.

cnr_ovp>get_toolbar_button( EXPORTING iv_toolbar_element_id = 'ACTION_ID_3'


IMPORTING es_toolbar_button = ls_but
ton_vis ).
IF wiid IS NOT INITIAL.
ls_button_visisibility = '02'. "02 is visible and 01 is invisible
ELSE.
ls_button_vis-visibility = '01'.
ENDIF.

cnr_ovp>change_toolbar_button( EXPORTING is_toolbar_button = ls_button_vis ).


WHEN 'REJECT'.
cnr_ovp>get_toolbar_button( EXPORTING iv_toolbar_element_id = 'REJECT'
IMPORTING es_toolbar_button = ls_bu
tton_vis ).
IF wiid IS NOT INITIAL.
ls_button_vis-visibility = '02'.
ELSE.
ls_button_vis-visibility = '01'.
ENDIF.
cnr_ovp>change_toolbar_button( EXPORTING is_toolbar_button = ls_button_vis ).
WHEN 'ACTION_ID_1'.
cnr_ovp>get_toolbar_button( EXPORTING iv_toolbar_element_id = 'ACTION_ID_1'
IMPORTING es_toolbar_button = ls_b
utton_vis ).
IF wiid IS NOT INITIAL.
ls_button_vis-visibility = '01'.
ELSE.
ls_button_vis-visibility = '02'.
ENDIF.
cnr_ovp>change_toolbar_button( EXPORTING is_toolbar_button = ls_button_vis ).
WHEN OTHERS.
ENDCASE.

7. F4 Help for field OVS(Object Value Selector):


Note: Multiple component use must be created if F4 help is required for more than
one field as shown in below screen shot

i.
ii.
iii.
iv.
v.

vi.
vii.
viii.

WDR_OVS is a component that can be used to get F4 Help


Create a node with 1:1 cardinality
Select value as Object Value Selector from drop down of property input
help mode of that particular attribute in that node
Give the value for property of OVS Component Usage which is created in the
properties of component controller with some name by using WDR_OVS.
What ever the view that we want to create F4 help, in that view create a
EVENTHANDLER METHOD by giving some name and select the event for that by
using F4 help available in event column.
Immediately after above step some standard code will be generated in the
above created method.
We can add our code as per our requirement in the above method
Below is the code for example
DATA lo_el_nd_paycode TYPE REF TO if_wd_context_element.
DATA ls_nd_paycode TYPE wd_this->element_nd_paycode.
TYPES:
BEGIN OF lty_stru_input,
zbandcode(4) TYPE n,
END OF lty_stru_input.
TYPES:
BEGIN OF lty_stru_list,
zbandcode(4) TYPE n,
zfromamt TYPE pin_hirge,
ztoamt TYPE pin_hirge,
rate5upto TYPE pin_hirge,
rate4upto TYPE pin_hirge,
rate3upto TYPE pin_hirge,
rate2upto TYPE pin_hirge,

rate1upto TYPE pin_hirge,


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,
ls_column_texts LIKE LINE OF lt_column_texts,
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 omit

ted
ls_textname = `ZBANDCODE`. "must match a field name of search
ls_text-value = `Payband`. "wd_assist->get_text( `001` ).
INSERT ls_text INTO TABLE lt_label_texts.
ls_column_texts-name = 'ZBANDCODE'.
ls_column_texts-value = 'Paycode'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'ZFROMAMT'.
ls_column_texts-value = 'Tax slab min.'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'ZTOAMT'.
ls_column_texts-value = 'Tax slab max.'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'RATE5UPTO'.
ls_column_texts-value = 'Tax slab higher range'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'RATE4UPTO'.
ls_column_texts-value = 'Tax slab higher range'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'RATE3UPTO'.
ls_column_texts-value = 'Tax slab higher range'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'RATE2UPTO'.
ls_column_texts-value = 'Tax slab higher range'.
APPEND ls_column_texts TO lt_column_texts.
ls_column_texts-name = 'RATE1UPTO'.
ls_column_texts-value = 'Tax slab higher range'.
APPEND ls_column_texts TO lt_column_texts.
lv_window_title = 'Payband Help'.
lv_table_header = 'Payband' .
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 default

WHEN if_wd_ovs=>co_phase_2.
*
*

call business logic for a table of possible values


lt_select_list = ???
SELECT zbandcode
zfromamt
ztoamt
rate5upto
rate4upto
rate3upto
rate2upto
rate1upto FROM zpayband
INTO TABLE lt_select_list.
IF sy-subrc = 0.
SORT lt_select_list BY zbandcode.
DELETE ADJACENT DUPLICATES FROM lt_select_list COMPARING z
bandcode.
ENDIF.
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_static_attributes(
static_attributes = <ls_selection>
).
ls_nd_paycode-paycode = <ls_selection>-zbandcode.
ls_nd_paycode-min_tax = <ls_selection>-zfromamt.
ls_nd_paycode-max_tax = <ls_selection>-ztoamt.
ENDIF.
ENDCASE.

8. Instantiate the Used Component:


Before using used component we must instantiate it by using code wizard as
shown below

9. Column settings, filter, sort and Export to excel in UI Element Table

Using this procedure we can enable below options.

1.
2.
3.
4.

Settings ( columns )
Export to excel
Sort
Filter

**************************************************************
********
* First Time Initalizations (only once)
*
**************************************************************
********
IF first_time = abap_true.
*
Initialize Table Handler

wd_this->mo_view = view.
wd_this->init_table_handler( ).
*
Set Table Descriptions (from customizing)
*
wd_this->set_cust_column_text( ).
ENDIF.

METHOD init_table_handler .
**************************************************************
********
* Method: INIT_TABLE_HANDLER
*
* ----------------------------------------------------------------- *
* Intialization of the table handler for the process elements
table *
*
(required for filter and settings)

*
**************************************************************
********

**************************************************************
********
DATA:
lo_table
TYPE REF TO
cl_wd_table,
lo_view_ctrl
TYPE REF TO
if_wd_view_controller,
lo_comp
TYPE REF TO
if_wd_component,
ls_deactivated_func
TYPE
/plmu/cl_frw_tbl_hndl=>ts_deactivated_functions.
**************************************************************
********

**************************************************************
********
* call init method for table handler
*
**************************************************************
********
lo_table ?= wd_this->mo_view->get_element( 'TABLE' ).
lo_view_ctrl = wd_this->wd_get_api( ).
lo_comp = wd_comp_controller->wd_get_api( ).
ls_deactivated_func-sort = abap_true.
ls_deactivated_func-filter = abap_true.
ls_deactivated_func-export = abap_true.
CREATE OBJECT wd_this->mo_pe_table_hndl
EXPORTING
ir_table
= lo_table
ir_context
= wd_context
ir_view_controller
= lo_view_ctrl
ir_component
= lo_comp
iv_deactivated_functions = ls_deactivated_func.
*
io_appl_model
= wd_assist->go_rpr_appl.

ENDMETHOD.

10. Usage of Road Map UI Element:


i.
Node

ii.
iii.
iv.
v.

Cardinality 0:n
Selection 0:1
DESC TYPE STRING
ENABLED TYPE WDY_BOOLEAN
NAME TYPE STRING
TYPE TYPE WDUI_ROAD_MAP_STEP_TYPE
Create a road map UI element and give the name as RM_STATUS
With in the above road map UI ELEMENT, create a Multiple Roadmap Step and
give the name as RMLT_STEP
In the properties of step ii, give the SelectedStep as RMLT_STEP
In the MultipleRoadMapStep bind the data source with the above node,
Description with the DESC, Name with NAME and Type with TYPE.

vi.

Below is the necessary code for this in WDDOINIT


DATA lo_nd_nd_roadmap TYPE REF TO if_wd_context_node.
DATA lt_nd_roadmap TYPE wd_this->elements_nd_roadmap.
DATA: ls_nd_roadmap TYPE wd_this->element_nd_roadmap.
* navigate from <CONTEXT> to <ND_ROADMAP> via lead selection
lo_nd_nd_roadmap = wd_context->get_child_node( name = wd_this>wdctx_nd_roadmap ).

ls_nd_roadmap-desc =
ls_nd_roadmap-name =
ls_nd_roadmap-type =
APPEND ls_nd_roadmap
CLEAR ls_nd_roadmap.

'Head HR'.
'1'.
'standard'.
TO lt_nd_roadmap.

ls_nd_roadmap-desc =
ls_nd_roadmap-name =
ls_nd_roadmap-type =
APPEND ls_nd_roadmap
CLEAR ls_nd_roadmap.

'OM Administrator'.
'2'.
'standard'.
TO lt_nd_roadmap.

ls_nd_roadmap-desc =
ls_nd_roadmap-name =
ls_nd_roadmap-type =
APPEND ls_nd_roadmap
CLEAR ls_nd_roadmap.

'Corporate HR O&S Head'.


'3'.
'standard'.
TO lt_nd_roadmap.

lo_nd_nd_roadmap>bind_table( new_items = lt_nd_roadmap set_initial_elements = abap


_true ).
DATA: ls_req_details TYPE wd_this->element_nd_req_detail.
DATA: lv_reqtyp TYPE zreqtyp.
wd_comp_controller->go_context_element->get_static_attributes(
IMPORTING
static_attributes = ls_req_details
).

CASE ls_req_details-reqtyp.
WHEN '0201'.
lo_nd_nd_roadmap->set_lead_selection_index( index = 1 ).
WHEN '0203'.
lo_nd_nd_roadmap->set_lead_selection_index( index = 2 ).
WHEN '0205'.
lo_nd_nd_roadmap->set_lead_selection_index( index = 3 ).
ENDCASE.

11. Usage of TREE UI Element with in TABLE:


i.
Below is the screen shot for node

ii.

iii.
iv.

Othet than Beginning 3 fields (there can be any fields as per our
requirement, but below fields are mandatory)
ICON TYPE STRING
TOOLTIP TYPE STRING
CHILD_FLAG TYPE WDY_BOOLEAN
IS_EXPANADED TYPE WDY_BOOLEAN
IS_LEAF TYPE WDY_BOOLEAN
BTN_SHW_DETAILS TYPE WDY_BOOLEAN
NODE_LEVEL TYPE CHAR255
PARENT_LEVEL TYPE CHAR255
In the above node beginning 3 fields are for table columns
Create a table with the above fields and bind it with the above table as
shown in below screen shot

v.

Insert Row Arrangement in the above table and select


TreeByKeyTableColumn and bind the properties with suitable fields from
node as below
Expandes with IS_EXPANDED, Isleaf with IS_LEAF, ParentKey with
PARENT_LEVEL, RowKey with NODE_LEVEL as shown in below screen shot

vi.

Create a Image in Row Arrangement and bind with ICON from the above
node
Below is the code to prepare tree for the table

vii.

DATA: lt_orgunit TYPE wd_this->elements_nd_tree_orgunit,


ls_orgunit LIKE LINE OF lt_orgunit,
ls_hrp1001 TYPE hrp1001.
DATA: lv_prnt_level TYPE string.
DATA: lv_node_level TYPE string.
DATA: lv_cnt TYPE string.
* to bind data to orgunit
DATA: ls_result_temp LIKE LINE OF wd_this>lt_result_tab_temp.
LOOP AT wd_this->lt_result_tab_temp INTO ls_result_temp.
READ TABLE lt_nd_struc
INTO ls_nd_struc
WITH KEY objid = ls_result_temp-objid. "lv_objid.
IF sy-subrc EQ 0.
ls_orgunit-objid = ls_nd_struc-objid.
ls_orgunit-otype = ls_nd_struc-otype.
ls_orgunit-parent_level = ' '.

ls_orgunit-node_level = lv_prnt_level = sy-tabix.


ls_orgunit-is_expanded = abap_true.
ls_orgunit-is_leaf = abap_false.
SELECT SINGLE stext
FROM hrp1000
INTO ls_orgunit-stext
WHERE objid EQ ls_orgunit-objid
AND otype EQ ls_nd_struc-otype
AND plvar EQ '01'
AND langu EQ sy-langu
AND begda LE sy-datum
AND endda GE sy-datum.
ENDIF.
IF ls_nd_struc-otype EQ 'FN'.
ls_orgunit-icon = 'ICON_FOLDER'.
ls_orgunit-tooltip = 'Functional Area'.
ELSEIF ls_nd_struc-otype = 'JF' .
READ TABLE lt_nd_struc
INTO ls_nd_struc
WITH KEY pup = ls_nd_struc-seqnr.
IF sy-subrc EQ 0.
ls_orgunit-icon = 'ICON_OBJECT_FOLDER'.
ls_orgunit-tooltip = 'Sub Function'.
ELSE.
ls_orgunit-icon = '~Icon/PlaintextFile'.
ls_orgunit-tooltip = 'Sub Function'.
ENDIF.
ENDIF.
ls_orgunit-is_leaf = abap_false.
wd_this->first = 'X'.
APPEND ls_orgunit TO lt_orgunit.
CLEAR ls_orgunit.
ENDLOOP.
Bind this lt_orguint to the above node

Potrebbero piacerti anche