cancel
Showing results for 
Search instead for 
Did you mean: 

Component Usage for Webdynpro Abap

Former Member
0 Kudos

Hi I'm New to Webdynpro Abap and i have a requirement on Component Usage.

How to call a method of interface controller of on WD Component into Other WD Componet

Could any one give Detailed Example of Component Usage.

Thanks in Advance

Any help will be rewarded.

Accepted Solutions (1)

Accepted Solutions (1)

former_member402443
Contributor
0 Kudos

Hi Siva,

Please go thru this code that help in understanding component usage dynamically.

An interface view of a dynamically embedded component must be included dynamically into the navigation of a window. You can implement this, for example, in a method of the controller of the view that launches the navigation. The code fragment below shows the instantiation of the dynamically embedded component.

data: L_VIEW_CONTROLLER_API type ref to IF_WD_VIEW_CONTROLLER,

L_COMPONENT_USAGE type ref to IF_WD_COMPONENT_USAGE,

COMPONENT_NAME type STRING.

if L_COMPONENT_USAGE->HAS_ACTIVE_COMPONENT( ) is initial

L_COMPONENT_USAGE->CREATE_COMPONENT( COMPONENT_NAME ).

endif.

Then the method PREPARE_DYNAMIC_NAVIGATION of the runtime API of the view controller is called. All attributes of the own u2013 that is, the using u2013 component are known and can be implemented statically (source attributes). All attributes of the used component are unknown at design time and are passed as variables (target attributes, values are displayed as placeholders in pointed brackets).

L_VIEW_CONTROLLER_API = WD_THIS->WD_GET_API( ).

L_VIEW_CONTROLLER_API->PREPARE_DYNAMIC_NAVIGATION(

source_window_name = 'W0'

source_vusage_name = 'MAIN_USAGE_1'

source_plug_name = 'TO_V1'

target_component_name = <component_name>

target_component_usage = <component_usage_name>

target_view_name = <interface_view_name>

target_plug_name = <inbound_plug_name>

target_embedding_position = <embedding_position> ).

If a used component of the using component wants to provide a method to be called, this method must be defined in the interface controller of the used component.

In practice, the method to be called is generally declared in the interface controller of an interface definition and programmed in the component controller of an implemented component. The code fragment below shows a section of a method of a view controller of the using component:

method MY_CONTROLLER_METHOD .

data: L_INTF_CONTROLLER type ref to IWCI_<NAME_INTERFACE_DEFINITION>,

L_COMPONENT_USAGE type ref to IF_WD_COMPONENT_USAGE.

L_INTF_CONTROLLER ?= L_COMPONENT_USAGE->GET_INTERFACE_CONTROLLER( ).

L_INTF_CONTROLLER-><NAME_METHOD>( ).

endmethod.

If u want to done component usage manually then u can use the salv_wd_table component for using the alv grid in ur component to display the data.

the code for that will be given below.

Note : the variable wd_this->alv_config_table used below is of type ref of - CL_SALV_WD_CONFIG_TABLE

so u hv to declare that in the component controller attribute section.

METHOD configure_alv .

  • data declaration for column settings

DATA : lr_column_settings TYPE REF TO if_salv_wd_column_settings,

lr_col_header TYPE REF TO cl_salv_wd_column_header,

lt_columns TYPE salv_wd_t_column_ref,

ls_column TYPE salv_wd_s_column_ref.

  • data declaration for table settings

DATA : lr_salv_wd_table_ctr TYPE REF TO iwci_salv_wd_table,

lr_table_settings_ctr TYPE REF TO if_salv_wd_table_settings,

lr_header_ctr TYPE REF TO cl_salv_wd_header.

  • Variables for drop-down and inpufield reference

DATA : lr_drdn_by_key TYPE REF TO cl_salv_wd_uie_dropdown_by_key,

lr_input_field TYPE REF TO cl_salv_wd_uie_input_field,

l_header TYPE string.

  • get ALV Component <CONTRACT_DETAILS>

lr_salv_wd_table_ctr = wd_this->wd_cpifc_payment_detail( ).

wd_this->alv_config_table = lr_salv_wd_table_ctr->get_model( ).

  • set visible row count

lr_table_settings_ctr ?= wd_this->alv_config_table.

lr_table_settings_ctr->set_visible_row_count( '5' ).

lr_table_settings_ctr->set_read_only( abap_false ).

lr_table_settings_ctr->set_grid_mode( ).

lr_table_settings_ctr->set_width(

EXPORTING

value = '980PX' ).

wd_this->alv_config_table->if_salv_wd_table_settings~set_data_check( if_salv_wd_c_table_settings=>data_check_on_cell_event ).

wd_this->alv_config_table->if_salv_wd_std_functions~set_pdf_allowed( abap_false ).

wd_this->alv_config_table->if_salv_wd_std_functions~set_view_list_allowed( abap_false ).

wd_this->alv_config_table->if_salv_wd_std_functions~set_edit_insert_row_allowed( abap_false ).

wd_this->alv_config_table->if_salv_wd_std_functions~set_edit_delete_row_allowed( abap_true ).

wd_this->alv_config_table->if_salv_wd_std_functions~set_export_allowed( abap_false ).

wd_this->alv_config_table->if_salv_wd_std_functions~set_edit_check_available( abap_false ).

CLEAR: l_header.

l_header = wd_assist->if_wd_component_assistance~get_text( '030' ).

lr_header_ctr = lr_table_settings_ctr->get_header( ).

lr_header_ctr->set_text( l_header ).

  • set text header for Columns.

CLEAR: l_header,lt_columns.

lr_column_settings ?= wd_this->alv_config_table.

lt_columns = lr_column_settings->get_columns( ).

LOOP AT lt_columns INTO ls_column.

CASE ls_column-id.

WHEN 'PAYMENT_METHOD'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '020' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_drdn_by_key

EXPORTING

selected_key_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_drdn_by_key ).

lr_drdn_by_key->set_key_visible(

EXPORTING

value = abap_true ).

WHEN 'TRANSACTION_TYPE'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '021' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_drdn_by_key

EXPORTING

selected_key_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_drdn_by_key ).

lr_drdn_by_key->set_key_visible(

EXPORTING

value = abap_true ).

WHEN 'CONTRIBUTION_TYPE'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '022' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_drdn_by_key

EXPORTING

selected_key_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_drdn_by_key ).

lr_drdn_by_key->set_key_visible(

EXPORTING

value = abap_true ).

WHEN 'AMOUNT'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '023' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_input_field

EXPORTING

value_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_input_field ).

WHEN 'ACCOUNT_NUMBER'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '024' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_drdn_by_key

EXPORTING

selected_key_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_drdn_by_key ).

WHEN 'DISBURSEMENT_TYPE'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '025' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_drdn_by_key

EXPORTING

selected_key_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_drdn_by_key ).

lr_drdn_by_key->set_key_visible(

EXPORTING

value = abap_true ).

WHEN 'MC_NUMBER'.

  • get header details

lr_col_header = ls_column-r_column->get_header( ).

  • disable DDIC field label

CALL METHOD lr_col_header->set_prop_ddic_binding_field

EXPORTING

property = if_salv_wd_c_ddic_binding=>bind_prop_text

value = if_salv_wd_c_ddic_binding=>ddic_bind_none.

  • set user defined column header

l_header = wd_assist->if_wd_component_assistance~get_text( key = '026' ).

lr_col_header->set_text( l_header ).

CREATE OBJECT lr_input_field

EXPORTING

value_fieldname = ls_column-id.

ls_column-r_column->set_cell_editor( lr_input_field ).

lr_input_field->set_read_only(

EXPORTING

value = abap_true

).

  • CREATE OBJECT lr_drdn_by_key

  • EXPORTING

  • selected_key_fieldname = ls_column-id.

  • ls_column-r_column->set_cell_editor( lr_drdn_by_key ).

WHEN OTHERS.

ENDCASE.

CLEAR: l_header,ls_column.

ENDLOOP.

ENDMETHOD.

Regards

Manoj Kumar

Answers (3)

Answers (3)

Former Member
0 Kudos

Hello,

Plese see this [tutorial|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2e71ce83-0b01-0010-11a4-98c28a33195f].

Regards;

Former Member
0 Kudos

Thank All,

Sometimes I'm Unable to create Method in Interface Controller of a Component

if it is possiable how to call it Any other Possiablity (Tutorial what u have give is not Clear)

Thanks in Advance.

arjun_thakur
Active Contributor
0 Kudos

Hi Siva,

Create a method in component controller and make it as interface. It'll appear in the interface controller as well.

Regards

Arjun

Former Member
0 Kudos
yesrajkumar
Active Participant
0 Kudos

Hi,

Please check this URL.

[https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2e71ce83-0b01-0010-11a4-98c28a33195f]

Thanks,

Rajkumar.S