Steps To Create A Simple SAP ADOBE Form And Calling It In A Web Dynpro ABAP Application

In this step by step guide we will create a simple SAP Adobe Form showing employee address and then call this form in our Web Dynpro ABAP Application. To develop SAP Adobe forms you will require the Adobe Life Cycle Designer installed in your system and Adobe Document Services (ADS) installed and configured on the server.

Step 1. Creating The Form Interface

Go to transaction code SFP. Select the radio button ‘Interface’, give a name to your interface and click on the create button.

 SAP Form Builder

In the Create Interface pop-up give a description and then click on the ‘Save’ button.

Create an SAP Interface

Provide the Transport package and the transport request details.

Double click on the import parameter of the form interface and create a     new import parameter PERNR of type PERNR-PERNR.

SAP Interface Form Builder

 Similarly, double click on the Global Data in the Global Definitions and     create a new variable PA0006 of type PA0006.

SAP Interface Form Builder - PA0006

Now, double click on the ‘Code Initialization’ in Initializations, specify PERNR as an import parameter, PA0006 as and output parameter and copy and paste the following code lines to read the permanent address of an employee from infotype 0006.

SAP Interface Form Builder - Code Initialization

 

DATA :
         lt_p0006   TYPE TABLE OF pa0006 .

   REFRESH  lt_p0006.
   CALL FUNCTION 'HR_READ_INFOTYPE'
     EXPORTING
       tclas           = 'A'
       pernr           = pernr
       infty           = '0002'
       begda           = '18000101'
       endda           = '99991231'
     TABLES
       infty_tab       = lt_p0006
     EXCEPTIONS
       infty_not_found = 1
       OTHERS          = 2.
   IF sy-subrc <> 0.
 *      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
 *              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ENDIF.
   READ TABLE lt_p0006 INTO pa0006 WITH KEY subty = '2' .

 

Save and activate your Form Interface.

Step 2. Creating And Designing The Form

Come back to the main screen of the transaction SFP, select the radio button ‘Form’, give your form a name and click on the create button.

SAP Form Builder - Entry Point

In the Create Form pop-up box enter a description and the interface name created in Step 1, then click on the ‘save’ button.

 SAP Form Builder - Name Your Form

 Provide the Transport package and the transport request details.

Now drag and drop the structure ‘PA0006’ of Global Data from the Interface in the left hand side to Context window on the right-hand side.

SAP Form Builder - Change

 Click on the tab Layout tab to go to the Form Builder.

SAP Form Builder - Layout

Drag and drop all required fields from the Data View to the Body Pages, and set the field properties as per your requirement.

SAP Form Builder - Page Body

 

 

Save and activate your form.

Step 3. Creating Web Dynpro Application.

Go to Transaction SE80, choose Web-Dynpro-Comp./Intf in the object list and provide a new name (Y_WDA_ADOBE_FORM) and press enter key.

 In the create object pop-up click on the ‘Yes’ button to create a new Web Dynpro Application. Enter the description and choose the ‘Type’ radio button as Web Dynpro Component.

SAP Web Dynpro - Component

Provide the Transport package and the transport request details.

Double click on the MAIN view and select the Context tab and create a new context attribute with name PERNR and type as PERNR-PERNR.

SAP Web Dynpro - Change View

 

Now go to the Layout tab and insert a new Label UI, an Input field UI and a Button UI element in the ROOTELEMENTCONTAINER.

SAP - Web Dynpro - ROOTELEMENTCONTAINER

Bind the Input field UI element’s value property with the context attribute PERNR.

SAP - Web Dynpro - Binding Fields

Create a new Action SHOW_FORM and assign it to the OnAction property of the button UI element.

 SAP - Web Dynpro - Create A New Action

Copy and paste the code below to the event handler ON ACTION – SHOW_FORM.

method ONACTIONSHOW_FORM .
 DATA  :
 lv_pernr TYPE persno,
 formoutput TYPE fpformoutput,
 lo_el_context TYPE REF TO if_wd_context_element,
 ls_context TYPE wd_this->element_context,
 lv_w_cx_root TYPE REF TO cx_root,
 gv_fmname  TYPE rs38l_fnam, " function module name
 lv_mesg TYPE string,
 gs_fpoutparams TYPE sfpoutputparams.
* get element via lead selection
 lo_el_context = wd_context->get_element( ).
* get single attribute
 lo_el_context->get_attribute(
 EXPORTING
 name =  `PERNR`
 IMPORTING
 value = lv_PERNR ).
gs_fpoutparams-nodialog = 'X'. " suppress printer dialog popup
 gs_fpoutparams-getpdf = 'X'.
 *  gs_fpoutparams-getxml = 'X'.
 CALL FUNCTION 'FP_JOB_OPEN'
 CHANGING
 ie_outputparams = gs_fpoutparams
 EXCEPTIONS
 cancel          = 1
 usage_error     = 2
 system_error    = 3
 internal_error  = 4
 OTHERS          = 5.
 IF sy-subrc <> 0.
 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.
 TRY.
 CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
 EXPORTING
 i_name     = 'Y_FORM'
 IMPORTING
 e_funcname = gv_fmname.
 CATCH cx_root INTO lv_w_cx_root.
 lv_mesg = lv_w_cx_root->get_text( ).
 *      MESSAGE e201(hrpadin01) WITH lv_formname3 lv_mesg.
 ENDTRY.
CALL FUNCTION gv_fmname
 EXPORTING
 pernr              = lv_pernr
 IMPORTING
 /1bcdwb/formoutput = formoutput.
 IF sy-subrc <> 0.
 *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
 *             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.
 CALL FUNCTION 'FP_JOB_CLOSE'
 * IMPORTING
 *   E_RESULT             =
 EXCEPTIONS
 usage_error          = 1
 system_error         = 2
 internal_error       = 3
 OTHERS               = 4.
cl_wd_runtime_services=>attach_file_to_response( i_filename  = 'SAP_ADOBE_FORM.pdf'
 i_content   = formoutput-pdf
 i_mime_type = 'application/pdf' ).
endmethod.

Create the Web Dynpro Application by right clicking the Web Dynpro Component. Give your application a name and description.

SAP - Create A Web Dynpro Application

 

SAP - Create A Web Dynpro Application - Name

 

Save and activate your Web Dynpro Application.

The Final Output

Right click on the Web Dynpro application and click on Test to test your application in the web browser.

SAP - Create A Web Dynpro Application - Web Server

 

SAP - Create A Web Dynpro Application - Save As

 

SAP - Create A Web Dynpro Application - Adobe Form Complete

 

Closing Notes:

You can also call the Adobe Form in Web Dynpro Application by using the UI element Interactive-Form. But, it is a good idea to design your ADOBE form separately in transaction code SPF as shown in this tutorial. This way you can also call the same form in reports and other applications too.

Also, instead of opening the Adobe form in the web browser, we have used the method attach_file_to_response( ) of class cl_wd_runtime_services to open the ADOBE form via download pop-up, this is also a good way because many a times users have performance issues when showing the form in the web browser.

Did you like this small tutorial? Let me know in the comments box below…

Categories

About the Author:

Pete has been working with SAP technologies for over 10 years. He started out as an ABAP consultant and then moved on to BW where he has worked many different clients covering a wide variety of industries. "I love introducing SAP technology (especially BI) to new clients and showing them how they can go from zero to hero within their business in super fast time". Contact me on twitter @PeterMoxon

10 Comments
  1. Sai Kiran

    Hi Pete,

    Thank you for providing such a nice document with good explaination.

    Best Regards,
    Sai Kiran Rao.

  2. Prien Jobalia

    Hi Pete,
    That was awesome. Really good. You did not only tell us how to create an ADOBE FORM, but also specified how and where to use it , and also took pains to guide us how to create the Web Dynpro App too. I appreciate that and no one would have cared to explain how to go about the Dynpro App.

    Thanks a lot.

    Regards,
    Prien M Jobalia.