60878049 Sap Abap Adobe Forms

265
Getting started with Adobe Forms By Sunitha, Ascent Services Before starting this tutorial, please ensure that Adobe life cycle designer is installed on your system and Adobe designer is configured on your server. In this tutorial, we would pass a parameter (CARRID) to the form and print the same with a page heading. Go to transaction SFP. For every form, an interface is mandatory. Enter the name of the interface and click on Create. Click on Save. Enter the package and the workbench request no as per the requirements. Following screen appears:

Transcript of 60878049 Sap Abap Adobe Forms

Page 1: 60878049 Sap Abap Adobe Forms

Getting started with Adobe Forms By Sunitha, Ascent Services

Before starting this tutorial, please ensure that Adobe life cycle designer is installed on your system and Adobe designer is configured on your server.

In this tutorial, we would pass a parameter (CARRID) to the form and print the same with a page heading.

Go to transaction SFP.

For every form, an interface is mandatory. Enter the name of the interface and click on Create.

Click on Save. Enter the package and the workbench request no as per the requirements.

Following screen appears:

Page 2: 60878049 Sap Abap Adobe Forms

Double-click on Import.

Following screen, with a default parameter name, appears:

Click on Create.

Enter the parameter values as shown above.

Save and activate the interface.

Now go back to the main screen of the transaction SFP.

Page 3: 60878049 Sap Abap Adobe Forms

As shown above, select the radio-button Form and enter the name of the form. Click on ‘Create’.

Enter the description for the Form and also enter the name of the interface created earlier.

Click on Save.

Now enter the package name and the workbench request.

Following screen appears:

Now drag and drop the import parameter ‘Carrid’ from interface to Context on the right-hand side as shown below:

Page 4: 60878049 Sap Abap Adobe Forms

Now click on the tab ”Layout”

Now let us include a heading and display the value of the carrier id passed to this form.

Now click on Palettes Layout (see the screenshot below):

Page 5: 60878049 Sap Abap Adobe Forms

A small pop-up box appears.

Now in the tab “Standard”, drag and drop the element “Text” onto the page.

Now double-click on the object and enter the text required (Page heading here).

Page 6: 60878049 Sap Abap Adobe Forms

Now go to library again (click on Palettes Library) and drag and drop the object “Text Field” onto the page.

Page 7: 60878049 Sap Abap Adobe Forms

Now select the object “Text Field” created just now. Right-click and select Palettes Object.

As shown above, change the caption to “Carrier ID”.

Now click on tab ”Value”. In the list box for “Type”, select the value “Read-only” (as shown below)

Page 8: 60878049 Sap Abap Adobe Forms

Now go to tab “Binding”. Select the parameter “CARRID” as shown below:

Page 9: 60878049 Sap Abap Adobe Forms

Save and activate the form.

Now test run the form by clicking on “Test” (F8)

Enter the CARRID value and click on Execute.

Page 10: 60878049 Sap Abap Adobe Forms

Following is the output:

Step1: Go to Transaction SFP to create Adobe form. Provide the interface name and click on create button.

Step2: Provide the description. Click on Save button.

Step3: The following screen would appear.

Now click on create button to create parameter.

Page 11: 60878049 Sap Abap Adobe Forms

Save the interface.

Step4: Go to TYPES in the Global definitions to define the user define types as shown below.

Step5: In Global data,

Create an internal table with the same structure defined earlier in TYPES definition as shown below.

Step6: In Code Initialization,

Page 12: 60878049 Sap Abap Adobe Forms

Save and activate the interface.

Step7: Now go back to the initial screen. Provide the form name and click on create button as shown below.

Provide the description for the form and interface name created as shown below.

Click on save button.

Step8: Now, the following screen will appear.

Step9: Here, we have to drag and drop the contents, to be displayed in the layout, from interface to context as shown below.

Page 13: 60878049 Sap Abap Adobe Forms

Step10: Here in the internal table PT_VBAP, we can de-activate the fields, which we don’t want to display in the layout. We can do this as shown below.

Place the cursor on the field and give a right click. Now select Deactivate.

Then, the field will appear as shown below.

Step11: Now, go to layout. The following screen appears.

Step12: Now, Drag and drop the VBELN (Document Number) field to Master page.

Page 14: 60878049 Sap Abap Adobe Forms

Step13: Select the object VBELN. Go to palettes-object. You will get the following screen.

Select ‘None’ instead of ‘Sunken Box’.

Step14: Now, drag and drop the internal table PT_VBAP from Data View to body page.

Step15: Now, go to hierarchy, place the cursor on bodypage1.

Go to palettesObject

The following screen appears.

Page 15: 60878049 Sap Abap Adobe Forms

Select Flowed instead of Position.

Save and activate the form.

Step16: Execute the form, the output is

Adobe Forms - Create table (using subform) By Venkat

Step1: Go to transaction SFP to create adobe form. Provide the interface name and click on create button.

Page 16: 60878049 Sap Abap Adobe Forms

Step2: Provide the short description and click on Save button.

Step3: The following screen will appear.

Now click on create button to enter the parameters.

Save the interface.

Step4: Go to TYPES in the Global definitions to define the user define types as shown below.

Page 17: 60878049 Sap Abap Adobe Forms

Step5: In Global data,

Create an internal table with the same structure defined earlier in TYPES definition types_vbap as shown below.

Step6: In Code Initialization,

Save and activate the interface.

Page 18: 60878049 Sap Abap Adobe Forms

Step7: Now go back to the initial screen. Provide the form name and click on create button as shown below.

Provide the description for the form and interface name created as shown below.

Click on save button.

Step8: Now, the following screen will appear.

Step9: Here, we have to drag and drop the fields to be displayed in the layout, from interface to context as shown below.

Page 19: 60878049 Sap Abap Adobe Forms

Step10: Here in the internal table PT_VBAP, we can de-activate the fields, which we don’t require to display in the layout. We can do this as shown below.

Place the cursor on the field, right click and select Deactivate.

Then, the field will appear as shown below.

Step11: Now, go to layout. The following screen appears.

Step12: Now, Drag and drop the VBELN (Document Number) to Master page and create text fields as shown below.

Page 20: 60878049 Sap Abap Adobe Forms

Step13: Now, create sub form in HIERARCHY as shown below in the body page.

Place the cursor on bodypage1 and right click on it. Now select Insert Subform to create the sub form in the body page.

Step14: Now, from the Data View, drag and drop the fields in the internal table into the sub form as shown.

Page 21: 60878049 Sap Abap Adobe Forms

Step15: Now, go to hierarchy, place the cursor on bodypage1.

Go to palettesObject

The following screen appears.

Select Flowed instead of Positioned.

Save and activate the form.

Step16: Execute the form, the output would be similar to the following:

Page 22: 60878049 Sap Abap Adobe Forms

Adobe Forms - Using Alternative By Jayachandra Nagaram, YASH Technologies

In this demo we will create adobe form, which displays two different table data in different scenarios based on the given input. This functionality is achieved by using Alternative in adobe forms.

Step1: Go to SFP transaction and create interface for the Adobe form.

Note: Maintain Interface type ABAP-Dictionary Base interface. (IN ECC6.0 Version)

Step2: In interface you will find import, export and Exceptions.

Page 23: 60878049 Sap Abap Adobe Forms

Create import parameters by clicking on below shown create button.

Step3: Create import parameters IT_SPFLI and FLAG.

The import parameter IT_SPFLI is used to input data and FLAG is used to select the table that should be displayed in the Output. Here the details of either SPFLI or SFLIGHT are displayed depending on the FLAG.

Step4: Create two global tables SPFLI and SFLIGHT to hold the data that needs to be displayed in the output.

Page 24: 60878049 Sap Abap Adobe Forms

Step5: Code for fetching the data is written in the code initialization part of interface.

In code initialization the variables whose values are being passed to the code to fetch the details of the output should be declared in the Input parameters and the variables to which the results are assigned needs to be declared in the Output parameters.

Step6: Write the below code in code initialization part. Check for errors and activate the interface.

select * from spfli into table gt_spfli for all entries in it_spfli where carrid eq it_spfli-carrid and connid eq it_spfli-connid. select * from sflight into table gt_sflight

Page 25: 60878049 Sap Abap Adobe Forms

for all entries in it_spfli where carrid eq it_spfli-carrid and connid eq it_spfli-connid.

Step7: After the interface part is done, create Form by going to SFP transaction.

Step8: In the creation of the Form, we need to give the name of the interface for which we are creating the Form. This is the additional functionality in Adobe forms. One interface can be used for many Forms if it is suitable.

Step9: In the Context tab of the Form we will find two sections Interface and Context.

In Interface we will find the data that was created in the interface. Content area will be blank initially. We need to drag the elements that need to be displayed in output into the content area.

Page 26: 60878049 Sap Abap Adobe Forms

Step10: Drag and drop element FLAG into context area.

Step11: Select folder YDEMO_ALTERNATIVE in context and create an ALTERNATIVE. Right-clicking on the folder go to create--> Alternative.

Page 27: 60878049 Sap Abap Adobe Forms

Step 12: In Alternative will find two nodes TRUE and FALSE.

Initially both are blank.

Step13: Drag and drop table GT_SPFLI from Global data to TRUE node and de-activate fields which we don't need.

Page 28: 60878049 Sap Abap Adobe Forms

Step14: Drag and drop table GT_SFLIGHT from Global data to FALSE node and de-activate fields which we don't need.

Page 29: 60878049 Sap Abap Adobe Forms
Page 30: 60878049 Sap Abap Adobe Forms

Step15: Select the Alternative conditions tab and create condition for alternative.

Create condition as FLAG = INITIAL.

Means subform TRUE will be triggered when the flag is initial and subform FALSE will be triggered when there is some value in flag variable (NOT INITIAL).

Step16: Select tab page LAYOUT for going to Adobe layout.

In Layout, go to MASTER page decrease the page area and create the boiler plate elements, such as text and image elements. We can create these from dragging the elements from library.

Page 31: 60878049 Sap Abap Adobe Forms
Page 32: 60878049 Sap Abap Adobe Forms

Step17: In data view we will find subform ALERNATIVE, with in it tables will be placed in TRUE and FALSE subforms using choice subformset.

Step18: Drag and drop complete ALTERNATIVE subform into body page from data view.

Page 33: 60878049 Sap Abap Adobe Forms

Step19: Select body page and go to the object view from the pallets.

Step20: Go to SUBFORM tab; make the body page content FLOWED, Flow direction TOP TO BOTTOM.

Page 34: 60878049 Sap Abap Adobe Forms

Step21: Go to Pagination, set over flow to ‘Go To Page "Page1"’.

This should be done in order to flow the content to the next page when first page is filled completely.

Step22: Set subforms ALTERNATIVE, TRUE, FALSE content also to be flowed.

Page 35: 60878049 Sap Abap Adobe Forms

Step23: Select the elements in table data and set the appearance to ‘None’.

Step24: Save and activate the form.

Execute the form to see the below screen.

Here for output we will have two scenarios.

Step25:

SCENARIO 1: When the FLAG is INITIAL, SPFLI data will be displayed in output.

SCENARIO 2: When the FLAG is NOT INITIAL, SFLIGHT data will be displayed in output.

Page 36: 60878049 Sap Abap Adobe Forms

Step26: Select the table IT_SPFLI to give the input data. Give inputs to the table.

Step27: Now there are three entries in the table IT_SPFLI and the FLAG is BLANK.

Step28: Subform TRUE will be triggered when FLAG is INITIAL. And SPFLI table data will be displayed in output.

Page 37: 60878049 Sap Abap Adobe Forms

Step29: Maintain same data in IT_SPFLI and give 'X' in FLAG. Scenario 2 will be triggered.

Step30: Output screen displays SFLIGHT table data;

Page 38: 60878049 Sap Abap Adobe Forms

Using Text Modules in Adobe Forms By Nikunj Shah, YASH Technologies

In this demo we will create an adobe form which displays text in two different languages (English or French) based on the given condition. This functionality is achieved by using TEXT MODULES in adobe forms.

Step1: Go to transaction SFP and create an interface for the Adobe form.

Note: Maintain Interface type ABAP-Dictionary Base interface. (IN ECC6.0 Version)

Step2: Create an import parameter as shown below:

Page 39: 60878049 Sap Abap Adobe Forms

Step3: Save and Activate the interface.

Step4: Now go to transaction Smartforms to create Text Module for the Language Conversion, Select Text Module and Enter Text Module Name & Click on create.

Here, we are converting English text to French text, so we have to enter the French conversion of the English text.

Text 1: TEXT IN ENGLISH.

Click on Save.

Page 40: 60878049 Sap Abap Adobe Forms

Similarly create the text module for text French to English.

Text 2: TEXT IN FRENCH

Text 3: TEXT IN ITALIAN

STEP 5: Once the Text modules are created, Go to Transaction SFP to design form builder for the interface ZTEXTMODULE_TEMPLATE.

Page 41: 60878049 Sap Abap Adobe Forms

STEP 6: Click on Create.

STEP 7:

After clicking on create, the system would prompt you for the Interface name and description.

In Interface Name tab : ZTEXTMODULE_TEMPLATE.

In Description : Form for the Language Conversion.

Now the following screen appears:

Page 42: 60878049 Sap Abap Adobe Forms

STEP 8:

Right Click on Form name in the context area and create New Folder.

STEP 9:

Drag & Drop Flag1 field from the import part in to the Context area.

Page 43: 60878049 Sap Abap Adobe Forms

STEP 10:

Right Click on New FOLDER, create three texts for the text modules.

STEP 11:

Double click on the new folder. The following screen appears. Click on Condition

STEP 12:

Double-Click on Text and maintain the properties as shown below.

Description as Convert TEXT INTO ENGLISH into FRENCH

Page 44: 60878049 Sap Abap Adobe Forms

Text Type : Text Module

Text Name : Text Module name (‘ztest_french’)

Text Language : ‘FR’

Repeat the above step for the other texts as well.

STEP 13:

Click on Layout.

On the left side platter, in data view, we can view all the fields that we defined in the context part. (In this example, flag1 and three texts)

Page 45: 60878049 Sap Abap Adobe Forms

STEP 14:

In our layout, let us also include a logo and some text as well.

Go to Master Page. From Library Palette, insert image field and text into the master page.

Enter text in text field and Enter image in image field and check the checkbox “Embedded image data”.

Page 46: 60878049 Sap Abap Adobe Forms

STEP 15:

Go to Body Page.

Create following three text fields:

• Text in English • Text in French • Text in Italian.

Now right click on the text field and select the option “floating fields”.

Page 47: 60878049 Sap Abap Adobe Forms

Now we need to do the binding for the text field. Select the text field “Text in English”, Click on palette click on object go to binding tab. Please see the following screenshot for the binding.

Now repeat the above step for binding the other two text fields.

STEP 15 - 2:

Second way is Drag & Drop from the Data view.

Just below the text field drag & drop the text field from the data view, in this case you don’t have to do the binding, it will assign automatically.

Page 48: 60878049 Sap Abap Adobe Forms

STEP 16:

Click on Save and Activate it.

STEP 17:

Click on Execute. Assign Value ‘X’ to Flag1. Otherwise it only display in English. If FLAG1 has value ‘X’ than test will display in English & French Both.

Output:

Page 49: 60878049 Sap Abap Adobe Forms

Value help in Adobe interactive forms By Sanjeeva Reddy Gujjula, YASH Technologies

Introduction

Value help in application is useful to avoid typos and to check list of possible values when user don’t know exact value for the input field. We can incorporate these value helps in Adobe interactive forms both for online and offline scenarios. This document explains step by step procedure for adding two types of value helps in Adobe interactive forms. This document considering integrating adobe forms in WebDynpro ABAP with integrated using Zero Client Installation (ZCI).

• Standard Value help • Static Value help/Context based value help

Standard Value Help

Here Standard value help means F4 help available in SAP; we can add this feature in adobe interactive forms. Once user clicks on drop down button it fetches value help form SAP and displays in the screen. Once user chooses one of the suitable entries that input field will get updated with the selected entry.

Procedure:

Page 50: 60878049 Sap Abap Adobe Forms

Step1: In layout Choose UI element Value Help Drop-down List from WebDynpro Native Controls of Library Palette.

Step2: Go to Object Palette and in Binding TAB update Default Binding with corresponding field by pressing Arrow and choose form the Interactive From Context.

Step3: Pop-up screen will come to confirm the update of field properties. Click OK. If you do so all properties will be updated at the same time the UI element will change to normal input Field. You need to change this to Drop-down list in Object Palette->Field Tab as shown below.

Page 51: 60878049 Sap Abap Adobe Forms

Step4: Now you are done with implementing Standard value help for you adobe interactive form. Save and activate your form and test application. Now you can see Standard value help once you click drop-down link on adobe form.

This is simple and Zero coding required in application.

Static/Context based Value Help

Instead of standard value help we can add custom value help; this can be form context of Adobe form. In this case there is need of coding. For this value help you need to have a context node with two fields one for value and another for corresponding text. As we are proceeding with WebDynpro ABAP, we need to fill this node WDINIT method of WebDynpro view or controller.

Step1: Create a context node with Value and Text. Text is optional here.

Page 52: 60878049 Sap Abap Adobe Forms

Step2: Select corresponding Values and texts into one internal table or populate internal table with possible values and bind that internal table to context node.

Sample Coding:

* Create internal table

types: begin of x_country , land1 type t005-land1, end of x_country. data: t_country type STANDARD TABLE OF x_country. * Select Data select land1 from t005 into table t_country. DATA lo_nd_adobedata TYPE REF TO if_wd_context_node. DATA lo_nd_countrynode TYPE REF TO if_wd_context_node. DATA lo_el_countrynode TYPE REF TO if_wd_context_element. DATA ls_countrynode TYPE wd_this->element_countrynode. * navigate from <CONTEXT> to <ADOBEDATA> via lead selection lo_nd_adobedata =

Page 53: 60878049 Sap Abap Adobe Forms

wd_context->get_child_node( name = wd_this->wdctx_adobedata ). * navigate from <ADOBEDATA> to <COUNTRYNODE> via lead selection lo_nd_countrynode =

lo_nd_adobedata->get_child_node( name = wd_this->wdctx_countrynode ). * Bind internal table to context CALL METHOD lo_nd_countrynode->bind_table EXPORTING new_items = t_country.

Step3:

In Layout editor Choose field Enumerated Drop-down List form Library Palette and place on the layout

Step4: Go to Object Palette and in Field tab click List Item link as fallows.

Page 54: 60878049 Sap Abap Adobe Forms

Step5: One pop-up screen will come and there you need to set Binding properties Items, Item Text and Item Value as shown below and Press OK.

Items-> Context node

Item Text-> Text field in Context node

Item Value-> Value field in Context node

Now you are done with implementing Static/Context based value help for you adobe interactive form. Save and activate your form and test application. Now you can see Static/Context based value help once you click drop-down link on adobe form.

Comparison Standard Static Coding Required No Yes Online Yes Yes Offline Not available Yes

Page 55: 60878049 Sap Abap Adobe Forms

Making subform behave as table and data part as body row By Nisrin Pindwarawala, YASH Technologies

Whenever we use a table in an adobe form using drag & drop, following are the common problems faced:

• Whenever the column fields are rearranged randomly into many rows, the data is displayed in a improper fashion.

• In debugging, if we delete any row, and the data that is displayed becomes improper.

Solution: This demo will help us rectify the problem by making the subform behave as table and the data part as body row.

This is achieved by assigning binding to the subform.

Step1: Go to SFP transaction and create interface for the Adobe form.

Step2: Passing the table as import parameters, which will be passed through driver program.

Step3: Activate the interface.

Step4: Create Form by going to SFP transaction.

Page 56: 60878049 Sap Abap Adobe Forms

Step5: The form contains the context area, which will display the contents of interface. Drag and drop the table 'IT_SFLIGHT' from context area under the folder 'YDEMO_SUBFORMS'.

Step6: Deactivate the fields of the table, which will not be used in the layout, it adds to the performance.

Page 57: 60878049 Sap Abap Adobe Forms

Step7: Go to layout tab, under the layout change the content area adding a static text to the top of master page. Name the content area. Click on the tab body pages.

For the body page the subform content has to be positioned.

Move the fields, which you want to view from data view on to the body page individually.

Note: When we try to move the individual fields of the table the binding with the table is affected and the data that is displayed becomes inconsistent, this demo will help you retain the binding with the table by making the subform act as a table.

Page 58: 60878049 Sap Abap Adobe Forms

Step8: The field 'FLDATE' can be displayed in different formats as per the requirements, which will be explained by below snapshots.

Page 59: 60878049 Sap Abap Adobe Forms
Page 60: 60878049 Sap Abap Adobe Forms

Step9: Select all the fields being displayed on the layout and wrap them in subform.

The Accessibility of the form should be bodyrow. Create another subform for ex: Sflight details and wrap the fields in this subform and give the subform content as positioned and for the bodyrow subform give the subform contents as flowed. The check box "Allow page breaks within content" has to be marked for the data which is being flowed.

Page 61: 60878049 Sap Abap Adobe Forms
Page 62: 60878049 Sap Abap Adobe Forms

Step10: If the data is flowing to multiple pages then we direct the over flown data.

Move to pagination tab under object tab, under that if dataset is paginated under overflow give the name of content area and overflow leader as header row. By adding this whenever an overflow occurs the header will be displayed in all the pages.

We need to create two subforms, the reason is that the body of the table can be flowed to multiple pages and if we make the subform as flowed all the elements will be aligned either top to bottom or

Page 63: 60878049 Sap Abap Adobe Forms

western text (left to right). So as we need to display the table contents in two rows we created two subforms, first one will be flowed and the second one under first one which will be positioned.

Step11: Creating Header row for the table.

Drag a static text element from the library and drop it above the body row. Wrap the text in a subform giving the accessibility as header row.

Page 64: 60878049 Sap Abap Adobe Forms

Step12: Creating a table subform. The content of the subform should be flowed and the accessibility should be table.

Name the untitled subform (Page 1) as "Bodypage1". After doing this change the content of the body page as flowed then click on pagination tab, under that if dataset is paginated under overflow give the name of content area same as what we performed for body row. (In body page we gave overflow leader as header row but in body page pagination do not use that)

Page 65: 60878049 Sap Abap Adobe Forms
Page 66: 60878049 Sap Abap Adobe Forms

Step13: Giving borders to the table and header.

Page 67: 60878049 Sap Abap Adobe Forms

Step14: Giving bindings to each of the subforms.

Table Binding: YDEMO_SUBFORMS->IT_SFLIGHT.

Bodyrow Binding: YDEMO_SUBFORMS->IT_SFLIGHT->DATA. The checkbox repeat subform for each data item has to be checked giving Min.Count = 1.

Page 68: 60878049 Sap Abap Adobe Forms

Step15: Save and activate the form.

Step16: Creating a Driver Program which will call the form and on execution will display the adobe form.

*&---------------------------------------------------------------------* *& Report yh_demo * *&---------------------------------------------------------------------* *&Purpose: Demonstrating driver program to display adobe form * *&---------------------------------------------------------------------*

Page 69: 60878049 Sap Abap Adobe Forms

REPORT yh_demo. *Data Declarations DATA : it_sflight TYPE sflight_tab1. DATA : w_doc_param TYPE sfpdocparams,"Doc Parameters w_output_param TYPE sfpoutputparams, "Output Parameters result TYPE sfpjoboutput. "Joboutput DATA : fm_name TYPE rs38l_fnam. "Function Module name * Determine print data, Data which will be displayed on the form SELECT * FROM sflight INTO TABLE it_sflight UP TO 20 ROWS. IF sy-subrc NE 0 . ENDIF. * Determine the function module which is generated at the runtime for * the pdf form used CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' EXPORTING i_name = 'YDEMO_SUBFORMS' IMPORTING e_funcname = fm_name. * This function module is used to specify settings for the form output. * To specify whether you want the form to be printed, archived, or sent * back to the application program as a PDF. * The form output is controlled using the parameters (w_ouput_param) * with the type SFPOUTPUTPARAMS. CALL FUNCTION 'FP_JOB_OPEN' CHANGING ie_outputparams = w_output_param 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. * Set the language field the component of structure /1bcdwb/docparams w_doc_param-langu = 'EN'. * Call the function module and passing the form interface values CALL FUNCTION fm_name EXPORTING /1bcdwb/docparams = w_doc_param it_sflight = it_sflight * IMPORTING * /1BCDWB/FORMOUTPUT = EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. * To complete the processing of the form

Page 70: 60878049 Sap Abap Adobe Forms

CALL FUNCTION 'FP_JOB_CLOSE' * IMPORTING * E_RESULT = result EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

Step17: Activating the report and executing it would pop a window.

Give the device name which is configured for ADS. Click on Print Preview to see the preview of the form.

The form output

Page 1:

Page 71: 60878049 Sap Abap Adobe Forms

Page2:

Page 72: 60878049 Sap Abap Adobe Forms

Using Where conditions to relate header and item tables in Adobe forms By Jayachandra Nagaram, YASH Technologies

In this demo we will create an Adobe form, which displays relating data from two tables (Header and Item) by using ‘Where conditions’ in Form context.

Step1: Go to transaction SFP and create interface for the form.

In this demo we can use the interface YDEMO_ALTERNATIVE which is used in previous tutorial using alternatives.

Step2: Create Form YDEMO_TABLELEVEL

Note: Maintain Interface type ABAP-Dictionary Base interface. (IN ECC6.0 Version)

You will see two parts in screen Interface and context.

Page 73: 60878049 Sap Abap Adobe Forms

Step3: Drag and drop Global table GT_SPFLI from interface to context area.

Step4: Select all fields which are not required to display and deactivate the fields. (right click)

Step5: Select DATA under table GT_SPFLI and right click.

Go to create--> Loop

This will create a table i.e., a sub loop under the main loop.

Note: when you drag a table in to context it will internally create a loop processing in the form.

Page 74: 60878049 Sap Abap Adobe Forms

Step6: A dialog box will open asking for table which you want to loop inside main loop.

Step7: Click the F4 help button, it shows the tables that exists in the interface.

Page 75: 60878049 Sap Abap Adobe Forms

Step8: Select the table GT_SFLIGHT (item details)

It will internally create a sub loop i.e, a table GT_SFLIGHT under the table SPFLI data.

Step9: Select the fields which are not required to display and deactivate.

Page 76: 60878049 Sap Abap Adobe Forms

Step10: Double click table GT_SFLIGHT and go to the where conditions tab available in lower part of the window.

Create the where condition for the table loop.

This internally creates below code.

Loop at GT_SPFLI. Loop at GT_SFLIGHT where CARRID eq GT_SPFLI-CARRID and CONNID eq GT_SPFLI-CONNID.

Page 77: 60878049 Sap Abap Adobe Forms

.............................. } -----> code processing .............................. Endloop. Endloop.

Step11: Go to Layout: in data view a nested loop (table) will be displayed.

SFLIGHT under SPFLI. Create the boiler plate objects if needed.

Step12: Drag and drop all the fields under GT_SPFLI table into body page.

Note: Do not drag the entire table into body page. We need to follow creating table using sub forms concept.

Page 78: 60878049 Sap Abap Adobe Forms

Go to hierarchy view; Select all fields of spfli, Wrap the fields into sub form by right clicking.

Again wrap the sub form in to another sub form. Sub form properties are maintained latter.

Step13: Drag and drop the fields from sflight into body page and create sub forms as showed in below snap. Keep note that the subforms created for sflight fields should be place inside the spflidata subform.

Maintain names as spflitable '-->spflidata '-->sflighttable ---> Sflightdata

Page 79: 60878049 Sap Abap Adobe Forms

Step14: Content of body page should be flowed.

Step15: Maintain the subforms properties as showed in the below snaps.

Subform: spflitable

Page 80: 60878049 Sap Abap Adobe Forms

Subform: spflidata

Subform: sflighttable

Subform: sflightdata

Page 81: 60878049 Sap Abap Adobe Forms

Step16: Now your FORM is ready, check for syntax and activate it.

Execute the form and follow the below to get the data in hierarchy level. Header and its corresponding item details.

Page 82: 60878049 Sap Abap Adobe Forms

Output: Page1

Page2

Page 83: 60878049 Sap Abap Adobe Forms

Nested tables in Adobe Forms By Sunil Saini, YASH Technologies

This Tutorial demonstrates on using Nested Tables in Adobe Forms.

Step1: Go to SFP transaction and create interface for the Adobe form.

Page 84: 60878049 Sap Abap Adobe Forms

Note: Maintain Interface type ABAP-Dictionary Based interface. (IN ECC6.0 Version)

Step 2: Create Global Types as shown below by clicking on Types, here we are creating a Nested Table type which consists of 2 Individual fields (carrid, carrname) and an Internal Table(spfli).

Step 3: Create Global Work Areas and Internal Tables as shown below.

WA_SCARR TYPE SCARR IT_SCARR TYPE SCARR_TAB WA_SPFLI TYPE SPFLI IT_SPFLI TYPE SPFLI_TAB WA_FLIGHT TYPE TYPE_FLIGHT IT_FLIGHT TYPE TABLE_TYPE_FLIGHT

Page 85: 60878049 Sap Abap Adobe Forms

Step 4: Code for fetching the data is written in the code initialization part of interface.

In code initialization the variables whose values are being passed to the code to fetch the details of the output should be declared in the Input parameters and the variables to which the results are assigned needs to be declared in the Output parameters.

Input Parameters:

WA_SCARR IT_SCARR WA_SPFLI IT_SPFLI WA_FLIGHT

Output Parameters:

IT_FLIGHT

Page 86: 60878049 Sap Abap Adobe Forms

Step 5: Write the below code in code initialization part. Check for errors and activate the interface.

* Fetching Flight Details from SCARR Table. SELECT * INTO TABLE it_scarr FROM scarr UP TO 10 ROWS. * Fetching Data from SPFLI Table for corresponding Entries in SCARR. SELECT * INTO TABLE it_spfli FROM spfli FOR ALL ENTRIES IN it_scarr WHERE carrid EQ it_scarr-carrid. * Looping at SCARR Internal Table. LOOP AT it_scarr INTO wa_scarr. wa_flight-carrid = wa_scarr-carrid. wa_flight-carrname = wa_scarr-carrname. * Looping at SPFLI Internal Table. LOOP AT it_spfli INTO wa_spfli WHERE carrid EQ wa_scarr-carrid. * Appending SPFLI Records into the SPFLI part of FLIGHT Table. APPEND wa_spfli TO wa_flight-spfli. ENDLOOP. * Appending SCARR Records into the SCARR part of FLIGHT Table. APPEND wa_flight TO it_flight. CLEAR wa_flight. ENDLOOP.

Step 6: After the interface part is done, create Form by going to SFP transaction.

Step 7: In the creation of the Form, we need to give the name of the interface for which we are creating the Form. This is the additional functionality in Adobe forms. One interface can be used for many Forms if it is suitable.

Give the Description to the Form as shown below.

Page 87: 60878049 Sap Abap Adobe Forms

Step 8: In the Context tab of the Form we will find two sections Interface and Context.

In Interface we will find the data that was created in the interface. We need to drag the elements that need to be displayed in output into the content area.

Deactivate the Unwanted Fields as shown below.

Page 88: 60878049 Sap Abap Adobe Forms

Rename Content Area to ContentArea1.

Then Right-Click on the Content Area and click on Insert SubForm and Resize it accordingly.

Page 89: 60878049 Sap Abap Adobe Forms

After that Click on Master Pages and then Drag and Drop a Text and Enter any suitable Text.

Then Right-Click on data and create one more Sub Form and align it as shown below.

Reduce the size of Content Area as shown in figure below.

Page 90: 60878049 Sap Abap Adobe Forms

Step 9: Click on Subform and then in Right-click on the Subform and then in Palettes click on Object and then under Objects Tab click on Subform and make the Content as Flowed as shown below.

Then Create one more Subform and Rename it as Table and then Right-click on this Form and in Palettes click on Accessibility make the Subform role as Table and make its Subform content as Flowed as in above case.

Step 10: Then Insert two Sub Forms in the Table Sub Form, rename it as Header and Body, make sure to make them as Flowed too, and make the Accessibility of the two Subforms as Header Row and Body Row respectively.

Then Insert a Static Text in Header and insert the Field names as shown below.

Step 11: Then under Data View, individually Drag and Drop the Fields from the table it_flight in Body Sub Form.

Fields are CARRID,

CARRNAME,

SPFLI.

Page 91: 60878049 Sap Abap Adobe Forms

Step 12: Then under Hierarchy tab Select the 3 Fields (i.e. Carrid, Carrname, and SPFLI) and then drag drop them in Body Sub Form as shown below.

Then make the Body Sub Form as Flowed as well as make its Flow Direction as Western Text as shown below.

Step 13: Delete the Table Header of SPFLI as shown.

Page 92: 60878049 Sap Abap Adobe Forms

Select the all Fields and make their Appearance as None.

Insert a column to the left of connid as shown below.

Finally arrange the Fields as shown below.

Page 93: 60878049 Sap Abap Adobe Forms

Step 14: Under the Pagination Tab of Body Subform in Overflow choose the Go To Content Area value as ContentArea1.

Step 15: Change the Binding of the Body Subform as shown below.

Step 16: Give the binding for CARRID.

Follow the same for CARRNAME.

Page 94: 60878049 Sap Abap Adobe Forms

Change the binding for SPFLI as shown below.

Change binding for CONNID and fields related to SPFLI as shown below.

Page 95: 60878049 Sap Abap Adobe Forms

Step 17:

Save and Activate the form.

Step 18:

Execute the form. The following output will be displayed.

Achieving Control Levels functionality in Adobe Forms

Page 96: 60878049 Sap Abap Adobe Forms

By Phani Diwakar Marepalli, YASH Technologies

In this document we discuss the how to achieve the control levels in the Adobe Form (both using Table and Subform).

Step1: Go to transaction SFP and create interface by providing interface name.

A pop up window appears where we need to provide the description of the interface and save it.

Step2: Define the user defined data types Types definition under Global Definitions as shown below.

Step3: Define Global data under Global Definitions,

Step4: In the code initialization,

Page 97: 60878049 Sap Abap Adobe Forms

Save and activate the interface. Come back to the initial screen of adobe form.

Step5: Now create the form as shown below.

A pop up window would appear where we need to assign the interface name to form and also the description of the form. Press Save button.

The following screen appears.

Page 98: 60878049 Sap Abap Adobe Forms

In the above screen, we have internal table IT_VBAP under Global Data, which is under Interface.

Context area is a bridge between Interface and form. Whatever the information (data) we need to place in the form is to be placed in the context area.

Step6: Now drag and drop this internal table IT_VBAP into context area. Then only we can use the internal table in the form.

Provide the description of the internal table under properties tab below the context area.

Step7: Now go to Control Levels tab as shown in above screenshot and provide the field name on which sort to be done. Control levels were introduced in SAP Net weaver 2004s.

Now the internal table splits into two parts where sorted fields are in one part and remaining all fields are grouped under GROUP internal table.

Page 99: 60878049 Sap Abap Adobe Forms

Step8: Drag the static text from the library into the form and provide the descriptions of the fields (Acts as a header).

And also drag the internal table into the form (Here I deleted the default heading).

Page 100: 60878049 Sap Abap Adobe Forms

Save and activate the form.

Step9: Execute the form. The output is as shown below:

We can also create the table using subforms if we need the output alignment differently.

In the above scenario, we directly drag and dropped the internal table into the form. But in this scenario, we use subforms to achieve the same.

Page 101: 60878049 Sap Abap Adobe Forms

Step10: Now, create a subform as shown below.

Renamed it as ‘Body’.

Step11: From the Data View, drag and drop the fields individually into the form as shown below.

Step12: Wrap the field ‘VBELN’ into the form as shown below.

Page 102: 60878049 Sap Abap Adobe Forms

And similarly wrap the remaining two fields into another subform ‘DATA’ which intern wrap into the subform ‘Group’. The final view of the Hierarchy is as shown below.

All the pink shades are subforms.

Step13: Place the cursor on sub form Body and

Go to palettes-- Object. There select ‘Subform’ tab.

Here, Initially Content is ‘Position’.

Change the Content field in the all sub forms ‘Body, Vbeln, Data’ from ‘Position’ to Flowed under subform tab as shown below.

Page 103: 60878049 Sap Abap Adobe Forms

Now, select the ‘Binding’ tab.

Here, Default binding is ‘Normal’ for sub form Body

But select the Default binding as shown.

Now, default binding for subform Body becomes as shown below:

And the binding of subform ‘Vbeln’ is

Page 104: 60878049 Sap Abap Adobe Forms

The binding of the sub form ‘Group’ is

The binding of the sub form ‘Data’ is

Page 105: 60878049 Sap Abap Adobe Forms

The binding of field ‘VBELN’ is

The binding of field ‘POSNR’ is

Step14: The final layout looks as shown below

Page 106: 60878049 Sap Abap Adobe Forms

Step15: Execute the form, the output is

You can observe that there is no page header when there is a page overflow.

Page 107: 60878049 Sap Abap Adobe Forms

Now let us extend the scenario to have the page header whenever there is a page overflow.

Step16: We can achieve this as shown below.

Place the cursor on the subform ‘Body’.

Go to Palettes-Object.

Here, in the Pagination tab under Object, select Overflow leader as ‘Header’ subform.

Activate the form.

Step17: Execute the form and the output of the second page is as shown below.

Page 108: 60878049 Sap Abap Adobe Forms

Calculating Page-wise Sub-Totals and Grand Total in Adobe forms By Nisrin Pindwarawala, YASH Technologies

This Tutorial focuses on how to calculate Page-wise Sub-Totals and Grand Total in Adobe forms using JavaScript.

In this demo, we will work with table 'SFLIGHT' and calculate Sub-totals and Grand total for the field 'PRICE'.

Step 1: Go to Transaction SFP and Create an Interface.

Step 2: Add the internal table it_sflight in global data

Step 3: In the Code Initialization part, fetch records from sflight into internal table it_sflight.

SELECT * FROM SFLIGHT INTO TABLE IT_SFLIGHT UP TO 50 ROWS.

Page 109: 60878049 Sap Abap Adobe Forms

Step 4: Save and activate the interface.

Step 5: Go to transaction SFP and create a form.

Step 6: In the context part of the form drag and drop the table sflight from global data of interface area to the context area and deactivate the field which we don't require in the layout.

Step 7: Create a table by drag n drop from library on to the layout. Include one header row and footer row in the table.

Page 110: 60878049 Sap Abap Adobe Forms

Enter the name of the field you want to display in the header row of the table.

Move the table fields from the table by drag n drop from Data View Palette on to the body row of the table, which we have created. In the footer row insert a text field in the last column from the library as shown below.

Step 8: Calculating Sub-Total for field price.

Firstly enable JavaScript for the text field, which we created in footer row.

Page 111: 60878049 Sap Abap Adobe Forms

We can achieve this by selecting,

• Select "Events with Scripts" in the Show drop down list • Select "JavaScript" in the Language drop down list • Run at: "Client" as shown below.

Write this code in the area provided under these selection boxes.

var fields = xfa.layout.pageContent(xfa.layout.page(this)-1, "field", 0); var total = 0; for (var i=0; i <= fields.length-1; i++) { if (fields.item(i).name == "PRICE") { total = total + fields.item(i).rawValue; } } this.rawValue = total; Click Enter Script Source Changes + to add the script to your form.

The value tab of the text field has to be set as below.

Page 112: 60878049 Sap Abap Adobe Forms

Step 9: Calculating Grand Total.

Group the elements of the body row, and then insert subform by right clicking on data.

Page 113: 60878049 Sap Abap Adobe Forms

Move the table under the subform and Insert a new subform with a text field under it.

Page 114: 60878049 Sap Abap Adobe Forms

After following these steps,

Page 115: 60878049 Sap Abap Adobe Forms

• From the drop down list "Show" select Calculate • Enable FormCalc for the text field "Grand Total" as shown below.

Step 10: Code for Grand-Total

Write the code under the area provided for the text field

sum(Data.Table1.Group1.Row1[*].PRICE[*])

Click Enter Script Source Changes + to add the script to your form.

Step 11: Save and activate the form. Execute the form.

The output appears like this:

Page1:

Page 116: 60878049 Sap Abap Adobe Forms

Page2:

Page 117: 60878049 Sap Abap Adobe Forms

Step 9: Calculating Grand Total.

Group the elements of the body row, and then insert subform by right clicking on data.

Page 118: 60878049 Sap Abap Adobe Forms

Move the table under the subform and Insert a new subform with a text field under it.

Page 119: 60878049 Sap Abap Adobe Forms

After following these steps,

Page 120: 60878049 Sap Abap Adobe Forms

• From the drop down list "Show" select Calculate • Enable FormCalc for the text field "Grand Total" as shown below.

Step 10: Code for Grand-Total

Write the code under the area provided for the text field

sum(Data.Table1.Group1.Row1[*].PRICE[*])

Click Enter Script Source Changes + to add the script to your form.

Step 11: Save and activate the form. Execute the form.

The output appears like this:

Page1:

Page 121: 60878049 Sap Abap Adobe Forms

Page2:

Page 122: 60878049 Sap Abap Adobe Forms

Including the Standard Texts (SO10) and any other Long Texts in the Adobe Forms By Chandra Mohan Reddy Piminty, YASH Technologies

First Step: Creating the Interface (Ex: ZCHANDU)

Transaction code SFP

Creating an Import parameter VALUE of type ZTEST_S. Structure of ZTEST_S is in the next slide. Activate the Interface.

Second Step: Form Design

Transaction code SFP

Create a form (Ex: ZCHANDU) and provide the interface name created above

Page 123: 60878049 Sap Abap Adobe Forms

Creating a Text node by right clicking on the top node ZCHANDU and then

CREATE -> TEXT.

In the properties of the TEXT node select Text type Include Text and then provide the Text Name, Text Object, Text ID and Text Language values as shown below.

Drag the VALUE structure from the interface into the Context.

We can pass the Text node properties values dynamically as well. An example is shown below:

Next go to the Layout Tab:

The Data view Palette screen shot is shown below.

Page 124: 60878049 Sap Abap Adobe Forms

Drag the TEXT node into the BODY subform at the desired location.

The Hierarchy Palette and the Body pages screen shot is shown below.

Activate the Form.

Testing: Provide the values for the structure VALUE as below.

Output:

Page 125: 60878049 Sap Abap Adobe Forms

The screen shot of the Standard text created in Transaction SO10 is as below:

Limitations of Include Texts in Adobe Forms:

• If the values of the Text Symbols are coming into the Form in an internal table then we would not be able to use the Include text, as in Adobe Forms between the internal table name and the field names a DATA node is inserted due to the XML naming conventions and this DATA node is the one that creates the problem. Even though we have the table name and the field names same as in the Standard text, the error would be that the field is not found.

• The Text Symbols values must be coming from the Interface. If we are using Script (Formcalc or JavaScript) and filling the Field values, then those values would not be passed to the standard text, even though we have the calculated value in the Field and be able to print it.

Scenario on displaying logo, background image and fetching data from multiple tables By Venkateswara Rao Appikonda, Intelligroup

Page 126: 60878049 Sap Abap Adobe Forms

Go to the transaction code SFP.

Let us first create an interface for the form. Say the name of the interface is ZTABLES.

Chose Create (f5) and provide the necessary description for the same.

Save the object either as local object or any package.

Double Click on import in the form interface and choose Create button over there.

Provide the import parameter: PERNR as shown below.

In the types, provide the following code:.

types: begin of ty_final , pernr like pa0002-pernr, begda like pa0002-begda, endda like pa0002-endda,

Page 127: 60878049 Sap Abap Adobe Forms

vorna like pa0002-vorna, nachn like pa0002-nachn, ansal like pa0008-ansal, lga01 like pa0008-lga01, bet01 like pa0008-bet01, end of ty_final. TYPES: it_final type table of ty_final, itab type table of pa0002 , itab1 type table of pa0008 .

Provide the following code in the initialization .

select * from pa0002 into table itab where pernr = pernr . select * from pa0008 into table itab1 for all entries in itab where pernr = itab-pernr . loop at itab into wa_itab . wa_final-pernr = wa_itab-pernr. wa_final-begda = wa_itab-begda. wa_final-endda = wa_itab-endda . wa_final-vorna = wa_itab-vorna. wa_final-nachn = wa_itab-nachn . read table itab1 into wa_itab1 with key pernr = wa_itab-pernr. wa_final-ansal = wa_itab1-ansal. wa_final-lga01 = wa_itab1-lga01. wa_final-bet01 = wa_itab1-bet01.

Page 128: 60878049 Sap Abap Adobe Forms

append wa_final to it_final . endloop.

Define the import and output parameters as shown above.

Declare the following variables in the global declarations:

Save and Activate it .

Page 129: 60878049 Sap Abap Adobe Forms

Now create the form as shown.

Enter the description and provide the interface name as ZTABLES, which is created earlier.

Save the object either as local object or under a package .

Drag the import parameter PERNR and output tables and system fields( if needed) onto the context area

Page 130: 60878049 Sap Abap Adobe Forms

First deactivate all the fields in the table itab and then select the fields to be visible in the output (right click on the field and choose activate) as shown below. Repeat the same for the internal tables itab1 and it_final as well .

Page 131: 60878049 Sap Abap Adobe Forms

Click on layout tab.

Now drag the fields from the data view to the design view...and arrange them in a specific order in which you want and create a text element for the header. Here you can change the font and size for the text element in the right side pane.

Page 132: 60878049 Sap Abap Adobe Forms

nserting logo on the form

Go to pallets -> object then a new window will opens as shown below. (Compare the above and below diagrams)

Page 133: 60878049 Sap Abap Adobe Forms

Double-click on the image dragged from the library (here it is shown below) then it will show a F4 help for selection of the image like this..

Click on the image and choose open then it will be on the body page and you can select the image and increase the size of the image also

Page 134: 60878049 Sap Abap Adobe Forms

For the image to be displayed on the form, it is important to do this. Right Click on the image and click on object and check the EMBED IMAGE DATA checkbox.

Page 135: 60878049 Sap Abap Adobe Forms
Page 136: 60878049 Sap Abap Adobe Forms

How to put the background image on the form

Page 137: 60878049 Sap Abap Adobe Forms

To put the image as a background, select the image into the body page and right click on the image and choose send backward then it will become the back ground like this..

(You need to check the checkbox EMBED IMAGE FIELD for the background image here as well)

Save, Activate and execute it .

Provide a personnel number (input)

Page 138: 60878049 Sap Abap Adobe Forms

Choose execute. Give the input device as LP01 or LOCL

Choose print preview.

Page 139: 60878049 Sap Abap Adobe Forms

How to call this in a program REPORT Zadobeforms . data:/1BCDWB/FORMOUTPUT type FPFORMOUTPUT , /1BCDWB/DOCPARAMS type SFPDOCPARAMS , ie_outputparams type SFPOUTPUTPARAMS . CALL FUNCTION 'FP_JOB_OPEN' CHANGING ie_outputparams = ie_outputparams . . *---here get the function module name from the form CALL FUNCTION '/1BCDWB/SM00000220' EXPORTING /1BCDWB/DOCPARAMS = /1BCDWB/DOCPARAMS pernr = '00001000' IMPORTING /1BCDWB/FORMOUTPUT = /1BCDWB/FORMOUTPUT . CALL FUNCTION 'FP_JOB_CLOSE' .

Printing Address using Business Address Services (BAS) By Syed Abdul Adil, YASH Technologies

Instead of using custom tables for address information, many applications access Business Address Services (BAS). In the Business Address Services, addresses are identified by means of numbers.

Page 140: 60878049 Sap Abap Adobe Forms

The addresses that you integrate in form's layout will be formatted in accordance with country-specific conventions.

Step 1: Go to Transaction SFP and Create an Interface.

Step 2: Define Import parameter under Form Interface.

IS_ADDRESS_TYPE TYPE CHAR1 IS_ADDRESS_NUMBER TYPE ADRC-ADDRNUMBER IS_PERSON_NUMBER TYPE ADRP-PERSNUMBER IS_COUNTRY TYPE LAND1

Step 3: Save and activate the interface.

Step 4: Now create the form as shown below. .

Page 141: 60878049 Sap Abap Adobe Forms

Step 5: A pop up window would appear where we need to assign the interface name to form and also the description of the form. Press Save button.

Step 6: In the context part of the form Create Address Node as shown below.

Step 7: Click on the Address node and set the properties as shown below.

Page 142: 60878049 Sap Abap Adobe Forms

Step 8: In the Layout part of the form, Drag and drop the Address Field.

Step 9: Set the Object properties of Address text field as shown below.

Page 143: 60878049 Sap Abap Adobe Forms

Step 10: Set the Border properties of Address text field as shown below.

Step 11: Drag the static text from the library into the form and provide the descriptions of the fields.

Page 144: 60878049 Sap Abap Adobe Forms

Step 12: Save and activate the form.

Step13: Test form, by entering Address type, Address Number and Sending Country.

Note: Person Number is optional; it is applicable for Address type 2 and 3.

Page 145: 60878049 Sap Abap Adobe Forms

Step 14: Execute the form. The output is as shown below:

Printing Address without using Business Address Services (BAS) By Syed Abdul Adil, YASH Technologies

If our application makes no use of the Business Address Services but you still want to have country-specific addresses, we must use ABAP coding to achieve this. It is possible to do this in the application program or in the initialization coding of the interface.

Step 1: Go to Transaction SFP and Create an Interface.

Page 146: 60878049 Sap Abap Adobe Forms

Step 2: Define Import parameter under Form Interface.

IS_CUSTOMER_ID TYPE S_CUSTOMER IS_COUNTRY TYPE LAND1

Step 3: Define Global Types under Global definition as shown below.

TYPES: BEGIN OF ty_adr_printform_table_line, line_type TYPE ad_line_tp, address_line LIKE adrs-line0, END OF ty_adr_printform_table_line. TYPES: ty_adr_printform_table TYPE TABLE OF ty_adr_printform_table_line.

Page 147: 60878049 Sap Abap Adobe Forms

Step 4: Define Global Work Areas and Internal Tables under Global definition as shown below.

IS_ADDRESS TYPE ADRS1. IT_ADDRESS_LINES TYPE TY_ADR_PRINTFORM_TABLE. IS_ADDRESS_LINE TYPE TY_ADR_PRINTFORM_TABLE_LINE. IS_SCUSTOM TYPE SCUSTOM.

Step 5: Write the below code in code initialization part. Check for errors and activate the interface.

SELECT SINGLE * FROM scustom INTO is_scustom WHERE id EQ is_customer_id. is_address-title_text = is_scustom-form. is_address-name1 = is_scustom-name. is_address-street = is_scustom-street. is_address-po_box = is_scustom-postbox. is_address-post_code1 = is_scustom-postcode. is_address-city1 = is_scustom-city. is_address-region = is_scustom-region. is_address-country = is_scustom-country. * Address Format According to Post Office Guidelines * Note : Refer Function module documentation for more information. CALL FUNCTION 'ADDRESS_INTO_PRINTFORM' EXPORTING address_1 = is_address

Page 148: 60878049 Sap Abap Adobe Forms

address_type = '1' "normal/company sender_country = is_country number_of_lines = 8 IMPORTING address_printform_table = it_address_lines.

Step 6: Save and activate the interface.

Step 7: Now create the form as shown below.

Page 149: 60878049 Sap Abap Adobe Forms

Step 8: A pop up window would appear where we need to assign the interface name to form and also the description of the form. Press Save button.

Step 9: In Interface we will find the data that was created in the interface. We need to drag the elements that need to be displayed in output into the content area.

Step 10: In the Layout part of the form, Drag and drop the Address Field.

Step 11: Drag the static text from the library into the form and provide the descriptions of the fields.

Page 150: 60878049 Sap Abap Adobe Forms

Step 12: Set the Border properties of Address text field as shown below.

Step 13: Set the Object properties of Address text field as shown below.

Step 14: Wrap the address field into Subform as shown below.

Page 151: 60878049 Sap Abap Adobe Forms

Step 15: Set Body page Object properties as shown below.

Step 16: Set Subform Object properties as shown below.

Step 17: Set Subform Object properties as shown below.

Page 152: 60878049 Sap Abap Adobe Forms

Step 18: Save and activate the form.

Step 19: Test form, by entering Customer id and Country.

Step 20: Execute the form. The output is as shown below:

Page 153: 60878049 Sap Abap Adobe Forms

Configuring the Adobe Forms / Smart forms / SAP Script to the output type in NACE

By Nikunj Shah, YASH Technologies

Go to transaction NACE.

Choose the required application from the list and click on output types.

Chose one of the Output types from the right pane and click on processing routines.

Page 154: 60878049 Sap Abap Adobe Forms

Following screen appears:

If an SAP Script to be attached, fill-in the driver program name, Form routine and SAP Script name in the field “Form” (shown below)”

Page 155: 60878049 Sap Abap Adobe Forms

If an Smart Form / Adobe Form are to be attached, enter the form name in the field “PDF/SmartForm Form” and select one of the types “PDF” or “SmartForm”. (See the screenshot below)

Demo scenario on Adobe Interactive Forms using ABAP WebDynpro - Part1 By G.K.Akbar, The Washington Post

I have created a table ‘ZDEPT’ with just three fields; I will be creating an Adobe form for these three fields and will be updating this table using ABAP Web Dynpro framework.

Page 156: 60878049 Sap Abap Adobe Forms

Go to transaction SE80 and create a web dynpro component ZADOBE’.

Enter the details in the popup window as shown below

Page 157: 60878049 Sap Abap Adobe Forms

Assign a package to the application or save as a local object

You can see Component controller, Interface controller and window being created

Page 158: 60878049 Sap Abap Adobe Forms

Create a View as shown below

Page 159: 60878049 Sap Abap Adobe Forms

Give the view name as ‘MAIN_VIEW’ as show below

Page 160: 60878049 Sap Abap Adobe Forms

You can see the main view being created.

Page 161: 60878049 Sap Abap Adobe Forms

Go to the context tab of the “MAIN_VIEW’ and create a empty node.

Page 162: 60878049 Sap Abap Adobe Forms

Give the name of the Node as ‘Adobe’ and press enter as shown below.

Page 163: 60878049 Sap Abap Adobe Forms

You can see the node ‘Adobe’ being created below.

Page 164: 60878049 Sap Abap Adobe Forms

Create another node under the node adobe as shown below.

Page 165: 60878049 Sap Abap Adobe Forms

Give the name of the node as ‘ZDEPT’ and Dictionary structure as ‘ZDEPT’ and press the button ‘Add Attribute from Structure’.

Page 166: 60878049 Sap Abap Adobe Forms

Select the Fields as shown below and press enter.

Page 167: 60878049 Sap Abap Adobe Forms

You can see the node ‘ZDEPT’ with three fields being created under the node ‘ADOBE’.

Page 168: 60878049 Sap Abap Adobe Forms

Now create an attribute ‘PDF_SOURCE’ under the root node ‘CONTEXT’ as shown below

Page 169: 60878049 Sap Abap Adobe Forms

Give the Attribute Name as ‘PDF_SOURCE’ and the type ‘XSTRING’ as shown below

Page 170: 60878049 Sap Abap Adobe Forms

You can see all the nodes that we have created; your screen should appear like the one shown below.

Page 171: 60878049 Sap Abap Adobe Forms

Go to the Layout tab of the ‘MAIN VIEW’ and create a place holder for the adobe form, Right click on the ‘ROOTUIELEMENTCONTAINER’ select ‘insert Element’ from the context window as shown below.

Page 172: 60878049 Sap Abap Adobe Forms

Enter the details in the POPUP window, give the name of the place holder as ‘ADOBE’ and type ‘InteractiveForm’ as shown below.

Page 173: 60878049 Sap Abap Adobe Forms

You can see the placeholder ‘ADOBE’ being created, check the CHEKBOX enabled in the property list, this is a required entry for an interactive form, (an activex control ‘Active Control Framework’ will be automatically downloaded on to the client from the server when the web page is first called). Increase the height to 500px and width to 500px as shown below.

Page 174: 60878049 Sap Abap Adobe Forms

Click on the button in the property list for the property ‘pdfSource’ and select the node ‘PDF_SOURCE’ from the context window.

Page 175: 60878049 Sap Abap Adobe Forms

In the property List for ‘template Source’ property give the name of the adobe form ’ZADOBE’ that we will be creating during this session and double click on it.

In the POPUP window, give the adobe form interface name ‘ZADOBE’ as shown below and press on the ‘Context button’ as shown below.

Page 176: 60878049 Sap Abap Adobe Forms

Select the Node ‘Adobe’ from the context window as shown below.

Page 177: 60878049 Sap Abap Adobe Forms

Save the application as local object.

Page 178: 60878049 Sap Abap Adobe Forms

Press the button ‘Save’ to save the main view.

Page 179: 60878049 Sap Abap Adobe Forms

You can see the Adobe form application with our web dynpro context node ‘ZDEPT’ being mapped to the context of the Adobe form in the Data view tab.

Page 180: 60878049 Sap Abap Adobe Forms

Just Drag and Drop the ‘ZDEPT’ Node on to the form, in the subform tab of the object make the content as ‘Flowed’ as shown below

Page 181: 60878049 Sap Abap Adobe Forms

Drag and Drop ‘Text’ from the Library pallet and enter the text as you wish

Page 182: 60878049 Sap Abap Adobe Forms

Drag and Drop the Submit button on the form as shown below

Just select the event click* and language JavaScript and run at client (No coding is required)

Now save and just activate the Form and the interface as shown below.

Page 183: 60878049 Sap Abap Adobe Forms

Go to the properties page of the form and double click on the interface ‘ZADOBE’ you can see the ‘XML Schema’

Page 184: 60878049 Sap Abap Adobe Forms

You can see the ‘XML Schema’ interface (You can have three types of interfaces ‘Abap dictionary interface, Smart form compatible interface and XML interface) for interactive forms using WebDynpro you have to use the XML Schema interface.

Press the back button to go back to our web dynpro application.

Now we are back to our web dynpro application.

Page 185: 60878049 Sap Abap Adobe Forms

Select the window ‘ZADOBE’ as shown below

Page 186: 60878049 Sap Abap Adobe Forms

Drag and Drop the “MAIN_VIEW’ on to the window

Page 187: 60878049 Sap Abap Adobe Forms

Go to the ‘Main View’ layout tab and select the node ‘ADOBE’ and in the property list Under Events click on the create button for the event ‘onsubmit’ as shown below

Page 188: 60878049 Sap Abap Adobe Forms

Give the name of the action as ‘CLICK’ and press enter.

Page 189: 60878049 Sap Abap Adobe Forms

Go to the Actions tab of the ‘MAIN_VIEW’ you can see the Action ‘Click’, double click on the action ‘CLICK’.

You can see the Method ONACTIONCLICK. Here you can code your business logic, you can call a BAPI or a function module based on the requirement. We are going to code for inserting the values into the table zdept, the values will come from our adobe form.

Page 190: 60878049 Sap Abap Adobe Forms

Copy the below code and paste it in the method.

method ONACTIONCLICK . data: Node_Adobe type ref to If_Wd_Context_Node, Node_Zdept type ref to If_Wd_Context_Node, Elem_Zdept type ref to If_Wd_Context_Element, Stru_Zdept type If_Main_View=>Element_Zdept . data wa_zdept type zdept. * navigate from <CONTEXT> to <ADOBE> via lead selection Node_Adobe = wd_Context->get_Child_Node( Name = IF_MAIN_VIEW=>wdctx_Adobe ). * navigate from <ADOBE> to <ZDEPT> via lead selection Node_Zdept = Node_Adobe->get_Child_Node( Name = IF_MAIN_VIEW=>wdctx_Zdept ). * get element via lead selection Elem_Zdept = Node_Zdept->get_Element( ). * get all declared attributes Elem_Zdept->get_Static_Attributes( importing Static_Attributes = Stru_Zdept ). wa_zdept-DEPTNO = Stru_Zdept-deptno. wa_zdept-DNAME = Stru_Zdept-dname. wa_zdept-LOC = Stru_Zdept-loc. insert into zdept values wa_zdept.

Page 191: 60878049 Sap Abap Adobe Forms

endmethod.

Your Screen should look like the one shown below.

Now Save and Activate the Webdynpro.

Page 192: 60878049 Sap Abap Adobe Forms

Create a Web dynpro application as shown below. Just right click on the node ‘ZADOBE’ and from the context window select createWeb Dynpro Application.

Page 193: 60878049 Sap Abap Adobe Forms

Enter the Application name as ‘zadobe’ as shown below.

Page 194: 60878049 Sap Abap Adobe Forms

Save the Web dynpro application as local object

Page 195: 60878049 Sap Abap Adobe Forms

Go to the ‘MAIN_VIEW’ Actions tab and keep a session break point in the code, to just see if our code is being executed when we submit the data from the adobe form.

Page 196: 60878049 Sap Abap Adobe Forms

Now we will test the application, right click on the node zadobe and select ‘test’ from the context window.

Page 197: 60878049 Sap Abap Adobe Forms

Logon with your credentials; give your username and password

Page 198: 60878049 Sap Abap Adobe Forms

You can see the Adobe form that we have designed, enter the data as shown below and press the submit button. (As I said earlier an activex control will be installed on to the client machine, you can see the activex control in the internet explore go to the menu: ToolsInternet optionsgo to the programs tab Press button Manage add-ons.

You can see an activex control named ‘SAP ACF’, if you don’t have this control you will not see this page: Note you need to have adobe acrobat reader 7.1 installed, I have used version 9, the activex control was not working properly so down graded my adobe reader to 7.1)

Page 199: 60878049 Sap Abap Adobe Forms

Press F8 to continue.

Page 200: 60878049 Sap Abap Adobe Forms

You can see the entry in the table ZDEPT being updated.

Page 201: 60878049 Sap Abap Adobe Forms

Demo scenario on Adobe Forms using ABAP WebDynpro - Part 2 By G.K.Akbar, The Washington Post

In the earlier example, we have created a WebDynpro application to populate the data into the custom table ZDEPT. In this, we would display the data from the ZDEPT using ABAP WebDynpro.

Following are the contents of the table:

Page 202: 60878049 Sap Abap Adobe Forms

Create a table type ‘ZDEPTTBL’ for table ‘ZDEPT’

Go to transaction SFP and create a from interface ‘ZDEPTINF’ as shown below

Page 203: 60878049 Sap Abap Adobe Forms

Select the Interface type as ‘ABAP Dictionary-Based Interface’, this time we are not going to use the ‘XML schema based interface’, this is to demonstrate that we can make use of any of the existing forms inside the Web Dynpro.

Save the Interface

Create Transport for the Interface

Page 204: 60878049 Sap Abap Adobe Forms

Enter the Import parameter ‘ZDEPT’ and type ‘ZDEPTTBL’. Save and activate the interface

Create the form ‘ZDEPFRM’

Page 205: 60878049 Sap Abap Adobe Forms

Enter the Interface Name as ‘ZDEPTINF’

Save the form

Page 206: 60878049 Sap Abap Adobe Forms

Drag and drop the Node ‘ZDEPT’ onto the context

Go to the Layout tab and Drag & Drop the ‘ZDEPT’ node on to the form layout, Save and Activate the form

Page 207: 60878049 Sap Abap Adobe Forms

You can also create a Report program (Print Program) and call the above mentioned form, but we are going to write the print program logic in the Web Dynpro.

Go to transaction SE80 and create a Web Dynpro component ‘Z_NON_INT_FRM’.

Press ‘Yes’ to create the object

Page 208: 60878049 Sap Abap Adobe Forms

Enter the details as show below and press enter

Save and enter a workbench request

You can see the Component Controller, Interface controller and window being created

Page 209: 60878049 Sap Abap Adobe Forms

Create a view as shown below:

Page 210: 60878049 Sap Abap Adobe Forms

Give the Name of the View as ‘MAIN_VIEW’

Go to the layout tab of the ‘MAIN_VIEW’ and create a place holder for the adobe form as shown below

Page 211: 60878049 Sap Abap Adobe Forms

Give the name of the node as adobe and type Interactive form

In the properties list set the Height and width and the template source as ‘ZDEPFRM’ this is the actual name of the adobe form which we have created earlier, you can see the interface context is automatically mapped to the data source.

Page 212: 60878049 Sap Abap Adobe Forms

You can see the mapped data source in the context tab of the ‘MAIN_VIEW’

Go to the Methods table of the ‘MAIN_VIEW’ and double click on the ‘WDDOINIT’ method,

We are going to write the print program’s logic in this method, we are not going to use the standard function modules that we use normally in the Report print program such as

Page 213: 60878049 Sap Abap Adobe Forms

FP_JOB_OPEN, FP_FUNCTION_MODULE_NAME, FP_JOB_CLOSE.

Copy and Paste the below given code in the method.

method WDDOINIT . data: Node_Zdepfrm type ref to If_Wd_Context_Node, Elem_Zdepfrm type ref to If_Wd_Context_Element, Stru_Zdepfrm type If_Main_View=>Element_Zdepfrm , Item_ZDEPT like Stru_Zdepfrm-ZDEPT, i_dept type zdepttbl. * navigate from <CONTEXT> to <ZDEPFRM> via lead selection Node_Zdepfrm = wd_Context->get_Child_Node

( Name = IF_MAIN_VIEW=>wdctx_Zdepfrm ). * @TODO handle not set lead selection if ( Node_Zdepfrm is initial ). endif. * get element via lead selection Elem_Zdepfrm = Node_Zdepfrm->get_Element( ). * @TODO handle not set lead selection if ( Elem_Zdepfrm is initial ). Elem_Zdepfrm = Node_Zdepfrm->create_element( ). endif.

Page 214: 60878049 Sap Abap Adobe Forms

select * from zdept into table i_dept. Item_Zdept = i_dept. * get single attribute Elem_Zdepfrm->set_Attribute( exporting Value = Item_Zdept Name = `ZDEPT` ). Node_Zdepfrm->bind_element( Elem_Zdepfrm ). endmethod.

Go to the window ‘Z_NON_INT_FRM’ and select the window tab as shown below

Drag and Drop the ‘MAIN_VIEW’ on to the window

Page 216: 60878049 Sap Abap Adobe Forms

Create a Web Dynpro application as show below

Page 217: 60878049 Sap Abap Adobe Forms

Enter the name of the application ‘Z_NON_INT_FRM’ and save the application

Page 218: 60878049 Sap Abap Adobe Forms

Test the Web Dynpro application

Page 219: 60878049 Sap Abap Adobe Forms

Logon with you credentials enter the username and password.

Page 220: 60878049 Sap Abap Adobe Forms

You can see the output in the form below.

Page 221: 60878049 Sap Abap Adobe Forms

Migrating SAP Smart forms to Adobe Forms By Phani Diwakar, YASH Technologies

This document gives an idea about migration of a smart form to an interactive form.

Step1: Go to transaction code SMARTFORMS and select the smart form to be converted into print adobe form.

Page 222: 60878049 Sap Abap Adobe Forms

Here the form name is ZTEST1.

Step2: Go to the next screen by clicking display button.

A text element and table are defined in this existing smart form.

Step3: Output of the smart form ZTEST1 is:

Page 223: 60878049 Sap Abap Adobe Forms

Step4: Now go to Utilities-Migration--Interactive Form-Export in the initial screen of the smart form as shown below.

You will get popup.

Step5: Provide form name and interface name and click enter.

Page 224: 60878049 Sap Abap Adobe Forms

Step6: You will get settings window as shown below.

Select the necessary check boxes.

Page 225: 60878049 Sap Abap Adobe Forms

Select ‘OK’ button. It asks for package and provides the package. Save it.

Step7: Now go adobe form initial screen. Provide the interface name as mentioned above.

Step8: Go to properties tab. You get the default interface type is ‘Smart forms-Compatible Interface’ as shown.

Page 226: 60878049 Sap Abap Adobe Forms

Activate the interface and come out to initial screen.

Step9: Now provide the form name mentioned above in the initial screen.

Step10: Click on change button and following screen appears.

Delete the unnecessary empty folder from the context menu.

Now,

Page 227: 60878049 Sap Abap Adobe Forms

Step11: Go to layout tab,

Step12: Now go to properties tab,

When you try to activate the form, it gives some error message as ‘Unknown Layout Type’.

Change the layout type to Standard Layout as shown.

Page 228: 60878049 Sap Abap Adobe Forms

Activate the form and execute it

Step13: The output would be

.

Page 229: 60878049 Sap Abap Adobe Forms

Using Multiple Master and Body pages in the SAP Adobe Forms By Phani Diwakar M, YASH Technologies

In general, the boiler plate objects placed on the master page will reflect in all remaining pages. Now consider the scenario where the boiler plate objects placed on the master page reflects only on first page but not on the subsequent pages.

We can achieve the above scenario by creating another master page and body page. This document shows the steps to achieve the same.

Step1: Go to SFP transaction to create adobe form. Provide the interface name and click on create button.

Provide the description.

Step2: Define the carrid in IMPORT parameters of form interface.

Step3: Now go to TYPES options in the GLABAL DEFINITION to define user define declarations.

Step4: Now go to Global Data,

Page 230: 60878049 Sap Abap Adobe Forms

Step5: In Code Initialization,

Save and activate the interface. Come back to initial screen of adobe form.

Step6: Provide the form name and give the interface face name and description in the appearing subsequent dialog box.

Press save button.

Step7: Drag and drop the IMPORT parameter ‘carrid’ and GLOBAL DATA parameter ‘t_sflight’ to context.

Page 231: 60878049 Sap Abap Adobe Forms

Step8: Now go to Layout tab,

In master page, drag the content area little bit down from the top to place logo and import parameter ‘carrid’. Also resize the content area as shown below.

Step9: Drag and drop the internal table into body page as shown below.

Page 232: 60878049 Sap Abap Adobe Forms

Step10: Now rename the ‘Untitled Sub Form’ to ‘Bodypage1’ and make the sub form type as flowed as shown.

Active the form and when execute at this point of time, you would observe logo and carrid on every page of output as shown.

Page 233: 60878049 Sap Abap Adobe Forms

And also in all remaining 3 pages logo and carrid is printed.

But our objective of this document is of restricting these TWO, carrid and logo. For that, proceed as follows

Step11: To create new master page, right click on page1 and select New Master Page as shown.

Page 234: 60878049 Sap Abap Adobe Forms

Step12: New master page is created.

Step13: Now create new body page. Right click on ‘Bodypage1’ and select New Body Page.

Rename it to Bodypage2.

Page 235: 60878049 Sap Abap Adobe Forms

Step14: Drag and drop the internal table into Bodypage2.

Step15: Now place the cursor at ‘Bodypage1’ and go to object palette.

Go to pagination tab.

Now select Page1 in place of ‘Following Pervious’ as shown below.

And also, select the Page2 instead of None in the Overflow column.

Page 236: 60878049 Sap Abap Adobe Forms

Step16: Now, select Bodypage2. Go to pagination tab in the object palette. Select ‘Page2’ in place of ‘Following Pervious’ as shown below

Step17: Change the sub form type for Bodypage2 as Flowed.

Step17: Activate it and execute the form. The output would be

Page 237: 60878049 Sap Abap Adobe Forms

Now from the second page onwards, we don’t get the logo and carrid. We get these only on first page.

Sending an SAP Adobe form as an attachment in an email By Phani Diwakar, YASH Technologies

Consider the offline scenario where the candidate gets the appointment letter along with personnel information form as an attachment to his/her email after he/she has been completed final round of

Page 238: 60878049 Sap Abap Adobe Forms

interview. He/She fills the form and sends it back. The data from the PDF is then retrieved and updated in SAP by HR. For this we don’t require Web Dynpro Development.

In this document we discuss how to send PDF file as an E-mail attachment to respective candidate.

Step1: Go to transaction SFP to create form interface. Provide the interface name ‘ZPERSONNEL_INT’.

Click on create button and provide the description.

Click on Save. Provide the package name in the following screen and press enter.

Step2: Define the IMPORT parameter as shown.

Now save and active the interface.

Come back to initial screen of form.

Step3: Now create form. Provide the form name ‘ZPERSONNEL’.

Page 239: 60878049 Sap Abap Adobe Forms

Click on create button and provide the description and interface name.

Click on save and provide the package.

Step4: Drag the IMPORT parameter ‘EMP_INFO’ from interface to context tab.

Step5: Now go to layout tab.

Drag the drop the each field from data view to layout editor as shown.

Page 240: 60878049 Sap Abap Adobe Forms

Save and activate it.

We can provide the tool tip text using Accessibility tab as shown.

Step6: Now create an ABAP program which will create a form and email to selected candidate so that it can be filled offline. (Click here for the program used for this demo purpose)

The program will have the following steps

A. Obtain the name of the generated function module of the form using ‘FP_FUNCTION_MODULE_NAME’ by pass the form name to it.

B. Set the output parameter and open the spool job. Fill the value ‘X’ to NODIALOG and GETPDF parameter of the structure SFPOUTPUTPARAMS. Pass this structure to function module ‘FP_JOB_OPEN’

C. Call the generated function module. Pass the value ‘X’ to parameter FILLABLE of the structure SFPDOCPARAMS (Form parameters for Form Processing) which is standard parameter. By default this FILLABLE parameter is assigned with space. When ‘X’ is passing to this parameter then form acts as interactive form, otherwise it is print form.

D. Now the PDF file generated is available in the parameter PDF of structure /1BCDWB/FORMOUTPUT. Convert the generated PDF file data to binary format using the function module ‘SCMS_XSTRING_TO_BINARY’.

Page 241: 60878049 Sap Abap Adobe Forms

E. Send this form to mail as a PDF attachment using Business Communication Service (BCS).

Step7: Now execute the ABAP program.

Click on ‘OK’ button.

Now check the email.

Offline scenario to download an Adobe Form using Web Dynpro for ABAP By Phani Diwakar MV, YASH Technologies

This is the offline interactive scenario where in user downloads the file from the browser and save it on desk top. After the filling the form by user then that form will be uploaded into SAP. Now here we will see how to download the file from the browser. To upload the filled-in PDF file, click here.

Step1: Go to SE80 and create Web Dynpro component ‘ZDOWNLOAD_FORM’ as shown.

Page 242: 60878049 Sap Abap Adobe Forms

Press enter. Then following screen will appear.

Press ‘Yes’ and provide the description.

Step2: Now go to context tab in Main view.

Create attribute ‘PDF_SOURCE’ of type XSTRING as shown below.

Page 243: 60878049 Sap Abap Adobe Forms

Step3: Select Insert element from ROOTUIELEMENTCONTAINER.

Select the element FileDownload as shown.

Click on Enter.

Step4: Now in the FileDownload properties window,

Map the DATA property as shown below.

Click on create binding tab against DATA property.

Page 244: 60878049 Sap Abap Adobe Forms

Select PDF_SOURCE from the CONTEXT.

Step5: Provide the filename which is either already exists in the MIME repository or place the file in the MIME repository which you want to be down loaded.

Placing the file in the MIME repository:

Select the MIME repository tab in the transaction SE80.

In SAP folder, select the folder WDR_TEST_ADOBE and place the file as shown below.

Page 245: 60878049 Sap Abap Adobe Forms

The following screen will appears. Select the file from desk top that you want to be down loaded from browser.

Click on Open button.

The following screen will appear.

Page 246: 60878049 Sap Abap Adobe Forms

Provide the description and save it.

Now if you check, the file ‘PersonnelInformationForm.pdf’ is placed under the folder WDR_TEST_ADOBE as shown.

Page 247: 60878049 Sap Abap Adobe Forms

Step6: The property tab of FileDownload is as shown below.

Page 248: 60878049 Sap Abap Adobe Forms

Step7: In the method ‘WDDOINIT’, write the following code.

Step8: Create the Web Dynpro application.

Step9: Execute the application.

Page 249: 60878049 Sap Abap Adobe Forms

Now click on the link. The PDF file would be open.

Offline scenario to upload a filled-in adobe form using Web Dynpro for ABAP By Phani Diwakar MV, YASH Technologies

The requirement is to upload the filled PDF data file into SAP from browser. FILE UPLOAD element is used in Web Dynro to upload the file. This document is extension to ‘how to down the file from the browser’.

Step1: Go to SE80 and create Web Dynpro component ‘ZUPLOAD_FORM’ as shown.

Page 250: 60878049 Sap Abap Adobe Forms

Press enter. Then following screen will appear.

Press ‘Yes’ and provide the description.

Step2: Now go to context tab in Main view.

Create attribute ‘PDF_SOURCE’ of type XSTRING as shown below.

Page 251: 60878049 Sap Abap Adobe Forms

Step3: Select Insert element from ROOTUIELEMENTCONTAINER.

Select the element FileUpload as shown.

Click on Enter.

And also create button. The properties of the buttons are as shown below.

Page 252: 60878049 Sap Abap Adobe Forms

Step4: Now select the binding tab against DATA property of the FileUpload element. Bind this DATA property with PDF_SOURCE attribute defined in context.

The property tab of the FileUpload is as shown below.

Step5: Go to Method tab,

Page 253: 60878049 Sap Abap Adobe Forms

Click on the method ‘ONACTIONUPLOAD’ from the METHOD tab or double click on Action property ‘UPLOAD’ defined in the button property which takes you to the method ‘ONACTIONUPLOAD’. Enter the code provided here.

Step6: Create the Web Dynpro application and execute it.

Browse the file and click on upload button.

If you check the data base, the PDF data is uploaded into database table.

The screen shot of the Web Dynpro component is

Page 254: 60878049 Sap Abap Adobe Forms

Using Web Services in Adobe Forms By ArunKumar.C & Gurunath.P, Kaavian Systems

Scenario: Fetching the Material Description for a Material in Adobe Form using Web Service.

Consider a Scenario User enters a Material Number in a Adobe Form and the Material Description has to be fetched from the Material master table , for this we use web service to fetch the description.

I. Create a Web Service:

Step 1: we need to create a Remote enable function module

Step 2 : Define one Import parameter material number(MATNR) and Two Export parameter material Description (MAKTX) and BAPIRETURN (Mandatory)

Page 255: 60878049 Sap Abap Adobe Forms

Step 3: Write the code for to fetch the material description in source code.

Then activate and check the function module

Step 4: Goto the Utilities->More utilities->Create web service->From the function module

Page 256: 60878049 Sap Abap Adobe Forms

Step 5: A Web Service Wizard will be displayed

Give the Service name and Description

Press continue

Press continue

Page 257: 60878049 Sap Abap Adobe Forms

Check local object or package name

Page 258: 60878049 Sap Abap Adobe Forms

Press continue

Press complete

Step 6: Now go to Transaction SOAMANAGER

The browser will start

Page 259: 60878049 Sap Abap Adobe Forms

Go to Tab Business Administration ->Web Service Administration

To find your web service, type your Service name in the Search Pattern and then select your service then click

Step 7: Click Open WSDL Document for selected binding

Page 260: 60878049 Sap Abap Adobe Forms

A Window opens with XML code

Copy the URL, This URL is the generated WSDL Link.

II . Create Adobe Forms

Step 1 : Then go to the transaction SFP and create a empty interface then create a form

Go to the layout tab

Edit ->New data connections

Page 261: 60878049 Sap Abap Adobe Forms

Enter a New Data Connection Name

Select WSDL File and click next

Paste your URL and press next

Page 262: 60878049 Sap Abap Adobe Forms

Step 2: Select your web service and press finish

The web service is added to the form.

Step 3: In layout to create a new button and change its control type to Execute

In execute tab select your Data connection name

Step 4: Drag and drop the MATNR and MAKTX fields to the Form.

Page 263: 60878049 Sap Abap Adobe Forms

Activate the form

Step 5: Create a print program for the form.

In the '####' place, enter your form name

data: ie_outputparams type sfpoutputparams. data: i_name type fpname, i_funcname type funcname. data: fp_docparams type sfpdocparams. data: fp_formoutput type fpformoutput. data: data_tab type SOLIX_TAB. ie_outputparams-getpdf = 'X'. ie_outputparams-nodialog = 'X'. " suppress printer dialog popup call function 'FP_JOB_OPEN' changing ie_outputparams = ie_outputparams. try. i_name = '######################'. "Your Form Name call function 'FP_FUNCTION_MODULE_NAME' exporting i_name = i_name importing e_funcname = i_funcname. catch cx_fp_api_repository. catch cx_fp_api_usage. catch cx_fp_api_internal. endtry. fp_docparams-langu = 'E'. fp_docparams-country = 'US'. fp_docparams-FILLABLE = 'X'. call function i_funcname exporting /1bcdwb/docparams = fp_docparams importing /1bcdwb/formoutput = fp_formoutput exceptions usage_error = 1 system_error = 2 internal_error = 3.

Page 264: 60878049 Sap Abap Adobe Forms

call function 'FP_JOB_CLOSE' exceptions usage_error = 1 system_error = 2 internal_error = 3 others = 4. data: filename type string, path type string, fullpath type string, default_extension type string value 'PDF'. cl_gui_frontend_services=>file_save_dialog( exporting default_extension = default_extension changing filename = filename path = path fullpath = fullpath ). check fullpath is not initial. call function 'SCMS_XSTRING_TO_BINARY' exporting buffer = fp_formoutput-pdf tables binary_tab = data_tab. cl_gui_frontend_services=>gui_download( exporting filename = filename filetype = 'BIN' changing data_tab = data_tab ). cl_gui_frontend_services=>execute( exporting document = filename ). Output:

Step 6: Run the print program and then save the pdf form in your drive or desktop, then open the form using the Adobe Reader (7.0 or above).

Give the material number and press description Button; it fetches the description of the Material entered.

Page 265: 60878049 Sap Abap Adobe Forms