This document provides an overview of SAP Scripts. It discusses how scripts are used to create forms and document layouts in SAP. It provides examples of how to create a delivery note using scripts and form painter. It also discusses how to fetch and display data, print forms, and convert output to PDF format. Total and subtotal calculations in scripts are demonstrated using a sales order example.
2. Introduction
Script is a text composer.
Used to create the layout.
Script is Client and language dependent.
SAPScript Transaction codes
SE71 - Form painter
SE72 - Style maintenance
SE78 - SapScript Graphics Management
SO10 - Create standard text module
3. Ex 1 : Creating Delivery Note.
Go to Transaction code SE71 and enter the form name and
click on create.
14. Paragraph format and Character format :
Paragraph format : If you want to decide font
size and font style for a paragraph then use
Paragraph format .
15.
16.
17.
18. • Character format : If you want to highlight the words
then use character format.
27. • Click on Stored on Document Server.
• Enter the Logo name and Resolution.
28. • Script or Smart forms will get the data from program called
driver program or print program .
• SE38 -> Enter the program name and click on create.
• TABLES : LIKP , TVKO.
DATA : WA_SALES TYPE ADRC.
PARAMETERS : P_VBELN TYPE LIKP-VBELN.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM PRINT_DATA.
29. • FORM GET_DATA .
* GET THE DATA FROM DELIVERY DOC HEADER
SELECT SINGLE * FROM LIKP
WHERE VBELN = P_VBELN.
* GET THE SALES ORG ADDRESS
SELECT SINGLE * FROM TVKO
WHERE VKORG = LIKP-VKORG.
* GET THE DATA FROM ADRESS TABLE ADRC
SELECT SINGLE * FROM ADRC
INTO WA_SALES WHERE ADDRNUMBER = TVKO-ADRNR.
ENDFORM. " GET_DATA
35. • To get Sold to party address.
• TABLES : LIKP , TVKO , KNA1.
DATA : WA_SOLD TYPE ADRC.
• * * * GET THE SOLD TO PARTY ADRESS
SELECT SINGLE * FROM KNA1
WHERE KUNNR = LIKP-KUNNR.
SELECT SINGLE * FROM ADRC
INTO WA_SOLD WHERE ADDRNUMBER = KNA1-ADRNR.
36. • call function 'WRITE_FORM'
EXPORTING
ELEMENT = 'SOLD'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'ADD2'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
74. Converting Script OTF data to PDF
TYPES : BEGIN OF T_MAKT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF T_MAKT.
DATA : IT_MAKT TYPE TABLE OF T_MAKT,
WA_MAKT TYPE T_MAKT.
DATA : LC_OPTION TYPE ITCPO,
OTFDATA TYPE TABLE OF ITCOO,
FILE_SIZE TYPE I,
LINES TYPE TABLE OF TLINE .
SELECT-OPTIONS : S_MATNR FOR WA_MAKT-MATNR.
83. • TYPES : BEGIN OF TY,
VBELN TYPE VBRP-VBELN,
POSNR TYPE VBRP-POSNR,
NETWR TYPE VBRP-NETWR,
END OF TY.
DATA : IT_VBRP TYPE TABLE OF TY,
WA_VBRP TYPE TY.
DATA : TOTAL TYPE VBRP-NETWR,
SUB_TOTAL TYPE VBRP-NETWR.
SELECT-OPTIONS : S_VBELN FOR WA_VBRP-VBELN.
86. • LOOP AT IT_VBRP INTO WA_VBRP.
call function 'WRITE_FORM'
EXPORTING
ELEMENT = 'TEXT_ALL'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
* EXCEPTIONS
* ELEMENT = 1
* FUNCTION = 2
* TYPE = 3
* UNOPENED = 4
* UNSTARTED = 5
* WINDOW = 6
* BAD_PAGEFORMAT_FOR_PRINT = 7
* SPOOL_ERROR = 8
* CODEPAGE = 9
* OTHERS = 10
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
TOTAL = TOTAL + WA_VBRP-NETWR.
SUB_TOTAL = SUB_TOTAL + WA_VBRP-NETWR.
87. • AT END OF VBELN.
call function 'WRITE_FORM'
EXPORTING
ELEMENT = 'TEXT_SUB'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
* EXCEPTIONS
* ELEMENT = 1
* FUNCTION = 2
* TYPE = 3
* UNOPENED = 4
* UNSTARTED = 5
* WINDOW = 6
* BAD_PAGEFORMAT_FOR_PRINT = 7
* SPOOL_ERROR = 8
* CODEPAGE = 9
* OTHERS = 10
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
CLEAR SUB_TOTAL.
ENDAT.
88. • CLEAR WA_VBRP.
ENDLOOP.
call function 'WRITE_FORM'
EXPORTING
ELEMENT = 'TEXT_TOTAL'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
* EXCEPTIONS
* ELEMENT = 1
* FUNCTION = 2
* TYPE = 3
* UNOPENED = 4
* UNSTARTED = 5
* WINDOW = 6
* BAD_PAGEFORMAT_FOR_PRINT = 7
* SPOOL_ERROR = 8
* CODEPAGE = 9
* OTHERS = 10
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
call function 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* SEND_ERROR = 3
* SPOOL_ERROR = 4
* CODEPAGE = 5
* OTHERS = 6
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
ENDFORM. " P
89. Uses of FM: CONTROL_FORMin SAP Script
• TYPES : BEGIN OF T_MAT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF T_MAT.
DATA : IT_MAKT TYPE TABLE OF T_MAT,
WA_MAKT TYPE T_MAT.
DATA : IN TYPE I.
SELECT-OPTIONS : S_MATNR FOR WA_MAKT-MATNR.
90. • START-OF-SELECTION .
PERFORM FETCH_DATA.
PERFORM PRINT_PAGE.
• FORM FETCH_DATA .
SELECT MATNR SPRAS MAKTX FROM MAKT INTO TABLE IT_M
AKT
WHERE MATNR IN S_MATNR.
ENDFORM. " FETCH_DATA
91. • FORM PRINT_PAGE .
call function 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
* DIALOG = 'X'
FORM = 'ZCONTROL'
* LANGUAGE = SY-LANGU
* OPTIONS =
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
92. • LOOP AT IT_MAKT INTO WA_MAKT.
IN = IN + 1.
call function 'WRITE_FORM'
EXPORTING
ELEMENT = 'MATA'
* FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
* EXCEPTIONS
* ELEMENT = 1
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
93. •
IF IN = 10.
call function 'CONTROL_FORM'
exporting
COMMAND = 'NEW-PAGE'
* EXCEPTIONS
* UNOPENED = 1
* UNSTARTED = 2
* OTHERS = 3
.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.
CLEAR IN.
ENDIF.
ENDLOOP.