webdynpro abap usage with sample code
Post on 02-Jun-2018
348 Views
Preview:
TRANSCRIPT
-
8/10/2019 Webdynpro ABAP Usage with sample code
1/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_elementEXPORTING
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 purposeDATA 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' ).
-
8/10/2019 Webdynpro ABAP Usage with sample code
2/18
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_yesaction_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
methodcall in a current controlleras shown in below screen shot.
-
8/10/2019 Webdynpro ABAP Usage with sample code
3/18
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_key-
cnr_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_vis-
isibility = '02'. "02 is visible and 01 is invisible
ELSE.
ls_button_vis-visibility = '01'.ENDIF.
-
8/10/2019 Webdynpro ABAP Usage with sample code
4/18
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
-
8/10/2019 Webdynpro ABAP Usage with sample code
5/18
i. WDR_OVS is a component that can be used to get F4 Help
ii. Create a node with 1:1 cardinality
iii. Select value as Object Value Selector from drop down of property input
help mode of that particular attribute in that node
iv. 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.
v. 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.
vi. Immediately after above step some standard code will be generated in the
above created method.
vii. We can add our code as per our requirement in the above method
viii. 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,
-
8/10/2019 Webdynpro ABAP Usage with sample code
6/18
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: TYPE lty_stru_input,
TYPE lty_stru_list.
CASE ovs_callback_object->phase_indicator.
WHEN if_wd_ovs=>co_phase_0. "configuration phase, may be omitted
ls_text-
name = `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_textscolumn_texts = lt_column_texts
-
8/10/2019 Webdynpro ABAP Usage with sample code
7/18
window_title = lv_window_title
table_header = lv_table_header ).
WHEN if_wd_ovs=>co_phase_1. "set search structure and default
s
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
rate3uptorate2upto
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 .
IF IS ASSIGNED.
ovs_callback_object->context_element-
>set_static_attributes(
static_attributes =
).
ls_nd_paycode-paycode = -zbandcode.
ls_nd_paycode-min_tax = -zfromamt.
ls_nd_paycode-max_tax = -ztoamt.
ENDIF.
ENDCASE.
8. Instantiate the Used Component:
Before using used component we must instantiate it by using code wizard asshown below
-
8/10/2019 Webdynpro ABAP Usage with sample code
8/18
9. Column settings, filter, sort and Export to excel in UI Element Table
Using this procedure we can enable below options.
1.
Settings ( columns )
2. Export to excel
3. Sort
4. Filter
-
8/10/2019 Webdynpro ABAP Usage with sample code
9/18
**************************************************************
********
* First Time Initalizations (only once)
*
**************************************************************
********
IF first_time = abap_true.* Initialize Table Handler
-
8/10/2019 Webdynpro ABAP Usage with sample code
10/18
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)
-
8/10/2019 Webdynpro ABAP Usage with sample code
11/18
*
**************************************************************
********
**************************************************************
********
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_tableir_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.
-
8/10/2019 Webdynpro ABAP Usage with sample code
12/18
-
8/10/2019 Webdynpro ABAP Usage with sample code
13/18
-
8/10/2019 Webdynpro ABAP Usage with sample code
14/18
10.Usage of Road Map UI Element:
i. Node
Cardinality 0:n
Selection 0:1DESC TYPE STRING
ENABLED TYPE WDY_BOOLEAN
NAME TYPE STRING
TYPE TYPE WDUI_ROAD_MAP_STEP_TYPE
ii. Create a road map UI element and give the name as RM_STATUS
iii. With in the above road map UI ELEMENT, create a Multiple Roadmap Step and
give the name as RMLT_STEP
iv. In the properties of step ii, give the SelectedStep as RMLT_STEP
v.
In the MultipleRoadMapStep bind the data source with the above node,
Description with the DESC, Name with NAME and Type with TYPE.
-
8/10/2019 Webdynpro ABAP Usage with sample code
15/18
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 to via lead selection
lo_nd_nd_roadmap = wd_context->get_child_node( name = wd_this->wdctx_nd_roadmap ).
ls_nd_roadmap-desc = 'Head HR'.
ls_nd_roadmap-name = '1'.
ls_nd_roadmap-type = 'standard'.
APPEND ls_nd_roadmap TO lt_nd_roadmap.
CLEAR ls_nd_roadmap.
ls_nd_roadmap-desc = 'OM Administrator'.
ls_nd_roadmap-name = '2'.
ls_nd_roadmap-type = 'standard'.
APPEND ls_nd_roadmap TO lt_nd_roadmap.
CLEAR ls_nd_roadmap.
ls_nd_roadmap-desc = 'Corporate HR O&S Head'.
ls_nd_roadmap-name = '3'.
ls_nd_roadmap-type = 'standard'.
APPEND ls_nd_roadmap TO lt_nd_roadmap.
CLEAR ls_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
-
8/10/2019 Webdynpro ABAP Usage with sample code
16/18
ii. 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
iii. In the above node beginning 3 fields are for table columns
iv. Create a table with the above fields and bind it with the above table as
shown in below screen shot
-
8/10/2019 Webdynpro ABAP Usage with sample code
17/18
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
vii. Below is the code to prepare tree for the table
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 = ' '.
-
8/10/2019 Webdynpro ABAP Usage with sample code
18/18
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_orguintto the above node
top related