Regarding FM : 'CONVERT_ABAPSPOOLJOB_2_PDF'
While working on 2 different server I am getting different result from FM 'CONVERT_ABAPSPOOLJOB_2_PDF'
Due to which attachment in PDF in second serever is not Proper...
Does anyone have idea about it...
Code for refernce is...
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ' ~'.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING '~ '.
DO.
it_attach = gd_buffer.
APPEND it_attach.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Hii....
Thanks for reply...
But Bin_file M getting is also Blank, there is no data in Bin_file...
The same program i had done in another server is working fine bt on this server output from the FM is getting smthing different.
Similar Messages
-
CONVERT_ABAPSPOOLJOB_2_PDF doesnt prompt to save the filename
Dear all
Here with this i m getting the spool but CONVERT_ABAPSPOOLJOB_2_PDF doesnt prompt to save the PDF file . Do i need to use GUI_DOWNLOAD along with this .
PlllllZZZZZZ...... suggest
SELECT SINGLE * FROM ZPLH WHERE VBELN = SSORD
AND POSNR = ITNO.
IF SY-SUBRC EQ 0.
DATA : v_jobcount LIKE tbtcjob-jobcount,
ZTEST LIKE TBTCJOB-JOBNAME.
*-- run in the background
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = 'ZTEST'
IMPORTING
jobcount = v_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
*-- submit the program in the background
SUBMIT ZPP_REP_ENCLOSURE_PACKLIST3
WITH JOBNO = SSORD
WITH LINENO = ITNO
USER sy-uname
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
DESTINATION 'LOHP'
IMMEDIATELY 'X'
KEEP IN SPOOL 'X'
VIA JOB 'ZTEST' NUMBER v_jobcount AND RETURN.
IF SY-SUBRC = 0.
* Job scheduled successfully
ENDIF.
IF SY-SUBRC = 4.
*Job scheduling terminated by user
ENDIF.
IF SY-SUBRC = 8.
*Error in job scheduling (JOB_SUBMIT)
ENDIF.
IF SY-SUBRC = 12.
*Error in internal number assignment .
ENDIF.
*-- close the job
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = v_jobcount
jobname = 'ZTEST'
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'W' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
clear tbtcp.
STEP = 1.
select single listident from tbtcp
into tbtcp-listident
where jobname = 'ZTEST'
and jobcount = v_jobcount
and stepcount = step.
IF SY-SUBRC EQ 0.
move tbtcp-listident to spool_id.
ENDIF.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = SPOOL_ID
NO_DIALOG = ''
DST_DEVICE = 'LOHP' "E_DEVTYPE
PDF_DESTINATION = 'LOHP'
IMPORTING
PDF_BYTECOUNT = BTC
PDF_SPOOLID =
LIST_PAGECOUNT =
BTC_JOBNAME =
BTC_JOBCOUNT =
TABLES
PDF = T_SPOOL_2_PDF
EXCEPTIONS
ERR_NO_ABAP_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DESTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 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.
ELSE.
TEXT02 = ITNO.
MESSAGE I014(ZQOTBANK) WITH TEXT02.
ENDIF.
Thnx
MoniHi MD,
I download the result of the function like this :
call function 'CONVERT_OTFSPOOLJOB_2_PDF'
exporting
src_spoolid = v_spoolid
NO_DIALOG = 'X'
IMPORTING
PDF_BYTECOUNT = v_numbytes
TABLES
PDF = it_pdf.
call function 'DOWNLOAD'
exporting
bin_filesize = v_numbytes
filetype = 'BIN'
importing
act_filename = v_filename
tables
data_tab = it_pdf.
Regards
Frédéric -
ABAP Rpt to PDF using CONVERT_ABAPSPOOLJOB_2_PDF issues in Batch
Hi,
We just upgraded to 731 level 09. Our program using CONVERT_ABAPSPOOLJOB_2_PDF works in the foreground. The PDF contains the report, It does not work in the background. The program does capture the spool number, but the PDF created is empty. The program did work in the background before the upgrade. Has anyone else experienced this? Any suggestions?
Regards,
GregHello,
Check below note.
1667737 - RSTXPDFT4: Conversion in background terminates
Also, as per note check user profile for default printer.
Regards,
Sameer -
CONVERT_ABAPSPOOLJOB_2_PDF // PDF in email attachment
Hello all,
i have z report program that line-size 132 that write abap list (Write: / .....).
1-Calling FM GET_PRINT_PARAMETERS, to print
2-Calling FM JOB_OPEN, to get job name and number
3-Calling my z-report program
SUBMIT /sym/bb_q_perg01
WITH prlos-low = prueflos
VIA JOB job_name
NUMBER job_count
AND RETURN
TO SAP-SPOOL
SPOOL PARAMETERS ls_print_parameters
ARCHIVE PARAMETERS ls_arc_params
WITHOUT SPOOL DYNPRO.
3-Calling FM CLOSE JOB
4- getting spool # and convert spool via FM CONVERT_ABAPSPOOLJOB_2_PDF
5- Call FM SCMS_BINARY_TO_XSTRING to convert script text line to hex string - byte sequence
6-Call FM SCMS_XSTRING_TO_BINARY to convert hex string to binary
7- send mail with PDF attachment
Issue:
All working fine only PDF recieved with small FONTs. which we print via attachment in email hard to see PDF contents.
i tried many thing but no success. even i tried 132 to 255 no success same result
Please, can any one help.Hi Mohammed,
Use the page format functionality before calling the FM CONVERT_ABAPSPOOLJOB_2_PDF i.e. before 4th step.
Below is the code:
PERFORM page_format USING e_spool_no.
FORM page_format USING e_spool_no TYPE rspoid.
DATA: gt_spool TYPE TABLE OF rspodev,
gs_spool TYPE rspodev.
REFRESH: gt_spool[].
CALL FUNCTION 'RSPO_R_SELECT_TSP01'
EXPORTING
rqident = e_spool_no
TABLES
tsp01desc = gt_spool
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc = 0.
*Passing RQPAPER has the key and getting the paper format.
READ TABLE gt_spool INTO gs_spool WITH KEY param = 'RQPAPER'.
IF sy-subrc = 0.
CASE gv_flag.
WHEN 'X'.
gs_spool-value = gc_255.
WHEN 'L'.
gs_spool-value = gc_512.
WHEN OTHERS.
gs_spool-value = gc_200.
ENDCASE.
MODIFY gt_spool INDEX 21 FROM gs_spool.
ENDIF.
ENDIF.
CALL FUNCTION 'RSPO_R_UPDATE_TSP01'
TABLES
tsp01desc = gt_spool.
COMMIT WORK.
ENDFORM. " PAGE_FORMAT
Regards,
Prathap -
hi,
can any body tell how to convert the sap data into pdf format and send that pdf as an attachment through the email.
it is very urgent.
thanks in advance.*& Report ZSPOOLTOPDF *
*& Converts spool request into PDF document and emails it to *
*& recipicant. *
*& Execution *
*& This program must be run as a background job in-order for the write *
*& commands to create a Spool request rather than be displayed on *
*& screen *
REPORT zspooltopdf.
PARAMETER: p_email1 LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_sender LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_delspl AS CHECKBOX.
*DATA DECLARATION
DATA: gd_recsize TYPE i.
Spool IDs
TYPES: BEGIN OF t_tbtcp.
INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
wa_tbtcp TYPE t_tbtcp.
Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
gd_eventparm LIKE tbtcm-eventparm,
gd_external_program_active LIKE tbtcm-xpgactive,
gd_jobcount LIKE tbtcm-jobcount,
gd_jobname LIKE tbtcm-jobname,
gd_stepcount LIKE tbtcm-stepcount,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
DATA: w_recsize TYPE i.
DATA: gd_subject LIKE sodocchgi1-obj_descr,
it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_sender_type LIKE soextreci1-adr_typ,
gd_attachment_desc TYPE so_obj_nam,
gd_attachment_name TYPE so_obj_des.
Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
gd_destination LIKE rlgrap-filename,
gd_bytecount LIKE tst01-dsize,
gd_buffer TYPE string.
Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.
CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',
c_no(1) TYPE c VALUE ' ',
c_device(4) TYPE c VALUE 'LOCL'.
*START-OF-SELECTION.
START-OF-SELECTION.
Write statement to represent report output. Spool request is created
if write statement is executed in background. This could also be an
ALV grid which would be converted to PDF without any extra effort
WRITE 'Hello World'.
new-page.
commit work.
new-page print off.
IF sy-batch EQ 'X'.
PERFORM get_job_details.
PERFORM obtain_spool_id.
Alternative way could be to submit another program and store spool
id into memory, will be stored in sy-spono.
*submit ZSPOOLTOPDF2
to sap-spool
spool parameters %_print
archive parameters %_print
without spool dynpro
and return.
Get spool id from program called above
IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
PERFORM convert_spool_to_pdf.
PERFORM process_email.
if p_delspl EQ 'X'.
PERFORM delete_spool.
endif.
IF sy-sysid = c_dev.
wait up to 5 seconds.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
ELSE.
SKIP.
WRITE:/ 'Program must be executed in background in-order for spool',
'request to be created.'.
ENDIF.
FORM obtain_spool_id *
FORM obtain_spool_id.
CHECK NOT ( gd_jobname IS INITIAL ).
CHECK NOT ( gd_jobcount IS INITIAL ).
SELECT * FROM tbtcp
INTO TABLE it_tbtcp
WHERE jobname = gd_jobname
AND jobcount = gd_jobcount
AND stepcount = gd_stepcount
AND listident <> '0000000000'
ORDER BY jobname
jobcount
stepcount.
READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
IF sy-subrc = 0.
message s004(zdd) with gd_spool_nr.
gd_spool_nr = wa_tbtcp-listident.
MESSAGE s004(zdd) WITH gd_spool_nr.
ELSE.
MESSAGE s005(zdd).
ENDIF.
ENDFORM.
FORM get_job_details *
FORM get_job_details.
Get current job details
CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
IMPORTING
eventid = gd_eventid
eventparm = gd_eventparm
external_program_active = gd_external_program_active
jobcount = gd_jobcount
jobname = gd_jobname
stepcount = gd_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
ENDFORM.
FORM convert_spool_to_pdf *
FORM convert_spool_to_pdf.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ' ~'.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING '~ '.
DO.
it_mess_att = gd_buffer.
APPEND it_mess_att.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
FORM process_email *
FORM process_email.
DESCRIBE TABLE it_mess_att LINES gd_recsize.
CHECK gd_recsize > 0.
PERFORM send_email USING p_email1.
perform send_email using p_email2.
ENDFORM.
FORM send_email *
--> p_email *
FORM send_email USING p_email.
CHECK NOT ( p_email IS INITIAL ).
REFRESH it_mess_bod.
Default subject matter
gd_subject = 'Subject'.
gd_attachment_desc = 'Attachname'.
CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
it_mess_bod = 'Message Body text, line 1'.
APPEND it_mess_bod.
it_mess_bod = 'Message Body text, line 2...'.
APPEND it_mess_bod.
If no sender specified - default blank
IF p_sender EQ space.
gd_sender_type = space.
ELSE.
gd_sender_type = 'INT'.
ENDIF.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_mess_bod
it_mess_att
using p_email
'Example .xls documnet attachment'
'PDF'
gd_attachment_name
gd_attachment_desc
p_sender
gd_sender_type
changing gd_error
gd_reciever.
ENDFORM.
FORM delete_spool *
FORM delete_spool.
DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
ld_spool_nr = gd_spool_nr.
CHECK p_delspl <> c_no.
CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
EXPORTING
spoolid = ld_spool_nr.
ENDFORM.
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables it_message
it_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = it_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
check this.
regards,
Prabhu -
Regarding spool creation with 0 pages...
Hello,
I am using following code for spool creation but it gets created with 0 pages. Even though I can see data the spool has 0 pages due to which it causes issues when I try to convert spool to pdf.
DATA :
lv_handle TYPE sy-tabix,
lv_spoolid TYPE tsp01-rqident,
lv_rc TYPE c,
lv_errmessage TYPE c,
et_table TYPE scarr OCCURS 0 WITH HEADER LINE.
SELECT *
FROM scarr
INTO TABLE et_table.
CALL FUNCTION 'RSPO_OPEN_SPOOLREQUEST'
EXPORTING
dest = 'LP01'
IMPORTING
handle = lv_handle
spoolid = lv_spoolid
rc = lv_rc
errmessage = lv_errmessage.
LOOP AT et_table.
CALL FUNCTION 'RSPO_WRITE_SPOOLREQUEST'
EXPORTING
handle = lv_handle
text = et_table-url
IMPORTING
rc = lv_rc
errmessage = lv_errmessage.
ENDLOOP.
CALL FUNCTION 'RSPO_CLOSE_SPOOLREQUEST'
EXPORTING
handle = lv_handle
IMPORTING
rc = lv_rc
errmessage = lv_errmessage.
DATA: v_pdf_bytecount TYPE i,
it_pdf TYPE tlinetab.
" convert spool number to PDF
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = lv_spoolid
no_dialog = ' '
IMPORTING
pdf_bytecount = v_pdf_bytecount
TABLES
pdf = it_pdf.
Please help.
Regards,
Jainam.
Edited by: Jainam Shah on Aug 26, 2009 5:53 PM
Edited by: Jainam Shah on Aug 26, 2009 5:53 PM
Edited by: Jainam Shah on Aug 26, 2009 6:07 PMSolved by my own.
We need to use a FM as below to create page..
CALL FUNCTION 'RSPO_PAGE_BREAK_SPOOLREQUEST'
EXPORTING
HANDLE = LV_HANDLE
OPTIONS =
LENGTH =
IMPORTING
RC =
ERRMESSAGE =
EXCEPTIONS
HANDLE_NOT_VALID = 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. -
CONVERT_ABAPSPOOLJOB_2_PDF spools too wide
Hi All
I'm using function CONVERT_ABAPSPOOLJOB_2_PDF to convert our spools to PDF and then archive link it.
However when you look at the spool in SP01, all our spools are 255 chars wide regardless of LINE-COUNT, LINE-SIZE and LAYOUT settings. You can look at the bottom of every spool to see there is a scrollbar that can scroll 255 chars to the right.
Now when we create PDF and archive, it creates a very wide PDF document and when you view it as SD attached PDF document after archiving it is unacceptable. due to the landscape and tiny document to the left of the page. It looks the size of an A3 landscape.
How can I define the width of the spool. As mentioned, defining LINE-SIZE or LAYOUT is of no use. The spool itself is much wider.
Best regards,
AdrianSupriya.ch answer was copied from http://forums.sdn.sap.com/thread.jspa?threadID=796083&tstart=0. His post has been rejected and the points removed.
-
Problems with "convert_abapspooljob_2_pdf" and Adobe 8.0
Hi
I have created a report which converts a spool file to PDF using FM convert_abapspooljob_2_pdf, an sends it as an email attachment using FM SO_DOCUMENT_SEND_API1.
When using Adobe acrobat reader 7.0 on the client it works just fine, but if i'm trying to open the document with Adobe acrobat reader 8.0 ; I get the error message "There was an error opening this document. The file is damaged and could not be repaired".
Have any of you faced this problem, and how do I solve this ?
Regards
Morten NielsenHi
hmmm.... it looks like the report RSTXPDFT4 convert the spool file correctly - the error must be ind the send mail part of the report. Do you have any Suggestions her ?
Regards
Morten Nielsen
Source Code extract:
FORM create_mail .
DATA: lt_pdf TYPE tline OCCURS 0 WITH HEADER LINE,
lt_pdf_out TYPE solisti1 OCCURS 0 WITH HEADER LINE,
lt_cont_bin TYPE solisti1 OCCURS 0 WITH HEADER LINE,
l_docdata LIKE sodocchgi1,
lt_plist LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
lt_rec LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
lt_cont LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_attach LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
l_sender LIKE soextreci1-receiver,
l_numbytes TYPE i,
l_pdfspoolid LIKE tsp01-rqident,
l_jobname LIKE tbtcjob-jobname,
l_jobcount LIKE tbtcjob-jobcount.
DATA: wa_yum_sd_receiver TYPE yum_sd_receiver.
DATA: tab_lines TYPE i.
CONSTANTS: c_mail_subj_prefix type string value 'IT Registration For '.
LOOP AT lt_control .
REFRESH: lt_pdf, lt_plist, lt_rec, lt_cont, lt_attach.
Convert Spool File To PDF *
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = lt_control-spool_id
NO_DIALOG =
DST_DEVICE =
PDF_DESTINATION =
IMPORTING
pdf_bytecount = l_numbytes
pdf_spoolid = l_pdfspoolid
btc_jobname = l_jobname
btc_jobcount = l_jobcount
TABLES
pdf = lt_pdf
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 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.
Collect Information For Sendmail Purpose *
*Document Header data
l_docdata-obj_name = 'OBJNAME'.
l_docdata-obj_descr = 'Process RoleRequest for user'.
CONCATENATE c_mail_subj_prefix
lt_control-yum_user
into l_docdata-obj_descr.
*Get Receiver
SELECT SINGLE * FROM yum_sd_receiver INTO wa_yum_sd_receiver
WHERE subsyst = lt_control-subsystem.
lt_rec-receiver = wa_yum_sd_receiver-receiver.
lt_rec-rec_type = wa_yum_sd_receiver-rec_type.
IF sy-subrc NE 0.
MESSAGE e021(yum) WITH lt_control-subsystem.
ERROR ! No Servicedesk mail-adress from for system & in YUM_SD_RECEIVER
ENDIF.
APPEND lt_rec.
*Sender
l_sender = lt_control-requester.
*Create Mail Content
CONCATENATE 'Please process approved role assignment for user'(017)
lt_control-yum_user
'in system'(018)
lt_control-subsystem
INTO lt_cont-line SEPARATED BY space.
APPEND lt_cont.
DESCRIBE TABLE lt_cont LINES tab_lines.
READ TABLE lt_cont INDEX tab_lines.
l_docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( lt_cont ).
CLEAR lt_plist.
CLEAR lt_plist-transf_bin.
lt_plist-head_start = 1.
lt_plist-head_num = 0.
lt_plist-body_start = 1.
lt_plist-body_num = tab_lines.
lt_plist-doc_type = 'TXT'.
APPEND lt_plist.
*Create Packing list
create attachment
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_src = 134
line_width_dst = 255
TRANSFER_BIN = ' '
TABLES
content_in = lt_pdf
content_out = lt_pdf_out
EXCEPTIONS
err_line_width_src_too_long = 1
err_line_width_dst_too_long = 2
err_conv_failed = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
APPEND LINES OF lt_pdf_out TO lt_cont_bin.
lt_objhead = 'RoleRequest.PDF'.
APPEND lt_objhead.
DESCRIBE TABLE lt_cont_bin LINES tab_lines.
READ TABLE lt_cont_bin INDEX tab_lines.
l_docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( lt_cont_bin ).
clear lt_plist.
clear lt_plist-transf_bin.
lt_plist-transf_bin = 'X'.
lt_plist-head_start = 1.
lt_plist-head_num = 1.
lt_plist-body_start = 1.
lt_plist-body_num = tab_lines.
lt_plist-doc_type = 'PDF'.
lt_plist-obj_name = 'Attachment'.
lt_plist-obj_descr = 'RoleRequest'.
lt_plist-doc_size = tab_lines * 255.
APPEND lt_plist.
Send Mail *
IF p_send EQ 'X'. "Do Not Send in Test Mode
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = l_docdata
put_in_outbox = 'X'
sender_address = l_sender
sender_address_type = 'B'
commit_work = 'X'
IMPORTING
SENT_TO_ALL =
NEW_OBJECT_ID =
SENDER_ID =
TABLES
packing_list = lt_plist
object_header = lt_objhead
contents_bin = lt_cont_bin
contents_txt = lt_cont
CONTENTS_HEX =
OBJECT_PARA =
OBJECT_PARB =
receivers = lt_rec
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " create_mail -
Attachment size using fm convert_abapspooljob_2_pdf
Is there any method to reduce the PDF size created by the FM convert_abapspooljob_2_pdf? There is a 150+ page report that a few users need (well, that they think they need) via an email attachment.
Right now it's converting to a 30+ MB attachment and the send fails.
Thanx
MarkThis question has been discussed many times. That means: I hardly believe you didn´t find any relevant information source. Did you search? There are factors causing the PDF to be large, like coloring. If you would remove the coloring of the cells, the file size should shrink. In case you would like to create a PDF file like 100x smaller, why don´t you create an Adobe form for this purpose? Without any special magic, it would take you like half an hour.
regards Otto -
Error in the function module CONVERT_ABAPSPOOLJOB_2_PDF
I have generated the Spool for the smart form output.
I want to convert that to PDF. so after fetching the spool number i have used the above function module as below.
Here i am getting an error as "Spool request 11378 contains no ABAP list data"
Here is the code for reference. Please guide me your suggesions.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output.Hi Manjunath,
See the program RSTXPDFT4 to know how to use the fm CONVERT_ABAPSPOOLJOB_2_PDF
Declare an internal table like :
DATA: lt_pdf LIKE tline OCCURS 100 WITH HEADER LINE.
and call the Fm :
pass spool request no and bytecount.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = i_spool_request
no_dialog = ' '
IMPORTING
pdf_bytecount = lv_bytecount
TABLES
pdf = lt_pdf
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
Check the following link.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8cd6adbb-0301-0010-39ba-38c601d5db9
This is a report program that will execute the given program with the specified variant in background and convert the spool request into PDF and send it as attachment to the specified Email ID.
Regards,
Jagadish -
Hi Dudes
I have the following requirement:
I am doing 1 script and I have to convert that script output to PDF Formatt and then I have to send that PDF form to multiple users using email ids.
Can anyone let me know the procedure.
Points are assured for correct answers.
Regards,
kumarHi Kumar,
Check this code.
*& Report ZSPOOLTOPDF *
*& Converts spool request into PDF document and emails it to *
*& recipicant. *
*& Execution *
*& This program must be run as a background job in-order for the write *
*& commands to create a Spool request rather than be displayed on *
*& screen *
REPORT zspooltopdf.
PARAMETER: p_email1 LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_sender LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_delspl AS CHECKBOX.
*DATA DECLARATION
DATA: gd_recsize TYPE i.
Spool IDs
TYPES: BEGIN OF t_tbtcp.
INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
wa_tbtcp TYPE t_tbtcp.
Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
gd_eventparm LIKE tbtcm-eventparm,
gd_external_program_active LIKE tbtcm-xpgactive,
gd_jobcount LIKE tbtcm-jobcount,
gd_jobname LIKE tbtcm-jobname,
gd_stepcount LIKE tbtcm-stepcount,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
DATA: w_recsize TYPE i.
DATA: gd_subject LIKE sodocchgi1-obj_descr,
it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_sender_type LIKE soextreci1-adr_typ,
gd_attachment_desc TYPE so_obj_nam,
gd_attachment_name TYPE so_obj_des.
Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
gd_destination LIKE rlgrap-filename,
gd_bytecount LIKE tst01-dsize,
gd_buffer TYPE string.
Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.
CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',
c_no(1) TYPE c VALUE ' ',
c_device(4) TYPE c VALUE 'LOCL'.
*START-OF-SELECTION.
START-OF-SELECTION.
Write statement to represent report output. Spool request is created
if write statement is executed in background. This could also be an
ALV grid which would be converted to PDF without any extra effort
WRITE 'Hello World'.
new-page.
commit work.
new-page print off.
IF sy-batch EQ 'X'.
PERFORM get_job_details.
PERFORM obtain_spool_id.
Alternative way could be to submit another program and store spool
id into memory, will be stored in sy-spono.
*submit ZSPOOLTOPDF2
to sap-spool
spool parameters %_print
archive parameters %_print
without spool dynpro
and return.
Get spool id from program called above
IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
PERFORM convert_spool_to_pdf.
PERFORM process_email.
if p_delspl EQ 'X'.
PERFORM delete_spool.
endif.
IF sy-sysid = c_dev.
wait up to 5 seconds.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
ELSE.
SKIP.
WRITE:/ 'Program must be executed in background in-order for spool',
'request to be created.'.
ENDIF.
FORM obtain_spool_id *
FORM obtain_spool_id.
CHECK NOT ( gd_jobname IS INITIAL ).
CHECK NOT ( gd_jobcount IS INITIAL ).
SELECT * FROM tbtcp
INTO TABLE it_tbtcp
WHERE jobname = gd_jobname
AND jobcount = gd_jobcount
AND stepcount = gd_stepcount
AND listident <> '0000000000'
ORDER BY jobname
jobcount
stepcount.
READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
IF sy-subrc = 0.
message s004(zdd) with gd_spool_nr.
gd_spool_nr = wa_tbtcp-listident.
MESSAGE s004(zdd) WITH gd_spool_nr.
ELSE.
MESSAGE s005(zdd).
ENDIF.
ENDFORM.
FORM get_job_details *
FORM get_job_details.
Get current job details
CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
IMPORTING
eventid = gd_eventid
eventparm = gd_eventparm
external_program_active = gd_external_program_active
jobcount = gd_jobcount
jobname = gd_jobname
stepcount = gd_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
ENDFORM.
FORM convert_spool_to_pdf *
FORM convert_spool_to_pdf.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ' ~'.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING '~ '.
DO.
it_mess_att = gd_buffer.
APPEND it_mess_att.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
FORM process_email *
FORM process_email.
DESCRIBE TABLE it_mess_att LINES gd_recsize.
CHECK gd_recsize > 0.
PERFORM send_email USING p_email1.
perform send_email using p_email2.
ENDFORM.
FORM send_email *
--> p_email *
FORM send_email USING p_email.
CHECK NOT ( p_email IS INITIAL ).
REFRESH it_mess_bod.
Default subject matter
gd_subject = 'Subject'.
gd_attachment_desc = 'Attachname'.
CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
it_mess_bod = 'Message Body text, line 1'.
APPEND it_mess_bod.
it_mess_bod = 'Message Body text, line 2...'.
APPEND it_mess_bod.
If no sender specified - default blank
IF p_sender EQ space.
gd_sender_type = space.
ELSE.
gd_sender_type = 'INT'.
ENDIF.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_mess_bod
it_mess_att
using p_email
'Example .xls documnet attachment'
'PDF'
gd_attachment_name
gd_attachment_desc
p_sender
gd_sender_type
changing gd_error
gd_reciever.
ENDFORM.
FORM delete_spool *
FORM delete_spool.
DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
ld_spool_nr = gd_spool_nr.
CHECK p_delspl <> c_no.
CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
EXPORTING
spoolid = ld_spool_nr.
ENDFORM.
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables it_message
it_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = it_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
Hope this resolves your query.
Reward all the helpful answers.
Regards -
Hi ABAPers,
My requirement is that, when any employee get seperates from the organization, then he and his particular department people (through which he has taken company products Ex:- Laptops, company cars, etc.,) should get E-Mails, that he is leaving from the company so kindly collect all the products from him.
This is working well, but the problem was instead of sending one mail to each of them, they were going twice or thrice.
so how can i solve this.
i used FM "SO_NEW_DOCUMENT_SEND_API1" to send mails.
in that FM i passed these two, object_content = i_message
receivers = i_receivers
while debugging "i_receivers" contains 3 mail-id's, but it was going 2 time for each of them.
can any one help me in this issue.
Thanks in Advance,
Regards,
Ramana Prasad. THi ...
seee yhe below program and the clear & refresher with in the loop ... and also the bolled fields passsing to the FM
*& Report ZSPOOLTOPDF *
*& Converts spool request into PDF document and emails it to *
*& recipicant. *
*& Execution *
*& This program must be run as a background job in-order for the write *
*& commands to create a Spool request rather than be displayed on *
*& screen *
REPORT zspooltopdf.
PARAMETER: p_email1 LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_sender LIKE somlreci1-receiver
DEFAULT '[email protected]',
p_delspl AS CHECKBOX.
*DATA DECLARATION
DATA: gd_recsize TYPE i.
* Spool IDs
TYPES: BEGIN OF t_tbtcp.
INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
wa_tbtcp TYPE t_tbtcp.
* Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
gd_eventparm LIKE tbtcm-eventparm,
gd_external_program_active LIKE tbtcm-xpgactive,
gd_jobcount LIKE tbtcm-jobcount,
gd_jobname LIKE tbtcm-jobname,
gd_stepcount LIKE tbtcm-stepcount,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
DATA: w_recsize TYPE i.
DATA: gd_subject LIKE sodocchgi1-obj_descr,
it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_sender_type LIKE soextreci1-adr_typ,
gd_attachment_desc TYPE so_obj_nam,
gd_attachment_name TYPE so_obj_des.
* Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
gd_destination LIKE rlgrap-filename,
gd_bytecount LIKE tst01-dsize,
gd_buffer TYPE string.
* Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.
CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',
c_no(1) TYPE c VALUE ' ',
c_device(4) TYPE c VALUE 'LOCL'.
*START-OF-SELECTION.
START-OF-SELECTION.
* Write statement to represent report output. Spool request is created
* if write statement is executed in background. This could also be an
* ALV grid which would be converted to PDF without any extra effort
WRITE 'Hello World'.
new-page.
commit work.
new-page print off.
IF sy-batch EQ 'X'.
PERFORM get_job_details.
PERFORM obtain_spool_id.
*** Alternative way could be to submit another program and store spool
*** id into memory, will be stored in sy-spono.
*submit ZSPOOLTOPDF2
* to sap-spool
* spool parameters %_print
* archive parameters %_print
* without spool dynpro
* and return.
* Get spool id from program called above
* IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
PERFORM convert_spool_to_pdf.
PERFORM process_email.
if p_delspl EQ 'X'.
PERFORM delete_spool.
endif.
IF sy-sysid = c_dev.
wait up to 5 seconds.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
ELSE.
SKIP.
WRITE:/ 'Program must be executed in background in-order for spool',
'request to be created.'.
ENDIF.
* FORM obtain_spool_id *
FORM obtain_spool_id.
CHECK NOT ( gd_jobname IS INITIAL ).
CHECK NOT ( gd_jobcount IS INITIAL ).
SELECT * FROM tbtcp
INTO TABLE it_tbtcp
WHERE jobname = gd_jobname
AND jobcount = gd_jobcount
AND stepcount = gd_stepcount
AND listident <> '0000000000'
ORDER BY jobname
jobcount
stepcount.
READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
IF sy-subrc = 0.
message s004(zdd) with gd_spool_nr.
gd_spool_nr = wa_tbtcp-listident.
MESSAGE s004(zdd) WITH gd_spool_nr.
ELSE.
MESSAGE s005(zdd).
ENDIF.
ENDFORM.
* FORM get_job_details *
FORM get_job_details.
* Get current job details
CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
IMPORTING
eventid = gd_eventid
eventparm = gd_eventparm
external_program_active = gd_external_program_active
jobcount = gd_jobcount
jobname = gd_jobname
stepcount = gd_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
ENDFORM.
* FORM convert_spool_to_pdf *
FORM convert_spool_to_pdf.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
* Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ' ~'.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING '~ '.
DO.
it_mess_att = gd_buffer.
APPEND it_mess_att.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
* FORM process_email *
FORM process_email.
DESCRIBE TABLE it_mess_att LINES gd_recsize.
CHECK gd_recsize > 0.
PERFORM send_email USING p_email1.
* perform send_email using p_email2.
ENDFORM.
* FORM send_email *
* --> p_email *
FORM send_email USING p_email.
CHECK NOT ( p_email IS INITIAL ).
REFRESH it_mess_bod.
* Default subject matter
gd_subject = 'Subject'.
gd_attachment_desc = 'Attachname'.
* CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
it_mess_bod = 'Message Body text, line 1'.
APPEND it_mess_bod.
it_mess_bod = 'Message Body text, line 2...'.
APPEND it_mess_bod.
* If no sender specified - default blank
IF p_sender EQ space.
gd_sender_type = space.
ELSE.
gd_sender_type = 'INT'.
ENDIF.
* Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables
<b>it_mess_bod</b>
it_mess_att
using p_email
'Example .xls documnet attachment'
'PDF'
gd_attachment_name
gd_attachment_desc
p_sender
gd_sender_type
changing gd_error
gd_reciever.
ENDFORM.
* FORM delete_spool *
FORM delete_spool.
DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
ld_spool_nr = gd_spool_nr.
CHECK p_delspl <> c_no.
CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
EXPORTING
spoolid = ld_spool_nr.
ENDFORM.
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
* Send email
FORM send_file_as_email_attachment tables
<b>it_message</b>
it_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
* Fill the document data.
w_doc_data-doc_size = 1.
* Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
* Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = it_attach[].
* Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE
<b>it_message</b>
LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
* Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
<b>* Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.</b>
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
* Populate zerror return code
ld_error = sy-subrc.
* Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
Reward points if it is usefull .....
gIRISH -
Regarding sy-index and sy-tabix
Hi,
What is the major difference between sy-index and sy-tabix ,
can you give me one good example with code..
Regards,
Reddy.Hi,
SY-TABIX - Current line of an internal table. SY-TABIX is set by the statements below, but only for index tables. The field is either not set or is set to 0 for hashed tables.
APPEND sets SY-TABIX to the index of the last line of the table, that is, it contains the overall number of entries in the table.
COLLECT sets SY-TABIX to the index of the existing or inserted line in the table. If the table has the type HASHED TABLE, SY-TABIX is set to 0.
LOOP AT sets SY-TABIX to the index of the current line at the beginning of each loop lass. At the end of the loop, SY-TABIX is reset to the value that it had before entering the loop. It is set to 0 if the table has the type HASHED TABLE.
READ TABLE sets SY-TABIX to the index of the table line read. If you use a binary search, and the system does not find a line, SY-TABIX contains the total number of lines, or one more than the total number of lines. SY-INDEX is undefined if a linear search fails to return an entry.
SEARCH FOR sets SY-TABIX to the index of the table line in which the search string is found.
SY_INDEX - In a DO or WHILE loop, SY-INDEX contains the number of loop passes including the current pass.
sy-tabix is the tab index - the index of the record in the internal table you are accessing,
sy-index is the loop counter.
If you use a condition in LOOP the sy-index will go from 1 to n, but sy-tabix will refer to the line in the internal table.
Hope this helps u.
Thanks,
Ruthra -
Regarding Field Missing in Dso Transformation
Hi
Folks
I am facing the issue like
In Datasouce to DSO transformation i can see the 55 objects in DSO table, and in DSO to Cube Transformation i can see 54 fields in DSO table, one field is missing , the object 0TXTSH(short discription) is mapped to field 0TXZ01in DS to DSO transformation.
so How can i get the field in DSO to Cube transformation.??
any settings have to be change???
waiting for yours Valuable answers
Regards
AnandHi,
Please identify the object and check it whether it is an attribute or a characteristic, if it is attribute only disable that option then check it.
Regards,
Srinivas -
I am having an issue regarding a placed order via customer service department
I recently relocated to Anchorage Alaska as part of a permanent change of station per the United States Air Force. I was initially located on the East Coast in the lower 48 and at the time of activating my contract I had purchased two separate Iphone 4 devices. I also recently went in to a store in February to purchase a Nexus 7 as well.
Upon arrival in Anchorage I had multiple issues regarding the Iphone 4 devices including being unable to send and receive text messages & imessages, unable to make phone calls, dropped phone calls, unable to utilize GPS, as well as not being able to access general account information and use anything related to web browsing or data usage. It was determined that because the Iphone 4 operates on the 3g network and Verizon does not have a 3g network in Alaska, as a result I was utilizing an extended service network from another carrier. As a result of this I am only able to use my Iphone 4 devices while connected to my wi-fi network while within my home, which is totally unacceptable.
I was not made aware that I would be dealing with this when I moved to Alaska and inquired as the the use of the devices I currently owned prior to purchasing the tablet. I was assured by three separate store employees one of which being a manager that all devices would function at 100% efficiency including the Iphone 4s. In fact I was recently billed 350$ for roaming charges last month, which prompted me to speak with a representative via the online chat regarding the significant increase she said that she was unable to process any sort of credit to the account regardless of what I had been told at a local Verizon store where I purchased the tablet.
As a result of all of these mishaps since arriving here in Alaska I determined I was in need of newer devices that utilize the 4G LTE network currently provided by Verizon in Alaska. I know for a fact that the 4G LTE works great up here because my Nexus 7 tablet runs flawlessly and does not incur roaming charges when utilizing the 4G LTE network.
Yesterday I attempted to contact Verizon through the live chat feature regarding upgrading two of the devices on my account. The live chat representative immediately asked me when my upgrade date was. Upon telling her my upgrade date 9/29/2014 she told me I should contact the customer service department as I might be eligible for an early upgrade. I then proceeded to contact the customer service department using my Iphone 4.
My attempt to speak to anyone in the customer service department resulted in a merry-go-round of being put on hold 6 separate times by two different employees, both of which had me wait for more than an hour while they attempted to speak to a manager to gain approval for an early upgrade. The first rep seemed almost sure she would be able to have my devices upgraded early especially considering the issues I was having regarding service.
The second rep seemed newer and was very dodgy about my questions and was very unwilling to help at first. He even mentioned that I had been a Verizon customer for almost two years, had never missed a single payment and had outstanding account history which should have garnered some sort of importance to the level of my request. But I digress, during this time I was disconnected from the call twice from each separate representative.
Both reps assured me they would call me back, I never did get a call back from either one of those reps and I was becoming very frustrated having waited four hours trying to find some sort of solution to my current predicament.
After waiting an hour for the second representative to call back I grew impatient and contacted the customer service department, was put on hold again, and finally reached a third customer service representative who was able to provide a solution for me.
I explained everything I had been dealing with to Cory ID # V0PAC61, both regarding the phones, the issue of the level of service I was receiving, the dire need for working devices and the multiple times I had been disconnected. I explained to him as a result of these issues I was certainly considering switching to a different provider, a local provider even who could provide me the adequate service that I require for my mobile devices.
I explained to Cory that I had been with Verizon for almost two years, and I had been on a relatives account prior to owning my own Verizon account and had never received this kind of treatment when trying to work towards a simple solution. Cory proceeded to tell me he needed to put me on hold to see if there was anything that could be done regarding the upgrades of the device considering all of the trouble I had been dealing with.
After Cory reconnected with me in the phone call he was able to successfully reach a solution by allowing me to upgrade my devices. We conversed about the options available and I eventually decided to upgrade both Iphone 4 devices to Moto X devices as we determined those would be sufficient for my needs while in Alaska. I also proceeded to add two Otter Box Defender cases to the order so that the devices would have sufficient protection. Cory inquired as to whether or not I would like to purchase insurance for the phones as well and I opted for the $5.00 monthly insurance which including damage and water protection.
Cory explained to me the grand total for the devices which included an activation fee of $35.00 for each device, $49.99 for each Otter Box case, and an additional $50.00 for each device which would be refunded as a rebate upon receipt of the devices and activation, a rebate that I would be required to submit. Cory explained to me that the devices would most likely arrive Tuesday of 6/17 and no later than Wednesday 6/18.
Cory took my shipping information and told me everything was all set and the only thing left to do was to transfer me to the automated service so that I could accept the 2 year agreement for both devices. I thanked him very much, took his name and ID# so that I might leave positive feedback about his exemplary customer service and was then transferred to the automated service.
Once transferred to the automated service I was then prompted to enter both telephone numbers for the devices that would be upgraded, I was then required to accept the new 2 year agreement for both devices and after doing so I was required to end the call. I did so in an orderly fashion and expected a confirmation # to arrive in my email regarding the placed order.
I have never received a confirmation email. I decided to sleep on it and assumed a confirmation email would be sent sometime tomorrow. Nothing has since been received however. I woke up early this morning around 6AM Alaska time to speak to another live chat representative, Bryan, in the billing department who assured me the order was currently processing and verified the order #. I asked him whether or not it was typical for a customer to not receive a confirmation email for an order placed and he said it can sometimes take up to 2-3 business days. He then stated that he had taken note of the issues I was experiencing and told me he would transfer me to the sales department as they would be able to provide more information regarding the shipment of both devices and a confirmation email, as he stated he did not want me to have to wait any longer than necessary to receive said devices.
I was then transferred to Devon in the sales department via the live chat service where I was then required to repeat everything I had said to both Bryan and the other representatives I had spoken too. After a lengthy discussion and repeating everything I have just wrote he told me the order was indeed processing and that he would send a confirmation email in the next 30 minutes.
That was 2 hours ago. It is now 8am Alaska time and I still have not received a confirmation email regarding my order. I was sent an email by Verizon an hour ago stating I had a device to "discover". The email contained no information regarding the shipment of my device, the order confirmation number, or anything regarding my account. The email I received was a typical spam email asking an individual to check out the current available phones and sign up for a new contract.
All I want is a confirmation email to assure that the devices are being sent. I need my phone for work and to communicate with my family in the lower 48. I desperately need to make sure that the device is in fact being sent to the proper address, this is why a confirmation email of the order is so important. I do not care about the shipping speed I just want what I ask to be taken care of for a change. I would hate to sit here unable to determine what the status of my devices are only for the order to be stuck in "processing" limbo and be unable to receive the devices when I was told they would be sent.
I feel I have been given the run around treatment way more than is typically given with any company when an individual is trying to work towards a solution. I have been patient and cordial with everyone I have spoken with, I have not raised my voice or shown stress or anger towards the situation I have only tried my best to work towards a solution with anyone I have spoken too but I am becoming increasingly frustrated with this situation.
Any help regarding this matter would be greatly appreciated. This situation has left a sour taste in my mouth and if the devices were indeed not actually processed in an order, or they were not shipped correctly, or in fact if the order had never existed at all it will only deter me from keeping my Verizon account active and affect my decision to switch to another provider.Hello APVzW, we absolutely want the best path to resolution. My apologies for multiple attempts of replacing the device. We'd like to verify the order information and see if we can locate the tracking number. Please send a direct message with the order number so we can dive deeper. Here's steps to send a direct message: http://vz.to/1b8XnPy We look forward to hearing from you soon.
WiltonA_VZW
VZW Support
Follow us on twitter @VZWSupport
Maybe you are looking for
-
I purchased a 3 TB Western Digital Firewire Drive (it also has USB) to set up as a new Time Machine. I want to use my present backup file. I am not experiencing any problems with my present Time Machine, but the drive is very full. I am following the
-
Hide the "Vendors by Old Account Number" search tab??
For some vendors we have, the previous account numbers are in fact real social security numbers (SSNs) from our prior system. Unfortunately they can be seen using the "Vendors by Old Account Number" search tab when pulled up on any containing the Ven
-
Where's the problem in my jsp including Chinese string in WL6.0sp1
hi, my code and appear error as follows, pls help code: <HTML> <title>注册</title> <BODY BGCOLOR="#FFFFFF" > <%@ page language="java" contentType="text/html; charset=gb2312" import="
-
Error message:you are not licensed to open form
Hi readers, I just want to ask how can i resolve this error message." youare not licensed to open form" it appears when i try to open the production order using the account of one user.in admin account I already choose the "read only" but stil
-
Problems sending bufferedimages through a socket
Hi everyone, I've got a server program that takes a screen capture as a bufferedimage, and sends it through a socket to be saved by the client program. The programs work fine, however, whenever I'm transferring the image with the code at the bottom o