Application Development 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: 

Newbie question: Send data to printer from ABAP program

Former Member
0 Kudos

Hello, I am a newbie.

I do not use SAPScript nor SmartForms.

But I need to send a printer command stream from my ABAP to printer.

Is it possible?

How can this be possible? Please give me some guideline.

I will reward you points. Promise.

Thanks

5 REPLIES 5

GauthamV
Active Contributor
0 Kudos

hi,

u can send ur program details to printer using submit to sap-spool statement.

SUBMIT TO SAP-SPOOL

Basic form

SUBMIT rep ... TO SAP-SPOOL.

Extras:

1.... DESTINATION dest ... COPIES cop

... LIST NAME name

... LIST DATASET dsn

... COVER TEXT text

... LIST AUTHORITY auth

... IMMEDIATELY flag

... KEEP IN SPOOL flag

... NEW LIST IDENTIFICATION flag

... DATASET EXPIRATION days

... LINE-COUNT lin

... LINE-SIZE col

... LAYOUT layout

... SAP COVER PAGE mode

... COVER PAGE flag

... RECEIVER rec

... DEPARTMENT dep

... ARCHIVE MODE armode

... ARCHIVE PARAMETERS arparams

... WITHOUT SPOOL DYNPRO

2. ... SPOOL PARAMETERS params

... ARCHIVE PARAMETERS arparams

... WITHOUT SPOOL DYNPRO

3. ... Further parameters (for passing variants)

are described in the documentation for SUBMIT

The syntax check performed in an ABAP Objects context is stricter than in other ABAP areas. See Missing print parameters with SUBMIT.

Effect

Calls the report rep with list output to the SAP spool database.

Additions

... DESTINATION dest(output device)

... COPIES cop(number of copies)

... LIST NAME name(name of list)

... LIST DATASET dsn(name of spool dataset)

... COVER TEXT text(title of spool request)

... LIST AUTHORITY auth(authorization for display)

... IMMEDIATELY flag(print immediately ?)

... KEEP IN SPOOL flag(keep list after print ?)

... NEW LIST IDENTIFICATION flag(new spool request ?)

... DATASET EXPIRATION days(number of days list

retained)

... LINE-COUNT lin ( lin lines per page)

... LINE-SIZE col(col columns per line)

... LAYOUT layout(print format)

... SAP COVER PAGE mode(SAP cover sheet ?)

... COVER PAGE flag(selection cover sheet ?)

... RECEIVER rec(SAP user name of

recipient)

... DEPARTMENT dep(name of department)

... ARCHIVE MODE armode(archiving mode)

... ARCHIVE PARAMETERS arparams(structure with archiving

parameters)

... WITHOUT SPOOL DYNPRO(skip print control screen)

With the parameters IMMEDIATELY, KEEP IN SPOOL, NEW LIST IDENTIFICATION and COVER TEXT, flag must be a literal or character field with the length 1. If flag is blank, the parameter is switched off, but any other character switches the parameter on. You can also omit any of the sub-options of PRINT ON. mode with SAP COVER PAGE can accept the values ' ', 'X' and 'D'. These values have the following meaning:

' ' : Do not output cover sheet

'X' : Output cover sheet

'D' : Cover sheet output according to printer setting

armode with ARCHIVE MODE can accept the values '1', '2' and '3'. These values have the following meaning:

'1' : Print only

'2' : Archive only

'3' : Print and archive

arparams with ARCHIVE PARAMETERS must have the same structure as ARC_PARAMS. This parameter should only be processed with the function module GET_PRINT_PARAMETERS.

Effect

Output is to the SAP spool database with the specified parameters. If you omit one of the parameters, the system uses a default value. Before output to the spool, you normally see a screen where you can enter and/or modify the spool parameters. However, you can suppress this screen with the following statement:

... TO SAP-SPOOL WITHOUT SPOOL DYNPRO

You could use this option if all the spool parameters have already been set!

Note

When specifying the LINE-SIZE, you should not give any value > 132 because most printers cannot print wider lists.

Addition 2

... SPOOL PARAMETERS params(structure with print

parameters)

... ARCHIVE PARAMETERS arparams(Structure with archive

parameters)

... WITHOUT SPOOL DYNPRO(skip print parameters

screen)

Effect

Output is to the SAP spool database with the specified parameters. The print parameters are passed by the field string params which must have the structure of PRI_PARAMS. The field string can be filled and modified with the function module GET_PRINT_PARAMETERS. The specification arparams with ARCHIVE PARAMETERS must have the structure of ARC_PARAMS. This parameter should only be processed with the function module GET_PRINT_PARAMETERS. Before output to the spool, you normally see a screen where you can enter and/or modify the spool parameters. However, you can suppress this screen with the following statement:

... WITHOUT SPOOL DYNPRO

Example

  • Without archiving

DATA: PARAMS LIKE PRI_PARAMS,

DAYS(1) TYPE N VALUE 2,

COUNT(3) TYPE N VALUE 1,

VALID TYPE C.

CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING DESTINATION = 'LT50'

COPIES = COUNT

LIST_NAME = 'TEST'

LIST_TEXT = 'SUBMIT ... TO SAP-SPOOL'

IMMEDIATELY = 'X'

RELEASE = 'X'

NEW_LIST_ID = 'X'

EXPIRATION = DAYS

LINE_SIZE = 79

LINE_COUNT = 23

LAYOUT = 'X_PAPER'

SAP_COVER_PAGE = 'X'

COVER_PAGE = 'X'

RECEIVER = 'SAP*'

DEPARTMENT = 'System'

NO_DIALOG = ' '

IMPORTING OUT_PARAMETERS = PARAMS

VALID = VALID.

IF VALID <> SPACE.

SUBMIT RSTEST00 TO SAP-SPOOL

SPOOL PARAMETERS PARAMS

WITHOUT SPOOL DYNPRO.

ENDIF.

Example

  • With archiving

DATA: PARAMS LIKE PRI_PARAMS,

ARPARAMS LIKE ARC_PARAMS,

DAYS(1) TYPE N VALUE 2,

COUNT(3) TYPE N VALUE 1,

VALID TYPE C.

CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING DESTINATION = 'LT50'

COPIES = COUNT

LIST_NAME = 'TEST'

LIST_TEXT = 'SUBMIT ... TO SAP-SPOOL'

IMMEDIATELY = 'X'

RELEASE = 'X'

NEW_LIST_ID = 'X'

EXPIRATION = DAYS

LINE_SIZE = 79

LINE_COUNT = 23

LAYOUT = 'X_PAPER'

SAP_COVER_PAGE = 'X'

COVER_PAGE = 'X'

RECEIVER = 'SAP*'

DEPARTMENT = 'System'

SAP_OBJECT = 'RS'

AR_OBJECT = 'TEST'

ARCHIVE_ID = 'XX'

ARCHIVE_INFO = 'III'

ARCHIVE_TEXT = 'Description'

NO_DIALOG = ' '

IMPORTING OUT_PARAMETERS = PARAMS

OUT_ARCHIVE_PARAMETERS = ARPARAMS

VALID = VALID.

IF VALID <> SPACE.

SUBMIT RSTEST00 TO SAP-SPOOL

SPOOL PARAMETERS PARAMS

ARCHIVE PARAMETERS ARPARAMS

WITHOUT SPOOL DYNPRO.

ENDIF.

Former Member
0 Kudos

former_member435013
Active Participant
0 Kudos

Hi,

better configure new sap output device - may be linked to the same physical printer.

Configure this new printer with appropiate control, so you will keep your printing reliable.

regards

Walter Habich

0 Kudos

Hello all,

Thanks for the information.

However, I think you all missed my point, and believe that your suggestions are about sending report to PJL printer such as HP or Epson.

I only want to send a printer command string, example, " %0 H0609 V0193 GB036008" to the printer.

I believe defining an output device is necessary (as suggested by Walter Habich).

Now the question is, how do I write an ABAP to send my string to this output device?

Please help. We are making progress. Great job everybody!

kesavadas_thekkillath
Active Contributor
0 Kudos

1. Sending a report directly to the printer

NEW-PAGE PRINT ON

destination 'p190'

COPIES 1

LIST NAME 'Test liste'

COVER TEXT 'Cover text'

SAP COVER PAGE 'X'

DATASET EXPIRATION 3

NO DIALOG.

LOOP AT ITAB.

WRITE: / ITAB-ZZREVLOGPR.

ENDLOOP.

NEW-PAGE PRINT OFF.

2. Sending output to the spool

NEW-PAGE PRINT ON

COPIES 1

LIST NAME 'Test liste'

COVER TEXT 'zzspec01 Log for overførsel af revlogdata fra host'

SAP COVER PAGE ' '

IMMEDIATELY ' '

KEEP IN SPOOL 'X'

DATASET EXPIRATION 3.