Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Author: Pritam Ghosh
Submitted: 08 May, 2009

Summary:

    This tutorial  shows how to call and pass value from one Application to another Application in  Webdynpro  ABAP. We will Create two Application name 'ZZ_CALLING_APPLICATION' and 'ZZ_CALLED_APPLICATION'. In first Application that is 'ZZ_CALLING_APPLICATION' we will create an input parameter where user will enter a date & on clicking on a button it will show all Purchasing Document Header data for that particular purchasing document date and on lead selection of Purchase Order details it will call our second Application that is 'ZZ_CALLING_APPLICATION' and show the Purchasing Order Item details for that particular PO which we have selected in our first Application means we will call and pass the Purchase Order Number from first to second Application

 1.            Go to transaction SE80 and select "WebDynpro Comp./Intf" and create a new WebDynpro component by the name ZZ_CALLING_APPLICATION (as shown below), give window     name as MAIN_WINDOW and view as FIRST_VIEW.  Save the Web Dynpro Application as local object as shown below:




2.            Now go to the Component Controller Context tab and create one node as shown  below with the name 'EKKO_NODE' and take the Dictionary structure as EKKO with Cardinality '0..n' and Selection '0..1'. Now select the 'Add Attribute from Structure' and select the fields you want in your table.




 

3.            Now save your Application and go to view context and map the node 'EKKO_NODE' from Component Controller Context to view context by drag and drop as shown below.



4.           Create one attribute with name DATE under the View Controller Context tab with type DATUM.




 
5.            Now go to the Layout and create an element with name LABEL type label, INPUT as type Input Field. In element LABEL maintain its property 'LabelFor' as INPUT and in 'Text' write 'Enter a date'. Now bind the property value of element INPUT with attribute date as shown below:




 
6.            Create an element type Button with name SHOW and make the text property as 'Show PO' and create an action as SHOW_PO as shown below:





7.            Now create a table with name TABLE, change the property 'Layout Data' as 'MatrixHeadData', give the text as 'Header data' in the text property of CAPTION.



 
 
 
 
 
 
 
 
 
 
 
 
 


8.            Right click on the table and create the binding as shown below, chose the context node as EKKO_NODE, make the Standard Cell Editor property as 'TextView' and click on 'Confirm Entry' as shown below:




9.            Now double click in the Action SHOW_PO and write the below piece of code in the method ONACTIONSHOW_PO.

   DATA:
    lo_el_context TYPE REF TO if_wd_context_element,
    ls_context    TYPE wd_this->element_context,
    lv_date       LIKE ls_context-date.
  * get element via lead selection
    lo_el_context = wd_context->get_element(  ).
  * get single attribute
    lo_el_context->get_attribute(
      EXPORTING
        name =  `DATE`
      IMPORTING
        value = lv_date ).
  Data:
    fs_ekko type ekko.
  Data:
    t_ekko like standard table of fs_ekko.
  select *
    from ekko
    into table t_ekko
   where bedat EQ lv_date.
  DATA:
    lo_nd_ekko_node TYPE REF TO if_wd_context_node,
    lo_el_ekko_node TYPE REF TO if_wd_context_element,
    ls_ekko_node    TYPE wd_this->element_ekko_node.
* navigate from <CONTEXT> to <EKKO_NODE> via lead selection
    lo_nd_ekko_node = wd_context->get_child_node( name = 
  wd_this->wdctx_ekko_node ).
  CALL METHOD lo_nd_ekko_node->bind_table
    EXPORTING
      new_items            = t_ekko.






   10.        Create one more WebDynpro component by the name ZZ_CALLIED_APPLICATION, give window name as MAIN_WINDOW and view as FIRST_VIEW.  Save the Web Dynpro Application as local object. Now go to the Component Controller Context tab and create one node with the name 'EKPO_NODE' and take the Dictionary structure as EKPO with Cardinality '0..n' and Selection '0..1'. Now select the 'Add Attribute from Structure' and select the fields you want in your table as you have done in step 2 and save you application.






11.        Go to view context and map the node 'EKPO_NODE' from Component Controller Context to view context by drag and drop and then go to the layout create a table with name TABLE, give the text as 'Item data' in the text property of CAPTION and bind it with the node 'EKPO_NODE' as shown below:






 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

12.        Now save the application and come back to our first application that is ZZ_CALLING_APPLICATION, in that create a Action in the On lead selection event of the table 'TABLE' as SHOW_ITEM as shown below:





13.        Now double click on the event SHOW_ITEM and write the below code in its method ONACTIONSHOW_ITEM.
  

Reading the value of ebeln in lead selection that has to be passed
  DATA lo_nd_ekko_node TYPE REF TO if_wd_context_node.
  DATA lo_el_ekko_node TYPE REF TO if_wd_context_element.
  DATA ls_ekko_node TYPE wd_this->element_ekko_node.
  DATA lv_ebeln LIKE ls_ekko_node-ebeln.
* navigate from <CONTEXT> to <EKKO_NODE> via lead selection
  lo_nd_ekko_node = wd_context->get_child_node( name = wd_this->wdctx_ekko_node ).
* get element via lead selection
  lo_el_ekko_node = lo_nd_ekko_node->get_element(  ).
* get single attribute
  lo_el_ekko_node->get_attribute(
    EXPORTING
       name =  `EBELN`
    IMPORTING
       value = lv_ebeln ).
    DATA:
      w_url   type string,
      w_value type string.
   * Get the URL of the called application
      call method cl_wd_utilities=>construct_wd_url
        exporting
        application_name              = 'ZZ_CALLED_APPLICATION'
      importing
        out_absolute_url              = w_url.
   * make the Value type compatible that has to be passed with the URL 
  w_value = lv_ebeln.
* Attach the parameters and its value with the URL that 
* have to be passed to the 2nd application
  call method cl_http_server=>append_field_url
    exporting
      name  = 'EBELN'
      value = w_value
    changing
      url   = w_url.
* generate a popup window for the 2nd application with the above URL
  DATA lo_window_manager TYPE REF TO if_wd_window_manager.
  DATA lo_api_component  TYPE REF TO if_wd_component.
  DATA lo_window         TYPE REF TO if_wd_window.
  lo_api_component  = wd_comp_controller->wd_get_api( ).
  lo_window_manager = lo_api_component->get_window_manager( ).
  lo_window         = lo_window_manager->create_external_window(
                   url = w_url ).
  lo_window->open( ).

14.        Now go to the Controller Initialization Method of the 2nd application that is 'ZZ_CALLED_APPLICATION' and write the below piece of code in its WDDOINIT method.

   DATA:
  lv_param type string.   
* get the value for ebeln that has been send for the 1st application
 lv_param = wdr_task=>client_window->get_parameter( 'EBELN' ).
 DATA:
   fs_ekpo type ekpo,
   t_ekpo like table of fs_ekpo.
* get the item deatils for the given ebeln
  select *
    from ekpo
    into table t_ekpo
   where ebeln eq lv_param.
  DATA lo_nd_ekpo_node TYPE REF TO if_wd_context_node.
  DATA lo_el_ekpo_node TYPE REF TO if_wd_context_element.
  DATA ls_ekpo_node TYPE wd_this->element_ekpo_node.
* navigate from <CONTEXT> to <EKPO_NODE> via lead selection
  lo_nd_ekpo_node = wd_context->get_child_node( name = wd_this- 
                                              >wdctx_ekpo_node ).
* bind the internal table of item details with the display table
  call method lo_nd_ekpo_node->bind_table
    exporting
      new_items            = t_ekpo.



15.        Now SAVE and Activate both the Application. Test your Application after creating a WebDynpro application as shown below:


 





16.        Now test the first application that is 'ZZ_CALLING_APPLICATION' as shown below:

 Final Output:

    Enter a date:

               

  Click on the button 'Show PO'.

  
 
Make a lead selection on any of the PO

  
                
Window of the Second Application with the item details for the PO selected in first Application.

 

  • No labels