SAPScripts Print Program Structure and Function

SAPScripts Print Program Structure and Function

The print program is used to print forms. The program retrieves the necessary data from database tables, defines the order of in which text elements are printed, chooses a form for printing and selects an output device and print options.

Function modules in a print program:

When you print a form you must use the statements OPEN_FORM and CLOSE_FORM. To combine forms into a single spool request use START_FORM and END_FORM.
To print text elements in a form use WRITE_FORM. The order in which the text elements are printed, is determined by the order of the WRITE_FORM statements. Note: for printing lines in the body, you can also use the WRITE_FORM_LINES function module.
To transfer control command to a form use CONTROL_FORM.
 

Structure of a print program

* Read data
Tables: xxx.

SELECT *
FROM xxx.

* Open form printing - Must be called before working with any of the other form function modules.
* Must be ended with function module CLOSE FORM
call function 'OPEN_FORM'.....
 

* To begin several identical forms containing different data within a single spool request, begin each form using START_FORM, and end it using END_FORM
call function 'START_FORM'.....
 

* Write text elements to a window of the form
call function 'WRITE_FORM'.....

* Ends spool request started with START_FORM
call function 'END_FORM'.....
 

* Closes form printing
call function 'CLOSE_FORM'...
 
 

OPEN_FORM function

Syntax:

CALL FUNCTION 'OPEN_FORM'

* EXPORTING
*   APPLICATION                       = 'TX'
*   ARCHIVE_INDEX                     =
*   ARCHIVE_PARAMS                    =
*   DEVICE                            = 'PRINTER'
*   DIALOG                            = 'X'
*   FORM                              = ' '
*   LANGUAGE                          = SY-LANGU
*   OPTIONS                           =
*   MAIL_SENDER                       =
*   MAIL_RECIPIENT                    =
*   MAIL_APPL_OBJECT                  =
*   RAW_DATA_INTERFACE                = '*'

* IMPORTING
*   LANGUAGE                          =
*   NEW_ARCHIVE_PARAMS                =
*   RESULT                            =

* EXCEPTIONS
*   CANCELED                          = 1
*   DEVICE                            = 2
*   FORM                              = 3
*   OPTIONS                           = 4
*   UNCLOSED                          = 5
*   MAIL_OPTIONS                      = 6
*   ARCHIVE_ERROR                     = 7
*   INVALID_FAX_NUMBER                = 8
*   MORE_PARAMS_NEEDED_IN_BATCH       = 9
*   SPOOL_ERROR                       = 10
*   OTHERS                            = 11
          .

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Some important parameters:
 
FORM Name of the form
DEVICE PRINTER : Print output using spool
TELEFAX: Fax output
SCREEN: Output to screen
OPTIONS Used to control attributes for printing or faxing (Number of copies, immediate output....
The input for the parameter is structure ITCPO.

CLOSE_FORM function

CALL FUNCTION 'CLOSE_FORM'

* IMPORTING
*   RESULT                         =
*   RDI_RESULT                     =
* TABLES
*   OTFDATA                        =

* EXCEPTIONS
*   UNOPENED                       = 1
*   BAD_PAGEFORMAT_FOR_PRINT       = 2
*   SEND_ERROR                     = 3
*   SPOOL_ERROR                    = 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.

Parameters:
 
RESULT Returns status information and print/fax parameters after the form has been printed. RESULT is of structure ITCPP.

WRITE_FORM function

CALL FUNCTION 'WRITE_FORM'

* EXPORTING
*   ELEMENT                        = ' '
*   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
*   OTHERS                         = 9
          .

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Some important parameters:
 
ELEMENT Specifies which text element is printed
WINDOW Specifies which window is printed
TYPE Specifies the output area of the main window. This can be:
TOP - Used for headers
BODY
BOTTOM - Used for footers
FUNCTION Specifies whether text is to be appended, replaced or added

Example of how to use the WRITE_FORM function module together with a script.

Form layout of the MAIN window

/E INTRODUCTION
* Dear Customer
...........................

/E ITEM_HEADER
IH Carrier, Departure

/E ITEM_LINE
IL &SBOOK-CARRID&, &SPFLI-DEPTIME&

/E CLOSING_REMARK

The print program

* Writing INTRODUCTION

CALL FUNCTION 'WRITE_FORM'

     EXPORTING
          ELEMENT                  = 'INTRODUCTION'
          FUNCTION                 = 'SET'
          TYPE                     = 'BODY'
          WINDOW                   = 'MAIN'

    EXCEPTIONS
         OTHERS                   = 8
          .

* Writing ITEM_HEADER

CALL FUNCTION 'WRITE_FORM'

     EXPORTING
          ELEMENT                  = 'ITEM_HEADER'
          FUNCTION                 = 'SET'
          TYPE                     = 'BODY'
          WINDOW                   = 'MAIN'

    EXCEPTIONS

         OTHERS                   = 8
          .

* Set ITEM_HEADER into TOP area of main window for subsequent pages

CALL FUNCTION 'WRITE_FORM'

     EXPORTING
          ELEMENT                  = 'ITEM_HEADER'
          FUNCTION                 = 'SET'
          TYPE                     = 'TOP'
          WINDOW                   = 'MAIN'

    EXCEPTIONS
         OTHERS                   = 8
          .

* Write ITEM_LINE

LOOP AT .....

   CALL FUNCTION 'WRITE_FORM'

        EXPORTING
             ELEMENT               = 'ITEM_LINE'
             FUNCTION              = 'SET'
             TYPE                  = 'BODY'
             WINDOW                = 'MAIN'

       EXCEPTIONS
            OTHERS                 = 8.
          .

ENDLOOP.

* Delete ITEM_HEADER from TOP area of main window

CALL FUNCTION 'WRITE_FORM'

     EXPORTING
          ELEMENT                  = 'ITEM_HEADER'
          FUNCTION                 = 'DELETE'
          TYPE                     = 'TOP'
          WINDOW                   = 'MAIN'

    EXCEPTIONS
         OTHERS                    = 8
          .

* Print CLOSING_REMARK

CALL FUNCTION 'WRITE_FORM'

     EXPORTING
          ELEMENT                  = 'CLOSING_REMARK'
          FUNCTION                 = 'SET'
          TYPE                          = 'BODY'
          WINDOW                   = 'MAIN'

    EXCEPTIONS
         OTHERS                    = 8
          .

START_FORM function

CALL FUNCTION 'START_FORM'

* EXPORTING
*   ARCHIVE_INDEX          =
*   FORM                   = ' '
*   LANGUAGE               = ' '
*   STARTPAGE              = ' '
*   PROGRAM                = ' '
*   MAIL_APPL_OBJECT       =

* IMPORTING
*   LANGUAGE               =
* EXCEPTIONS
*   FORM                   = 1
*   FORMAT                 = 2
*   UNENDED                = 3
*   UNOPENED               = 4
*   UNUSED                 = 5
*   SPOOL_ERROR            = 6
*   OTHERS                 = 7
          .

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

END_FORM function

CALL FUNCTION 'END_FORM'

* IMPORTING
*   RESULT                         =

* EXCEPTIONS
*   UNOPENED                       = 1
*   BAD_PAGEFORMAT_FOR_PRINT       = 2
*   SPOOL_ERROR                    = 3
*   OTHERS                         = 4
          .

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CONTROL_FORM function

The CONTROL_FORM function module allows you to create SapScript control statements from within an APAB program.

Syntax:

CALL FUNCTION 'CONTROL_FORM'

  EXPORTING
    command         =

* EXCEPTIONS
*   UNOPENED        = 1
*   UNSTARTED       = 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.

Example:

Protecting the text element ITEM_LINE

CALL FUNCTION 'CONTROL_FORM'

  EXPORTING
    COMMAND = 'PROTECT'.

CALL FUNCTION 'WRITE_FORM'
  EXPORTING
    TEXELEMENT = 'ITEM_LINE'.

CALL FUNCTION 'CONTROL_FORM'
  EXPORTING
    COMMAND = 'ENDPROTECT'.

Sapscripts Tips

Fast Links:
Other SapScipts Question
SapScript Question

ABAP Books
ABAP Certification, BAPI, Java, Web Programming, Smart Forms, Sapscripts Reference Books

SAP Scripts Tips
SAP Sapscripts Tips and Tricks

Best regards,
SAP Basis, ABAP Programming and Other IMG Stuff
http://www.erpgreat.com

All the site contents are Copyright © www.erpgreat.com and the content authors. All rights reserved.
All product names are trademarks of their respective companies.  The site www.erpgreat.com is in no way affiliated with SAP AG. 
Every effort is made to ensure the content integrity.  Information used on this site is at your own risk. 
 The content on this site may not be reproduced or redistributed without the express written permission of 
www.erpgreat.com or the content authors.