Skip to Content

Web Dynpro for ABAP – Fix for Tutorial 6 – Component Usage (How to create a reusable component)

Hi all,

My interest in Web Dynpro for ABAP has been piling up so I finally took the time to try it out and run through some tutorials.

Like many others, I started here http://scn.sap.com/docs/DOC-8863 , an excelent set of tutorials by Antje Boehm-Peters and Razi Mateen. However, in Tutorial 6, which teaches you how to reuse other components, the component used (TECHED_05S_CUSTOMER_DATA) did not exist in my system. I googled around and it seemed that there were others in my situation. So, to help out others, and also for educational purposes, I took the time to learn how to create a reusable component that could be used to complete this tutorial.


So let’s start!


1 – Creating a new component


Start by creating a new component and name it whatever you like. I named it ZZ_00_CUSTDISPLAY. I entered the same name for the window and left the default name for the view.



2 – Creating the attributes in the component controller’s context


Switch to the context tab of the component’s controller. Create a node and use structure BAPICUSTOMER_04. For simplicity I added 4 attributes from the structure: Customer, Name, City and Street.


In the end it should look something like this:


Picture 1.png



3 – Map the component’s context to the view’s context


Now you need to map the component’s context to the view’s context. Switch to the context tab of the component view to be able to do this. Drag the component’s context node to the view’s context node.


If done properly, it should look like this:


Picture2.png

4 – Creating the layout


Now you have to change to the layout tab and draw it out, mapping the fields to the respective attributes in the view’s context.. I used read-only input fields and labels.

This is how it looks like in the end:

Picture3.png

5 – Creating the method


Now we need to implement the method that will get the information from the customer and display it on the screen. Switch to the method tab of the component controller and create method SHOWCUSTOMER. Don’t forget to check the interface checkbox or it won’t be available for the component usage controller.


Method list:


Picture4.png



Double click it. Now you have to implement the method. We need an importing parameter, CUSTOMER_ID, of type S_CUSTOMER, like this:

Picture5.png

Here’s the code for the method (sorry for the poor formatting):

METHOD showcustomer .

DATA:

lv_kunnr TYPE kunnr,

ls_cust TYPE bapicustomer_04.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’

EXPORTING

input = customer_id

IMPORTING

output = lv_kunnr.

CALL FUNCTION ‘BAPI_CUSTOMER_GETDETAIL2’

EXPORTING

customerno = lv_kunnr

IMPORTING

customeraddress = ls_cust.

DATA lo_nd_cust_data TYPE REF TO if_wd_context_node.

DATA lo_el_cust_data TYPE REF TO if_wd_context_element.

DATA ls_cust_data TYPE wd_this->element_cust_data.

* navigate from <CONTEXT> to <CUST_DATA> via lead selection

lo_nd_cust_data = wd_context->get_child_node( name = wd_this-

>wdctx_cust_data ).

* @TODO handle non existant child

* IF lo_nd_cust_data IS INITIAL.

* ENDIF.

* get element via lead selection

lo_el_cust_data = lo_nd_cust_data->get_element( ).

* @TODO handle not set lead selection

IF lo_el_cust_data IS INITIAL.

ENDIF.

* @TODO fill static attributes

ls_cust_data = ls_cust.

* set all declared attributes

lo_el_cust_data->set_static_attributes(

static_attributes = ls_cust_data ).

ENDMETHOD.

6 – Save it and activate everything!!

Save and activate everything! You should now be able to proceed with tutorial 6 – component usage!


Hope this is helpful.

Best,

Bruno Esperança

21 Comments
You must be Logged on to comment or reply to a post.