SAP Smart Forms
SAP Smart Forms
SAPBRAIN.com
HOME TUTORIALS ARTICLES PROJECTS JOBS TOOLS REFERENCES CHAT FORUM GUESTS
You can insert static and dynamic tables. This includes line feeds in individual table cells, triggering events for table
headings and subtotals, and sorting data before output.
SAP Functional Tutorials
You can check individual nodes as well as the entire form and find any existing errors in the tree structure. The data flow
analysis checks whether all fields (variables) have a defined value at the moment they are displayed. FI (Financial)
CO (Controlling)
SAP Smart Forms allow you to include graphics, which you can display either as part of the form or as background graphics. HR (Human Resource)
You use background graphics to copy the layout of an existing (scanned) form or to lend forms a company-specific look. LO (Logistics)
MM (Materials Management)
During printout, you can suppress the background graphic, if desired.
PP (Production Planning)
QM (Quality Management)
SAP Smart Forms also support postage optimizing. SD (Sales and Distribution)
TR (Treasury and cash)
Also read SAP Note No. 168368 - Smart Forms: New form tool in Release 4.6C WM (Warehouse Management)
PS (project Systems)
PM (plant Maintenance)
What Transaction to start SAP Smart Forms?
CA (Cross Application)
Execute transaction SMARTFORMS to start SAP Smart Forms.
SAP Smart Forms allows you to reduce considerably the implementation costs of mySAP.com solutions since forms can be SAP Interview questions
adjusted in minimum time.
Architecture faqs
You design a form using the graphical Form Painter and the graphical Table Painter. The form logic is represented by a BDC faqs
hierarchy structure (tree structure) that consists of individual nodes, such as nodes for global settings, nodes for texts, nodes DATADICTIONARY faqs
for output tables, or nodes for graphics. Logical Database Faqs
Modularization Faqs
Reports Faqs
To make changes, use Drag & Drop, Copy & Paste, and select different attributes.
Transactions Faqs
These actions do not include writing of coding lines or using a Script language.
Using your form description maintained in the Form Builder, Smart Forms generates a function module that encapsulates
SAP References
layout, content and form logic. So you do not need a group of function modules to print a form, but only one.
transaction codes
For Web publishing, the system provides a generated XML output of the processed form. System Fields
Function Modules
Smart Forms provides a data stream called XML for Smart Forms (XSF) to allow the use of 3rd party printing tools. XSF SAP TABLES
passes form content from R/3 to an external product without passing any layout information about the Smart Form. code optimization
SAP Smart Forms have the following advantages: SQL Trace tool
Runtime Analysis
1. The adaption of forms is supported to a large extent by graphic tools for layout and logic, so that no programming knowledge LSMW
is necessary (at least 90% of all adjustments). Therefore, power user forms can also make configurations for your business ABAP Query
processes with data from an SAP system. Consultants are only required in special cases. CTS
3. Output of background graphics, for form design in particular the use of templates which were scanned.
5. User-friendly and integrated Form Painter for the graphical design of forms
8. Data interface in XML format (XML for Smart Forms, in short XSF)
12. Interactive Web forms with input fields, pushbuttons, radio buttons, etc. (Basis-Release 6.10)
According to SAP, you need neither have any programming knowledge nor use a Script language to adapt standard forms.
However, basic ABAP programming skills are required only in special cases (for example, to call a function module you
created or for complex and extensive conditions).
● First Page -> Header Window (Cursor at First Page then click Edit -> Node -> Create)
Here, you can specify your title and page numbering
&SFSY-PAGE& (Page 1) of &SFSY-FORMPAGES(Z4.0)& (Total Page)
Global definitions
Variable name Type assignment Reference type
ITAB2 TYPE Table Structure
REPORT ZSMARTFORM.
TABLES: MKPF.
ENDSELECT.
if sy-subrc <> 0.
WRITE: / 'ERROR 1'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
* 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
GS_MKPF = INT_MKPF
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.
You can create additional fonts and style with transaction SMARTSTYLES
This can then be define in the paragraph and character formats, which you can then be assign to texts and fields in the Smart
Form.
The character formats includes effects such as superscript, subscript, barcode and font attributes.
a) Multiple page formats are possible in smartforms which is not the case in SAPScripts
Contributed by : SAP ABAP/4 Programming, Basis Administration, Configuration Hints and Tips
f) Unlike sapscripts (RSTXSCRP), you cannot upload/download Smartform to your local harddisk.
It was said that it was provided in CRM 3.0 version, but not available in R/3. You can download smartforms into Local PC in a
XML format. In the same way you can upload this XML format into Smartform. From the smartform editor itself you can call
download option, if you are working in CRM 3.0 environment.
In R3 also, you can download into XML format. However, it's not sure about uploading. Refer to the program
'SF_XSF_DEMO'.
In 4.7 Enterprise, other have seen this utlity which is completey missing in 4.6c. There is functionality to downlaod a complete
form or only a particular node. (Utilities -> Download form). It will create a XML file and save it in the hard disk.
For others, if you want to download/upload the Smartforms source, you will need the help from the Basis people. What
you can do is to create a Transport and then FTP down to your local harddisk. When you need the Smartform source
in another system, you have FTP up the Smartforms file back to the SAP server. Finally, the Basis team, will tp it into
your system.
g) The protect and endprotect command in sapscript doesn't work with smartforms. For example on a invoice: First data of
position no 80. is printed on page one, other data of position no 80 is printed on page 2. And there's nothing you can do about
it. Actually, there is something you can do about it. By using a folder node and checking the 'protect' checkbox, everything
in that folder will be page protected.
I have heard that Smart Forms replaces SAPscript. What does "replace" mean?
It does not mean that SAPscript is removed from the Basis shipment. Even as of Basis Release 4.6C, SAPscript remains part of
the SAP standard and there are no plans to remove it. Since Smart Forms is currently, and will continue to be, the tool for form
maintenance for mySAP.com solutions, our further development efforts will focus on Smart Forms, not on SAPscript.
This is basically a function module, called FB_MIGRATE_FORM. You can start this function module by hand (via SE37), or
create a small ABAP which migrates all SAPscript forms automatically.
You could also write a small batch program calling transaction SMARTFORMS and running the migration tool.
&SFSY-DATE&
Displays the date. You determine the display format in the user master record.
&SFSY-TIME&
Displays the time of day in the form HH:MM:SS.
&SFSY-PAGE&
Inserts the number of the current print page into the text. You determine the format of the page number (for example, Arabic,
numeric) in the page node.
&SFSY-FORMPAGES&
Displays the total number of pages for the currently processed form. This allows you to include texts such as'Page x of y' into
your output.
&SFSY-JOBPAGES&
Contains the total page number of all forms in the currently processed print request.
&SFSY-WINDOWNAME&
Contains the name of the current window (string in the Window field)
&SFSY-PAGENAME&
Contains the name of the current page (string in the Page field)
&SFSY-PAGEBREAK&
Is set to 'X' after a page break (either automatic [Page 7] or command-controlled [Page 46])
&SFSY-MAINEND&
Is set as soon as processing of the main window on the current page ends
&SFSY-EXCEPTION&
Contains the name of the raised exception. You must trigger your own exceptions, which you defined in the form interface,
using the user_exception macro (syntax: user_exception <exception name >).
Simple example; invoice with table output of flight booking for one customer
SF_EXAMPLE_02
Similar to SF_EXAMPLE_01 but with subtotals
SF_EXAMPLE_03
Similar to SF_EXAMPLE_02, whereby several customers are selected in the application program; the form is called for each
customer and all form outputs are included in an output request
Create a loop around the table. Put a Command node before the table in the loop that forces a NEWPAGE on whatever
condition you want. Then only loop through a subset of the internal table (based on the conditions in the Command node) of the
elements in the Table node.
Then in your window under OUTPUT OPTIONS you include this SMARTSTYLE and use the Paragraph and character
formats.
Line in Smartform
Either you can use a window that takes up the width of your page and only has a height of 1 mm.
Or you can just draw "__" accross the page and play with the fonts so that it joins each UNDER_SCORE.
Difference between 'forminterface' and 'global definitions' in global settings of smart forms
Form Interface is where you declare what must be passed in and out of the smartform (in from the print program to the
smartform and out from the smartform to the print program).
Global defs. is where you declare data to be used within the smartform on a global scope.
ie: anything you declare here can be used in any other node in the form.
Once you have activated the smartform, go to the environment -> function module name. There you can get the name of
funtion module name.
The key thing is the program that calls it. for instance, the invoice SMARTFORM LB_BIL_INVOICE is ran by the program
RLB_INVOICE.
This program uses another FM to determine the name of the FM to use itself. The key thing is that when it calls this FM (using
a variable to store the actual name), that the parameters match the paramters in your smartform.
Another thing to note is that the FM name will change wherever the SF is transported to.
Here is the code that can be use to determine the internal name of the function module:
Code:
message 'e427'.
endif.
move internalname to sf_label.
endif.
It checks to see if the sf_label starts with a '/', which is how the internal names start. if it does, the name has already been
converted. If not, it calls the FM and converts the name.
It happens when the two printers having different Printer Controls' if you go to SPAD Menu (Spool Administrator Menu) you
can see the difference in the Printer Control and if you make the Printer control setting for both the printers as same. then it will
be ok. and also u have to check what is the device type used for both the output devices.
Easy - page FRONT lists page CONTACTS as next page and CONTACTS lists FRONT as next page. Since CONTACTS does
not contain a MAIN window, it will print the contacts info and then continue on to FRONT for the rest of the main items.
Additionally, set print mode on FRONT to D (duplex) and set CONTACTS to 'blank' (for both resource name and print mode -
this is the only way to get to the back of the page).
A smartform is transported no differently than any other object. if it is assigned to a development class that is atteched to a
transport layer, it will be transported.
The definition is transported, and when called, the function module is regenerated.
This leads to an interetsing situation. On the new machine, it is very likely the function module name will be different than the
name on the source system. Make sure, before you call the function module, you resolve the external name to the internal name
using the 'SSF_FUNCTION_MODULE_NAME' function module.
Typically, generate the SF, then use the pattern to being in the interface. Then change the call function to use the name you get
back from the above function module.
It was easy with SAPscript, but how to do it with SF's. For 4.7 version if you are using tables, there are two options for
protection against line break:
- You can protect a line type against page break.
- You can protect several table lines against page break for output in the main area.
the file using Drag&Drop. Otherwise, create the table lines as subnodes of the file.
- Choose the Output Options tab page of the file node and set the Page Protection option. All table lines that are in the file
with the Page Protection option set are output on one page.
In 4.6, Alternatively in a paragraph format use the Page protection attribute to determine whether or not to display a paragraph
completely on one page. Mark it if you want to avoid that a paragraph is split up by a page break. If on the current page (only in
the main window) there is not enough space left for the paragraph, the entire paragraph appears on the next page.
A barcode label is a special symbology to represent human readable information such as a material number or batch number
in machine readable format.
There are different symbologies for different applications and different industries. Luckily, you need not worry to much about
that as the logistics supply chain has mostly standardized on 3 of 9 and 128 barcode symbologies - which all barcode readers
support and which SAP support natively in it's printing protocols.
You can print barcodes from SAP by modifying an existing output form.
Behind every output form is a print program that collects all the data and then pass it to the form. The form contains the layout
as well as the font, line and paragraph formats. These forms are designed using SAPScript (a very easy but frustratingly
simplistic form format language) or SmartForms that is more of a graphical form design tool.
Barcodes are nothing more than a font definition and is part of the style sheet associated with a particular SAPScript form. The
most important aspect is to place a parameter in the line of the form that points to the data element that you want to represent as
barcode on the form, i.e. material number. Next you need to set the font for that parameter value to one of the supported
barcode symbologies.
The next part of the equation can be a bit tricky as you will need to get a printer to print that barcode font. Regular laser printers
does not normally print barcode fonts, only specialized industrial printers that is specifically designed to support that protocol
and that uses specialized label media and heat transfer (resin) ribbon to create the sharp image required for barcodes.
Not to fear though, there are two ways to get around this:
- You can have your IT department do some research -
http://www.sapbrainsonline.com/ARTICLES/TECHNICAL/SMARTFORMS/smartforms.html (14 of 15)1/17/2008 9:11:47 AM
SAP SmartForms
most laser printers can accept a font cartridge/dimm chip (similar to computer memory), called a BarDIMM that will allow a
laser printer to support the printing of barcodes.
- Secondly, you can buy software that you can upload in your SAP print Server that will convert the barcode symbology as an
image that will print on a regular laser printer. I found that this option results in less sharper barcodes. This option is really if
you need to convert a large quantity of printers (>10) to support barcodes.
These programs are highly complex exercises in industrial engineering and ergonomics because of the limited screen sizes and
limited ability to accept keyboard input. The user is instructed step-by-step and only scan and push F-keys to interact with the
SAP system. Scan, scan, beep, beep, enter - highly automated.
Search