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: 

Generate report in PDF

Former Member
0 Kudos

Dear consultant,

I would like to generate ABAP report listing to PDF format without generate to SPOOL request, any idea?

Thanks & regards,

LOI

1 ACCEPTED SOLUTION

koolspy_ultimate
Active Contributor
0 Kudos

in driver program use this FM: CONVERT_ABAPSPOOLJOB_2_PDF

Also check this link it may be useful [Click here|;

8 REPLIES 8

Wil_Wilstroth
Active Participant
0 Kudos

Hi LOI,

If you google around for it, i am sure you can get a few ideas on how to generate PDF without spool. For example,

(1). A reply from Rich Heilman in below links

In Rich, use "WITHOUT SPOOL" syntax while preparing to generate PDF...

"...SUBMIT zrich_0002 TO SAP-SPOOL

WITHOUT SPOOL DYNPRO

DESTINATION space

COVER TEXT ' Your Report Title'

NEW LIST IDENTIFICATION 'X'

IMMEDIATELY space

AND RETURN..." One of the replies by Rich Heilman, Feb 14, 2009

Regards,

W. Wilstroth

William Wilstroth

0 Kudos

Hi William,

Refer to the example provided, 2 executable program involved where zrich_0001 call zrich_0002(no selection screen) to generate PDF.

I would like to create an icon in pf-status whereby clicking this icon to generate the report in PDF. How should I code this? I try to do it but fail to do so.

Pls advise.

Thanks

Former Member
0 Kudos

Hi LOI,

Another way ,you can create a form in SFP and call that form in your report. then report details in PDF format.

0 Kudos

Hi Sankavi,

May I know how to create form in SFP? Can provide me sample code.

Thanks.

koolspy_ultimate
Active Contributor
0 Kudos

in driver program use this FM: CONVERT_ABAPSPOOLJOB_2_PDF

Also check this link it may be useful [Click here|;

Former Member
0 Kudos

hi guru ,

please go through this ,

DATA : BEGIN OF IT_FILE OCCURS 0 ,

ROW(255),

END OF IT_FILE.

DATA : V_FILE TYPE STRING.

DATA SEND_REQUEST TYPE REF TO CL_BCS.

DATA DOCUMENT TYPE REF TO CL_DOCUMENT_BCS.

DATA RECIPIENT TYPE REF TO IF_RECIPIENT_BCS.

DATA BCS_EXCEPTION TYPE REF TO CX_BCS.

DATA SENT_TO_ALL TYPE OS_BOOLEAN.

DATA pdf_size TYPE so_obj_len.

DATA PDF_CONTENT TYPE SOLIX_TAB.

DATA PDF_XSTRING TYPE XSTRING.

DATA MAILTO TYPE AD_SMTPADR.

PARAMETER F_PATH TYPE RLGRAP-FILENAME OBLIGATORY.

SELECT-OPTIONS : MAILS FOR ADR6-SMTP_ADDR OBLIGATORY NO INTERVALS."

data:file_xstring type xstring,

f_string type string.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR F_PATH.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

PROGRAM_NAME = SYST-REPID

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = 'F_PATH '

CHANGING

FILE_NAME = F_PATH.

v_file = f_path.

AT SELECTION-SCREEN ON HELP-REQUEST FOR F_PATH.

MESSAGE 'PLEASE ENTER NAME FOR DOWNLOAD' TYPE 'I'.

start-of-selection.

perform upload.

perform mail.

&----


*& Form UPLOAD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = v_file

FILETYPE = 'BIN'

TABLES

DATA_TAB = IT_FILE.

loop at it_file.

if sy-index = 1.

concatenate it_file f_string into f_string.

else.

concatenate f_string cl_abap_char_utilities=>cr_lf it_file into f_string.

endif.

endloop.

CALL FUNCTION 'SCMS_STRING_TO_XSTRING'

EXPORTING

TEXT = f_string

  • MIMETYPE = ' '

  • ENCODING =

IMPORTING

BUFFER = file_xstring

  • EXCEPTIONS

  • FAILED = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDFORM. " UPLOAD

&----


*& Form MAIL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MAIL .

TRY.

  • -------- create persistent send request ------------------------

SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

  • get PDF xstring and convert it to BCS format

pdf_size = XSTRLEN( file_xstring ).

  • -------- create and set document -------------------------------

PDF_CONTENT = CL_DOCUMENT_BCS=>XSTRING_TO_SOLIX( file_xstring ).

DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(

I_TYPE = 'PDF'

I_HEX = PDF_CONTENT

I_LENGTH = PDF_SIZE

I_SUBJECT = 'pdf as email' ). "#EC NOTEXT

  • add document object to send request

SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).

LOOP AT MAILS.

MAILTO = MAILS-LOW.

  • --------- add recipient (e-mail address) -----------------------

  • create recipient object

RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( MAILTO ).

  • add recipient object to send request

SEND_REQUEST->ADD_RECIPIENT( RECIPIENT ).

ENDLOOP.

  • ---------- send document ---------------------------------------

SENT_TO_ALL = SEND_REQUEST->SEND( I_WITH_ERROR_SCREEN = 'X' ).

COMMIT WORK.

IF SENT_TO_ALL IS INITIAL.

MESSAGE I500(SBCOMS) WITH MAILTO.

ELSE.

MESSAGE S022(SO).

ENDIF.

  • ------------ exception handling ----------------------------------

CATCH CX_BCS INTO BCS_EXCEPTION.

MESSAGE I865(SO) WITH BCS_EXCEPTION->ERROR_TYPE.

ENDTRY.

ENDFORM. " MAIL

regards,

anji.

0 Kudos

Hi gurus,

What version you are using? I cant generate the program successfully.

There is error in "Mail" function: PDF_CONTENT = CL_DOCUMENT_BCS=>XSTRING_TO_SOLIX( file_xstring ). How should I correct it?

Pls advise, thanks.

Former Member
0 Kudos

HI,

when you print the smartform at the time only spool will get generated, so after printing you can delete spool request using below function module...

after print

job_output_info-spoolids[] will get fill by spool no...so

IF job_output_info-spoolids[] IS NOT INITIAL.

SELECT MAX( rqident ) FROM tsp01 INTO spool_id WHERE rqowner = sy-uname.

spool = spool_id.

CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'

EXPORTING

spoolid = spool

IMPORTING

  • RC =

status = status

error_message = err_message

.

endif.

Edited by: Ramesh T on Jun 3, 2011 4:15 AM