How to format excel attachment through ABAP?
Hi Experts,
I am using FM ''SO_DOCUMENT_SEND_API1' to generate an email with excel attachment. Does anybody know if there is any way to format the contents of excel attachment? For example, framing, coloring or making the fields bold etc.
Any inputs will be helpful.
Thank you,
Amol
Hi,
Check this blog.
Downloading data into Excel with Format Options
Thanks,
Sree.
Similar Messages
-
Email XLS excel attachment from ABAP
Hi,
I am trying to email an excel attachment from ABAP, but when I open in excel, it says not a recognizable format, but when I click OK it does open as a tab-delimited file and look OK.
Any ideas please?Hi,
Please check this link
http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm
aRs -
Formatting Excel Attachment output in SO_DOCUMENT_SEND_API1
Hi ABAPers,
I'm hoping someone can get me started with a requirement. I"m using SO_DOCUMENT_SEND_API1 to email a file as an excel attachment. I'm required for a four digit code to show as (0003). Instead, when I open the excel attachment, it displays as 3. Would anyone know how to set the document to show all fields as text? Any help would be appreciative.
Thanks,
MeezyHi Venkat,
The program is sending the 4 digit code perfectly through excel in debug mode. However, when it's when I open the file that it get's cut off. 3000 shows up fine. Only codes with leading 0's are cut off. 3000 shows as 3000 but 0003 shows as 3.
Thanks,
Meezy -
How to display BAR-CODE through ABAP report
Hi,
Could you please help me, how to display BAR-CODE through the ABAP report.
I am writing below code, but BAR-CODE is not displaying on report.
PRINT-CONTROL FUNCTION 'SBP01'.
WRITE: 20 BAR_CODE1 NO-GAP.
PRINT-CONTROL FUNCTION 'SBS01'.
Regards,
SSRAJU.Hi RAJU,
you can see this forum link and its sub-links, here it is clear about it.
Re: Barcode printing on report
Thanks & Regards,
Dileep .C -
How to process Excel attachment contents?
I'm looking to read excel attachments to an instance and use attachment contents in the process. Any help will be highly appreciated.
Thnx,
MK
Edited by goelmk at 11/19/2007 10:19 AMI can think of two alternatives:
1- Use COM (introspect Excel, and use it to open the files)
2- Use a Java library that can read Excel (for example:
http://poi.apache.org/ )
You must first download the attachment to a temporary folder. The filename
should be unique (i.e.: you can use the instance number as part of the
name 'this.id.number')
The following code should download all attachments:
bytesWritten as Int
fileName as String
files as String[]
//Download all attachments
for each attachment in attachments
do
fileName = attachment.fileName + "_" + this.id.number
writeFromBinaryTo BinaryFile
using data = attachment.contents,
name = fileName,
append = false
returning bytesWritten
if bytesWritten != attachment.contentSize then
//Something is wrong, handle de error...
else
files[] = fileName
end
end
for each file in files
do
//Use the desired API to process each of the files
end
Which choice of API you use, depends on the environment, performance
constraints, etc. If you choose COM, you must make sure that the
downloaded files are available on the machine where the COMBridge is
running (for example by using a network share), and that you're not
overloading Excel (i.e. not too many concurrent instances, Excel is not
intended for heavy concurrent use).
POI should be easier to work with, but your mileage may vary depending on
how 'standard' the Excel files are (macros that run on load, probably
won't work).
Hope this helps,
Juan
On Mon, 19 Nov 2007 15:19:36 -0300, Manoj Goel wrote:
I'm looking to read excel attachments to an instance and use attachment
contents in the process. Any help will be highly appreciated.
Thnx,
MK
Edited by goelmk at 11/19/2007 10:19 AM--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -
FORMAT Excel Colums using ABAP
Hi ,
I need to format excel rows and columns .
Ex: I need to add border to the entire table and not just the title .
I used CALL METHOD of wf_range 'BorderAround'
EXPORTING
1 = 1
2 = 4 .
This puts a box around the cell. What i want to do this for multiple cells and not handle it at for each cell.
like if my range is E1 to F3 then border is around ever cell. A2 A3 F2 F2 and not just around A2 to F3.
Please helpHi.
You can record macros in excel and look at generated visual basic code. Then you should convert it into ABAP code. -
How to implement ESS Logoff through ABAP
Hi,
I need to implement Logoff Functionality in ESS through ABAP code.
Note that our ESS works through ITS server.
I have tried SPH_R3_LOGOFF and LMBP_RESOURCE_LOGOFF.
But these FM's dont work in ESS environment (through ITS).
Please anyone help me in this regard.Hi,
The following SAP Note has some correction instruction which has some logging out code.
Note 142724 - Prevention of multiple SAPGUI logons
Maybe that helps.
Regards,
Siddhesh -
Send excel as Pivot table in attachment through ABAP
Hi All,
I have a requirement where I have to send excel file as attachment. Which I can do without any issue.
But when we send in excel it should be in Pivot format as we can do in Excel.
Sending excel file as attachment in Pivot format thorugh ABAP. Is it possible. If some one has tried it ever can tell me some thing about this.
Thanks,
AnuHi Anu,
can you pls share the logic of sending excel as pivot table and i can try with it.
Thank You.
K.S. -
Increase the column lengths of excel sheet through abap
I developed a abap program and it was displayed the output.
So i need to display this out put in excel sheet.
for that I read the out put and placed in the excel,
the only problem is the column lengths are small
after download i am dragging the each column,
But i need to increase the each column by the program
How can I ?
I am using the following code
lastline = new_line_c + 13.
DO .
READ LINE sy-index LINE VALUE INTO it_read-excel.
APPEND it_read.
IF sy-index > lastline.
EXIT.
ENDIF.
ENDDO.
lastline = new_line_c - 38.
colm = ( length - 37 ) / 18.
colm = colm + 4.
FOR THE EXCEL CONVERTION
INCLUDE ole2incl.
DATA: w_cell1 TYPE ole2_object,
w_cell2 TYPE ole2_object.
*--- Ole data Declarations
DATA: h_excel TYPE ole2_object, " Excel object
h_mapl TYPE ole2_object, " list of workbooks
h_map TYPE ole2_object, " workbook
h_zl TYPE ole2_object, " cell
h_f TYPE ole2_object, " font
gs_interior TYPE ole2_object, " Pattern
worksheet TYPE ole2_object,
h_cell TYPE ole2_object,
h_merge TYPE ole2_object,
h_cell1 TYPE ole2_object,
range TYPE ole2_object,
h_sheet2 TYPE ole2_object,
h_sheet3 TYPE ole2_object,
gs_font TYPE ole2_object,
flg_stop(1) TYPE c.
*DATA: t_excel_bckord LIKE t_excel OCCURS 0 WITH HEADER LINE,
*t_excel_bcklog LIKE t_excel OCCURS 0 WITH HEADER LINE,
*t_excel_blkord LIKE t_excel OCCURS 0 WITH HEADER LINE.
TYPES: data1(1500) TYPE c,
ty TYPE TABLE OF data1.
DATA: it TYPE ty WITH HEADER LINE,
it_2 TYPE ty WITH HEADER LINE,
it_3 TYPE ty WITH HEADER LINE,
rec TYPE sy-tfill,
deli(1) TYPE c,
l_amt(18) TYPE c.
DATA: BEGIN OF hex,
tab TYPE x,
END OF hex.
FIELD-SYMBOLS: <fs> .
CONSTANTS cns_09(2) TYPE n VALUE 09.
ASSIGN deli TO <fs> TYPE 'X'.
hex-tab = cns_09.
<fs> = hex-tab.
DATA gv_sheet_name(20) TYPE c .
M A C R O Declaration
DEFINE ole_check_error.
if &1 ne 0.
message e001(zz) with &1.
exit.
endif.
END-OF-DEFINITION.
DATA: xy TYPE i,
xz TYPE i,
yz TYPE i,
ab TYPE i,
pterm TYPE i.
IF h_excel-header = space OR h_excel-handle = -1.
start Excel
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
ENDIF.
PERFORM err_hdl.
*--- get list of workbooks, initially empty
CALL METHOD OF h_excel 'Workbooks' = h_mapl.
PERFORM err_hdl.
SET PROPERTY OF h_excel 'Visible' = 1.
add a new workbook
CALL METHOD OF h_mapl 'Add' = h_map.
PERFORM err_hdl.
*GV_SHEET_NAME = '1st SHEET'.
gv_sheet_name = 'Price Comparison List'.
GET PROPERTY OF h_excel 'ACTIVESHEET' = worksheet.
SET PROPERTY OF worksheet 'Name' = gv_sheet_name .
index1 = 3.
LOOP AT it_read.
heading
IF sy-tabix < 4.
it_item = it_read.
IF it_item CS '-----'.
CLEAR it_item.
APPEND it_item.
ELSE.
IF sy-tabix = 1.
it_item+0(1) = deli.
ENDIF.
APPEND it_item.
ENDIF.
ENDIF.
headear data and item
IF sy-tabix > 4 AND sy-tabix < descline1.
it_item = it_read.
IF it_item CS '----'.
ELSE.
REPLACE ALL OCCURRENCES OF sy-vline IN it_item WITH deli.
APPEND it_item.
ENDIF.
ENDIF.
xy = 2.
xz = 38.
discount etc
IF sy-tabix >= descline1 AND sy-tabix < descline.
it_item = it_read.
it_item+12(1) = deli.
it_item+22(1) = deli.
it_item+43(1) = deli.
WHILE xy < colm.
xz = xz + 18.
it_item+xz(1) = deli.
xy = xy + 1.
ENDWHILE.
APPEND it_item.
ENDIF.
payment terms
xy = 2.
xz = 37.
pterm = descline + 6.
IF sy-tabix > descline AND sy-tabix < pterm.
it_item = it_read.
IF it_item CS '-----'.
CLEAR it_item.
APPEND it_item.
ELSE.
it_item+12(1) = deli.
it_item+15(1) = deli.
it_item+36(1) = deli.
WHILE xy < colm.
xz = xz + 17.
it_item+xz(1) = deli.
xy = xy + 1.
ENDWHILE.
APPEND it_item.
ENDIF.
ENDIF.
prepared by
lastline = pterm + 3.
IF sy-tabix >= pterm AND sy-tabix <= lastline.
it_item = it_read.
IF it_item CS '-----'.
ELSE.
it_item+0(1) = deli.
it_item+54(1) = ' '.
it_item+16(1) = deli.
APPEND it_item.
ENDIF.
ENDIF.
remaarks
yz = lastline + 10.
IF sy-tabix > lastline AND sy-tabix <= yz.
it_item = it_read.
it_item+0(1) = deli.
it_item+54(1) = ' '.
APPEND it_item.
ENDIF.
approved by
ab = yz + 5.
IF sy-tabix > yz AND sy-tabix < ab.
it_item = it_read.
IF it_item CS '-----'.
ELSE.
it_item+0(1) = deli.
it_item+54(1) = ' '.
it_item+14(1) = deli.
APPEND it_item.
ENDIF.
ENDIF.
ENDLOOP.
*--Formatting the area of additional data 1 and doing the BOLD
CALL METHOD OF h_excel 'Cells' = w_cell1
EXPORTING
#1 = 1
#2 = 1.
CALL METHOD OF h_excel 'Cells' = w_cell2
EXPORTING
#1 = 1
#2 = colm.
CALL METHOD OF h_excel 'Range' = h_cell
EXPORTING
#1 = w_cell1
#2 = w_cell2.
*CALL METHOD OF gs_cells 'Select' .
GET PROPERTY OF h_cell 'Font' = gs_font .
SET PROPERTY OF gs_font 'Bold' = 1 .
*Bold for the second row
CALL METHOD OF h_excel 'Cells' = w_cell1
EXPORTING
#1 = 2
#2 = 1.
CALL METHOD OF h_excel 'Cells' = w_cell2
EXPORTING
#1 = 1
#2 = colm.
CALL METHOD OF h_excel 'Range' = h_cell
EXPORTING
#1 = w_cell1
#2 = w_cell2.
*CALL METHOD OF gs_cells 'Select' .
GET PROPERTY OF h_cell 'Font' = gs_font .
SET PROPERTY OF gs_font 'Bold' = 1 .
*Bold for the fourth row
CALL METHOD OF h_excel 'Cells' = w_cell1
EXPORTING
#1 = 4
#2 = 1.
CALL METHOD OF h_excel 'Cells' = w_cell2
EXPORTING
#1 = 1
#2 = colm.
CALL METHOD OF h_excel 'Range' = h_cell
EXPORTING
#1 = w_cell1
#2 = w_cell2.
*CALL METHOD OF gs_cells 'Select' .
GET PROPERTY OF h_cell 'Font' = gs_font .
SET PROPERTY OF gs_font 'Bold' = 1 .
*Bold for the fifth row
CALL METHOD OF h_excel 'Cells' = w_cell1
EXPORTING
#1 = 5
#2 = 1.
CALL METHOD OF h_excel 'Cells' = w_cell2
EXPORTING
#1 = 1
#2 = colm.
CALL METHOD OF h_excel 'Range' = h_cell
EXPORTING
#1 = w_cell1
#2 = w_cell2.
*CALL METHOD OF gs_cells 'Select' .
GET PROPERTY OF h_cell 'Font' = gs_font .
SET PROPERTY OF gs_font 'Bold' = 1 .
*Bold for the sixth row
CALL METHOD OF h_excel 'Cells' = w_cell1
EXPORTING
#1 = 6
#2 = 1.
CALL METHOD OF h_excel 'Cells' = w_cell2
EXPORTING
#1 = 1
#2 = colm.
CALL METHOD OF h_excel 'Range' = h_cell
EXPORTING
#1 = w_cell1
#2 = w_cell2.
*CALL METHOD OF gs_cells 'Select' .
GET PROPERTY OF h_cell 'Font' = gs_font .
SET PROPERTY OF gs_font 'Bold' = 1 .
DATA l_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>clipboard_export
IMPORTING
data = it_item[]
CHANGING
rc = l_rc
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
CALL METHOD OF h_excel 'Cells' = w_cell1
EXPORTING
#1 = 1
#2 = 1.
CALL METHOD OF h_excel 'Cells' = w_cell2
EXPORTING
#1 = 1
#2 = 1.
PERFORM err_hdl.
CALL METHOD OF h_excel 'Range' = range
EXPORTING
#1 = w_cell1
#2 = w_cell2.
CALL METHOD OF range 'Select'.
PERFORM err_hdl.
CALL METHOD OF worksheet 'Paste'.
PERFORM err_hdl.
CALL METHOD OF h_excel 'QUIT'.
FREE OBJECT h_zl.
FREE OBJECT h_mapl.
FREE OBJECT h_map.
FREE OBJECT h_excel.Hello Ravi,
Thank you very much for your suggestions.. but still have some more doubts:
What i want to do is :
-->call report in background job with a selection criteria.
-->the output of the report should be trasnsfered to excel sheet
-->then the excel sheet should be sent to XI..
My doubts are:
-> is it possible with every report or we need some extra code to achieve this
-> If yes, then how exactly it should be done. can you please explain in more detail.
Thank you very much for your help.
Best Regards,
Jasmeet -
I have a list of addresses in pdf--how to format excel?
My problem is when I exported them into Excel, they are a jumble.
I probably should format the excel file. But how????Hi barbarjo,
Would you send your PDF document to [email protected] as an email attachment?
I will check it from my end.Please add the link to this forum post for reference.
Regards,
Florence -
Adding attachment through ABAP screen
Hi experts,
I have a requirement where i need to add attachment from a ABAP screen or through SM30 screen. That is, we provide a transaction code for the users to maintain table entries. In additon to maintain values, the user wants to add attachment. The attachment is a image of a map of the house plan.
So can someone tell me how to add attachment and the path or URL of the attachment need to be stored in a separate field in the Z table?
Is that can be done through OAAR transaction?Look for GOS Attachments in the forum - probably it should help your need
-
How to send PDF attachment through Email For Purchase Order
Hi,
Can you please tell me how to send the Purchase Order with PDF attachment. Thank you.
Thanks & Regards,
Rani.Find the below example
*& 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 if helpful.
Thanks,
Kishore S N -
How to trigger GP workflow through ABAP Program.
Hi All.
i have one scnerio , i want to create BOM through Custom Ztransaction that will be developed in ABAP Modulepool.
User will create BOM from this ztransaction through Transactional Iview in PORTAL,Once the user save transaction , i want to trigger a GP(Guided Procedure ) workflow,from ABAP Program.
is it possible to trigger GP workflow?
if yes how to do it , please suggest the way out.
Regards,
Shyam.Hi lingana,
As u see in my requriment that, Workflow is not designed within SAP , But the Workflow will be designing
in SAP Netweaver, its a GP Workflow. And Ztransaction(Developed by ABAP) will be seen by user through portal and
he save transaction on PORTAL, In backend ABAP program will run , and after meeting certain condition, it should create
or(Initiate) GP workflow(process).
So my question is , how ABAP Program will call GP workflow, How the connection will be made in between ABAP Code and GP workflow framework.
If any doubt regarding requriment let me know,
Regards,
Shyam. -
How to send pdf attachment through BPEL
Hi All,
I have been looking for a solution to send a pdf as an attachment in bpel. My requirement is,
- Send a SOAP request to 'SendAttachment' bpel service with all the input parameters
- SendAttachment bpel service validates the input and generates the pdf within the bpel process
- SendAttachment bpel has to return the generated pdf as attachment along with response payload.
I did some research but couldn't a relevant scenario. I have no idea about how to start with. Experts, please suggest on how to implement this scenario.
Thanks in advance,
Satya.Dear Ravi,
I tried to build a small application to handle the above mentioned scenario. But I am unable to send pdf as attachment in BPEL. Below are the details,
1) Created a standalone weblogic webservice(instead of ejb as you mentioned) - 'GetAttachmentService' in eclipse that will create a pdf and send it along with the xml response.
2) In GetAttachmentService, created pdf is converted into byte[] and mapped to a 'base64Binary' element in 'GetAttachmentResponse'.
3) Tested the above webservice successfully using SOAP UI. I am able to see the binary data as one of the elements in GetAttachmentResponse.
4) Now, I have created a composite in SOA suite that will have a webservice adapter(to consume GetAttachmentService) and a BPEL process - 'SendAttachmentBPEL' to read the response elements.
5) SendAttachmentBPEL response has a 'base64Binary' element to hold the binary data from GetAttachmentService response.
6) Modified the SendAttachmentBPEL wsdl to accomodate mime content as below.
7) Since there is mime part in wsdl, EM didn't allow me to test there. So I have used SOAP UI to test SendAttachmentBPEL, I am getting the pdf as binary data in one of the response elements rather as attachment. Please take a look at the below BPEL snippet and suggest if any changes are required.
My objective is when I hit the SendAttachmentBPEL in SOAP UI, I should get back a response along with pdf attachment.
--BPEL snippet
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MESSAGE TYPE DEFINITION - Definition of the message types used as
part of the port type defintions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<wsdl:message name="SendAttachment1BPELRequestMessage">
<wsdl:part name="payload" element="client:process"/>
</wsdl:message>
<wsdl:message name="SendAttachment1BPELResponseMessage">
<wsdl:part name="payload" element="client:processResponse"/>
<wsdl:part name="bin" element="client:processAttachment"/>
</wsdl:message>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PORT TYPE DEFINITION - A port type groups a set of operations into
a logical service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- portType implemented by the SendAttachment1BPEL BPEL process -->
<wsdl:portType name="SendAttachment1BPEL">
<wsdl:operation name="process">
<wsdl:input message="client:SendAttachment1BPELRequestMessage" />
<wsdl:output message="client:SendAttachment1BPELResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PARTNER LINK TYPE DEFINITION
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<plnk:partnerLinkType name="SendAttachment1BPEL">
<plnk:role name="SendAttachment1BPELProvider" portType="client:SendAttachment1BPEL"/>
</plnk:partnerLinkType>
<wsdl:binding name="SendAttachment1BPELBinding" type="client:SendAttachment1BPEL">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="process">
<soap:operation style="document"
soapAction="http://xmlns.oracle.com/bpel_104_Arrays/SendAttachmentProject/SendAttachment1BPEL/process"/>
<wsdl:input>
<soap:body use="literal" parts="payload"/>
</wsdl:input>
<wsdl:output>
<mime:multipartRelated>
<mime:part>
<soap:body use="literal" parts="payload"/>
</mime:part>
<mime:part>
<mime:content part="bin" type="application/pdf"/>
</mime:part>
</mime:multipartRelated>
</wsdl:output>
</wsdl:operation>
</wsdl:binding> -
How to send pdf attachment through mail using Webdynpro-Java
How can i send the Adobe Interactive Form with data involved as a PDF attachment to mail? using Webdynpro-Java.
Is there any Adobe API or jar file for generating pdf?
Helpful answer is highly appreciable and rewarded with points.!Hi Sankar,
try [Offline Interactive PDF Form Using E-Mail|/docs/DOC-8061#49]
Michal
Maybe you are looking for
-
Replacing hard drive. Time Machine. OS HELP
I plan to upgrade my hard drive to an ssd and am currently backing up the whole system with time machine to a passport. Now my question is my macbook pro is from 09'/10' so the software disk that came with it is old. When i go to restore everything
-
I'm purchasing a new laptop. Will I be able to download a paid-for version of Photoshop to the laptop, by signing in? I don't think I have the disk.
-
ANNC: Image Gallery Magic Now Available
Picture perfect... Bring your images to life with the most powerful, feature-rich image gallery solution available for Dreamweaver: Image Gallery Magic by PVII - the leader in creative Dreamweaver extensions. Create image galleries from from inside D
-
Where is my book I paid for it says it has downloaded but I can't find it
How do I find a audio book I have purchased it says it has downloaded but I can't find it
-
Why there is no application in workspace?
hi,I'm new to BPMN.When I mapping swim lane roles to LDAP roles, I create some users in the security realm. But afer I login to the workspace, I can't find applications.