ALV Report to PDF
Hi,
Need help on ALV ..am a newbie on this...I have created the source code but i cant proceed with the below requirement
The report will be generated in ALV ,
1. executed in a background job
2. spool to be converted in a PDF
3. PDF to be save in SAP directory
4. PDF file to be sent other server ( outside SAP)
I have completed the coding for the alv report but put to stop coz of the 4 requirements above..
Need your expertise advise here.. Many thanks in advance.
========================
REPORT ZSD_REPORT.
TABLES: VBAK,
KNA1,
VBPA,
PA0001,
T001.
DATA: T_VBELN LIKE VBAK-VBELN.
DATA: T_VGBEL LIKE VBAK-VGBEL.
DATA: IT_VBAK1 LIKE VBAK OCCURS 0 WITH HEADER LINE.
DATA: IT_VBAK2 LIKE VBAK OCCURS 0 WITH HEADER LINE,
IT_KNA1 LIKE KNA1 OCCURS 0 WITH HEADER LINE,
IT_VBPA LIKE VBPA OCCURS 0 WITH HEADER LINE,
IT_VBPA1 LIKE VBPA OCCURS 0 WITH HEADER LINE,
IT_PA0001 LIKE PA0001 OCCURS 0 WITH HEADER LINE,
IT_PA00011 LIKE PA0001 OCCURS 0 WITH HEADER LINE.
type-pools: slis. "ALV Declarations
TYPES: BEGIN OF IT_VBAK,
VBELN TYPE VBAK-VBELN,
VGBEL TYPE VBAK-VGBEL,
ZZ_PROBEZ TYPE VBAK-ZZ_PROBEZ,
ZK_PERNR TYPE VBPA-PERNR,
ZT_PERNR TYPE VBPA-PERNR,
VDATU TYPE VBAK-VDATU,
ZZ_PROJ_LOC TYPE VBAK-ZZ_PROJ_LOC,
NAME1 TYPE KNA1-NAME1,
GV_PC TYPE PA0001-ENAME,
GV_PM TYPE PA0001-ENAME,
ZZ_COMP_02 TYPE VBAK-ZZ_COMP_02,
END OF IT_VBAK.
DATA: IT_VBAK TYPE STANDARD TABLE OF IT_VBAK WITH HEADER LINE.
DATA: IS_VBAK TYPE STANDARD TABLE OF IT_VBAK WITH HEADER LINE.
DATA: WA_VBAK TYPE STANDARD TABLE OF IT_VBAK WITH HEADER LINE.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
*Start-of-selection.
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK PSP WITH FRAME TITLE TEXT-001.
PARAMETERS P_AUART LIKE VBAK-AUART DEFAULT 'ZSSO'.
PARAMETERS P_VKORG LIKE VBAK-VKORG DEFAULT '2700'.
PARAMETERS P_STATUS LIKE VBAK-ZZ_COMP_02.
*SELECT-OPTIONS SO_ERDAT LIKE VBAK-ERDAT DEFAULT SY-DATUM.
SELECTION-SCREEN END OF BLOCK PSP.
SELECT * INTO TABLE IT_VBAK1 FROM VBAK
WHERE AUART EQ P_AUART
AND VKORG EQ P_VKORG
AND ZZ_COMP_02 EQ P_STATUS.
IF NOT IT_VBAK1[] IS INITIAL.
SORT IT_VBAK1 BY VBELN.
LOOP AT IT_VBAK1.
SELECT SINGLE * FROM KNA1
INTO IT_KNA1
WHERE KUNNR = IT_VBAK1-KUNNR.
SELECT SINGLE * FROM VBPA
INTO IT_VBPA
WHERE VBELN = IT_VBAK1-VBELN
AND PARVW = 'ZK'.
SELECT SINGLE * FROM PA0001
INTO IT_PA0001
WHERE PERNR = IT_VBPA-PERNR.
SELECT SINGLE * FROM VBPA
INTO IT_VBPA1
WHERE VBELN = IT_VBAK1-VBELN
AND PARVW = 'ZT'.
SELECT SINGLE * FROM PA0001
INTO IT_PA00011
WHERE PERNR = IT_VBPA1-PERNR.
T_VBELN = IT_VBAK1-VBELN.
T_VGBEL = IT_VBAK1-VGBEL.
SHIFT T_VBELN LEFT DELETING LEADING '0'.
SHIFT T_VGBEL LEFT DELETING LEADING '0'.
MOVE T_VBELN TO IT_VBAK-VBELN.
MOVE T_VGBEL TO IT_VBAK-VGBEL.
MOVE IT_VBAK1-ZZ_PROBEZ TO IT_VBAK-ZZ_PROBEZ.
MOVE IT_VBPA-PERNR TO IT_VBAK-ZK_PERNR.
MOVE IT_VBPA1-PERNR TO IT_VBAK-ZT_PERNR.
APPEND IT_VBAK.
ENDLOOP.
ELSE.
WRITE: /'No Record Exists'.
ENDIF.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
perform display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
form build_fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Order No.'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'VGBEZ'.
fieldcatalog-seltext_m = 'Quotation Ref.'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NAME1'.
fieldcatalog-seltext_m = 'Customer'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
endform. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
it_events = gt_events
is_print = gd_prntparams
i_save = 'X'
is_variant = z_template
tables
t_outtab = IT_VBAK
exceptions
program_error = 1
others = 2.
if sy-subrc <> 0.
endif.
endform. " DISPLAY_ALV_REPORT
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM DATA_RETRIEVAL.
ENDFORM.
Form TOP-OF-PAGE *
ALV Report Header *
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
ld_title(100) type c,
ld_title2(200) type c,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c,
it_logo(10) type c.
LD_TITLE = 'SD REPORT'.
wa_header-typ = 'H'.
wa_header-info = ld_title.
append wa_header to t_header.
clear wa_header.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
endform.
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'VBELN'.
Read data table, using index of row user clicked on
READ TABLE IT_VBAK INTO WA_VBAK INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'AUN' FIELD WA_VBAK-VBELN.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
*& Form BUILD_EVENTS
Build events table
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
*& Form BUILD_PRINT_PARAMS
Setup print parameters
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
*& Form END_OF_PAGE
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
*& Form END_OF_LIST
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.
=============================
She
Hi SHE,
Check the attached sample code for more details. Hope this helps.#
*& 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 'she @company.com',
p_sender LIKE somlreci1-receiver
DEFAULT 'she @company.com',
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 type btcjob,
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.
Similar Messages
-
Download ALV report to PDF with Lights
Hi,
I have a requirement wherein, when i download ALV report to PDF which has Lights in the first column. My problem is these lights are not displayed instead i get the following in the PDF
PDF o/p:
XOO RED SIGNAL
OXO YELLOW SIGNAL
OOX GREEN SIGNAL
Please let me know how to get the lights in the PDF o/p
Thanks & Regards,
SandhyaHi Sandhya,
U can convert any type of display(SF,ALV) to PDF.....
User Program rstxpdft4 to convert it first the O/P need to be converted into spool.
cheers,
Naveen. -
Convert ALV report into PDF and mail ( Hierarchical List View )
Hi All,
I see many posts of PDF download but none resolve my issue.
I am writing a report in APO SNP which fetches data and displays an alv using REUSE_ALV_HIERSEQ_LIST_DISPLAY as i need to show the result as a Hierarchical sequential list.
I need to provide the functionality of PDF download ( online ) and Email with PDF as attachement ( Background ) for the list output.
I read the post http://www.sapdev.co.uk/reporting/rep_spooltopdf2.htm which provides a sample program and tried to incorporate but the control doesn't come back from the ALV function module.
How do i trigger the spool creation while still showing the output and then send email?
Suggestions and pointers are highly appreciated
Regards,
KDHi.,
Check this wiki: [Convert ALV as PDF Attachment|http://wiki.sdn.sap.com/wiki/display/Snippets/SENDALVGRIDASPDFATTACHMENTTOSAPINBOXUSINGCLASSES]
hope this helps u.,
Thanks & Regards,
Kiran -
How to download a Block List based ALV report to PDF file?
Hi Everyone,
I need to display a report in block list alv format using REUSE_ALV_BLOCK_LIST_DISPLAY... I have done this. But my problem comes next.
1. I need to download this report to a pdf file in the user given directory - in presentation server. How can I download this in PDF format.
2. My report has TOP_OF_LIST and END_OF_LIST events. The body of the report contains a table with some material data. There should be 1 table for each material no. There are around 50 records for each material no. So I am looping at the material no. and calling REUSE_ALV_BLOCK_LIST_APPEND.
Now my problem is that I should have only 20 records in each page. How can I determine this? How do I put a page-break?
Please anyone help me.Hi Anwesha
You can send the report output to spool using the IS_PRINT parameter of REUSE_ALV_BLOCK_LIST_DISPLAY FM. Then read the spool number generated and pass it to CONVERT_ABAPSPOOLJOB_2_PDF to get the pdf content which could be downloaded to presentation server.
The splitting of records on count could be done by calling above method with different internal table filtered as per your requirement.
Regards
Ranganath -
Can any ALV report be converted to PDF with same look and fill
Dear All,
I have a requirement of converting one ALV report to PDF/HTML format and then send it via mail without disturbing the look and fill of the report. Can anyone please help me out?
Thanks and regards,
AtanuHi ,
You can dsave it in HTML format .
when you are in ALV output . just press control +P. then the output will send to spool request. note down that spool request number and go to SP01 transaction there give the spool request number and you will get the screen with small icon of your output. Just click on the icon then you will see the output . then select the menu path as below.
Spoolrequest-> Forward-> Save to local
here you will see the options to save.. (HTML, Spread sheet,clip board and Rich text formats)
Reward if useful..
Thanks.
Nageswar -
Hi all,
I know how to convert alv report to pdf using convert_abapspooljob_2_pdf.
very urgent.send the code.
thanks,
padmajaYou try this FM,
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spool_no
no_dialog = space
dst_device = device
IMPORTING
pdf_bytecount = bytecount
TABLES
pdf = it_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.
Regards,
Joan -
Convert ALV output to PDF file , DXF and DWG format
hi,
How to convert a ALV report to PDF file, DXF and DWG format, I developed a ALV report which has to be converted as per the selections of above formats,
Reward points for good & with example answers
Thanks in advance
RKHello RK,
Check this link. It has an example code for PDF Conversion.
http://www.erpgenie.com/abap/code/abap51.htm
Regards,
Deepu.k -
Is it possible to save ALV Report Tree to pdf for all versions (old & new) of SAP? If yes, then what is the way to save the ALV tree to pdf in different versions, which also includes BW & APO systems? The ALV tree also includes some hotspots, if that also matters in some way !!
Hi
call this function module
CONCATENATE l_fullpath '.rtf' INTO l_fullpath.
CALL FUNCTION 'GUI_DOWNLOAD'
__EXPORTING
____filename = l_fullpath
____filetype = 'ASC'
____write_field_separator = 'X'
__TABLES
____data_tab = lt_tree.
Where lt_tree content looks like this :
COL1__________COL2
Parent1________(initial)
(initial)_________child1_1
(initial)_________child1_2
Parent2________(initial)
(initial)_________child2_1
etc... -
Field Length issue in ALV Report
Hi,
I am using FM REUSE_ALV_GRID_DISPLAY to display few fields. Among them I have a field with length 200 characters text.
During ALV report display I am able to see only 128 characters, But when I download it and see the field, the it is showing complete text.
Can anybody help me out?
Thanks,
RamakrishnaCheck out the last answer of this post.
Re: ALV Grid Display - 255 characters
<i>I found a SAP document called "Using ALV for list display.pdf" that says the following:
"Size of data fields: While the list-based ALVList can display only tables of up to 90 columns, the control-based ALVGrid and ALVFullscreen have the limitation of 128 characters per data cell."</i>
Please make sure to award point for helpful answers and mark the post as solved. Thanks.
Regards,
Rich HEilman -
How to display the header data on different position in alv report
hi all,
how to display the header data on different position in alv report.
for example ,
customer name
xxxx xxxx
vendor name street
xxxx xxxx xxxxx
pls help me .hi
as per my understanding you need to trnasfer header internal table data to pdf..
please check the following links for internal table to pdf..
Convertion of Internal table data to PDF
This link is related to ur issue
Re: how to insert the calling of the FM: OTF to PDF
Thanks -
Connect to extenal server on click in ALV Report
Hi Everybody,
I want to open PDF image corresponding to article which is stored on the extenal server when i double click on the Article no. in ALV report. Is it possible??
Thanks in Advance.....
AKHi guixin,
1. Before calling REUSE_ALV_LIST_DISPLAY
2. Write this code :
data : excl type SLIS_T_EXTAB.
data : exclwa type SLIS_EXTAB.
exclwa = '&OUP'.
append exclwa to excl.
exclwa = '&ODN'.
append exclwa to excl.
3. Then while calling the FM,
pass this parameter also .
IT_EXCLUDING = excl
It will work fantastic.
regards,
amit m. -
Email ALV report to a distribution list
Hi all,
I have scheduled an alv report (uses ALV Grid) to run in the background using SM36.I put the spool list to be delivered to a set of people whose addresses are in the distribution list. The mails are being received by the users. But the problem is : <b>There are around 20 columns in the report but only info upto 15 columns are being sent as a PDF. There is no problem with the number of rows being sent. It's only the width of the report has been shortened. Can anyone help me out with this please, it is a urgent requirement.</b>
SatishHello,
In general I'd recommend you should always use a full address for your email recipients. Your mail server should handle a fully qualified address even for local delivery, however by using the fully qualified version you protect yourself from any configuration changes on the mail server that would stop local addressing working.
Just my thoughts.
John.
http://jes.blogs.shellprompt.net
http://apex-evangelists.com -
How to send ALV Report in excel format from SAP
Hi Gurus,
We are using SAP 4.7 and using different SAP reports.Now I want to send SAP ALV report in excel format directly from SAP in background.Now we send these reports in background weekly by using autimetic scheduling but this is PDF format.Now I want to change this pdf format to excel format.In SCOT T.Code I am able to find any excel format.Please help me out.
I am waiting for your reply.
Advance Thanks
NirmalHi Nirmal,
I have done the same in my previous organisation.For this particular solution you need to ask your basis guys to upgrade the support package so that BCS classes could be available in the system.
API interafces five some problem with attachemnts and SAP has recommended to use BCS classes.
Currently BCS classes won't be availbale in 4.7.
Once the BCS classes are available
use below code
CONSTANTS:
lc_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
lc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf,
lc_codepage TYPE abap_encod VALUE '4103',
data :
lv_string TYPE string,
binary_content TYPE solix_tab,
size TYPE so_obj_len,
*" Set Heading of Excel File
CONCATENATE 'Employee DATA'
lc_crlf lc_crlf
INTO lv_string.
*" Set Header for Excel Fields
CONCATENATE lv_string
lc_header1 lc_tab
lc_header2 lc_tab
lc_header3 lc_tab
lc_header4 lc_tab
lc_header5 lc_tab
lc_header6 lc_tab
lc_header7 lc_tab
lc_header8 lc_tab
lc_header9 lc_tab
lc_header10 lc_crlf
INTO lv_string.
"lc_header1 to 10 could be your field headers
"Move Internal table data
LOOP AT gt_final1 INTO gwa_final1.
CONCATENATE lv_string
gwa_final1-field1 lc_tab
gwa_final1-field2 lc_tab
gwa_final1-field3 lc_crlf
INTO lv_string.
ENDLOOP.
*" convert the text string into UTF-16LE binary data including
*" byte-order-mark. Mircosoft Excel prefers these settings
*" all this is done by new class cl_bcs_convert (see note 1151257)
TRY.
cl_bcs_convert=>string_to_solix(
EXPORTING
iv_string = lv_string
iv_codepage = lc_codepage "suitable for MS Excel, leave empty
iv_add_bom = abap_true "for other doc types
IMPORTING
et_solix = binary_content
ev_size = size ).
CATCH cx_bcs.
MESSAGE e445(so).
ENDTRY.
TRY.
*" create persistent send request
send_request = cl_bcs=>create_persistent( ).
document = cl_document_bcs=>create_document(
i_type = lc_doc
i_text = main_text
i_subject = lc_sub ).
document->add_attachment(
i_attachment_type = lc_attach "#EC NOTEXT
i_attachment_subject = lc_sub "#EC NOTEXT
i_attachment_size = size
i_att_content_hex = binary_content ).
send_request->set_document( document ).
recipient = cl_cam_address_bcs=>create_internet_address( email ).
CALL METHOD send_request->add_recipient
EXPORTING
i_recipient = recipient.
IF recipient IS NOT INITIAL.
sent_to_all = send_request->send( i_with_error_screen = abap_true ).
COMMIT WORK.
* MESSAGE text-014 TYPE gc_succ .
ENDIF.
CATCH cx_bcs INTO bcs_exception.
MESSAGE i865(so) WITH bcs_exception->error_type.
ENDTRY.
For BCS decalartion u can go to se 38 and see program BCS_EXAMPLE_1 to BCS_EXAMPLE_7.
Rewrads if helpful.
Cheers
Ramesh Bhatt -
How to get a report in pdf format.
Hi Experts,
Could any one let me know that, how to get the report in PDF format.
Once a report is generated it should be displayed in pdf format or downloaded in pdf format.
Thanks in Advance,
Regards,
Irfan HussainHi,
Check out this code:
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.
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 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.
Regards,
Gayathri -
Running a ALV Report in bakcground and sending it to Email/FAX
Hi,
I am designing a ALV report to send a email/fax/Printer which has to be run in background or foreground according to selection screen inputs.
I am doing the following
1. After generating ALV report, converting it to pdf
2. Sending Email or Fax or Print from selection screen value.
3. after that scheduling in background using JOB_OPEN and JOB_SUBMIT FM's.
Can I use SO_DOCUMENT_SEND_API1 FM for both Email and Fax.
When I schedule the report in the background using JOB_OPEN, at which point I have to code it inside the report. Is it after I generate the ALV Report and Email sending code or before it..
ThanksHi
How did you end up doing the emailing? I have the same task.....
Maybe you are looking for
-
Scheduling JDBC adapter in PI 7.0 SP09
Hello Experts, My client is using PI 7.0 sp09. I have a JDBC adapter that needs to execute once every 24 hours but each time the server is restarted the adapter executes and starts the 24 hr cycle again from that time. Is there any way to schedule
-
Connect X2-10GB-LR to 10GBASE-SR
Good day, Is it possible to connect X2-10GB-LR to 10GBASE-SR with 4-5 metre patch cord? Cisco X2-10GB-LR The Cisco 10GBASE-LR Module supports a link length of 10 kilometers on standard single-mode fiber (SMF, G.652). Сisco X2 Wavelength (nm) Cable Ty
-
Excel14.4.7 (Excel for Mac 2011); can't sort data
Upgraded to Excel for Mac 2011 (v.14.4.7) and cannot sort data. Have read instructions but keep getting error message "missing column/row name" Tried doing it with box checked "My list has headers" and with the box unchecked....same non-result and er
-
Variable might not have been initialised?
Hi I declare 2 lists at the begining of a method, the is "wrapped" using the Collections.synchronizedList method but when I try to compile the application it gives me the errors variable alltitles might not have been initialised and variable allautho
-
Code to display hindi fonts in JComboBox in a JFrame
Hi friends, My mail id is [email protected] and please give response as soon as possible. My problem:In java,my Jcombobox contents is displaying only english fonts like arial or verdena or timesnewroman My requirement: I want source code or logic to