Smart Forms Step by Step Tutorials
Smart Forms Step by Step Tutorials
In this example, we will print a simple text using our form. To create a text, expand Pages
and Windows New Page. Select Main Window and Right click on that. Select Create
Text
Test the smart form by clicking on Test. You would be navigated to the function builder with
the function module defaulting to the one that is generated earlier.
Click on execute.
Expand Pages and Windows and click on %PAGE1. Rename the page to your needs and
add a short description to the same.
To display the address on the form, right click on Main Window, select Create Address
Enter a name to the Address and add a short description for the same.
You all might be aware that Addresses are stored in the table ADRC. Now pick an address
number from that table, add provide the same in the Address Number as shown below:
Check the function module that is generated when the Smart Form is activated by clicking on
Environment Function Module Name.
We would use this function module in our driver program to call this function module.
Let us create a driver program with a simple call to the above generated function module:
REPORT Zcall_smartform.
* To call a smart form, we would need to call the function module
that
* is generated.
* Calling the generated function module directly is not an efficient
* method. For efficient method, click here.
CALL FUNCTION '/1BCDWB/SF00000359'
* EXPORTING
*
ARCHIVE_INDEX
=
*
ARCHIVE_INDEX_TAB
=
*
ARCHIVE_PARAMETERS
=
*
CONTROL_PARAMETERS
=
*
MAIL_APPL_OBJ
=
*
MAIL_RECIPIENT
=
*
MAIL_SENDER
=
*
OUTPUT_OPTIONS
=
*
USER_SETTINGS
= 'X'
* IMPORTING
*
DOCUMENT_OUTPUT_INFO
=
*
JOB_OUTPUT_INFO
=
*
JOB_OUTPUT_OPTIONS
=
* EXCEPTIONS
*
*
*
*
*
FORMATTING_ERROR
= 1
INTERNAL_ERROR
= 2
SEND_ERROR
= 3
USER_CANCELED
= 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.
Execute the program for the output.
REPORT Zcall_smartform.
CALL FUNCTION '/1BCDWB/SF00000359'
* EXPORTING
*
ARCHIVE_INDEX
=
*
ARCHIVE_INDEX_TAB
=
*
ARCHIVE_PARAMETERS
=
*
CONTROL_PARAMETERS
=
*
MAIL_APPL_OBJ
=
*
MAIL_RECIPIENT
=
*
MAIL_SENDER
=
*
OUTPUT_OPTIONS
=
*
USER_SETTINGS
= 'X'
* IMPORTING
*
DOCUMENT_OUTPUT_INFO
=
*
JOB_OUTPUT_INFO
=
*
JOB_OUTPUT_OPTIONS
=
* EXCEPTIONS
*
FORMATTING_ERROR
= 1
*
INTERNAL_ERROR
= 2
*
SEND_ERROR
= 3
*
USER_CANCELED
= 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.
But this is not an efficient way of calling Smart Form for the following reason:
Whenever a Smart Form is generated, a function module is generated and the naming convention
for that Smart Form is done internally by using Number range object or something similar. In the
above case, the function module name is /1BCDWB/SF00000359. The function module for the
10
*
*
VARIANT
= ' '
DIRECT_CALL
= ' '
importing
fm_name
= fname
* EXCEPTIONS
*
NO_FORM
= 1
*
NO_FUNCTION_MODULE
= 2
*
OTHERS
= 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Now replace the function module name '/1BCDWB/SF00000359'
* with the variable FNAME
CALL FUNCTION FNAME
* EXPORTING
*
ARCHIVE_INDEX
=
*
ARCHIVE_INDEX_TAB
=
*
ARCHIVE_PARAMETERS
=
*
CONTROL_PARAMETERS
=
*
MAIL_APPL_OBJ
=
*
MAIL_RECIPIENT
=
*
MAIL_SENDER
=
*
OUTPUT_OPTIONS
=
*
USER_SETTINGS
= 'X'
* IMPORTING
*
DOCUMENT_OUTPUT_INFO
=
*
JOB_OUTPUT_INFO
=
*
JOB_OUTPUT_OPTIONS
=
* EXCEPTIONS
*
FORMATTING_ERROR
= 1
*
INTERNAL_ERROR
= 2
*
SEND_ERROR
= 3
*
USER_CANCELED
= 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.
11
Double-click on GRAPHICS node and click on Import (F5) to import the image.
Select the file name by using the F4 functionality available. Name your graphic and enter a
short description. If you have color image, select the radio button Color Bitmap image. Click
on tick mark to proceed.
12
13
Create a new form and give a short description for the same.
14
15
Now define the import parameters for MATNR and MAKTX (From table MAKT)
Now create a Text in the Main window to display the above two parameters.
16
Enter the field names between the & (Ampersand) as shown below:
17
Save and Activate the Smart Form. Test run the Smart Form by clicking on Execute.
18
19
20
Now to calculate Seats Available, select Main Window Create Flow Logic Program
Lines
Now mention the input parameters as SEATS_MAX and SEATS_OCC and the output
parameter as SEATS_AVAIL. Write the code to calculate SEATS_AVAIL.
21
Now to print these values on the layout, create a text by selecting Main Window Create
Text:
22
23
To position the secondary window to meet our needs, click on Form Painter.
24
25
26
Save and activate the Smart Form. Test run the Smart Form; you would get the following
output:
27
Also name your window and give it a proper description. Do not change any other settings.
28
Adjust the window size using the Form Painter available on the application toolbar.
The variable SFSY-COPYCOUNT would provide us count of the copy whether it is a first
copy, second copy and others. We would use this field to print the owner of the copy.
We would define a string, which would hold the name of the copy (bank copy and others)
depending on the value of SFSY-COPYCOUNT. Define a variable in the global definition as
shown below:
29
Now select your Copies window, right click Select Create Flow Logic Program Lines
30
Now create a text by selecting the Copies window, right click Create Text.
In this, just enter the field name as shown below by selecting insert field.
Now include a text in the Main window as well with some content.
31
32
Go to transaction SmartStyles
To create a paragraph, click on folder Paragraph Formats and click on Create (as shown in
the above screenshot).
Following pop-up appears: Enter a paragraph format name.
Enter a suitable description for your graph and enter the left margin value as 2 CH.
33
34
Also, in the same window, check the Number Chaining Box. If this is selected, the parent
value would be displayed (like 1.1, 1.2, 2.1,2.2..). If this is not checked, only numbering would
appear like 1, 2,3 without the parent number prefixing.
Save and activate your Smart Style.
Now go to transaction SmartForms.
Create a Smart Form and create a text in the Main Window:
Select the tab Output Options to mention the Smart Style to be used.
35
Return to the main screen of the Text. The screen would appear as follows:
36
Save and activate the Smart Form. Test run the Smart Form. Following would be the output:
37
Step3: Now define the internal table and work area in Global Data parameter.
Step4: In Initialization parameter, we can write a code as shown below. We have to mention
the output result in the output parameter so that we can use it further. Here in this case we
are outputting IT_TAB and we are going to use this IT_TAB further in the LOOP in the Flow
Logic.
38
Step7: To create the character, paragraph formats and Tabs, we use the smart style. The
transaction for create smart style is SMARTSTYLE or we can be created the initial screen of
SMARTFORMS. Here SMART STYLE is created to define Tab positions for the columns.
39
Step10: Now Import SMART STYLE in to the SMART FORM as shown below.
40
Step12: Save and activate the smart form. The output is as shown below.
41
42
And provide the short text for this smart form YDEMO_TABLE.
Step2: Now go to Global definitions where we can define the Global data, Types, Initialization
and etc.
Define Structure using Types Parameter as shown below. In Types parameters we usually
define user defined data types.
Step3: Now define the internal table and work area in Global Data parameter.
Step4: In Initialization parameter, we can write a code as shown below. We have to mention
the output result in the output parameter so that we can use it further. Here in this case we
are outputting IT_TAB and we are going to use this IT_TAB further in the Table painter.
43
44
Step6: Now we define number of table columns in %LTYPE1. Here, %LTYPE1 is renamed as
LINE as shown below.
Here, in this scenario we have to divide the LINE area into 4 columns as we have to display 5
columns. To draw a line we have to select Draw lines and columns button as shown above.
Step7: Now we have to create Table line for Header and Main area of Table painter as
shown below.
45
Here we have to provide line type. Here, the line type is LINE.
Step8: Provide the text for all columns.
Step11: Save and activate the smart form. Execute the smart form now. The output is as
shown below.
46
47
48