Step by Step Smart Forms
Step by Step Smart Forms
SmartForms its a very robust program which I think is far much better than the good old SAP script, its very recommended to use SmartForms when creating print out form such as Invoice, Sales Order, Delivery Order, etc. Okay now lets start our training today. 1. First execute TCODE smartforms 2. Create a new smartform program, just name it as ZSFEXERCISE and click CREATE.
3. On Global Settings, click Form Interface and on your right select the TABLES tab. Here you can define internal table to use for the report fields structure, you can define more than 1 table depending on your program requirements. In this example lets create 1 internal table named ITAB using table SPFLI field structure.
4. Next go to Pages and Windows section (Below Global Settings), open the %PAGE1 New Page folder until you find MAIN Main Window folder, after that Right click > Create > Table This will create an internal table that can get the query result from the report interface.
5. In this next screen, you will see an empty box that will act as the main body of your report to display the report data. But first we need to define how many columns we want to have on this report, to do this just click Draw Lines And Columns (Pencil button) button and draw a vertical lines on the box to create the report columns. In this example, I drew 3 vertical lines that will create 4 report columns.
6. Now go to Main Area (below the header), right click the Main Area > Create > Table Line. This will one new line 1 just below the main area section, on the right screen you can see the Output Table section, now select the Line Type selection box and click on %LTYP1. After that, you can see that all 4 columns we created earlier in step 5.
7. Now we need to attach internal table columns to display on this smartforms columns, right click the first column > Create > Text this will create a new text icon just below the first CELL
Column.
8. Click on the TEXT1 icon we just created earlier, and click on the General Attributes tab.
10. Now this is very important, to define internal table field column on smartforms, you must type &itab-columnname& (begin and ended with a &). In this example I want this first column to display the carrid column in the SPFLI table, then I will write &itab-carrid&
12. On the Main Window, click on the TABLE section. In this part you have to define the internal table name used to display the data. In this example were using ITAB.
13. After that Click Activate Now the last step would be to create a program that will be the interface to call this smartform. 14. Execute SE38, create a program ZRPTEXERCISE
DATA FUNC_NAME TYPE RS38L_FNAM. DATA ITAB LIKE STANDARD TABLE OF SPFLI WITH HEADER LINE. START-OF-SELECTION. SELECT * INTO TABLE ITAB FROM SPFLI. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZSFEXERCISE' * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING FM_NAME = FUNC_NAME * 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. CALL FUNCTION FUNC_NAME * 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 = TABLES itab = ITAB * 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.
16. Now run the program. Heres the Smartforms beautiful report display.
Enter a name for the form and click on Create. Enter a short description for the form.
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
Give a name to the text and short description. Also enter the text you want to see on the form.
SAVE and Activate the Smart form. To know the function module that is generated upon activation of this smart form, click on Environment Function module name.
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.
Enter a name for the form and click on Create. Enter a short description for the form.
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:
Save and Activate the form. Now execute the Smart form. The output would be similar as shown below:
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.
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.
Enter the field names between the & (Ampersand) as shown below:
Save and Activate the Smart Form. Test run the Smart Form by clicking on Execute.
To position the secondary window to meet our needs, click on Form Painter.
The highlighted window in the above screenshot is the secondary window. Move the secondary window (and even stretch) according to your needs.
To close the above page design, click on Form Painter again. Now let us write some content in these areas. Now select the Page Secondary Window Right click on Secondary Window Create Text
Save and activate the Smart Form. Test run the Smart Form; you would get the following output:
Also name your window and give it a proper description. Do not change any other settings.
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:
Now select your Copies window, right click Select Create Flow Logic Program Lines
Do not forget to enter the variable TEXT in the output parameters. 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.
cenario: In this demo, we would create a small text as shown below with outline numbering as shown below
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.
Now select the tab Numbering and Outline: Enter the Top Outline Paragraph as the current paragraph name and select 1,2,3.. from the list for the Numbering Type.
Now create another paragraph format P2 as per the above method. In the tab Numbering and Outline of P2, do the following: Select the Top Outline Paragraph as P1 and put the left delimiter as .. If the left delimiter is not mentioned, the values would be displayed as 11, 12, 13... instead of 1.1, 1.2, 1.3
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.
Select the tab Output Options to mention the Smart Style to be used.
Now go to tab General Attributes. Select the icon Txt Editor (Though the text could be written directly on this screen, we are avoiding this method for easy understanding to the consultants who are used with SAP Script editor)
Return to the main screen of the Text. The screen would appear as follows:
Save and activate the Smart Form. Test run the Smart Form. Following would be the output:
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.
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.
Step10: Now Import SMART STYLE in to the SMART FORM as shown below.
Step12: Save and activate the smart form. The output is as shown below.
Step 3: Enter the required text and save. Now this text can be included in our smart form. Go back to smart forms initial screen, and create a smart form.
Step 5:In the text box general attributes TAB select Text module from the drop down list
Step 6: Give the name of the Text Module created and click on COPY button.
Step 7: The text in the text Module will be copied into the Text Editor.
Step 9: Save and activate. Execute and check the print preview.
Now to change the above editor to MS Word, do the following: Go to transaction I18N (Internationalization). Click on I18N Menu I18N Customizing I18N System Configuration (as shown in the screenshot below)
If you would like to use MS Word Editor in both Script and Smartforms, then check the both checkboxes as shown below:
Click on Yes. Now the following popup appears (related to Smartforms Editor):
Now the MS Word editor is available for both SAP Script and Smartforms. Result: In the SmartForms:
In SAP Script:
You can anytime revert to old editor by deactivation MS Word editor option using the transaction I18N.