Exporting a spool request
Hello Techies,
I have a spool request that I need to get out so we can distribute to JPMC and PWC for analysis. The report is 90,000 pages. Any ideas? Someone had asked if we could do an FTP.
Regards
Thirupathioreddy
Hi,
Please check the below link
http://help.sap.com/saphelp_autoid2007/helpdata/en/30/cc154219fce12ce10000000a1550b0/content.htm
Also check the note
Note 24834 - How to download spool requests?
Thanks
Debdeep
Similar Messages
-
Generate spool request from an invoice
Hi,
I'd like to know is there any function module to generate an spool request from an invoice document generate previously by VF01 (VF04) SAP transaction code.
I'd like to generate on demand a spool request over an invoice previously generated by SAP
Anyone knows if it is possible?
ThanksThe billing process included the spool generation runs perfectly by stantard SAP funciontality.
But I'd like to generate a spool request whenever I want for an invoice previously generated and printed.
You know that for space requirements the spool request are deleted periodically, but I want to generate a spool request for an invoice, which spool request was generated and deleted. This behaviouir is reclaimed for a system process so, it's not possible to regenerated the spool request using the funcionality incluided in SAP by VF02, VF31 transactions code.
I need a function module or something like that, so import and invoice document number and export and spool request.
Thanks in advance, -
Smartform internal_error when merging forms into 1 spool request
Hi,
I have 2 smartforms - a letter and a certificate. The user has the option to print either one of these forms or both, per employee. I'm using 1 spool request.
As soon as I call the second smartform there is an INTERNAL_ERROR. Why does this happen and how do I solve the problem?
Please refer to the code sample below:
loop at i380.
make sure the spool is not closed
control_parameters-no_open = 'X'.
control_parameters-no_close = 'X'.
AT FIRST.
control_parameters-no_open = ' '.
ENDAT.
AT LAST.
control_parameters-no_close = ' '.
ENDAT.
call smartform 1
call function 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZLETTER'
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
if sy-subrc <> 0.
WRITE: / 'ERROR 1'.
endif.
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = control_parameters
OUTPUT_OPTIONS = output_options
USER_SETTINGS = ' '
pernr = i380-pernr
IMPORTING
JOB_OUTPUT_INFO = otf_info
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
endif.
second smartform - certificate
call function 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZCERTIFICATE'
IMPORTING
FM_NAME = FM_NAME2
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
if sy-subrc <> 0.
WRITE: / 'ERROR 1'.
endif.
CALL FUNCTION FM_NAME2
EXPORTING
CONTROL_PARAMETERS = control_parameters
OUTPUT_OPTIONS = output_options
USER_SETTINGS = ' '
pernr = i380-pernr
IMPORTING
JOB_OUTPUT_INFO = otf_info
EXCEPTIONS
FORMATTING_ERROR = 1
<b> INTERNAL_ERROR = 2</b> SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
ENDIF.
endloop.
I cleared output_parameters, output_options and otf_info when calling form ZCERTIFICATE but this does not solve the problem. When ZCERTIFICATE is called seperately, there is no problem. The forms should be printed directly without conversion to PDF.
Your help will be appreciated.Hi,
In the loop AT Last is in wrong place. May be that could be the reason for your problem. Then the second call to samrt from is will be working on a closed session.
regards
austin
Message was edited by: Joseph Austin Prabhu Paulthas -
Write the Error log from background Job to the Spool request
Hi ,
I have a situation where in i need to capture the error log of a Z program which runs as a background job and write that log into the spool request. My Z program calls runs RSEINB00 program using the SUBMIT statement. When this Job fails the error log can be seen in SM37. But i need this error log to be sent in to a spool.
I can read the error log using the BP_JOBLOG_READ FM and can also create a spool using the RSPO_SPOOL_OPEN FM.
The problem is, when the Submit statement executes, due to internal valdation in the RSEINB00 program the program terminates. Due to this it is not able to perform the SY-SUBRC Check and thus doesn't read the log.
Can anybody suggest me how to overcome this problem. I am attaching the code for your refernece.
SUBMIT RSEINB00
USING SELECTION-SET 'TEST2'
TO SAP-SPOOL
LIST NAME 'LOCL'
IMMEDIATELY space
KEEP IN SPOOL 'X'
AND RETURN.
<b>If sy-subrc <> 0.</b>
CALL FUNCTION 'BP_JOBLOG_READ'
EXPORTING
CLIENT = SY-MANDT
JOBCOUNT = i_tbtco-jobcount
JOBLOG = i_tbtco-joblog
JOBNAME = i_tbtco-jobname
TABLES
JOBLOGTBL = l_joblog
IF SY-SUBRC <> 0.
else.
message i002 with l_joblog-msgv1.
ENDIF.
<b>
ENDIF.</b>
Rgds,
Kewal
P.S. : any other approach to solve this problem will be appreciated too and the points will be rewarded suitably.If I select a job in SM37 and I click on "spool" I get a list with separate spool entries for each of the steps, e. g.
Programmname/Kommand Programmtyp Spoolliste
Z_MM_STAT_UPDATE_WERK ABAP 1707445
ZSLEEP Ext. Kommando
Z_MM_STAT_UPDATE_WERK ABAP 1707459
ZSLEEP Ext. Kommando
Z_MM_STAT_UPDATE_MARA ABAP 1721423
ZSLEEP Ext. Kommando
Z_MM_STAT_UPDATE_WERK ABAP 1721437
Z_MM_STAT_UPDATE_MARA ABAP 1721446
Z_MM_STAT_UPDATE_WERK ABAP 1721447
Z_MM_STAT_UPDATE_VKORG ABAP 1721471
ZSLEEP Ext. Kommando
Z_MM_STAT_UPDATE_VKORG ABAP 1721521
ZSLEEP Ext. Kommando
Z_MM_STAT_UPDATE_VKORG ABAP 1721816
It's in German but I'm sure you get the idea. For each Z_MM_STAT_UPDATE and variant I have a separate spool list that I can display.
Markus -
Always generation of new spool request when using message type WNAK
Hey!
I have one question regarding the printout of message type WNAK.
In SAP standard the print program RWBNASTV and entry routine ENTRY_ABR_NATRAB is used.
Now I want to ensure that at every printout generates a new spool request.
Problem is that when a user prints a purchase order and after that a Sett. Crdt Agrmt (WNAK) the second printout is attached to the previous spool.
How can I ensure that there is always a new spool file generated without copying the print program and the corresponding function modules before OPEN_FORM?
In the print conditions I only know the function "Immediately print" but that is no help if the printout is attached to the purchase order which was printed before.
Is there no flag which escpecially ensures that for this message type should be always be generated a new spool request?!?!
I hope you know something else.
With kind regards.
MarkI alreadey copied the print program and the function modules but I am still looking for another solution because I think that is not the best solution for the problem.
I changed following in include LWNPNFO0 (copied to LYWNPNFO0):
--- Konvertierung der Kommunikationsdaten: --
MOVE-CORRESPONDING pi_nast TO lvs_snast.
MOVE sy-repid TO lvf_program.
CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
EXPORTING
pi_comm_type = lvs_comm_type
pi_comm_values = lvs_comm_values
pi_screen = pi_screen
pi_newid = 'X'
pi_country = pi_tocountry
pi_repid = lvf_program
pi_snast = lvs_snast
IMPORTING
pe_itcpo = lvs_itcpo
pe_device = lvf_device
pe_mail_recipient = lvs_recipient
pe_mail_sender = lvs_sender
EXCEPTIONS
comm_type_not_supported = 1
recipient_creation_failed = 2
sender_creation_failed = 3
OTHERS = 4.
IF sy-subrc <> 0.
MOVE sy-subrc TO po_retcode.
PERFORM error_message_arrang_append_sy TABLES ptx_error_messages
USING pi_kona
dummy_vake.
ENDIF.
CHECK po_retcode = 0.
*--- Öffnen des Formulars:
CALL FUNCTION 'OPEN_FORM'
EXPORTING
archive_index = toa_dara
archive_params = arc_params
device = lvf_device
dialog = ' '
form = pi_formular
language = pi_nast-spras
OPTIONS = lvs_itcpo
mail_sender = lvs_sender
mail_recipient = lvs_recipient
EXCEPTIONS
canceled = 1
device = 2
form = 3
OPTIONS = 4
unclosed = 5
mail_options = 6
archive_error = 7
OTHERS = 8.
IF sy-subrc NE 0.
Edited by: Mark Müller on Jul 30, 2009 10:36 PM -
Problem in converting Spool Request into PDF format
Hi,
I am facing problem to convert spool request (which store output of sap script) in to PDF format. Actually I have converted it with function module 'CONVERT_OTFSPOOLJOB_2_PDF' and it is working properly but the problem occurs where the BOLD fonts are used. I am unable to see the Text/Address where i have used Bold Font in script (PDF FORMAT). Even though in (SPO1) spool request shows every thing perfectly (along with Bold Font). It will great if you could suggest me something.
Thanks,
PradeepHi Pradeep,
Use ,
Closing the Sapscript, we save data (OTF) in a table
CALL FUNCTION 'CLOSE_FORM'
TABLES
otfdata = t_otfdata
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
send_error = 3
spool_error = 4
OTHERS = 5.
DATA: BEGIN OF t_otfdata2 OCCURS 0.
INCLUDE STRUCTURE solisti1.
DATA: END OF t_otfdata2.
Move OTF data to another table with lenght 255
LOOP AT t_otfdata.
CONCATENATE t_otfdata-tdprintcom t_otfdata-tdprintpar INTO t_otfdata2.
APPEND t_otfdata2.
ENDLOOP.
Convert OTF format to PDF
CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
EXPORTING
format_src = 'OTF'
format_dst = 'PDF'
devtype = 'PRINTER'
FUNCPARA =
len_in = len_in
IMPORTING
len_out = len_out
TABLES
content_in = t_otfdata2
content_out = t_pdfdata
EXCEPTIONS
err_conv_failed = 1
OTHERS = 2.
Have a look at Progs. RSTXPDF4 and RSTXPDFT2 for converting the Spool to PDF.
Regards,
Raj
Message was edited by: Rajasekhar Dinavahi
Message was edited by: Rajasekhar Dinavahi -
Converting spool request into multiple pdf formated documents
Hi Guys,
I am designing a report with several pages of output and running it in background.
Is there a possibility to convert each page into an separate pdf format document ?
If I use ALV report as output, if its more than page, do I face any issue with pdf conversion.
ThanksCheck the Following code, This might be helpful:
form rstxpdft4 using filename.
* Read spool job contents (OTF or ABAP list) and convert
* to PDF, download PDF
data: download value 'X'.
data: lv_filename like rlgrap-filename.
lv_filename = filename.
data otf like itcoo occurs 100 with header line.
data cancel.
data pdf like tline occurs 100 with header line.
data doctab like docs occurs 1 with header line.
data: numbytes type i,
arc_idx like toa_dara,
pdfspoolid like tsp01-rqident,
jobname like tbtcjob-jobname,
jobcount like tbtcjob-jobcount,
is_otf.
data: client like tst01-dclient,
name like tst01-dname,
objtype like rststype-type,
type like rststype-type.
select single * from tsp01 where rqident = gt_rq-rqident.
if sy-subrc <> 0.
write: / 'Spool request does not exist', gt_rq-rqident
color col_negative.
exit.
endif.
client = tsp01-rqclient.
name = tsp01-rqo1name.
call function 'RSTS_GET_ATTRIBUTES'
exporting
authority = 'SP01'
client = client
name = name
part = 1
importing
type = type
objtype = objtype
exceptions
fb_error = 1
fb_rsts_other = 2
no_object = 3
no_permission = 4.
if objtype(3) = 'OTF'.
is_otf = 'X'.
else.
is_otf = space.
endif.
if is_otf = 'X'.
call function 'CONVERT_OTFSPOOLJOB_2_PDF'
exporting
src_spoolid = gt_rq-rqident
no_dialog = ' '
importing
pdf_bytecount = numbytes
pdf_spoolid = pdfspoolid
btc_jobname = jobname
btc_jobcount = jobcount
tables
pdf = pdf .
else.
call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
exporting
src_spoolid = gt_rq-rqident
no_dialog = ' '
importing
pdf_bytecount = numbytes
pdf_spoolid = pdfspoolid
btc_jobname = jobname
btc_jobcount = jobcount
tables
pdf = pdf
*************** download PDF file ***********
v_filename = lv_filename.
* call function 'WS_DOWNLOAD'
* exporting
* bin_filesize = numbytes
* filename = lv_filename
* filetype = 'BIN'
* tables
* data_tab = pdf
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
* if sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* else.
* gv_count = gv_count + 1.
* endif.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = numbytes
FILENAME = v_filename
FILETYPE = 'BIN'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = pdf .
* FIELDNAMES =
Thanks. -
How do you preview using a spool request number
How do you preview using a spool request number?
I have an application in which I have accumulated the results from several smartforms into one spool request. I have the spool request number, and am printing it using function RSPO_RPRINT_SPOOLREQ.
I need to be able to preview the contents of the spool request before printing. I can not preview when generating the smartforms, as that involves several previews, and I need to preview once only per spool request.
I have been trying to use RSPO_RDISPLAY_OUTREQ but it dumps immediately (line 47) with field symbol <FTSP01> not assigned.
Suggestions?*With no faction module "COM_SE_SPOOL_DISPLAY", try this simple code, you can display the form *type spool (you also can put the code in a function module):
REPORT ypl_test_display_spool MESSAGE-ID zm_print.
PARAMETERS: rqident LIKE tsp01-rqident,
rqdocty LIKE tsp01-rqdoctype.
*--- there may be more types need to separate..., so use case...
CASE rqdocty.
WHEN 'OTF' OR 'SMART'.
PERFORM display_form.
WHEN OTHERS.
PERFORM display_others.
ENDCASE.
*& Form DISPLAY_FORM
display form type spool...
FORM display_form.
DATA: wstr_otf_control TYPE itcpp.
DATA: wtbl_buffer TYPE TABLE OF soli WITH HEADER LINE.
DATA: wtbl_otf TYPE TABLE OF itcoo WITH HEADER LINE.
DATA: wstr_retcode LIKE itcpp.
*--- return spool raw data
CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
EXPORTING
rqident = rqident
TABLES
buffer = wtbl_buffer
EXCEPTIONS
no_such_job = 1
job_contains_no_data = 2
selection_empty = 3
no_permission = 4
can_not_access = 5
read_error = 6
type_no_match = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE s013 WITH text-001.
EXIT.
ENDIF.
LOOP AT wtbl_buffer .
wtbl_otf-tdprintcom = wtbl_buffer(2).
wtbl_otf-tdprintpar = wtbl_buffer+2.
APPEND wtbl_otf.
ENDLOOP.
*--- some data to pass to this parameter, may not need...from SP01...
wstr_otf_control-tdcopies = 1.
wstr_otf_control-tdappl = 'TX'.
wstr_otf_control-tddest = 'LOCL'.
wstr_otf_control-tdpages = 0.
wstr_otf_control-tdnoprint = 'X'.
CALL FUNCTION 'DISPLAY_OTF'
EXPORTING
control = wstr_otf_control
IMPORTING
RESULT = wstr_retcode
TABLES
otf = wtbl_otf.
IF wstr_retcode IS INITIAL.
*--- message...
ENDIF.
ENDFORM. "DISPLAY_FORM
*& Form display_others
display other types, may more types needed to separate...
you can refer current version of SAP report RSPOLST2
FORM display_others.
CALL FUNCTION 'RSPO_DISPLAY_SPOOLJOB'
EXPORTING
rqident = rqident
EXCEPTIONS
no_such_job = 1
job_contains_no_data = 2
selection_empty = 3
no_permission = 4
can_not_access = 5
read_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE s013 WITH text-001.
ENDIF.
ENDFORM. "display_others -
Convert Spool request to PDF and send as e-mail
Hi all,
Can any one please provide me a sample code for converting spool request to pdf?
Thanks in advance,
Suneela.HI,
Try this
Hi all,
Can any one please provide me a sample code for converting spool request to pdf?
*& 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.
Reward points if found helpfull....
Venkoji. -
Hi friends,
as per the old message I am trying to create a spool request which further will be downloaded to PDF format. I am facing a problem, as per message when I try to do write in worte_perform I am receving ABAP dumps with Illegal page number
anyidea why is it so .
Thanks
Lakhbir
data: loc_dest like pri_params-pdest .
clear : wf_listname , loc_dest , wf_listtext .
move: 'List name' to wf_listname .
move: 'List header text' to wf_listtext .
select single spld into usr01-spld from usr01 where bname eq sy-uname .
if sy-subrc eq 0 .
move: usr01-spld to loc_dest .
endif .
call function 'GET_PRINT_PARAMETERS'
exporting
destination = loc_dest
copies = wf_copies
list_name = wf_listname
list_text = wf_listtext
immediately = ' '
release = ' '
new_list_id = 'X'
expiration = wf_days
line_size = 200
line_count = 65
layout = 'X_65_200'
sap_cover_page = 'X'
receiver = 'SAP*'
department = ''
no_dialog = 'X'
importing
out_parameters = wf_params
valid = wf_valid.
if wf_valid <> space.
new-page print on parameters wf_params no dialog.
perform write_summary .
new-page print off.
endif .
within the write_summary do a normal write operation.
loop at <itab> .
write:/
endloop .We encountered a similar problem on 4.6C using a custom BAPI to save invoices to PDF for an internal web app. We used a BDC/call transaction to access the output function from there. This was only supposed to be a temporary workaround but has been working and we probably won't revisit until our next upgrade. Hopefully this idea will help on your version, if so I am new here and need points!
*Generate Transaction
PERFORM dynpro USING :
'X' 'SAPMV60A' '0101' ,
' ' 'VBRK-VBELN' v_invoice ,
' ' 'BDC_OKCODE' '=DRCK' .
PERFORM dynpro USING :
'X' 'SAPLVMSG' '0110' ,
' ' 'DNAST-KSCHL' v_kschl,
' ' 'BDC_OKCODE' '=STAR' .
SELECT * UP TO 1 ROWS
FROM nast WHERE objky = v_invoice
AND vstat = '1'
AND kappl = 'V3'
AND kschl = v_kschl
AND aktiv = space.
ENDSELECT.
IF sy-subrc = 0.
PERFORM dynpro USING :
'X' 'SAPLSPO1' '0300' ,
' ' 'BDC_OKCODE' '=YES' .
ENDIF.
PERFORM dynpro USING :
'X' 'SAPLVMSG' '0100' ,
' ' 'NAST-LDEST' 'TD06',
' ' 'NAST-DIMME' space,
' ' 'NAST-TDOCOVER' space,
' ' 'NAST-TDRECEIVER' space,
' ' 'NAST-DELET' 'X',
' ' 'BDC_OKCODE' '=STAR' .
CALL TRANSACTION 'VF03'
USING i_bdcdata
MODE v_mode
UPDATE 'S'
MESSAGES INTO i_bdcmsgcoll. -
Long time for generating spool request for smartforms
Hi,
I'm have designed a smartforms for printing a Receipt form. It takes about 1 minute for generating spool request after pressing the PRINT button in PRODUCTION Server only.
The Code i used is below
CALL FUNCTION lv_fname
EXPORTING
p_belnr = p_belnr
p_bukrs = p_bukrs
p_gjahr = p_gjahr
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Please help me out to sort this issue.
Thanks,
Ramesh
Edited by: Rameshkumar Raamasamy on Mar 4, 2012 6:21 AMHi Rameshkumar,
you may look at the code sections of your smartform: If you have a lot more data in production than you have in development, it is especially important to use a fully specified primary key for any SELECTs.
You may also ask your basis people to check if any performance warnings have been recorded with database system. This happens quite frequently that growing database tables cause problems when table spaces are not properly assigned or table sizes are not maintained adequately.
Regards
Clemens -
How to create new spool request in smartforms??????
hi all,
i have to ctreate a new spool request for a smartform...
The driver program for this smartform is a standard program.
when i run the transaction, the spool for standard sap-script gets created but not for my smartform.
the code is something like this:-
wa_ssfcompop-TDDEST = 'LOCL'.
wa_ssfcompop-TDIMMED = space.
wa_ssfcompop-TDNEWID = 'X'.
wa_ssfcompop-TDFINAL = 'X'.
*wa_ssfcompop-XSF = 'X'.
wa_SSFCTRLOP-no_dialog = 'X'.
CALL FUNCTION v_fm_name
EXPORTING
CONTROL_PARAMETERS = wa_SSFCTRLOP
OUTPUT_OPTIONS = wa_ssfcompop
wa_rldri = xrldri
wa_rldrp = xrldrp
wa_rldru = xrldru
wa_t329p = xt329p
wa_resb = xresb
wa_rldrc = xrldrc
wa_vblkk = xvblkk
wa_vblkp = xvblkp
wa_rldrh = xrldrh
wa_rlvek = xrlvek
wa_reftab = xreftab
wa_lthu = xlthu
v_date = v_date
v_time = v_time
v_label = v_label
v_bzeit = v_bzeit
v_name1 = v_name1
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
it_rldri = xrldri
it_rldrh = xrldrh
it_rldrc = xrldrc
it_vblkk = it_vblkk
it_vblkp = it_vblkp
it_rldrp = it_rldrp
it_rldru = it_rldru
it_t329p = it_t329p
it_resb = it_resb
it_rlvek = it_rlvek
it_reftab = it_reftab
it_lthu = it_lthu
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Help would be greatly appreciated and definitely rewardedhi
good
Use the function module 'GET_PRINT_PARAMETERS'.
sample:
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
ARCHIVE_ID = C_CHAR_UNKNOWN
ARCHIVE_INFO = C_CHAR_UNKNOWN
ARCHIVE_MODE = C_CHAR_UNKNOWN
ARCHIVE_TEXT = C_CHAR_UNKNOWN
AR_OBJECT = C_CHAR_UNKNOWN
ARCHIVE_REPORT = C_CHAR_UNKNOWN
AUTHORITY = C_CHAR_UNKNOWN
copies = g_copies
COVER_PAGE = C_CHAR_UNKNOWN
DATA_SET = C_CHAR_UNKNOWN
department = ''
destination = g_destination
expiration = g_days
immediately = ' '
IN_ARCHIVE_PARAMETERS = ' '
IN_PARAMETERS = ' '
layout = 'X_65_200'
line_count = 65
line_size = 200
list_name = g_listname
list_text = g_listtext
MODE = ' '
new_list_id = 'X'
PROTECT_LIST = C_CHAR_UNKNOWN
no_dialog = 'X'
receiver = 'SAP*'
release = ' '
REPORT = C_CHAR_UNKNOWN
sap_cover_page = 'X'
HOST_COVER_PAGE = C_CHAR_UNKNOWN
PRIORITY = C_NUM1_UNKNOWN
SAP_OBJECT = C_CHAR_UNKNOWN
TYPE = C_CHAR_UNKNOWN
USER = SY-UNAME
USE_OLD_LAYOUT = ' '
UC_DISPLAY_MODE = C_CHAR_UNKNOWN
DRAFT = C_CHAR_UNKNOWN
ABAP_LIST = ' '
USE_ARCHIVENAME_DEF = ' '
DEFAULT_SPOOL_SIZE = C_CHAR_UNKNOWN
PO_FAX_STORE = ' '
NO_FRAMES = C_CHAR_UNKNOWN
IMPORTING
OUT_ARCHIVE_PARAMETERS =
out_parameters = g_params
valid = g_valid.
IF g_valid <> space.
NEW-PAGE PRINT ON PARAMETERS g_params NO DIALOG.
IF NOT tb_output3[] IS INITIAL.
LOOP AT tb_output3 INTO wa_output3.
PERFORM write_summary.
ENDLOOP.
ENDIF.
Reward if useful...
thanks
mrutyun^ -
Direct Conversion of smartform into PDF system has to take spool request ?
does anybody know:
Direct Conversion of smartform into PDF, system has to take spool request dynamically..
i don't mean to use the SE38 calling PRG RSTXPDFT4 to transfer SAP sript into PDF.
thanks
SRIDHAR--strike Yes this is what I understood.
In the structure job_output_info of your function you'll find your OTF data :
st_ssfcrescl-otfdata --
CALL FUNCTION smartform_fonction_name
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
control_parameters = st_ssfctrlop
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
output_options = st_ssfcompop
user_settings = ' '
IMPORTING
document_output_info = st_ssfcrespd
job_output_info = st_ssfcrescl " This is the one which contains OTF data
job_output_options = st_ssfcresop
TABLES
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
-- Then you just have to convert, using something like that : --
* Convert OTF to PDF
LOOP AT otf_data INTO w_otf.
CONCATENATE w_otf-tdprintcom w_otf-tdprintpar
INTO w_pdf.
APPEND w_pdf TO i_content_txt.
ENDLOOP.
CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
EXPORTING
format_src = 'OTF'
format_dst = 'PDF'
CHANGING
transfer_bin = w_transfer_bin
content_txt = i_content_txt
content_bin = i_content_bin
objhead = i_objhead
len = v_len_in
EXCEPTIONS
err_conv_failed = 1
OTHERS = 2.
v_size = v_len_in.
pdf_itab_size = v_size.
it_pdfout[] = it_pdf[].
* Create the PDF File
CLEAR it_pdfdata.
REFRESH it_pdfdata.
* it_pdfdata[] = it_pdfout[].
LOOP AT it_pdfout.
MOVE it_pdfout-tline TO it_pdfdata-line.
APPEND it_pdfdata.
CLEAR it_pdfdata.
ENDLOOP.
-- The smartform creation and the PDF creation are done in the same time...--
OK, So what do'nt you want to use the RSTXPDFT4 program ?
Hope this helps,
Erwan
Edited by: Erwan LE BRUN on Aug 28, 2008 12:02 PM
Edited by: Erwan LE BRUN on Aug 28, 2008 12:03 PM -
How to print the spool request with a given file name.
Dear Experts;
I used FM RSPO_OUTPUT_SPOOL_REQUEST to print spool request. And the device type is a local pdf printer. By default, the download file name will be the spool id. How can I change the download file name? Thanks!
Convert 'CutePrinter' to qualify the format.
CALL FUNCTION 'CONVERSION_EXIT_SPDEV_INPUT'
EXPORTING
input = 'CutePrinter'
IMPORTING
output = lv_device.
Downloading as pdf by printer
CALL FUNCTION 'RSPO_OUTPUT_SPOOL_REQUEST'
EXPORTING
device = lv_device
spool_request_id = pa_spool
EXCEPTIONS
archive_dest_invalid = 1
archive_dest_not_found = 2
archive_dest_no_right = 3
cannot_archive = 4
change_archdest_no_right = 5
change_copies_no_right = 6
change_dest_no_right = 7
change_devtype_no_right = 8
change_prio_no_right = 9
change_telenum_no_right = 10
change_title_no_right = 11
dest_invalid = 12
dest_not_found = 13
dest_no_right = 14
internal_problem = 15
invalid_fax_attribute = 16
invalid_parameters = 17
non_owner_no_right = 18
no_layout = 19
no_spool_request = 20
out_again_no_right = 21
spooler_problem = 22
OTHERS = 23SELECT SINGLE * FROM tsp01 into rq WHERE rqident = p_spool .
* To get attributes of spool request
CALL FUNCTION 'RSPO_GET_ATTRIBUTES_SPOOLJOB'
EXPORTING
rqident = p_spool "Spool Request Number
IMPORTING
rq = rq "Consists the Spool Document Type Details
TABLES
attributes = dummy
EXCEPTIONS
no_such_job = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
*Convert spool request into PDF, dependent on document type
IF rq-rqdoctype = 'OTF' OR rq-rqdoctype = 'SMART'. "Doc Type is of Sap Script or Smart form
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = p_spool "Spool Request Number
no_dialog = 'X'
pdf_destination = 'X'
no_background = 'X'
IMPORTING
pdf_bytecount = bin_size
bin_file = pdf_xstring "This fm will convert the spool data into
TABLES
pdf = it_pdf . "PDF Format in this importing string
ELSEIF rq-rqdoctype = 'LIST'. "Doc Type of List
* Convert spool to PDF
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = p_spool "Spool Request Number
no_dialog = ' '
dst_device = 'LOCL'
pdf_destination = 'X'
no_background = 'X'
IMPORTING
pdf_bytecount = bin_size
bin_file = pdf_xstring "This fm will convert the spool data into
"PDF Format in this importing string
TABLES
pdf = it_pdf.
ENDIF.
* Downloading file to p_file loation in PDF foramt
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = bin_size
filename = w_filename "Custom File name
filetype = 'BIN'
TABLES
data_tab = it_pdf
Prabhudas -
Dear all,
I have a requirement, to download the list output in PDF format. I am using the following code. This program converts the list output into spool request. But the problem is it is having number of pages is 0(We can see in SP01).
Could you please let me know the reason why it is having the number of pages is 0. It shoud show number of pages is atleast 1(since its having some data).
Please help me at the earliest.
This is the code I am using.....
TABLES :mara, makt.
TYPES: BEGIN OF t_mara,
matnr LIKE mara-matnr,
meins LIKE mara-meins,
matkl like mara-matkl,
ersda LIKE mara-ersda,
ername LIKE mara-ernam,
END OF t_mara.
DATA: i_mara TYPE TABLE OF t_mara,
wa_mara LIKE LINE OF i_mara.
DATA: v_dest LIKE tsp01-rqdest,
v_handle LIKE sy-tabix,
v_spool_id LIKE tsp01-rqident,
v_rc TYPE c,
v_errmessage(100) TYPE c,
v_text(70) TYPE c,
gd_spool_nr LIKE tsp01-rqident.
START-OF-SELECTION.
SELECT matnr FROM mara INTO TABLE i_mara
UP TO 10 ROWS.
CALL FUNCTION 'RSPO_OPEN_SPOOLREQUEST'
EXPORTING
dest = 'LOCL'
layout = 'X_58_170'
name = ' LOCL'
suffix1 = 'LOCL'
suffix2 = 'Z_DOWNLOASUT'
copies = '1'
prio = '5'
immediate_print = 'X'
AUTO_DELETE =
TITLELINE =
RECEIVER =
DIVISION =
AUTHORITY =
POSNAME =
ACTTIME =
LIFETIME = '8'
APPEND =
COVERPAGE =
codepage = '1152'
doctype = 'LIST'
IMPORTING
handle = v_handle
spoolid = gd_spool_nr
rc = v_rc
errmessage = v_errmessage.
LOOP AT i_mara INTO wa_mara.
CONCATENATE wa_mara-matnr wa_mara-meins "i_mara-maktl
wa_mara-ersda wa_mara-ername INTO v_text SEPARATED BY space.
CALL FUNCTION 'RSPO_WRITE_SPOOLREQUEST'
EXPORTING
handle = v_handle
text = v_text
LENGTH =
CODEPAGE =
TRUNCATE =
IMPORTING
rc = v_rc
errmessage = v_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.
ENDLOOP.
CALL FUNCTION 'RSPO_CLOSE_SPOOLREQUEST'
EXPORTING
handle = v_handle
IMPORTING
rc = v_rc
errmessage = v_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.
COMMIT WORK.
SUBMIT rstxpdft4 WITH spoolno = gd_spool_nr
WITH download = 'X'
VIA SELECTION-SCREEN
AND RETURN.
Thanks And regards,
JanardhanoK
Maybe you are looking for
-
IPod Camera Connector for the iPod Touch
I have an iPod Camera Connector for a previous model of iPod. Now that I have an iPod Touch, when I try to use it I get an error message that states this device is not supported. Has iPod created a Camera Connector to upload pictures from a card larg
-
How to use page-number in xsl:if
Hi I would like to use <fo:page-number/> in my if clause. Based on page number, I would like to add some more fields. If help on this greatly appriciated. Thanks, Ram.
-
JDeveloper link to MS SQL Server database MDS errors
The database connection to the SQL server can be successfully created and used (after putting the sqljdbc4.jar file into the project's path). Then when I try to use that db connection for a SOA-MDS connection, the "Messages" tab in JDev displays the
-
Mvt Type Text Table T156HT - How to configure?
Hi all, There is a text table to support movement types - it's a general description table, unlike T156T. Seems like none of the Z* movement types created (copied from standard mvt types) has made an entry in this table during config. Anyone know how
-
Clear hardrive of personal info?
clear hardrive of personal info?