05-31-2011 3:40 AM
Dear consultant,
I would like to generate ABAP report listing to PDF format without generate to SPOOL request, any idea?
Thanks & regards,
LOI
05-31-2011 8:04 AM
05-31-2011 4:01 AM
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
06-03-2011 4:55 AM
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
05-31-2011 5:46 AM
Hi LOI,
Another way ,you can create a form in SFP and call that form in your report. then report details in PDF format.
06-03-2011 1:35 AM
Hi Sankavi,
May I know how to create form in SFP? Can provide me sample code.
Thanks.
05-31-2011 8:04 AM
06-01-2011 1:33 PM
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.
06-03-2011 4:58 AM
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.
06-03-2011 3:15 AM
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