Webdynpro ABAP Usage with sample code

Embed Size (px)

Citation preview

  • 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