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: 

Spool List output display > 255 char when the rpt is run in Background

Former Member
0 Kudos

Hi Friends,

I tried executing a program in Background.. The report output has more than 64 columns ( more than 255 char ) ..

Iam using "REUSE_ALV_GRID_DISPLAY" for displaying the list.

My Problem:

1. The spool list is truncated after 255 characters when i run in background.

2. Th output in Spool List is coming in 2 rows ... not very clear ... becoz of that the grid lines are not getting displayed.

3. I ve not used any Standard - line size for dislaying ..

4. In foreground i am able to display all the 64 columns... Y not in Background......

5. My Printer setting is ..X_255 .... only ...

Requirement:

1. What should i do to increase the spool list display to more than 255 characters

2. Or how to save the background run reports output to an excel sheet as how we 'll take the from the foreground.

Expecting your answers,

Thanks in Advance...

Cheers,

R.Kripa .........

Enjoy ABAPing ..........

new upcoming Abaper ....

1 ACCEPTED SOLUTION

Former Member
0 Kudos

hey all thanks for the reply...

Hi Roxani Athousaki ,

I am not able to get the required result yet ;-(

Could u please brief in detail

1. How to create a desired output device ( printer settings )

This is what my understanding for running the report in background and creating a spool request:

1. Setting an output device.

2. Run the prgram in Background.

3. Go to SM37 ... and execute the selected scheduled job..

4. There will be one spool request number ceated (10 Char)

5. Go to the Program "ZZZ" which u have given in your post and execute that program with selection criteria to be "The spool requesst number, 0 , 80"

Am i right till this ?

Then what is the step i should carry on ???

I want the reports output to be saved on an excel sheet with all the 64 columns in it ....

Am i clear with my requirement??

Expecting your answers!!

Thanks in advance

Cheers,

R.Kripa.

14 REPLIES 14

mandar_shete
Active Participant
0 Kudos

Hi,

Goto SPAD and change the settings form X_64_255 to required rows and columns.

former_member188685
Active Contributor
0 Kudos

Hi,

how are you printing.

yes, you need to use SPAD (spool administration)

there click on Full administration. there you need to create your own format,and you need to do some setting for your program.

Contact your BASIS team for this.

are you using any print parameters , or are you printing with new-page print of option.

regards

vijay

former_member223537
Active Contributor
0 Kudos

Hi,

If you are using Submit statement, then pass the parameter LAYOUT with different layout.

If you are using JOB_SUBMIT, then use FM GET_PRINT_PARAMETERS & pass LAYOUT parameter with appropriate Layout.

Layout can be created under customizing request with transaction SPAD.

Best regards,

Prashant

former_member537489
Participant
0 Kudos

Hello Kripa,

You need to perform two actions.

1. set an appropriate format for the printer you are using. As explained from the previous messages you go to: SPAD -> output devives (type the printer you are using) -> from the menu ..-> goto -> device type -> formats. In there create a new format like Z_65_650

or Z_65_xxxx where xxxx could be up to 1065. This is the length of your report.

When you give your report in background, do not forget to choose the new format you created.

2. After the spool request is created, you take its number and use it ar a parameter in the following report.

Please copy and paste it in a new program, maybe called ZRSPOSHOWSPOOLLIST.

It should work then.

roxani

**********

  • Display spool list > 255 columns

*

  • This is a SAP utility report to allow display of

  • spool request lists with line size more than 255 characters in

  • releases 4.6B and 4.6C (4.6D kernel must be used)

*

REPORT ZRSPOSHOWLIST LINE-SIZE 80.

PARAMETERS: RQIDENT LIKE TSP01-RQIDENT,

FIRSTL TYPE I DEFAULT 0,

LASTL TYPE I DEFAULT 0.

  • global data from LSPOXTOP

DATA: RC(10) TYPE C,

ERRMSG(100) TYPE C,

STATUS LIKE SY-SUBRC,

DSN_TYPE(8) TYPE C.

DATA: BEGIN OF DATA_SET_LINE,

DATA_LENGTH(5),

PRECOL(1),

  • DATA_LINE(1000),

DATA_LINE(5000), "MODAB

END OF DATA_SET_LINE,

DATA_SET_LENGTH(5) TYPE C.

TABLES: TSP01, TST05, TSPOPTIONS.

DATA: TEMSE_NAME LIKE TST01-DNAME,

TEMSE_CLIENT LIKE TST01-DCLIENT,

TEMSE_HANDLE LIKE RSTSTYPE-HANDLE,

TEMSE_PART LIKE TST01-DPART,

TEMSE_OBJTYP LIKE TST01-DTYPE,

TEMSE_RECTYP LIKE RSTSTYPE-RECTYP,

TEMSE_CHARCO LIKE TST01-DCHARCOD.

DATA: IS_OTF.

  • global data from LSPOCTOP

DATA: BEGIN OF SPOC

  • , escape

  • , prtctrl

, FIRST_BYTES(4) " collection of the first bytes of the

" escape sequences, which I am searching for.

, PRTCTRL_START_LENGTH TYPE I

, PRTCTRL_TOTAL_LENGTH TYPE I

, PRTCTRL_START(10)

, SYMBOL_LOW_START(10)

, SYMBOL_HGH_START(10)

, SYMBOL_START_LENGTH TYPE I

, ICON_START(10)

, ICON_START_LENGTH TYPE I

, ICON_SEL TYPE I VALUE 1

, FRAME_START(10)

, FRAME_START_LENGTH TYPE I

, END OF SPOC.

FIELD-SYMBOLS: <SPOC_PRTCTRL> TYPE C

, <SPOC_FRAME> TYPE C

, <SPOC_ICON> TYPE C

, <SPOC_SYMBOL_LOW> TYPE C

, <SPOC_SYMBOL_HGH> TYPE C

.

  • copied from RSPO_DISPLAY_ABAP_SPOOLJOB

DATA: BUFFER LIKE DATA_SET_LINE OCCURS 1000.

TABLES: TSP02L.

SELECT SINGLE * FROM TSP01 WHERE RQIDENT = RQIDENT.

IF SY-SUBRC <> 0.

WRITE: / 'Spool request does not exist:'(001), RQIDENT.

EXIT.

ENDIF.

CALL FUNCTION 'RSPO_CHECK_JOB_PERMISSION'

EXPORTING

ACCESS = 'DISP'

SPOOLREQ = TSP01

EXCEPTIONS

NO_PERMISSION = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

WRITE: / 'No authorization to display'(002).

EXIT.

ENDIF.

PERFORM READ_DATA TABLES BUFFER

USING TSP01 FIRSTL LASTL.

IF SY-SUBRC <> 0.

WRITE: / 'Error reading spoolo request'(003).

EXIT.

ENDIF.

IF IS_OTF = 'X'.

WRITE: / 'This spool request is not an ABAP list'(004).

EXIT.

ENDIF.

PERFORM DISPLAY_DATA TABLES BUFFER USING TSP01-RQPAPER TSP01-RQIDENT.

******************************************

FORM GET_SPOOL_LINE.

DO.

IF TEMSE_RECTYP+1(1) = 'Y'.

CALL 'C_RSTS_READ'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'BUFF' FIELD DATA_SET_LINE

  • ID 'BUFFLG' FIELD 1006

ID 'BUFFLG' FIELD 5006 "MODAB

ID 'ALLINE' FIELD 'X'

ID 'BINARY' FIELD ' '

ID 'SHOWLG' FIELD 'X'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

ELSE.

CALL 'C_RSTS_READ'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'BUFF' FIELD DATA_SET_LINE+1

  • ID 'BUFFLG' FIELD 1005

ID 'BUFFLG' FIELD 5005 "MODAB

ID 'ALLINE' FIELD 'X'

ID 'BINARY' FIELD ' '

ID 'SHOWLG' FIELD 'X'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

DATA_SET_LINE(5) = DATA_SET_LINE+1(5).

DATA_SET_LINE-PRECOL = ' '.

ADD 1 TO DATA_SET_LINE-DATA_LENGTH.

ENDIF.

STATUS = SY-SUBRC.

IF STATUS <> 6. " EOF, error condition, or got data

EXIT.

ENDIF.

  • end of this part, try to open next part

ADD 1 TO TEMSE_PART.

CALL 'C_RSTS_CLOSE'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

IF STATUS = 0.

CALL FUNCTION 'RSTS_GET_ATTRIBUTES'

EXPORTING

AUTHORITY = 'SP01'

CLIENT = TEMSE_CLIENT "hjl

NAME = TEMSE_NAME

PART = TEMSE_PART

IMPORTING

CHARCO = TEMSE_CHARCO

  • CREATER =

  • CREDATE =

  • DELDATE =

  • MAX_CREDATE =

  • MAX_DELDATE =

  • NON_UNIQ =

  • NOOF_PARTS =

RECTYP = TEMSE_RECTYP

  • SIZE =

  • STOTYP =

  • type =

OBJTYPE = TEMSE_OBJTYP

EXCEPTIONS

FB_ERROR = 1

FB_RSTS_OTHER = 2

NO_OBJECT = 3

NO_PERMISSION = 4

OTHERS = 5.

STATUS = SY-SUBRC.

ENDIF.

IF STATUS = 0.

CALL 'C_RSTS_OPEN_READ'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'CLIENT' FIELD TEMSE_CLIENT "hjl

ID 'NAME' FIELD TEMSE_NAME

ID 'PART' FIELD TEMSE_PART

ID 'TYPE' FIELD TEMSE_OBJTYP

ID 'CONV' FIELD ' '

ID 'ALLINE' FIELD 'X'

ID 'BINARY' FIELD ' '

ID 'RECTYP' FIELD TEMSE_RECTYP

ID 'CHARCO' FIELD TEMSE_CHARCO

ID 'PROM' FIELD 'I'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

ENDIF.

ENDDO.

IF STATUS = 4.

STATUS = 12. "EOF

ENDIF.

IF STATUS = 8.

STATUS = 40. "Line too long

ENDIF.

DATA_SET_LENGTH = DATA_SET_LINE-DATA_LENGTH.

ENDFORM.

FORM READ_DATA TABLES BUFFER

USING TSP01 LIKE TSP01 VALUE(FIRST) TYPE I

VALUE(LAST) TYPE I.

DATA: LINES TYPE I.

REFRESH BUFFER.

CLEAR IS_OTF.

TEMSE_CLIENT = TSP01-RQCLIENT.

TEMSE_NAME = TSP01-RQO1NAME.

TEMSE_PART = 1.

CALL FUNCTION 'RSTS_GET_ATTRIBUTES'

EXPORTING

AUTHORITY = 'SP01'

CLIENT = TEMSE_CLIENT

NAME = TEMSE_NAME

PART = TEMSE_PART

IMPORTING

CHARCO = TEMSE_CHARCO

  • CREATER =

  • CREDATE =

  • DELDATE =

  • MAX_CREDATE =

  • MAX_DELDATE =

  • NON_UNIQ =

  • NOOF_PARTS =

RECTYP = TEMSE_RECTYP

  • SIZE =

  • STOTYP =

  • type =

OBJTYPE = TEMSE_OBJTYP

EXCEPTIONS

FB_ERROR = 1

FB_RSTS_OTHER = 2

NO_OBJECT = 3

NO_PERMISSION = 4

OTHERS = 5.

IF SY-SUBRC = 0.

IF TEMSE_OBJTYP(3) = 'OTF'.

IS_OTF = 'X'.

ENDIF.

ELSE.

EXIT.

ENDIF.

CLEAR TEMSE_HANDLE.

CALL 'C_RSTS_OPEN_READ'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'CLIENT' FIELD TEMSE_CLIENT "hjl

ID 'NAME' FIELD TEMSE_NAME

ID 'PART' FIELD TEMSE_PART

ID 'TYPE' FIELD TEMSE_OBJTYP

ID 'CONV' FIELD ' '

ID 'ALLINE' FIELD 'X'

ID 'BINARY' FIELD ' '

ID 'RECTYP' FIELD TEMSE_RECTYP

ID 'CHARCO' FIELD TEMSE_CHARCO

ID 'PROM' FIELD 'I'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

IF STATUS = 0.

DO.

PERFORM GET_SPOOL_LINE.

IF STATUS <> 0 AND STATUS <> 40 AND STATUS <> 12.

PERFORM CLOSE_JOB.

EXIT.

ENDIF.

IF STATUS <> 12. " 12 = End

IF NOT ( DATA_SET_LENGTH IS INITIAL ).

DATA_SET_LINE-DATA_LENGTH = DATA_SET_LENGTH - 1.

ENDIF.

ADD 1 TO LINES.

IF LINES >= FIRST.

APPEND DATA_SET_LINE TO BUFFER.

ENDIF.

IF ( NOT LAST IS INITIAL ) AND ( LINES >= LAST ).

EXIT.

ENDIF.

ELSE.

IF LINES = 0.

PERFORM CLOSE_JOB.

EXIT.

ENDIF.

IF LINES < FIRST .

PERFORM CLOSE_JOB.

EXIT.

ENDIF.

EXIT.

ENDIF.

ENDDO.

PERFORM CLOSE_JOB.

ENDIF.

ENDFORM.

----


  • FORM CLOSE_JOB *

----


  • ........ *

----


FORM CLOSE_JOB.

IF STATUS <> 0 AND STATUS <> 12.

CALL 'C_RSTS_CLOSE'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

MESSAGE E112(PO) WITH STATUS RC ERRMSG RAISING READ_ERROR.

ENDIF.

CALL 'C_RSTS_CLOSE'

ID 'HANDLE' FIELD TEMSE_HANDLE

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

IF STATUS <> 0.

MESSAGE E112(PO) WITH STATUS RC ERRMSG RAISING READ_ERROR.

ENDIF.

ENDFORM.

FORM DISPLAY_DATA TABLES BUFFER USING RQPAPER LIKE TSP01-RQPAPER

RQID LIKE TSP01-RQIDENT.

DATA: LINE_LENGTH TYPE I, GCOL TYPE I, GLINES TYPE I,

LINE_LENGTH2 LIKE RSTSTYPE-LINELENGTH,

V, V2.

  • CALL FUNCTION 'RSPO_SPOOLDATA_WRITE_INIT'.

PERFORM SPOOLDATA_WRITE_INIT. "MODAB

  • select single * from tspoptions where spoption = 'REALWIDTH'.

  • if sy-subrc = 0.

V = 'X'.

  • endif.

  • select single * from tspoptions where spoption = 'REALHEIGHT'.

  • if sy-subrc = 0.

V2 = 'X'.

  • endif.

IF NOT V IS INITIAL OR NOT V2 IS INITIAL.

GCOL = 0.

GLINES = 0.

SELECT SINGLE * FROM TSP02L WHERE PJIDENT = RQID

AND PJNUMMER = 0.

IF SY-SUBRC = 0.

GCOL = TSP02L-COLUMNS.

GLINES = TSP02L-LINES.

ELSE.

CALL FUNCTION 'RSPO_GET_SIZE_OF_LAYOUT'

EXPORTING

LAYOUT = RQPAPER

IMPORTING

  • ANSWER =

COLUMNS = GCOL

LINES = GLINES

  • PFORMAT =

.

ENDIF.

ENDIF.

IF GCOL < 80 OR V IS INITIAL.

GCOL = 255.

ENDIF.

IF GLINES < 5 OR V2 IS INITIAL.

GLINES = 0.

ENDIF.

IF GCOL >= 1024. "MODAB

GCOL = 1023.

ENDIF.

NEW-PAGE NO-HEADING NO-TITLE LINE-SIZE GCOL

LINE-COUNT GLINES. " make a wide list

SET BLANK LINES ON.

LOOP AT BUFFER.

DATA_SET_LINE = BUFFER.

IF DATA_SET_LINE-PRECOL = 'P'.

IF DATA_SET_LINE(1) = ' '. " Echter Vorschub ?"

NEW-PAGE.

ENDIF.

CONTINUE.

ENDIF.

  • Zeilenlange berechnen, falls unbekannt.

IF DATA_SET_LINE-DATA_LENGTH IS INITIAL.

LINE_LENGTH = STRLEN( DATA_SET_LINE-DATA_LINE ).

ELSE.

LINE_LENGTH = DATA_SET_LINE-DATA_LENGTH.

ENDIF.

IF LINE_LENGTH > 0.

LINE_LENGTH2 = LINE_LENGTH.

PERFORM SPOOLDATA_WRITE USING DATA_SET_LINE-DATA_LINE "MODAB

LINE_LENGTH2

1.

ELSE.

" Leerzeile

SKIP.

ENDIF.

ENDLOOP.

ENDFORM.

  • copied from RSPO_SPOOLDATA_WRITE

FORM SPOOLDATA_WRITE USING VALUE(SPOOL_DATA)

VALUE(DATA_LENGTH) LIKE RSTSTYPE-LINELENGTH

VALUE(START_POS) LIKE SY-COLNO.

  • function globals

DATA: LPOS LIKE SY-COLNO

, REST_LEN TYPE I

, AREA_LEN TYPE I

, NEXT_HOT TYPE I " offset of next special character

, COLS TYPE I " columns used by special character

, BYTES TYPE I " bytes used by special character

, HOT2

, HOT3

, HOT4

, HOT5

, HOT6

, HOT7

, BEGIN OF ESCAPE_TRICK

, X1(1) TYPE X

, END OF ESCAPE_TRICK

, THE_PRTCTRL(5) TYPE C

  • Because of a problem within the ABAP listprocessing, I shall

  • never output the same icon side by side with the same color

  • and without a gap.

  • As I don't know the data, I will use two different variables

  • alternatively.

, ICON_ID1 LIKE ICONS-L4

, ICON_ID2 LIKE ICONS-L4.

FIELD-SYMBOLS: <LDATA>

, <PLAIN_TEXT>

, <PRTCTRL>

, <HOT_PRTCTRL>

, <HOT_FRAME>

, <HOT_ICON>

, <HOT_SYMBOL>

.

IF START_POS < 2.

  • write at / ' ' no-gap.

NEW-LINE.

LPOS = 1.

ELSE.

LPOS = START_POS.

ENDIF.

REST_LEN = STRLEN( SPOOL_DATA ).

DESCRIBE FIELD SPOOL_DATA LENGTH AREA_LEN.

IF DATA_LENGTH = 0.

" fine.

ELSEIF DATA_LENGTH <= AREA_LEN.

REST_LEN = DATA_LENGTH.

ELSE.

WRITE: / 'Fehler beim Decodieren der Listendaten'(005).

STOP.

ENDIF.

CHECK REST_LEN > 0.

ASSIGN SPOOL_DATA(REST_LEN) TO <LDATA>.

WHILE <LDATA> CA SPOC-FIRST_BYTES.

NEXT_HOT = SY-FDPOS.

IF NEXT_HOT > 0.

ASSIGN <LDATA>(NEXT_HOT) TO <PLAIN_TEXT>.

  • MODAB

PERFORM WRITE_BIGFIELD USING <PLAIN_TEXT>

NEXT_HOT

LPOS.

  • WRITE AT LPOS <PLAIN_TEXT> NO-GAP.

ADD NEXT_HOT TO LPOS.

SUBTRACT NEXT_HOT FROM REST_LEN.

ASSIGN <LDATA>+NEXT_HOT(REST_LEN) TO <LDATA>.

ENDIF.

IF REST_LEN >= SPOC-PRTCTRL_START_LENGTH.

ASSIGN <LDATA>(SPOC-PRTCTRL_START_LENGTH) TO <HOT_PRTCTRL>.

ELSE.

ASSIGN 'too_short' TO <HOT_PRTCTRL>.

ENDIF.

IF REST_LEN >= SPOC-FRAME_START_LENGTH.

ASSIGN <LDATA>(SPOC-FRAME_START_LENGTH) TO <HOT_FRAME>.

ELSE.

ASSIGN 'too_short' TO <HOT_FRAME>.

ENDIF.

IF REST_LEN >= SPOC-ICON_START_LENGTH.

ASSIGN <LDATA>(SPOC-ICON_START_LENGTH) TO <HOT_ICON>.

ELSE.

ASSIGN 'too_short' TO <HOT_ICON>.

ENDIF.

IF REST_LEN >= SPOC-SYMBOL_START_LENGTH.

ASSIGN <LDATA>(SPOC-SYMBOL_START_LENGTH) TO <HOT_SYMBOL>.

ELSE.

ASSIGN 'too_short' TO <HOT_SYMBOL>.

ENDIF.

IF REST_LEN > 1.

HOT2 = <LDATA>+1(1).

IF REST_LEN > 2.

HOT3 = <LDATA>+2(1).

IF REST_LEN > 3.

HOT4 = <LDATA>+3(1).

ELSE.

HOT4 = '?'.

ENDIF.

ELSE.

HOT3 = '?'.

ENDIF.

ELSE.

HOT2 = '?'.

ENDIF.

IF <HOT_FRAME> = <SPOC_FRAME>.

COLS = 1. " in most cases.

BYTES = 2. " in most cases.

CASE HOT2.

WHEN '0'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '1'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '2'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '3'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '4'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '5'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '6'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '7'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '8'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN '9'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN ':'. WRITE AT LPOS HOT2 AS LINE NO-GAP.

WHEN ';'. " box_drawings_light_left

WRITE AT LPOS '4' AS LINE NO-GAP.

WHEN '<'. " box_drawings_light_up

WRITE AT LPOS '5' AS LINE NO-GAP.

WHEN '='. " box_drawings_light_right

WRITE AT LPOS '4' AS LINE NO-GAP.

WHEN '>'. " box_drawings_light_down

WRITE AT LPOS '5' AS LINE NO-GAP.

WHEN '?'. " drawings_checkbox_off

WRITE AT LPOS ' ' AS CHECKBOX INPUT OFF NO-GAP.

WHEN '@'. " drawings_checkbox_on

WRITE AT LPOS 'X' AS CHECKBOX INPUT OFF NO-GAP.

WHEN OTHERS.

BYTES = 0.

ENDCASE.

ENDIF.

IF <HOT_SYMBOL> = <SPOC_SYMBOL_LOW>.

ESCAPE_TRICK = HOT3.

SUBTRACT 32 FROM ESCAPE_TRICK-X1.

IF HOT4 = SPACE.

WRITE AT LPOS(2) ESCAPE_TRICK AS SYMBOL NO-GAP.

COLS = 2.

BYTES = 4.

ELSE.

WRITE AT LPOS(1) ESCAPE_TRICK AS SYMBOL NO-GAP.

BYTES = 3.

ENDIF.

ENDIF.

IF <HOT_SYMBOL> = <SPOC_SYMBOL_HGH>.

ESCAPE_TRICK = HOT3.

ADD 32 TO ESCAPE_TRICK-X1.

IF HOT4 = SPACE.

WRITE AT LPOS(2) ESCAPE_TRICK AS SYMBOL NO-GAP.

COLS = 2.

BYTES = 4.

ELSE.

WRITE AT LPOS(1) ESCAPE_TRICK AS SYMBOL NO-GAP.

BYTES = 3.

ENDIF.

ENDIF.

IF <HOT_ICON> = <SPOC_ICON>.

IF SPOC-ICON_SEL >< 1.

SPOC-ICON_SEL = 1.

ICON_ID1 = '@00@'.

ICON_ID1+1(1) = HOT3.

ICON_ID1+2(1) = HOT4.

ELSE.

SPOC-ICON_SEL = 2.

ICON_ID2 = '@00@'.

ICON_ID2+1(1) = HOT3.

ICON_ID2+2(1) = HOT4.

ENDIF.

IF REST_LEN > 4.

HOT5 = <LDATA>+4(1).

IF REST_LEN > 5.

HOT6 = <LDATA>+5(1).

IF REST_LEN > 6.

HOT7 = <LDATA>+6(1).

ELSE.

HOT7 = '?'.

ENDIF.

ELSE.

HOT6 = '?'.

ENDIF.

ELSE.

HOT5 = '?'.

ENDIF.

IF HOT5 = SPACE.

IF HOT6 = SPACE.

IF HOT7 = SPACE.

IF SPOC-ICON_SEL = 1.

WRITE AT LPOS(4) ICON_ID1 AS ICON.

  • write at lpos icon_id1 as icon no-gap.

ELSE.

WRITE AT LPOS(4) ICON_ID2 AS ICON.

  • write at lpos icon_id2 as icon no-gap.

ENDIF.

COLS = 4.

BYTES = 7.

ELSE.

IF SPOC-ICON_SEL = 1.

WRITE AT LPOS(3) ICON_ID1 AS ICON.

  • write at lpos icon_id1 as icon no-gap.

ELSE.

WRITE AT LPOS(3) ICON_ID2 AS ICON.

  • write at lpos icon_id2 as icon no-gap.

ENDIF.

COLS = 3.

BYTES = 6.

ENDIF.

ELSE.

IF SPOC-ICON_SEL = 1.

WRITE AT LPOS(2) ICON_ID1 AS ICON.

  • write at lpos icon_id1 as icon no-gap.

ELSE.

WRITE AT LPOS(2) ICON_ID2 AS ICON.

  • write at lpos icon_id2 as icon no-gap.

ENDIF.

COLS = 2.

BYTES = 5.

ENDIF.

ELSE.

"rite at lpos(1) icon_id as icon.

WRITE AT LPOS(1) '#' NO-GAP. " Not enough space for any icon.

COLS = 1.

BYTES = 4.

ENDIF.

ENDIF.

IF <HOT_PRTCTRL> = <SPOC_PRTCTRL>.

COLS = 0. " in most cases.

BYTES = 6. " in most cases.

IF REST_LEN >= SPOC-PRTCTRL_TOTAL_LENGTH.

THE_PRTCTRL = <LDATA>+SPOC-PRTCTRL_START_LENGTH(5).

IF THE_PRTCTRL = 'SABLD'.

FORMAT INTENSIFIED ON.

"no 3.0 'SAULN'.

"no 3.0 FORMAT UNDERSCORED ON.

ELSEIF THE_PRTCTRL = 'SAOFF'.

FORMAT INTENSIFIED OFF.

"no 3.0 FORMAT UNDERSCORED OFF.

ELSEIF THE_PRTCTRL(3) = 'COL'.

CASE THE_PRTCTRL+3(1).

WHEN '0'.

FORMAT COLOR OFF.

WHEN '1'.

FORMAT COLOR 1.

WHEN '2'.

FORMAT COLOR 2.

WHEN '3'.

FORMAT COLOR 3.

WHEN '4'.

FORMAT COLOR 4.

WHEN '5'.

FORMAT COLOR 5.

WHEN '6'.

FORMAT COLOR 6.

WHEN '7'.

FORMAT COLOR 7.

ENDCASE.

CASE THE_PRTCTRL+4(1).

WHEN 'N'.

FORMAT INTENSIFIED OFF INVERSE OFF.

WHEN 'H'.

FORMAT INTENSIFIED ON INVERSE OFF.

WHEN 'V'.

FORMAT INTENSIFIED ON INVERSE ON.

ENDCASE.

ENDIF. "printcontrol

ELSE. "??

ENDIF.

ENDIF.

IF BYTES = 0.

BYTES = 1.

WRITE AT LPOS(1) '#'.

COLS = 1.

ENDIF.

ADD COLS TO LPOS.

SUBTRACT BYTES FROM REST_LEN.

IF REST_LEN > 0.

ASSIGN <LDATA>+BYTES(REST_LEN) TO <LDATA>.

ELSE.

EXIT.

ENDIF.

ENDWHILE.

  • MODAB

IF REST_LEN > 0.

ASSIGN <LDATA>(REST_LEN) TO <PLAIN_TEXT>.

PERFORM WRITE_BIGFIELD USING <PLAIN_TEXT>

REST_LEN

LPOS.

ENDIF.

ENDFORM.

FORM WRITE_BIGFIELD USING VALUE(FIELD) TYPE C

VALUE(LEN)

VALUE(POS).

FIELD-SYMBOLS <P>.

DATA: CHUNK TYPE I.

WHILE LEN > 0.

IF LEN > 255.

CHUNK = 255.

ELSE.

CHUNK = LEN.

ENDIF.

WRITE AT POS FIELD(CHUNK) NO-GAP.

ADD CHUNK TO POS.

LEN = LEN - CHUNK.

IF LEN > 0.

FIELD = FIELD+CHUNK.

ENDIF.

ENDWHILE.

ENDFORM.

FORM SPOOLDATA_WRITE_INIT.

DATA: BEGIN OF ESCAPE_TRICK

, X1(1) TYPE X

, END OF ESCAPE_TRICK

.

FIELD-SYMBOLS: <LDATA>

, <PLAIN_TEXT>

, <PRTCTRL>

.

ESCAPE_TRICK-X1 = '1C'.

SPOC-PRTCTRL_START = ESCAPE_TRICK.

SPOC-PRTCTRL_START_LENGTH = 1.

SPOC-PRTCTRL_TOTAL_LENGTH = SPOC-PRTCTRL_START_LENGTH + 5.

ASSIGN SPOC-PRTCTRL_START(SPOC-PRTCTRL_START_LENGTH) TO <SPOC_PRTCTRL>.

ESCAPE_TRICK-X1 = '1B'.

SPOC-FRAME_START = ESCAPE_TRICK.

SPOC-FRAME_START_LENGTH = 1.

ASSIGN SPOC-FRAME_START(SPOC-FRAME_START_LENGTH) TO <SPOC_FRAME>.

ESCAPE_TRICK-X1 = '1B'.

SPOC-ICON_START = ESCAPE_TRICK.

SPOC-ICON_START+1 = ','.

SPOC-ICON_START_LENGTH = 2.

ASSIGN SPOC-ICON_START(SPOC-ICON_START_LENGTH) TO <SPOC_ICON>.

ESCAPE_TRICK-X1 = '1B'.

SPOC-SYMBOL_LOW_START = ESCAPE_TRICK.

SPOC-SYMBOL_LOW_START+1 = '('.

SPOC-SYMBOL_HGH_START = ESCAPE_TRICK.

SPOC-SYMBOL_HGH_START+1 = ')'.

SPOC-SYMBOL_START_LENGTH = 2.

ASSIGN SPOC-SYMBOL_LOW_START(SPOC-SYMBOL_START_LENGTH)

TO <SPOC_SYMBOL_LOW>.

ASSIGN SPOC-SYMBOL_HGH_START(SPOC-SYMBOL_START_LENGTH)

TO <SPOC_SYMBOL_HGH>.

SPOC-FIRST_BYTES+0(1) = SPOC-PRTCTRL_START(1).

SPOC-FIRST_BYTES+1(1) = SPOC-FRAME_START(1).

SPOC-FIRST_BYTES+2(1) = SPOC-ICON_START(1).

SPOC-FIRST_BYTES+3(1) = SPOC-SYMBOL_LOW_START(1).

ENDFORM.

Former Member
0 Kudos

hey all thanks for the reply...

Hi Roxani Athousaki ,

I am not able to get the required result yet ;-(

Could u please brief in detail

1. How to create a desired output device ( printer settings )

This is what my understanding for running the report in background and creating a spool request:

1. Setting an output device.

2. Run the prgram in Background.

3. Go to SM37 ... and execute the selected scheduled job..

4. There will be one spool request number ceated (10 Char)

5. Go to the Program "ZZZ" which u have given in your post and execute that program with selection criteria to be "The spool requesst number, 0 , 80"

Am i right till this ?

Then what is the step i should carry on ???

I want the reports output to be saved on an excel sheet with all the 64 columns in it ....

Am i clear with my requirement??

Expecting your answers!!

Thanks in advance

Cheers,

R.Kripa.

0 Kudos

Hi Kripa,

Yes the steps you have described are exactly right.

I assume you have an output device (printer). Your printer's setting is only x_255_... So you need to create a new format lets say z_65_700 and then assign it to your device.

Go to transaction SPAD -> FULL ADMINISTRATION -> DEVICE TYPES -> FORMAT TYPES and there you can see all the available formats. Create a new format Z_65_700 in the similar manner with X_255... with a different number of columns (700) and save it.

Then in the tab DEVICE/SERVERS go to OUTPUT DEVICES and type your printer -> ENTER -> then from the Menu GOTO device type -> then there is a button FORMATS where you can see all the existing formats (plus the one you have just ctreated). Find it and choose it. Then save.

Now you have attached the new format to your printer.

The next step is simple.

You can do it the way you described, but there is also another way. Run your program with F9 and not F8 from the selection screen. It will ask you for printers, formats etc. There you will first select the appropriate printer and then (after ENTER) you have to go down to formats and select the new format. Do not print it immediatelly, click only the NEW SPOOL REQUEST checkbutton. This will create a new spool request.

If you go to SP01 you will find the number of your finished job. If you click the abap list button it will only show you collumns with up to 255 characters.

But if you take the spool number and put it as a parameters to the zzz program , it will show everything.

Please check it out and let me know on the results.

Thank you

Roxani

Former Member
0 Kudos

Hey thanks

I'll try and let u know soon

Cheers,

R.Kripa.

Former Member
0 Kudos

Hey,

Thanks ...it worked 90%

Iam getting 58 columns in the report output ...the remaining columns are displayed in the second line of the report .........

i made one 3 changes in the report u gave ... they are :

1. Unchecked the unicode ( in attributes of the program )

2. "DESCRIBE FIELD SPOOL_DATA LENGTH AREA_LEN." line has been changed to "DESCRIBE FIELD SPOOL_DATA LENGTH AREA_LEN IN BYTE MODE."

3. This code also changed

IF GCOL < 80 OR V IS INITIAL.

  • GCOL = 255. <-- "Commented this

GCOL = 1023. "KRIPA <-- Included this

ENDIF.

I got one warning message in between

"System cannot print the last 943 columns of the report "

What does it mean ?? is this the reason for the last five columns getting displayed as a second line in the output??

I did exactly what u ve told ...

Anyway thanks again

Cheers,

R.Kripa..

Thanks again !!

0 Kudos

Hi Rangachari,

Have you tried chenging the printer format from Z_65_700 to Z_65_900 or more???

If you do that, it might work .

please try it.Thnaks

roxani

Former Member
0 Kudos

Hey ...

I have given the format as "ZX_65_1024" with width 1023 and height 65

Is this OK ???

Cheers,

R.Kripa.......................

0 Kudos

hi,

i should hope this works...

let me know if it produced a report with all the columns...

thanks

rox

Former Member
0 Kudos

Hey ...

No still not ;-(

The last 5 columns are not getting displayed in the same line ......

?????

Cheers,

R.Kripa.

Former Member
0 Kudos

The ZRSPOSHOWLISTz program does not work with Unicode.

0 Kudos

hi - is there a fix for this pgm since it does not work with unicode?