SAP Script Tutorial
SAP Script Tutorial
SAP Script Tutorial
Introduction
Often there are instances where an output from a SAP program is required on a physical paper
in a pre-designed format. Using normal ABAP code this is not possible. Instead SAP provides
an object called SAPSCRIPT to generate such kind of documents which can contain logos,
tables and other objects and which can look like pre-printed documents.
This tutorial focuses on the design and use of Layout sets in ABAP programs to generate
beautified output in SAP.
A layout set is a template designed in SAP to place the stream of data coming from a SAP
program on different parts of a physical page. The designer needs to lay out the various
elements that need to be printed on the page and store it as an object in the SAP system. An
ABAP program will subsequently call this object to generate an instance of the template – thus
generating an output document from the program.
In this tutorial we will cover subjects such as:
• Main elements of SAPScript
• Commands that can be used in a layout set
• How to include a graphical image
• Commands that can be used in SAPScript
• Step-by-step walkthrough of example
• Example layout set
• Example SAPScript code
-2-
- SAP Script - - Sudhanshu Singh -
Main Elements
Language
Language in which the data coming on to the layout set will be printed. Generally, this will be
the language that has been set up as default in the SAP system
Header
Section to define the various attributes of the layout set on a global level. Changing these
attributes will affect all the components of the layout set.
The various components of the header are explained below:
• Administration Information
This shows the information about the layout set – details of the designer, details of
changes occurring to the design, development class of the layout set and the language
details for the layout set.
• Standard Attributes
1. Description - Brief description or title of the layout set
2. Default paragraph - The base paragraph that is globally applicable to the
document. This can be overridden at lower level of the layout set by using other
paragraphs
3. Tab Stop - The base tab-stop that is globally applicable to the document. These
can be overridden at lower level of the layout set by using other tab stops
4. First Page - The start page of the layout set
5. Page Format
6. Orientation - The direction of printing the data on a page – P for portrait (vertical)
and L for landscape (horizontal)
7. Lines per inch
8. Characters/inch
• Font Attributes
Here the various attributes and the base font applicable to the document can be
defined. This font setting can be overridden at a lower level using the character
strings.
Paragraphs
Used to define the start and end positions for the different texts and objects that need to be
printed on the output document.
Character Strings
Used to define the fonts, and the formatting and printing styles for each and every character
that needs to be printed on the output document. The start of the character string is indicated
by <string name>, while the end of the character string is indicated by </>.
Pages
The designer needs to organize the template as a series of pages. When an actual output
document is printed, it will refer to each page for putting the data coming from the ABAP
program. The order of pages is also taken from the template i.e. the layout set defined.
Windows
Various parts of the output document can be conveniently organized on the pages using
windows. Thus the data stream coming from the ABAP program can be logically grouped into
various parts and can be placed on different locations on a page.
There are 2 main types of windows that can be used in a layout set:
-3-
- SAP Script - - Sudhanshu Singh -
• MAIN - A layout set can have only one MAIN window which is created by default. This
window can flow over multiple pages.
• CONSTANT - A layout set can have any number of constant windows. A CONSTANT
window can be used once per page.
Text Elements
Any text that needs to be written on the output document should be placed within a text
element. This includes constant text as well as variable data like internal table data coming
from the ABAP program.
It is advisable to group logically related data within one text element.
The fields of various tables defined in the ABAP program will be included under these text
elements. These fields are carriers of data. Every field should be included in a pair of ‘&’
characters.
Page Windows
All the windows that form a page of the layout set.
Choose the window and click the Text Elements button to go to the Layout Set Editor. This
consists of 2 parts. The small space on the left is for specifying the type of command, while
the window adjacent to it is for writing the command or the text that needs to go under a text
element.
-4-
- SAP Script - - Sudhanshu Singh -
Command Purpose
* Default paragraph
= Extended Line
( Raw Line
/ Line Feed
/: Command Line
/* Comment Line
/E Text Element
<PN> This is either the name of the paragraph that should be applicable from that
line of the layout set.
-5-
- SAP Script - - Sudhanshu Singh -
• The graphical element (like company logo) should be in valid graphic file like .bmp or
.jpg format.
• Use appropriate software to convert the above file into a .TIFF file.
• Use report RSTXLDMC to upload this file as a text module in SAP.
• Execute the above program from the ABAP/4 editor.
• Enter the location of the .TIFF file on the PC.
• Specify BMON or BCOL as the raster image type.
• The SAP system suggests a name for the file (like ZHEX-MARCO-*). The * indicates
the type of file. For e.g. if the file contains a logo then the name can be ZHEX-MACRO-
LOGO.
• The ID should be ‘ST’ and give the logon language.
• Running the program will convert this .TIFF file into a text element.
• Incorporate this converted logo in the appropriate window under the appropriate text
element by giving INCLUDE ZHEX-MACRO-LOGO OBJECT TEXT ID ST in the first
line.
-6-
- SAP Script - - Sudhanshu Singh -
Commands
The commands that are commonly used in a sap script are as follows:
Command Use
New-page <page name> Prints the text following this command on a new
page (when a page name is specified then that
page is taken as the next page).
Protect ….. Endprotect This acts like a conditional page break. Putting the
text within this command prevents the breaking of
the text across multiple pages. If there is not
enough space for the entire paragraph to be
printed in the space remaining on the page, then
the entire paragraph is printed on the next page.
Box <xpos> <ypos> <width> <height> The BOX command draws a box as per the
<frame> <intensity> specifications. The x y co-ordinates are for the
Position <xorigin> <yorigin> <window> upper left corner relative to the values in the
<page> position command.
Size <width> <height> <window> The POSITION command is used to set the x y
<page> co-ordinates with respect to the start position of
the window.
The SIZE command is used to specify the size of
the box that we need to draw.
Varying these parameters also helps to draw a line
instead of a box.
-7-
- SAP Script - - Sudhanshu Singh -
-8-
- SAP Script - - Sudhanshu Singh -
-9-
- SAP Script - - Sudhanshu Singh -
Pages Attributes
FIRST First Page
Standard attributes
Next page FIRST
Page counter
Mode START
Numbering type Arabic numerals
Page window
HEADER Left margin 00.00 CM
Upper margin 00.00 CM
Window width 20.00 CM
Window height 04.00 CM
MAIN Left margin 00.00 CM
Upper margin 05.00 CM
Window width 20.00 CM
Window height 20.00 CM
FOOTER Left margin 00.00 CM
Upper margin 25.00 CM
Window width 20.00 CM
Window height 04.00 CM
MAIN
Element MAIN
P1 <B>Customer/Supplier:</>,,&KNA1-NAME1&
/
P1 <B>PO No:</>,,&EKPO-EBELN&
/
P1 <B>Part No:</>,,&MAKT-MATNR&
/
P1 <B>Description:</>,,&MAKT-MAKTX&
/
P1 <B>Quantity:,,</>&EKPO-MENGE&
/
P1 <B>Sign:</>&uline(81)&
/
P1 <B>Date:</>&EKKO-AEDAT&
- 10 -
- SAP Script - - Sudhanshu Singh -
FOOTER
Element FOOTER
/: POSITION XORIGIN 2 CM YORIGIN '-0.5 CM'
/: BOX XPOS 1 CM YPOS 1 CM WIDTH 18 CM HEIGHT 1 CM FRAME 10 TW INTENSITY 10
/
/
/
P2 ,,<B>PLEASE SIGN THE PO BEFORE DISPATCH</>
/
/
- 11 -
- SAP Script - - Sudhanshu Singh -
Example Code
REPORT ZPSAPSCRIPT.
TABLES: EKKO, EKPO, KNA1, USR01, MARA, MAKT.
CLEAR EKPO.
SELECT SINGLE * FROM EKPO
WHERE EBELN = P_EBELN AND EBELP = P_EBELP.
CLEAR KNA1.
SELECT SINGLE NAME1 FROM KNA1
INTO KNA1-NAME1
WHERE KUNNR = EKPO-KUNNR.
CLEAR MAKT.
SELECT SINGLE MAKTX FROM MAKT
INTO MAKT-MAKTX
WHERE MATNR = EKPO-MATNR AND SPRAS = SY-LANGU.
CLEAR USR01.
SELECT SINGLE * FROM USR01 WHERE BNAME = SY-UNAME.
- 12 -
- SAP Script - - Sudhanshu Singh -
LANGUAGE = SY-LANGU
OPTIONS = ZOPTION
IMPORTING
LANGUAGE = SY-LANGU
EXCEPTIONS
OTHERS = 1.
- 13 -