Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SAP script

Former Member
0 Likes
511

Hi all,

I am new in ABAP.

Once your SAPscripts are created, you have to used an abap program to called the sapscripts form.

I have seen the above lines from one material.

How can we connect the sapscript to ABAP program and what are the uses ?

plz explain me with code examples

thanks and regards,

raghul.

5 REPLIES 5
Read only

Former Member
0 Likes
483

Hi,

Check the example Program.

REPORT ZPSAPSCRIPT.
TABLES : EKKO,                        
         EKPO,                        
         KNA1,                        
         USR01,                       
         MARA,                        
         MAKT.

DATA : BEGIN OF ZOPTION.
        INCLUDE STRUCTURE ITCPO.
DATA : END OF ZOPTION.

PARAMETERS: P_EBELN LIKE EKKO-EBELN,
            P_EBELP LIKE EKPO-EBELP.

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.

ZOPTION-TDDEST    = USR01-SPLD.        "Output device (printer)
ZOPTION-TDIMMED   = 'X'.               "Print immediately
ZOPTION-TDDELETE  = 'X'.               "Delete after printing
ZOPTION-TDPROGRAM = 'ZPQRPRNT'.        "Program Name

CALL FUNCTION 'OPEN_FORM'
     EXPORTING
         APPLICATION        = 'TX'
*         ARCHIVE_INDEX      = ' '
*         ARCHIVE_PARAMS     = ' '
         DEVICE             = 'PRINTER'
         DIALOG             = ' '
         FORM               = 'Z_TESTSCRIPT'
         LANGUAGE           = SY-LANGU
         OPTIONS            = ZOPTION
     IMPORTING
          LANGUAGE           = SY-LANGU
       EXCEPTIONS
         OTHERS     = 1.

CALL FUNCTION 'WRITE_FORM'
     EXPORTING
         ELEMENT       = 'HEADER'
*         FUNCTION      = 'SET'
*         TYPE          = 'BODY'
         WINDOW        = 'HEADER'
     EXCEPTIONS
          ELEMENT       = 1.

CALL FUNCTION 'WRITE_FORM'
     EXPORTING
         ELEMENT       = 'MAIN'
*         FUNCTION      = 'SET'
*         TYPE          = 'BODY'
         WINDOW        = 'MAIN'
     EXCEPTIONS
          ELEMENT       = 1.

CALL FUNCTION 'WRITE_FORM'
     EXPORTING
         ELEMENT       = 'FOOTER'
*         FUNCTION      = 'SET'
*         TYPE          = 'BODY'
         WINDOW        = 'FOOTER'
     EXCEPTIONS
          ELEMENT       = 1.

CALL FUNCTION 'CLOSE_FORM'
     EXCEPTIONS
          UNOPENED = 1
          OTHERS   = 2.

Regards,

Balakumar.G

Reward Points if helpful.

Read only

Former Member
0 Likes
483

Hi Rahul,

See below sample sapscript for abap program,

TABLES:ZST2.

DATA: LANG LIKE SY-LANGU.

Data: itab LIKE zst2 OCCURS 0 WITH HEADER LINE.

select * from zst2 into TABLE itab.

call function 'OPEN_FORM'

EXPORTING

DEVICE = 'PRINTER'

DIALOG = 'X'

FORM = 'ZFORM4'

LANGUAGE = LANG

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

CODEPAGE = 11

.

call function 'WRITE_FORM'

EXPORTING

ELEMENT = 'ZS1'

TYPE = 'BODY'

WINDOW = 'MAIN'

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9.

LOOP at itab.

call function 'WRITE_FORM'

EXPORTING

ELEMENT = 'ZS2'

TYPE = 'BODY'

WINDOW = 'MAIN'

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

.

ENDLOOP.

call function 'CLOSE_FORM'

EXCEPTIONS

UNOPENED = 1

BAD_PAGEFORMAT_FOR_PRINT = 2

SEND_ERROR = 3

SPOOL_ERROR = 4

CODEPAGE = 5

.

Reward if Useful,

Thx,

S.Suresh.

Read only

former_member210123
Active Participant
0 Likes
483

There are two things.Print Program and SAP Script.The print program calls the sap script. Function module 'Open_form' opens the form and close_form closes the form.

The elements in the windows are called using fm write_form.

Read only

Former Member
0 Likes
483

Hi,

it may help u.

&----


*& Report ZTEST12121

*& SAPScripts Example 1

&----


REPORT ztest12121.

*DATABASE TABLES

TABLES: ekko,ekpo,lfa1.

*INTERNAL TABLES AND STRUCTURES

DATA i_ekko LIKE ekko.

DATA i_ekpo LIKE ekpo OCCURS 0 WITH HEADER LINE.

DATA i_lfa1 LIKE lfa1.

*PARAMETERS

PARAMETERS: p_ebeln LIKE ekko-ebeln.

*VARIABLES

DATA MAT TYPE STRING VALUE 'MAT NO'.

DATA iTe TYPE STRING VALUE 'ITEM NO'.

DATA QTY TYPE STRING VALUE 'QTY'.

DATA UOM TYPE STRING VALUE 'UOM'.

DATA NET TYPE STRING VALUE 'NET PRICE'.

Data var type integer value 0.

*DATABASE SELECTS

*Header data

SELECT SINGLE * FROM ekko INTO i_ekko WHERE ekko~ebeln = p_ebeln.

IF sy-subrc = 0.

*Item Data

SELECT * FROM ekpo INTO TABLE i_ekpo WHERE ekpo~ebeln = p_ebeln.

IF sy-subrc NE 0.

WRITE 'PURCHASE DOCUMENT ITEM DATA ERROR'.

ELSE.

*Vendor Details

SELECT SINGLE * FROM lfa1 INTO i_lfa1 WHERE lfa1~lifnr = i_ekko-lifnr.

IF sy-subrc NE 0.

WRITE 'VENDOR DOCUMENT ITEM DATA ERROR'.

ENDIF.

ENDIF.

ELSE.

WRITE 'THIS PURCHASE DOCUMENT NUMBER DOESNOT EXISTS'.

ENDIF.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

  • APPLICATION = 'TX'

  • ARCHIVE_INDEX =

  • ARCHIVE_PARAMS =

  • DEVICE = 'PRINTER'

  • DIALOG = 'X'

form = 'ZSCRIPT_1'

language = sy-langu

  • OPTIONS =

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJECT =

  • RAW_DATA_INTERFACE = '*'

  • SPONUMIV =

  • 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

  • CODEPAGE = 11

  • OTHERS = 12

.

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 'WRITE_FORM'

EXPORTING

ELEMENT = 'OFFICEAD'

FUNCTION = 'SET'

TYPE = 'BODY'

WINDOW = 'OFFICEAD'

.

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 'WRITE_FORM'

EXPORTING

ELEMENT = 'PODET'

FUNCTION = 'SET'

TYPE = 'BODY'

WINDOW = 'PODET'

.

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 'WRITE_FORM'

EXPORTING

ELEMENT = 'TOP'

FUNCTION = 'SET'

TYPE = 'TOP'

WINDOW = 'MAIN'

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT I_EKPO.

var = i_ekpo-netpr * i_ekpo-menge.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'BODY'

FUNCTION = 'SET'

TYPE = 'BODY'

WINDOW = 'MAIN'

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

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.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Cheers,

vasavi.

Read only

Former Member
0 Likes
483

Hi

i am sending the sample code.

TYPES:BEGIN OF ST_LFA1,

LIFNR TYPE LFA1-LIFNR,

NAME1 TYPE LFA1-NAME1,

LAND1 TYPE LFA1-LAND1,

ORT01 TYPE ORT01,

REGIO TYPE REGIO,

END OF ST_LFA1.

TYPES:BEGIN OF ST_EKKO,

EBELN TYPE EKKO-EBELN,

BUKRS TYPE EKKO-BUKRS,

AEDAT TYPE EKKO-AEDAT,

ERNAM TYPE EKKO-ERNAM,

BSTYP TYPE EKKO-BSTYP,

LIFNR TYPE EKKO-LIFNR,

END OF ST_EKKO.

TYPES:BEGIN OF ST_EKPO,

EBELN TYPE EKPO-EBELN,

EBELP TYPE EKPO-EBELP,

LOEKZ TYPE EKPO-LOEKZ,

AEDAT TYPE EKPO-AEDAT,

MATNR TYPE EKPO-MATNR,

NETWR TYPE EKPO-NETWR,

END OF ST_EKPO.

&--


internal table,work area declaration--

DATA:WA_LFA1 TYPE ST_LFA1,

IT_LFA1 TYPE STANDARD TABLE OF ST_LFA1,

WA_EKKO TYPE ST_EKKO,

IT_EKKO TYPE STANDARD TABLE OF ST_EKKO,

WA_EKPO TYPE ST_EKPO,

IT_EKPO TYPE STANDARD TABLE OF ST_EKPO.

&--


data declaration--

DATA:TOTAL TYPE EKPO-NETWR,

V_EBELN TYPE EKKO-EBELN.

DATA: V_ITEM(20) TYPE C.

&--


parameter for purchase document number--

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS P_PURDOC LIKE V_EBELN.

SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.

PERFORM GET_DATA_FROM_EKKO.

PERFORM GET_DATA_FROM_LFA1.

PERFORM GET_DATA_FROM_EKPO.

&--


grand total--

LOOP AT IT_EKPO INTO WA_EKPO.

TOTAL = TOTAL + WA_EKPO-NETWR.

CLEAR WA_EKPO.

ENDLOOP.

&--


open form--

CALL FUNCTION 'OPEN_FORM'

EXPORTING

DEVICE = 'PRINTER'

FORM = 'Z_50886_VENDOR'

LANGUAGE = SY-LANGU

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

CODEPAGE = 11

OTHERS = 12

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&--


write form for header details--

READ TABLE IT_EKKO INTO WA_EKKO INDEX 1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'HEAD'

WINDOW = 'HEADER'

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.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&--


write form for item details--

LOOP AT IT_EKPO INTO WA_EKPO.

CONCATENATE WA_EKKO-EBELN WA_EKPO-EBELP INTO V_ITEM.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'ITEM'

WINDOW = 'MAIN'

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.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDLOOP.

&--


write form for vendor details--

READ TABLE IT_LFA1 INTO WA_LFA1 INDEX 1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'VENDOR'

WINDOW = 'ADDRESS'

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.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&--


write form for grand total--

CALL FUNCTION 'WRITE_FORM'

EXPORTING

WINDOW = 'TOTAL'

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.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&--


close form--

CALL FUNCTION 'CLOSE_FORM'

EXCEPTIONS

UNOPENED = 1

BAD_PAGEFORMAT_FOR_PRINT = 2

SEND_ERROR = 3

SPOOL_ERROR = 4

CODEPAGE = 5

OTHERS = 6

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&----


*& Form get_data_from_ekko

&----


FORM GET_DATA_FROM_EKKO .

SELECT EBELN

BUKRS

AEDAT

ERNAM

BSTYP

LIFNR

FROM EKKO INTO TABLE IT_EKKO WHERE EBELN = P_PURDOC.

ENDFORM. " get_data_from_ekko

&----


*& Form get_data_from_lfa1

&----


FORM GET_DATA_FROM_LFA1 .

IF NOT IT_EKKO[] IS INITIAL.

SELECT LIFNR

NAME1

LAND1

ORT01

REGIO

FROM LFA1 INTO TABLE IT_LFA1 FOR ALL ENTRIES IN IT_EKKO WHERE

LIFNR = IT_EKKO-LIFNR.

ENDIF.

ENDFORM. " get_data_from_lfa1

&----


*& Form get_data_from_ekpo

&----


FORM GET_DATA_FROM_EKPO .

IF NOT IT_EKKO[] IS INITIAL.

SELECT EBELN

EBELP

LOEKZ

AEDAT

MATNR

NETWR

FROM EKPO INTO TABLE IT_EKPO

WHERE EBELN = P_PURDOC.

ENDIF.