Mail changes attachement suffix
Hello...I want to send some pictures with mail. The pictures are .JPG.
WÍf I attach these JPG pictures and choose a size change in MAIL (right bottom line) the resized pictures are saved as .JPEG.
Some of my customers cannot use this JPEG and I don't want to change the ending by hand.
JPEG is a format but NO suffix!!!! Why does mail do this. It was not in 10.5!
Does anybody know how to change this??
Thanks n advance!
Best regards
Hady
Hi Hady & welcome to the forums...
The pictures are .JPG.
SL apparently has issues with aliases and older/existing jpgs for some reason - not sure if that is related to your issue, however, but you might see if the same thing happens when you create, attach & send a brand spanking new whatever.jpg instead of working with an existing image from a previous install.
Good luck in any case.
Similar Messages
-
Mail Changing Attachment Names
Does anyone find that their Mac Mail changes attachment names into something like ??Q?documentname?=? so you are unable to open them unless you rename and save?
I think I have narrowed it down to only happening with attachments that have a long(ish!) filename. It only happens when a Mac computer recieves. Doesn't matter if a Mac or Windows machine sends the mail.
Any help appreciated as 50% of my attachments are coming through in this format. V frustrating!Are you sure your RECEIVING email client isn't doing the conversion?
Thank you for the help.
It wasn't actually the email client at the other end, but rather a third-party photo app on my iPad - Photogene.
I had been sending the screenshot as an email attachment from within Photogene. It seems that this app was converting it to the JPEG format. When I simply chose the image from the Camera Roll - directly in the Mail app - the PNG format was kept.
Thanks again. -
Mail changes attachment filename
Mail.app has a bug or disability to properly interpret the filename of received attachments if the filename contains accented characters.
for example
the original filename: xxxxx xxxxxx xxxxáxxxxüxxxxx_xxxxxxxx xxáxáx.pptx
when received in email: k=5Fxxxxxxxxx_xx=E1z=E1k.pptx?=
it does not matter what email client is used to send the attachment, it can be any version of Outlook or OS X's Mail, the problem is with Mail.app on recipient side.
Also it happens to users of 10.6.8 trough to 10.9.1
What is strange, that this behavior of changing filenames is not consequent:
in the past before I realized it's a bug, I was usually asking the sender to resend the email as I thought the mail was damaged.
The sender did nothing else, but resending the email from her/his 'Sent Items' folder, so no change has been made to filename
or content of the email itself > and strangely the second time the attachment is displayed correctly with proper accented characters,
no extra letters at the beginning or after the extension.
I also tried to reproduce this bug, sometimes successfully, but as I wrote this bug is not consistent.
What worries me that apple knows about this bug for years, but does nothing to fix it - it still exists,
and non-English users suffer from this.
https://discussions.apple.com/message/6808962#6808962
https://discussions.apple.com/thread/1409364?start=60&tstart=0
https://discussions.apple.com/message/7195409#7195409
Of course I filled a BUG report, and the purpose of this post is to ask other OS X users to fill a BUG report too and make some pressure
on apple to fix it for once and for all.
for non developers a link to bug report: http://www.apple.com/feedback/macosx.html
for developers: https://bugreport.apple.com/
A kindly ask the moderator not to close this Discussion until apple delivers a permanent fix.
Asking the sender not to use accented characters in filenames is not a solution it's a workaround that nobody will use,
as it puts everyone in an inconvenient position when exchanging files with clients.
Thank you.Also have this frequently.
What's more maddening, files within the same message, with the only accented character being the same in each file, and many other files with (different) accented characters, one file gets corrupted, the other one doesn't.
As in Mail.app:
The same message appears fine in iOS. -
Running Mountain Lion on MacBook Air and MacBook Pro. Suddenly a mailed iCal attachment showing the right date, time and attendees ends up years and months off on iCal with totally wrong attendiees, when clicked in Mail. iCal synced to iCloud. This may be very trivial for some of you but I need help, please.
Thank you.I ran into this exact issue after migrating a time machine backup from an older macbook air to a new macbook pro.
The following steps solved my issue:
1) Backup your current mac
2) Create a new user account on your mac, and login to that account.
3) While logged into the new user account, right click the time machine drive and select "get info" > Click the lock icon at the lower right corner so that you can make permission changes. Then Click on the "+" sign and add your new user account to the "Sharing & Permissions" window. Be sure to grant your new user "Read & Write" privileges and when you have done so, click on the down arrow and select "apply to enclosed items" This step will allow you to copy the library folder from your old user account to the new account without hitting any permission issues.
4) Download "TinkerTool" (An application that allows you to enable the viewing of any and all hidden files and folders on your local or mounted hard drives) and check the box that reads "Show Hidden and System Files" and then click "Relaunch Finder.
5) Lastly copy the Library folder from the older user account on the time machine backup drive to the new user's library folder. Also be sure to copy your Desktop, Documents, Pictures, and Music folders to the new account as well. Open Mac mail and follow the instructions to import the previous accounts mail messages. Once you receive future ics attachments or calendar invites you should be able to click on them and load the proper date and time within your iCal application.
This worked for me and I hope it works for you.
Thanks,
Chris Sampson -
E-mail and Attachment Problem on web...
hi guys,
I developed a form in forms 6i for my client/server application. It was working well in c/s environment. I use to generate a PDF file and send the same file via attachment to the person by giving its e-mail address.
But the same form is not working when i have deployed the form on web via forms9iAS.
My code that use to send the e-mail and attachemnt was like this:
Declare
Outlook_Object OLE2.OBJ_TYPE;
Mail_Object OLE2.OBJ_TYPE;
Item1 OLE2.OBJ_TYPE;
Item2 OLE2.OBJ_TYPE;
OLEPARAM ole2.list_type;
var_Send OLE2.OBJ_TYPE;
var_Attach1 OLE2.OBJ_TYPE;
var_Attach2 OLE2.OBJ_TYPE;
plist ParamList;
starting_date varchar2(10);
ending_date varchar2(10) ;
FileName varchar2(80);
Lstarting_date varchar2(10);
Get_Employee_ID varchar(200);
Get_Where varchar(200);
Mail_Subject varchar2(500);
LcBody varchar2(2000);
BEGIN
-- Begining sending e-mail to Departmental Heads
go_block('vBasc_inf');
first_record;
---while :system.last_record = 'FALSE'
loop
if :vBasc_inf.chkSend = 'Y' THEN
Plist := get_parameter_list ('Attendance');
if not Id_null(Plist) then
destroy_parameter_list(Plist);
end if ;
Plist := create_parameter_list('Attendance');
Starting_Date := To_char(:NonDatabase.txtStarting_date,'dd/mm/yyyy');
Ending_Date := To_char(:NonDatabase.txtending_date,'dd/mm/yyyy');
LStarting_date := to_char(:NonDatabase.txtStarting_date,'yyyy-mm-dd');
--FileName := 'c:\bss\attendance\'
-- || substr(:vBasc_inf.txtbranch,1,1) ||'-'
-- || Rtrim(substr(:vBasc_inf.txtDepartment,1,3)) || '-'
-- || LStarting_date || '.pdf';
FileName := 'c:\bss\attendance\'
|| :vBasc_inf.Employee_id ||'-'
|| LStarting_date || '.pdf';
mail_subject := 'Attendance Sheet ' || To_char(:NonDatabase.txtStarting_date,'dd-Mon-yy') || ' to ' || To_char(:NonDatabase.txtending_date,'dd-Mon-yy') || ' (' || :vBasc_inf.department_id || ')' ;
-- host('Del ' || filename ,NO_SCREEN );
--Add_parameter(plist,'PBranch_id',text_parameter,:vBasc_inf.branch_id);
--Add_parameter(plist,'pdepartment_id',text_parameter,:vBasc_inf.Department_ID);
Add_parameter(plist,'pstarting_date',text_parameter,Starting_date);
Add_parameter(plist,'pending_date',text_parameter,Ending_date);
Add_parameter(plist,'PEmployee_id',text_parameter, :vBasc_inf.employee_id);
Add_parameter(plist,'PARAMFORM',text_parameter,'NO');
Add_parameter(plist,'DESNAME',text_parameter,FileName);
Add_Parameter(plist,'DESTYPE',TEXT_PARAMETER,'FILE');
Add_Parameter(plist,'DESFORMAT',TEXT_PARAMETER,'PDF');
run_product(reports,'EmployeeWise_AttendanceSheet',synchronous,batch,filesystem,plist,screen);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
Outlook_Object := OLE2.CREATE_OBJ('Outlook.Application');
--- OLE2.Set_Property(Outlook_Object,'UserName', 'Daily Attendance');
--- message ('Yes');
--- message ('Yes');
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,'MAPI');
Mail_Object := OLE2.INVOKE_OBJ(Outlook_Object,'GetNameSpace',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
--newMail
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,0);
Item1 := OLE2.INVOKE_OBJ(Outlook_Object,'CreateItem',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
-- If you want to display outlook new message screen
-- Item2 := OLE2.INVOKE_OBJ(Item1,'Display');
ole2.set_property(Item1,'To',:vBasc_inf.e_mail);
---ole2.set_property(Item1,'To','[email protected]');
ole2.set_property(Item1,'Subject',Mail_Subject );
LcBody := :vbasc_inf.emp_name||','|| chr(13) ||chr(13) || :nondatabase.txtmessage ;
ole2.set_property(Item1,'Body',LcBody );
--ole2.set_property(Item1,'Body','This is First mail of Attendance Sheet');
var_Attach1 := OLE2.GET_OBJ_PROPERTY(Item1,'Attachments');
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,FileName);
var_Attach2 := OLE2.INVOKE_OBJ(var_Attach1,'add',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
var_Send := OLE2.INVOKE_OBJ(Item1,'Send');
end if ;
:vBasc_inf.chksend := 'N';
IF :system.last_record = 'TRUE' THEN
set_item_property('vBasc_inf.CMDCHECKALL', label, 'Check All');
EXIT ;
END IF ;
next_record;
end loop ;
OLE2.RELEASE_OBJ( Item1);
OLE2.RELEASE_OBJ( Mail_Object );
OLE2.RELEASE_OBJ( Outlook_Object );
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
first_record;
Message('Mail sent seccessfully.........');
Message('Mail sent seccessfully.........');
-- Ending sending e-amil to Departmental Heads
END;
BUT now on web its giving me the following error:
REP-0081: Error during the IO operations.
REP-0110: Unable to open file 'C:\bss\attendance\14210-01/01/2005.PDF'.
scaba 14
What changes i have to made to this form to run well on web?
Or is there any other way to send mails and attachment in forms 6i for web using oracle9iAS?
Pliz help.
Imran BaigI have changed my Code from run product to :
Declare
Outlook_Object OLE2.OBJ_TYPE;
Mail_Object OLE2.OBJ_TYPE;
Item1 OLE2.OBJ_TYPE;
Item2 OLE2.OBJ_TYPE;
OLEPARAM ole2.list_type;
var_Send OLE2.OBJ_TYPE;
var_Attach1 OLE2.OBJ_TYPE;
var_Attach2 OLE2.OBJ_TYPE;
plist ParamList;
starting_date varchar2(10);
ending_date varchar2(10) ;
FileName varchar2(80);
Lstarting_date varchar2(10);
ln_emp_id number(8);
lc_email varchar2(100);
Get_Employee_ID varchar(200);
Get_Where varchar(200);
Mail_Subject varchar2(500);
LcBody varchar2(2000);
lc_msg_txt VARCHAR2(2000);
lc_slc_stmt VARCHAR2(4000);
lc_slc_stmt2 VARCHAR2(4000);
lc_Slct_Smry VARCHAR2(4000);
lpl_para_id PARAMLIST;
lc_alert_btn NUMBER;
LC_RP_HD VARCHAR2(4000);
LC_RP_HD2 VARCHAR2(4000);
Lc_Rp_Order VARCHAR2(4000);
web_message varchar2(4000);
cursor C1 is
select emp_employees.employee_id, emp_emp_info.e_mail
from emp_employees, emp_emp_info
where emp_employees.employee_id = emp_emp_info.employee_id
and emp_emp_info.e_mail is not null
and emp_employees.employee_id between :emp_date_blk.from_id and :emp_date_blk.to_id
and emp_employees.employee_id = 14210
order by emp_employees.employee_id;
BEGIN
OPEN C1;
IF C1%ISOPEN THEN
LOOP
FETCH C1 INTO ln_emp_id, lc_email;
EXIT WHEN C1%NOTFOUND;
Plist := get_parameter_list ('email_sal_slip');
if not Id_null(Plist) then
destroy_parameter_list(Plist);
end if ;
Plist := create_parameter_list('email_sal_slip');
FileName := 'c:\'
|| ln_emp_id || '.pdf';
mail_subject := 'Salary slip for the month of ' || To_char(:emp_date_blk.from_date,'Month-yyyy') ;
lc_slc_stmt := User_Selection(lc_msg_txt, lc_slct_smry,lc_Rp_Hd,lc_Rp_Hd2,lc_Rp_Order);
lc_slc_stmt := 'P_where=' || '"' || lc_slc_stmt || '"';
lc_Rp_Hd := ' Rp_Heading=' || '"' || lc_Rp_Hd || '"';
lc_Rp_Hd2 := ' Rp_Heading2=' || '"' || lc_Rp_Hd2 || '"';
lc_Rp_Order := ' P_Order_BY=' || '"' || lc_Rp_Order || '"';
Add_parameter(plist,'PARAMFORM',text_parameter,'NO');
Add_parameter(plist,'DESNAME',text_parameter,FileName);
Add_Parameter(plist,'DESTYPE',TEXT_PARAMETER,'FILE');
Add_Parameter(plist,'DESFORMAT',TEXT_PARAMETER,'PDF');
--run_product(reports,'EmployeeWise_AttendanceSheet',synchronous,batch,filesystem,plist,screen);
Execute_Report('EMP_SAL_SLIP', 'EMP_SAL_SLIP.rdf', 'EMP_SAL_SLIP.PDF', 'PDF', 'BSSRepSrvA', 'ora-test-app', lc_slc_stmt2, web_message);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
Outlook_Object := OLE2.CREATE_OBJ('Outlook.Application');
--- OLE2.Set_Property(Outlook_Object,'UserName', 'Daily Attendance');
--- message ('Yes');
--- message ('Yes');
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,'MAPI');
Mail_Object := OLE2.INVOKE_OBJ(Outlook_Object,'GetNameSpace',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
--newMail
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,0);
Item1 := OLE2.INVOKE_OBJ(Outlook_Object,'CreateItem',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
-- If you want to display outlook new message screen
-- Item2 := OLE2.INVOKE_OBJ(Item1,'Display');
ole2.set_property(Item1,'To',lc_email);
---ole2.set_property(Item1,'To','[email protected]');
ole2.set_property(Item1,'Subject',Mail_Subject );
ole2.set_property(Item1,'Body',LcBody );
--ole2.set_property(Item1,'Body','This is First mail of Attendance Sheet');
var_Attach1 := OLE2.GET_OBJ_PROPERTY(Item1,'Attachments');
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,FileName);
var_Attach2 := OLE2.INVOKE_OBJ(var_Attach1,'add',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
var_Send := OLE2.INVOKE_OBJ(Item1,'Send');
END LOOP;
CLOSE C1;
OLE2.RELEASE_OBJ( Item1);
OLE2.RELEASE_OBJ( Mail_Object );
OLE2.RELEASE_OBJ( Outlook_Object );
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
Message('Mail sent seccessfully.........');
Message('Mail sent seccessfully.........');
END IF;
END;
Have used d2kwutility to execute my report. i have also instaled outlook on my application server.
Now when i try to run my report and send e-mail it gives the following error.
ORA-305500
What is this error about and how to resolve it?
Imran -
Send a mail with attached file .xls but i got file without
i tried to send a mail with attached file .xls. but i am able to send the file , we recived the file without file name. please do the same
thnaks in advance.
END-OF-SELECTION.
Populate message body text
PERFORM POPULATE_EMAIL_MESSAGE_BODY.
Send file by email as .xls speadsheet
PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
TABLES IT_MESSAGE
IT_ATTACH
USING P_EMAIL
'Example .xls documnet attachment'
'XLS'
'filename'
CHANGING GD_ERROR
GD_RECIEVER.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM DATA_RETRIEVAL.
SELECT EBELN EBELP AEDAT MATNR
UP TO 10 ROWS
FROM EKPO
INTO TABLE IT_EKPO.
ENDFORM. " DATA_RETRIEVAL
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM BUILD_XLS_DATA_TABLE.
CONSTANTS: CON_CRET TYPE X VALUE '0D', "OK for non Unicode
CON_TAB TYPE X VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
INTO IT_ATTACH SEPARATED BY ''.
CONCATENATE '' IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
LOOP AT IT_EKPO INTO WA_CHAREKPO.
CONCATENATE WA_CHAREKPO-EBELN WA_CHAREKPO-EBELP
WA_CHAREKPO-AEDAT WA_CHAREKPO-MATNR
INTO IT_ATTACH SEPARATED BY ''.
CONCATENATE '' IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE
PIT_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.
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[] = PIT_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.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM INITIATE_MAIL_EXECUTE_PROGRAM.
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
FORM POPULATE_EMAIL_MESSAGE_BODY.
REFRESH IT_MESSAGE.
IT_MESSAGE = 'Please find attached a list test ekpo records'.
APPEND IT_MESSAGE.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODYPERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
TABLES IT_MESSAGE
IT_ATTACH
USING P_EMAIL
'Failed IDOC Analysis report'(020)
'xls'(021)
'IDOC_REP'(022)
CHANGING GD_ERROR
GD_RECIEVER.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
ENDFORM. " F_MAIL
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM BUILD_XLS_DATA_TABLE.
*CONSTANTS: CON_CRET TYPE X VALUE '0D', "OK for non Unicode
*CON_TAB TYPE X VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE text-040 text-041 text-042 text-043 text-044 text-045 text-046 text-047 text-048 text-049
INTO IT_ATTACH SEPARATED BY con_tab.
CONCATENATE con_cret IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
clear IT_ATTACH.
loop at i_final_t into w_final.
CONCATENATE
w_final-mestyp w_final-docnum w_final-statxt w_final-msgno w_final-rvplant w_final-kunnr w_final-vbeln w_final-credat
w_final-cretim w_final-flag INTO IT_ATTACH SEPARATED BY con_tab.
CONCATENATE con_cret IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
clear IT_attach.
endloop.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE
PIT_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.
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[] = PIT_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. "SEND_FILE_AS_EMAIL_ATTACHMENT
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM INITIATE_MAIL_EXECUTE_PROGRAM.
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
FORM POPULATE_EMAIL_MESSAGE_BODY.
data: l1(99) type c,
l2(15) type c,
lt_message type standard table of solisti1,
ls_message like line of lt_message.
clear ls_message.
l1 = 'Dear'(007).
l2 = 'Sir/Madam'(008).
concatenate l1 l2 ',' into
ls_message-line separated by space.
append ls_message to lt_message.
*insert Blank Line
clear ls_message.
ls_message-line = space.
append ls_message to lt_message.
*Assign Message text
clear ls_message.
concatenate text-011
text-012
into ls_message-line separated by space.
append ls_message to lt_message.
*insert Blank Line
clear ls_message.
ls_message-line = space.
append ls_message to lt_message.
*Assign Message text
clear ls_message.
concatenate text-013
text-014
text-015
into ls_message-line separated by space.
append ls_message to lt_message.
concatenate text-016
text-017
into ls_message-line separated by space.
append ls_message to lt_message.
*insert Blank Line
clear ls_message.
ls_message-line = space.
append ls_message to lt_message.
ls_message-line = text-018.
append ls_message to lt_message.
ls_message-line = text-019.
append ls_message to lt_message.
clear: ls_message.
REFRESH IT_MESSAGE.
it_message[] = lt_message[].
APPEND IT_MESSAGE.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY -
How to send a mail with attaching a report
hi gurus,
my requirment is i have to send a mail with attaching the report of a program to the client.. is it possible? help me with sample code.
Thanks in advance.
Regards,
Indira DHi Indira,
plz check out this code below,
*& Report ZATTACH *
REPORT ZATTACH .
TABLES: ekko.
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT '[email protected]'.
TYPES: BEGIN OF t_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
END OF t_ekpo.
DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
wa_ekpo TYPE t_ekpo.
TYPES: BEGIN OF t_charekpo,
ebeln(10) TYPE c,
ebelp(5) TYPE c,
aedat(8) TYPE c,
matnr(18) TYPE c,
END OF t_charekpo.
DATA: wa_charekpo TYPE t_charekpo.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
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,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
SELECT ebeln ebelp aedat matnr
UP TO 10 ROWS
FROM ekpo
INTO TABLE it_ekpo.
ENDFORM. " DATA_RETRIEVAL
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT it_ekpo INTO wa_charekpo.
CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
wa_charekpo-aedat wa_charekpo-matnr
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_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.
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[] = pit_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.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Please find attached a list test ekpo records'.
APPEND it_message.
endform.
" POPULATE_EMAIL_MESSAGE_BODY
<b>
Reward points if this helps,</b>
Kiran -
Apple Mail change my signature font
I need for business purpose to have a separate font for my email font and my signature. But everytime Apple Mail change my signature font according to the body font.
What can I do? (I didn't check the box with "use my default font")
thx
AndreaI sign the pdf with a digital signature which includes a picture of my written signature. When I attach it to Apple mail or upload to mobileme, the signiture disappears. My clients see nothing. When I go back to the email in the sent box and open the pdf in the email there is no signature. When I open the original pdf the signature is there
This problem does not exist in outlook 2011, but would have liked to use mail as outlook does not support caldev
I don't know if I can explain it any better. -
Sending mail without attachment file
Hi Sapfans:
I would like to send mail without attachment file, just a notice,
needing multiple receiver, can change the mail title,
Which function shoud I use?
I just found out sending mail with attachment file there,
Thanks a lot!Hi Alchie,
Please take a look at my example below. It sens e-mail to multiple recipients without attachments.
FUNCTION-POOL zts0001 MESSAGE-ID sv.
INCLUDE lsvimdat . "general data decl.
INCLUDE lzts0001t00 . "view rel. data dcl.
*/ Author: Aris Hidalgo
*/ Created on: September 7, 2006
*/ Purpose of program: This will send out e-mails to specified users in
*/ custom table ZSHIPTO_EMAIL whenever records have been deleted or
*/ modified via the maintenance view of ZTS0001. The changes will also
*/ be reflected in custom table ZTS_STPGEOLOC.
TABLES: zts_stpgeoloc,
zshipto_email,
kna1.
FIELD-SYMBOLS: <fs_old_total> TYPE ANY.
* CLASS lcl_main DEFINITION ABSTRACT
CLASS lcl_main DEFINITION ABSTRACT.
PUBLIC SECTION.
TYPES: BEGIN OF t_zts0001_old,
kunnr TYPE zts0001-kunnr,
cdseq TYPE zts0001-cdseq,
zaddress TYPE zts0001-zaddress,
zcperson TYPE zts0001-zcperson,
zcnumber TYPE zts0001-zcnumber,
END OF t_zts0001_old.
TYPES: BEGIN OF t_zts0001_new,
kunnr TYPE zts0001-kunnr,
cdseq TYPE zts0001-cdseq,
zaddress TYPE zts0001-zaddress,
zcperson TYPE zts0001-zcperson,
zcnumber TYPE zts0001-zcnumber,
END OF t_zts0001_new.
TYPES: BEGIN OF t_zts_stpgeoloc,
kunnr TYPE zts_stpgeoloc-kunnr,
cdseq TYPE zts_stpgeoloc-cdseq,
zaddress TYPE zts_stpgeoloc-zaddress,
zcperson TYPE zts_stpgeoloc-zcperson,
zcnumber TYPE zts_stpgeoloc-zcnumber,
END OF t_zts_stpgeoloc.
TYPES: BEGIN OF t_del_entries,
kunnr TYPE zts0001-kunnr,
cdseq TYPE zts0001-cdseq,
zaddress TYPE zts0001-zaddress,
zcperson TYPE zts0001-zcperson,
zcnumber TYPE zts0001-zcnumber,
name1 TYPE kna1-name1,
END OF t_del_entries.
TYPES: BEGIN OF t_modified_entries,
kunnr TYPE zts0001-kunnr,
cdseq TYPE zts0001-cdseq,
old_address TYPE zts0001-zaddress,
new_address TYPE zts0001-zaddress,
old_person TYPE zts0001-zcperson,
new_person TYPE zts0001-zcperson,
old_number TYPE zts0001-zcnumber,
new_number TYPE zts0001-zcnumber,
name1 TYPE kna1-name1,
END OF t_modified_entries.
DATA: gt_zts0001_old TYPE STANDARD TABLE OF t_zts0001_old,
gt_zts0001_new TYPE HASHED TABLE OF t_zts0001_new
WITH UNIQUE KEY kunnr cdseq,
gt_zts_stpgeoloc TYPE STANDARD TABLE OF t_zts_stpgeoloc,
gt_del_entries TYPE STANDARD TABLE OF t_del_entries,
gt_modified_entries TYPE STANDARD TABLE OF t_modified_entries,
gt_zshipto_email TYPE STANDARD TABLE OF zshipto_email,
t_maildata TYPE sodocchgi1,
gt_mailtxt TYPE STANDARD TABLE OF solisti1,
gt_mailrec TYPE STANDARD TABLE OF somlreci1.
DATA: v_old_total TYPE i,
v_new_total TYPE i,
v_flag(1) TYPE c,
v_counter(1) TYPE c,
v_contents(255) TYPE c.
ENDCLASS.
* CLASS lcl_get_old_recs DEFINITION
CLASS lcl_get_old_recs DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: export_old_recs.
ENDCLASS.
* CLASS lcl_get_old_recs IMPLEMENTATION
CLASS lcl_get_old_recs IMPLEMENTATION.
METHOD export_old_recs.
SELECT kunnr cdseq zaddress zcperson zcnumber
FROM zts0001
INTO TABLE gt_zts0001_old.
v_old_total = sy-dbcnt.
ASSIGN v_old_total TO <fs_old_total>.
EXPORT gt_zts0001_old = gt_zts0001_old TO MEMORY ID 'AVH'.
CLEAR gt_zts0001_old. REFRESH gt_zts0001_old.
ENDMETHOD.
ENDCLASS.
* CLASS lcl_old_and_new DEFINITION
CLASS lcl_old_and_new DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: compare_old_and_new.
ENDCLASS.
* CLASS lcl_old_and_new IMPLEMENTATION
CLASS lcl_old_and_new IMPLEMENTATION.
METHOD compare_old_and_new.
DATA: wa_del_entries LIKE LINE OF gt_del_entries.
FIELD-SYMBOLS: <fs_old> LIKE LINE OF gt_zts0001_old,
<fs_new> LIKE LINE OF gt_zts0001_new.
SELECT kunnr cdseq zaddress zcperson zcnumber
FROM zts0001
INTO TABLE gt_zts0001_new.
v_new_total = sy-dbcnt.
IF v_new_total <> <fs_old_total>.
IMPORT gt_zts0001_old = gt_zts0001_old FROM MEMORY ID 'AVH'.
LOOP AT gt_zts0001_old ASSIGNING <fs_old>.
READ TABLE gt_zts0001_new WITH TABLE KEY kunnr = <fs_old>-kunnr
cdseq = <fs_old>-cdseq
ASSIGNING <fs_new>.
IF sy-subrc <> 0.
MOVE-CORRESPONDING <fs_old> TO wa_del_entries.
APPEND wa_del_entries TO gt_del_entries.
CLEAR wa_del_entries.
DELETE FROM zts_stpgeoloc
WHERE kunnr = <fs_old>-kunnr
AND cdseq = <fs_old>-cdseq.
ENDIF.
ENDLOOP.
IF NOT gt_del_entries[] IS INITIAL.
EXPORT gt_del_entries = gt_del_entries TO MEMORY ID 'DEL'.
ENDIF.
REFRESH gt_zts0001_old.
ENDIF.
ENDMETHOD.
ENDCLASS.
* CLASS lcl_check_changes DEFINITION
CLASS lcl_check_changes DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: check_for_changes.
ENDCLASS.
* CLASS lcl_check_changes IMPLEMENTATION
CLASS lcl_check_changes IMPLEMENTATION.
METHOD check_for_changes.
TYPES: BEGIN OF t_zts_stpgeoloc,
mandt TYPE zts_stpgeoloc-mandt,
kunnr TYPE zts_stpgeoloc-kunnr,
cdseq TYPE zts_stpgeoloc-cdseq,
zcgeoloc TYPE zts_stpgeoloc-zcgeoloc,
zaddress TYPE zts_stpgeoloc-zaddress,
zcperson TYPE zts_stpgeoloc-zcperson,
zcnumber TYPE zts_stpgeoloc-zcnumber,
END OF t_zts_stpgeoloc.
DATA: wa_modified_entries LIKE LINE OF gt_modified_entries,
lt_zts_stpgeoloc TYPE HASHED TABLE OF t_zts_stpgeoloc
WITH UNIQUE KEY kunnr cdseq,
wa_zts_stpgeoloc LIKE LINE OF lt_zts_stpgeoloc.
FIELD-SYMBOLS: <fs_zts0001_old> LIKE LINE OF gt_zts0001_old,
<fs_zts0001_new> LIKE LINE OF gt_zts0001_new.
IMPORT gt_zts0001_old = gt_zts0001_old FROM MEMORY ID 'AVH'.
SELECT kunnr cdseq zcgeoloc zaddress zcperson zcnumber
FROM zts_stpgeoloc
INTO CORRESPONDING FIELDS OF TABLE lt_zts_stpgeoloc.
SELECT kunnr cdseq zaddress zcperson zcnumber
FROM zts0001
INTO TABLE gt_zts0001_new.
LOOP AT gt_zts0001_old ASSIGNING <fs_zts0001_old>.
READ TABLE gt_zts0001_new WITH TABLE KEY
kunnr = <fs_zts0001_old>-kunnr
cdseq = <fs_zts0001_old>-cdseq
ASSIGNING <fs_zts0001_new>.
IF sy-subrc = 0.
READ TABLE lt_zts_stpgeoloc WITH TABLE KEY
kunnr = <fs_zts0001_new>-kunnr
cdseq = <fs_zts0001_new>-cdseq
INTO wa_zts_stpgeoloc.
IF sy-subrc = 0.
wa_zts_stpgeoloc-mandt = sy-mandt.
wa_zts_stpgeoloc-kunnr = <fs_zts0001_new>-kunnr.
wa_zts_stpgeoloc-cdseq = <fs_zts0001_new>-cdseq.
wa_zts_stpgeoloc-zcgeoloc = space.
wa_zts_stpgeoloc-zaddress = <fs_zts0001_new>-zaddress.
wa_zts_stpgeoloc-zcperson = <fs_zts0001_new>-zcperson.
wa_zts_stpgeoloc-zcnumber = <fs_zts0001_new>-zcnumber.
MODIFY zts_stpgeoloc FROM wa_zts_stpgeoloc.
COMMIT WORK AND WAIT.
ENDIF.
* address
IF <fs_zts0001_old>-zaddress <> <fs_zts0001_new>-zaddress.
MOVE: <fs_zts0001_new>-kunnr TO wa_modified_entries-kunnr,
<fs_zts0001_new>-cdseq TO wa_modified_entries-cdseq,
<fs_zts0001_old>-zaddress TO wa_modified_entries-old_address,
<fs_zts0001_new>-zaddress TO wa_modified_entries-new_address.
v_flag = 1.
ENDIF.
* person
IF <fs_zts0001_old>-zcperson <> <fs_zts0001_new>-zcperson.
MOVE: <fs_zts0001_new>-kunnr TO wa_modified_entries-kunnr,
<fs_zts0001_new>-cdseq TO wa_modified_entries-cdseq,
<fs_zts0001_old>-zcperson TO wa_modified_entries-old_person,
<fs_zts0001_new>-zcperson TO wa_modified_entries-new_person.
v_flag = 1.
ENDIF.
* number
IF <fs_zts0001_old>-zcnumber <> <fs_zts0001_new>-zcnumber.
MOVE: <fs_zts0001_new>-kunnr TO wa_modified_entries-kunnr,
<fs_zts0001_new>-cdseq TO wa_modified_entries-cdseq,
<fs_zts0001_old>-zcnumber TO wa_modified_entries-old_number,
<fs_zts0001_new>-zcnumber TO wa_modified_entries-new_number.
v_flag = 1.
ENDIF.
ENDIF.
IF v_flag = 1.
APPEND wa_modified_entries TO gt_modified_entries.
CLEAR wa_modified_entries.
ENDIF.
* update ZTS_STPGEOLOC based from the modified records in ZTS0001
IF v_flag = 1.
CLEAR v_flag.
UPDATE zts_stpgeoloc SET zaddress = <fs_zts0001_new>-zaddress
zcperson = <fs_zts0001_new>-zcperson
zcnumber = <fs_zts0001_new>-zcnumber
WHERE kunnr = <fs_zts0001_new>-kunnr
AND cdseq = <fs_zts0001_new>-cdseq.
ENDIF.
ENDLOOP.
IF NOT gt_modified_entries[] IS INITIAL.
EXPORT gt_modified_entries = gt_modified_entries TO MEMORY ID 'MOD'
ENDIF.
ENDMETHOD.
ENDCLASS.
* CLASS lcl_messages DEFINITION
CLASS lcl_messages DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: create_message.
ENDCLASS.
* CLASS lcl_messages IMPLEMENTATION
CLASS lcl_messages IMPLEMENTATION.
METHOD create_message.
FIELD-SYMBOLS: <fs_email> LIKE LINE OF gt_zshipto_email,
<fs_del> LIKE LINE OF gt_del_entries,
<fs_mod> LIKE LINE OF gt_modified_entries.
DATA: wa_mailtxt LIKE LINE OF gt_mailtxt,
wa_mailrec LIKE LINE OF gt_mailrec.
IMPORT gt_modified_entries = gt_modified_entries
FROM MEMORY ID 'MOD'.
IMPORT gt_del_entries = gt_del_entries FROM MEMORY ID 'DEL'.
SELECT * FROM zshipto_email INTO TABLE gt_zshipto_email
WHERE zevent = '2'.
IF sy-dbcnt > 0.
*/ routine for records that were deleted
IF NOT gt_del_entries[] IS INITIAL.
t_maildata-obj_name = 'Record Deleted in table ZTS0001'.
t_maildata-obj_descr = 'Record Deleted in table ZTS0001'.
t_maildata-obj_langu = sy-langu.
CLEAR: v_flag, v_counter.
LOOP AT gt_zshipto_email ASSIGNING <fs_email>.
LOOP AT gt_del_entries ASSIGNING <fs_del>.
* get name of dealer
SELECT SINGLE name1 FROM kna1
INTO <fs_del>-name1
WHERE kunnr = <fs_del>-kunnr.
IF v_counter IS INITIAL.
CONCATENATE: 'FYI: The ff record/s were deleted in tables'
'ZTS0001 and ZTS_STPGEOLOC by user' sy-uname
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
ENDIF.
APPEND wa_mailtxt TO gt_mailtxt. "Extra space for message
CONCATENATE: 'Dealer :' <fs_del>-kunnr '-'
<fs_del>-name1
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Ship-To:' <fs_del>-cdseq
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Address:' <fs_del>-zaddress
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Contact person:' <fs_del>-zcperson
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Contact number:' <fs_del>-zcnumber
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
v_counter = 1.
ENDLOOP.
wa_mailrec-receiver = <fs_email>-zemail.
wa_mailrec-rec_type = 'U'.
APPEND wa_mailrec TO gt_mailrec.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = t_maildata
document_type = 'RAW'
put_in_outbox = 'X'
* commit_work = 'X'
TABLES
* object_header = mailtxt
object_content = gt_mailtxt
receivers = gt_mailrec
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR: wa_mailtxt, wa_mailrec.
REFRESH: gt_mailtxt, gt_mailrec.
ENDLOOP.
ENDIF.
CLEAR wa_mailtxt.
REFRESH gt_mailtxt.
*/ routine for records that were modified
IF NOT gt_modified_entries[] IS INITIAL.
CLEAR t_maildata.
t_maildata-obj_name = 'Record changed in table ZTS0001'.
t_maildata-obj_descr = 'Record changed in table ZTS0001'.
t_maildata-obj_langu = sy-langu.
CLEAR v_counter.
LOOP AT gt_zshipto_email ASSIGNING <fs_email>.
CONCATENATE: 'FYI: The ff records were changed in tables'
'ZTS0001 and ZTS_STPGEOLOC by user' sy-uname
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
LOOP AT gt_modified_entries ASSIGNING <fs_mod>.
* get name of dealer
SELECT SINGLE name1 FROM kna1
INTO <fs_mod>-name1
WHERE kunnr = <fs_mod>-kunnr.
APPEND wa_mailtxt TO gt_mailtxt.
CONCATENATE: 'Dealer :' <fs_mod>-kunnr '-'
<fs_mod>-name1
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Ship-To:' <fs_mod>-cdseq
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
* address
IF NOT <fs_mod>-old_address IS INITIAL AND
NOT <fs_mod>-new_address IS INITIAL.
CONCATENATE: 'Address from:' <fs_mod>-old_address
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Address to :' <fs_mod>-new_address
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
ENDIF.
* person
IF NOT <fs_mod>-old_person IS INITIAL AND
NOT <fs_mod>-new_person IS INITIAL.
CONCATENATE: 'Contact person from:'
<fs_mod>-old_person
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Contact person to :'
<fs_mod>-new_person
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
ENDIF.
* number
IF NOT <fs_mod>-old_number IS INITIAL AND
NOT <fs_mod>-new_number IS INITIAL.
CONCATENATE: 'Contact number from:'
<fs_mod>-old_number
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
CONCATENATE: 'Contact number to :'
<fs_mod>-new_number
INTO v_contents
SEPARATED BY space.
wa_mailtxt-line = v_contents.
APPEND wa_mailtxt TO gt_mailtxt.
CLEAR: wa_mailtxt, v_contents.
ENDIF.
ENDLOOP.
wa_mailrec-receiver = <fs_email>-zemail.
wa_mailrec-rec_type = 'U'.
APPEND wa_mailrec TO gt_mailrec.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = t_maildata
document_type = 'RAW'
put_in_outbox = 'X'
* commit_work = 'X'
TABLES
* object_header = mailtxt
object_content = gt_mailtxt
receivers = gt_mailrec
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR: wa_mailtxt, wa_mailrec.
REFRESH: gt_mailtxt, gt_mailrec.
ENDLOOP.
ENDIF.
ENDIF.
FREE MEMORY ID 'AVH'.
FREE MEMORY ID 'DEL'.
FREE MEMORY ID 'MOD'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* FORM get_orig_contents_of_zts0001 *
*/ before saving the data in the database
FORM get_orig_contents_of_zts0001.
DATA: get_old_recs TYPE REF TO lcl_get_old_recs.
CREATE OBJECT get_old_recs.
CALL METHOD get_old_recs->export_old_recs.
ENDFORM.
* FORM get_rev_contents_of_zts0001 *
*/ after saving the data in the database
FORM get_rev_contents_of_zts0001.
DATA: old_and_new TYPE REF TO lcl_old_and_new,
check_changes TYPE REF TO lcl_check_changes,
messages TYPE REF TO lcl_messages.
CREATE OBJECT: old_and_new, check_changes, messages.
CALL METHOD old_and_new->compare_old_and_new.
CALL METHOD check_changes->check_for_changes.
CALL METHOD messages->create_message.
ENDFORM.
* FORM move_latest_date_and_user *
FORM move_latest_date_and_user.
zts0001-zcreated_by = sy-uname.
zts0001-zchanged_date = sy-datum.
ENDFORM.
Hope it helps...
P.S. Please award points if it helps... -
Hello all.
I have a problem that i dont know how to resolve: I need to send an email to some adresses with an attachment ( an excel file stored on the server's drive) How can it be done?
The email has to be sent by a job that should do this operation each day.
Thank you,
Cristian.
Message was edited by:
Cristian Boartessee this
Sending mail with attachment
This program will allowed you to send email with attachment.
First, specify the attachment file from your local hardisk and execute.
Next, specify the sender email address and click the send button.
report y_cr17_mail.
data method1 like sy-ucomm.
data g_user like soudnamei1.
data g_user_data like soudatai1.
data g_owner like soud-usrnam.
data g_receipients like soos1 occurs 0 with header line.
data g_document like sood4 .
data g_header like sood2.
data g_folmam like sofm2.
data g_objcnt like soli occurs 0 with header line.
data g_objhead like soli occurs 0 with header line.
data g_objpara like selc occurs 0 with header line.
data g_objparb like soop1 occurs 0 with header line.
data g_attachments like sood5 occurs 0 with header line.
data g_references like soxrl occurs 0 with header line.
data g_authority like sofa-usracc.
data g_ref_document like sood4.
data g_new_parent like soodk.
data: begin of g_files occurs 10 ,
text(4096) type c,
end of g_files.
data : fold_number(12) type c,
fold_yr(2) type c,
fold_type(3) type c.
parameters ws_file(4096) type c default 'c:\debugger.txt'.
Can me any file fromyour pc ....either xls or word or ppt etc ...
g_user-sapname = sy-uname.
call function 'SO_USER_READ_API1'
exporting
user = g_user
PREPARE_FOR_FOLDER_ACCESS = ' '
importing
user_data = g_user_data
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
fold_type = g_user_data-outboxfol+0(3).
fold_yr = g_user_data-outboxfol+3(2).
fold_number = g_user_data-outboxfol+5(12).
clear g_files.
refresh : g_objcnt,
g_objhead,
g_objpara,
g_objparb,
g_receipients,
g_attachments,
g_references,
g_files.
method1 = 'SAVE'.
g_document-foltp = fold_type.
g_document-folyr = fold_yr.
g_document-folno = fold_number.
g_document-objtp = g_user_data-object_typ.
*g_document-OBJYR = '27'.
*g_document-OBJNO = '000000002365'.
*g_document-OBJNAM = 'MESSAGE'.
g_document-objdes = 'sap-img.com testing by program'.
g_document-folrg = 'O'.
*g_document-okcode = 'CHNG'.
g_document-objlen = '0'.
g_document-file_ext = 'TXT'.
g_header-objdes = 'sap-img.com testing by program'.
g_header-file_ext = 'TXT'.
call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
exporting
method = method1
office_user = sy-uname
ref_document = g_ref_document
new_parent = g_new_parent
importing
authority = g_authority
tables
objcont = g_objcnt
objhead = g_objhead
objpara = g_objpara
objparb = g_objparb
recipients = g_receipients
attachments = g_attachments
references = g_references
files = g_files
changing
document = g_document
header_data = g_header
FOLMEM_DATA =
RECEIVE_DATA =
File from the pc to send...
method1 = 'ATTCREATEFROMPC'.
g_files-text = ws_file.
append g_files.
call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
exporting
method = method1
office_user = g_owner
ref_document = g_ref_document
new_parent = g_new_parent
importing
authority = g_authority
tables
objcont = g_objcnt
objhead = g_objhead
objpara = g_objpara
objparb = g_objparb
recipients = g_receipients
attachments = g_attachments
references = g_references
files = g_files
changing
document = g_document
header_data = g_header
method1 = 'SEND'.
g_receipients-recnam = 'MK085'.
g_receipients-recesc = 'B'.
g_receipients-sndex = 'X'.
append g_receipients.
call function 'SO_DOCUMENT_REPOSITORY_MANAGER'
exporting
method = method1
office_user = g_owner
ref_document = g_ref_document
new_parent = g_new_parent
importing
authority = g_authority
tables
objcont = g_objcnt
objhead = g_objhead
objpara = g_objpara
objparb = g_objparb
recipients = g_receipients
attachments = g_attachments
references = g_references
files = g_files
changing
document = g_document
header_data = g_header.
*-- End of Program
<b>also try this one for background scheduling the same</b>
Sending mail with attachment report in Background
Pay attention because its working with output list from spool converted to pdf.
=================================================================================
z_send_email_fax_global
FUNCTION-POOL z_gfaian_mail_fax. MESSAGE-ID ..
WORK TABLE AREAS
TABLES: tsp01.
INTERNAL TABLES
DATA: lt_rec_tab LIKE STANDARD TABLE OF soos1 WITH HEADER LINE,
lt_note_text LIKE STANDARD TABLE OF soli WITH HEADER LINE,
lt_attachments LIKE STANDARD TABLE OF sood5 WITH HEADER LINE.
DATA: lt_objcont LIKE STANDARD TABLE OF soli WITH HEADER LINE,
lt_objhead LIKE STANDARD TABLE OF soli WITH HEADER LINE.
DATA: pdf_format LIKE STANDARD TABLE OF tline WITH HEADER LINE.
TYPES: BEGIN OF y_files,
file(60) TYPE c,
END OF y_files.
DATA: lt_files TYPE STANDARD TABLE OF y_files WITH HEADER LINE.
DATA: l_objcont LIKE soli OCCURS 0 WITH HEADER LINE.
DATA: l_objhead LIKE soli OCCURS 0 WITH HEADER LINE.
STRUCTURES
DATA: folder_id LIKE soodk,
object_id LIKE soodk,
link_folder_id LIKE soodk,
g_document LIKE sood4,
g_header_data LIKE sood2,
g_folmem_data LIKE sofm2,
g_header_data LIKE sood2,
g_receive_data LIKE soos6,
g_ref_document LIKE sood4,
g_new_parent LIKE soodk,
l_folder_id LIKE sofdk,
v_email(50).
DATA: hd_dat like sood1.
VARIABLES
DATA: client LIKE tst01-dclient,
name LIKE tst01-dname,
objtype LIKE rststype-type,
type LIKE rststype-type.
DATA: numbytes TYPE i,
arc_idx LIKE toa_dara,
pdfspoolid LIKE tsp01-rqident,
jobname LIKE tbtcjob-jobname,
jobcount LIKE tbtcjob-jobcount,
is_otf.
DATA: outbox_flag LIKE sonv-flag VALUE X,
store_flag LIKE sonv-flag,
delete_flag LIKE sonv-flag,
owner LIKE soud-usrnam,
on LIKE sonv-flag VALUE X,
sent_to_all LIKE sonv-flag,
g_authority LIKE sofa-usracc,
w_objdes LIKE sood4-objdes.
DATA: c_file LIKE rlgrap-filename,
n_spool(6) TYPE n.
DATA: cancel.
DATA: desired_type LIKE sood-objtp,
real_type LIKE sood-objtp,
attach_type LIKE sood-objtp,
otf LIKE sood-objtp VALUE OTF, SAPscript Ausgabeformat
ali LIKE sood-objtp VALUE ALI. ABAP lists
CONSTANTS
CONSTANTS: ou_fol LIKE sofh-folrg VALUE O,
c_objtp LIKE g_document-objtp VALUE RAW,
c_file_ext LIKE g_document-file_ext VALUE TXT.
=================================================================================
z_send_email_fax2
FUNCTION z_faian_mail_fax2.
Interface local:
* IMPORTING
* REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT
* REFERENCE(FAX_MAIL_NUMBER) TYPE SO_NAME
* REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES
* REFERENCE(OBJECT_TYPE) TYPE SO_ESCAPE
* TABLES
* LT_BODY_EMAIL STRUCTURE SOLI
* EXCEPTIONS
* ERR_NO_ABAP_SPOOLJOB
Fist part: Verify if the spool really exists
SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.
IF sy-subrc NE 0.
RAISE err_no_abap_spooljob. doesnt exist
ELSE.
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
OTHERS = 5.
IF objtype(3) = OTF.
desired_type = otf.
ELSE.
desired_type = ali.
ENDIF.
CALL FUNCTION RSPO_RETURN_SPOOLJOB
EXPORTING
rqident = src_spoolid
desired_type = desired_type
IMPORTING
real_type = real_type
TABLES
buffer = l_objcont
EXCEPTIONS
no_such_job = 14
type_no_match = 94
job_contains_no_data = 54
no_permission = 21
can_not_access = 21
read_error = 54.
IF sy-subrc EQ 0.
attach_type = real_type.
ENDIF.
CALL FUNCTION SO_FOLDER_ROOT_ID_GET
EXPORTING
owner = sy-uname
region = ou_fol
IMPORTING
folder_id = l_folder_id
EXCEPTIONS
OTHERS = 5.
fill out informations about the header of the email
CLEAR: g_document.
g_document-foltp = l_folder_id-foltp.
g_document-folyr = l_folder_id-folyr.
g_document-folno = l_folder_id-folno.
g_document-objtp = c_objtp.
g_document-objdes = header_mail.
g_document-file_ext = c_file_ext.
g_header_data-objdes = header_mail.
CALL FUNCTION SO_DOCUMENT_REPOSITORY_MANAGER
EXPORTING
method = SAVE
office_user = sy-uname
IMPORTING
authority = g_authority
TABLES
objcont = lt_body_email
attachments = lt_attachments
CHANGING
document = g_document
header_data = g_header_data
EXCEPTIONS
OTHERS = 1.
folder_id-objtp = l_folder_id-foltp.
folder_id-objyr = l_folder_id-folyr.
folder_id-objno = l_folder_id-folno.
object_id-objtp = c_objtp.
object_id-objyr = g_document-objyr.
object_id-objno = g_document-objno.
link_folder_id-objtp = l_folder_id-foltp.
link_folder_id-objyr = l_folder_id-folyr.
link_folder_id-objno = l_folder_id-folno.
REFRESH lt_rec_tab.
CLEAR lt_rec_tab.
lt_rec_tab-sel = X.
lt_rec_tab-recesc = object_type. This field for FAX/MAIL
lt_rec_tab-recnam = U-.
lt_rec_tab-deliver = X.
lt_rec_tab-not_deli = X.
lt_rec_tab-read = X.
lt_rec_tab-mailstatus = E.
lt_rec_tab-adr_name = fax_mail_number.
lt_rec_tab-sortfield = fax_mail_number.
lt_rec_tab-recextnam = fax_mail_number.
lt_rec_tab-sortclass = 5′.
APPEND lt_rec_tab.
lt_rec_tab-recextnam = fax_mail_number.
lt_rec_tab-recesc = object_type.
lt_rec_tab-sndart = INT.
lt_rec_tab-sndpri = 1.
APPEND lt_rec_tab.
lt_files-file = c_file.
APPEND lt_files.
begin of insertion by faianf01
hd_dat-objdes = header_mail.
CALL FUNCTION SO_ATTACHMENT_INSERT
EXPORTING
object_id = object_id
attach_type = attach_type
object_hd_change = hd_dat
owner = sy-uname
TABLES
objcont = l_objcont
objhead = l_objhead
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
object_type_not_exist = 17
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
x_error = 1000.
IF sy-subrc > 0.
ENDIF.
end of insertion by faianf01
send email from SAPOFFICE
CALL FUNCTION SO_OBJECT_SEND
EXPORTING
folder_id = folder_id
object_id = object_id
outbox_flag = outbox_flag
link_folder_id = link_folder_id
owner = sy-uname
check_send_authority = X
TABLES
receivers = lt_rec_tab
note_text = lt_note_text
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
component_not_available = 1
folder_no_authorization = 5
folder_not_exist = 6
forwarder_not_exist = 8
object_no_authorization = 13
object_not_exist = 14
object_not_sent = 15
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
too_much_receivers = 73
user_not_exist = 35.
ENDIF.
ENDFUNCTION.
=================================================================================
z_send_email_fax
FUNCTION ZCBFS_SEND_MAIL.
Interface local:
* IMPORTING
* REFERENCE(SRC_SPOOLID) LIKE TSP01-RQIDENT
* REFERENCE(HEADER_MAIL) TYPE SO_OBJ_DES
* TABLES
* LIST_FAX_MAIL_NUMBER STRUCTURE SOLI
* EXCEPTIONS
* ERR_NO_ABAP_SPOOLJOB
DATA: vg_achou(1) TYPE n.
Fist part: Verify if the spool really exists
vg_achou = 1.
DO 60 TIMES.
SELECT SINGLE * FROM tsp01 WHERE rqident = src_spoolid.
IF sy-subrc IS INITIAL.
CLEAR vg_achou.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
IF vg_achou = 1.
RAISE err_no_abap_spooljob. doesnt exist
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
OTHERS = 5.
IF objtype(3) = OTF.
desired_type = otf.
ELSE.
desired_type = ali.
ENDIF.
CALL FUNCTION RSPO_RETURN_SPOOLJOB
EXPORTING
rqident = src_spoolid
desired_type = desired_type
IMPORTING
real_type = real_type
TABLES
buffer = l_objcont
EXCEPTIONS
no_such_job = 14
type_no_match = 94
job_contains_no_data = 54
no_permission = 21
can_not_access = 21
read_error = 54.
IF sy-subrc EQ 0.
attach_type = real_type.
ENDIF.
CALL FUNCTION SO_FOLDER_ROOT_ID_GET
EXPORTING
owner = sy-uname
region = ou_fol
IMPORTING
folder_id = l_folder_id
EXCEPTIONS
OTHERS = 5.
fill out informations about the header of the email
CLEAR: g_document.
g_document-foltp = l_folder_id-foltp.
g_document-folyr = l_folder_id-folyr.
g_document-folno = l_folder_id-folno.
g_document-objtp = c_objtp.
g_document-objdes = header_mail.
g_document-file_ext = c_file_ext.
g_header_data-objdes = header_mail.
CALL FUNCTION SO_DOCUMENT_REPOSITORY_MANAGER
EXPORTING
method = SAVE
office_user = sy-uname
IMPORTING
authority = g_authority
TABLES
attachments = lt_attachments
CHANGING
document = g_document
header_data = g_header_data
EXCEPTIONS
OTHERS = 1.
folder_id-objtp = l_folder_id-foltp.
folder_id-objyr = l_folder_id-folyr.
folder_id-objno = l_folder_id-folno.
object_id-objtp = c_objtp.
object_id-objyr = g_document-objyr.
object_id-objno = g_document-objno.
link_folder_id-objtp = l_folder_id-foltp.
link_folder_id-objyr = l_folder_id-folyr.
link_folder_id-objno = l_folder_id-folno.
REFRESH lt_rec_tab.
LOOP AT LIST_FAX_MAIL_NUMBER.
lt_rec_tab-recextnam = LIST_FAX_MAIL_NUMBER-LINE.
lt_rec_tab-recesc = U.
lt_rec_tab-sndart = INT.
lt_rec_tab-sndpri = 1.
APPEND lt_rec_tab.
ENDLOOP.
lt_files-file = c_file.
APPEND lt_files.
hd_dat-objdes = header_mail.
CALL FUNCTION SO_ATTACHMENT_INSERT
EXPORTING
object_id = object_id
attach_type = attach_type
object_hd_change = hd_dat
owner = sy-uname
TABLES
objcont = l_objcont
objhead = l_objhead
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
object_type_not_exist = 17
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
x_error = 1000.
IF sy-subrc > 0.
ENDIF.
send email from SAPOFFICE
CALL FUNCTION SO_OBJECT_SEND
EXPORTING
folder_id = folder_id
object_id = object_id
outbox_flag = outbox_flag
link_folder_id = link_folder_id
owner = sy-uname
TABLES
receivers = lt_rec_tab
note_text = lt_note_text
EXCEPTIONS
active_user_not_exist = 35
communication_failure = 71
component_not_available = 1
folder_no_authorization = 5
folder_not_exist = 6
forwarder_not_exist = 8
object_no_authorization = 13
object_not_exist = 14
object_not_sent = 15
operation_no_authorization = 21
owner_not_exist = 22
parameter_error = 23
substitute_not_active = 31
substitute_not_defined = 32
system_failure = 72
too_much_receivers = 73
user_not_exist = 35.
ENDFUNCTION.
regards,
srinivas
<b>*reward for useful answers*</b> -
Sending E-mail with attachment within a loop not working.
Hi,
I'm trying to send e-mails with attachment to multiple users with "subject & an attachment" within an ITAB loop.
SUBJECT for each mail to corresponding user is being sent properly.
But ATTACHMENT contents are not being sent properly.
1st ATTACHMENT contents are going to 2nd user(supposed to go to 1st user) & 2nd ATTACHMENT contents are going to 3rd user etc..
in almost all attempts, last ATTACHMENT contents within the loop were delivered properly to the last user.
As a test, I'm debugging by sending with same "SUBJECT" & "ATTACHMENT CONTENTS". still it's not working.
Following is the code for sending mail with same "SUBJECT" & "ATTACHMENT CONTENTS".
I even refreshed the file contents for each record within the ITAB. Greatly appreciate any help.
assume that ITAB has a field GROUP with values 501, 502, 503 & 504.
SUBJECT is the subject of e-mail & DIST_LIST is the e-mail id of the corresponding user.
DATA:
MAIL_FILE(20) TYPE C,
MAIL_TEXT(200) TYPE C,
COMMAND(512) TYPE C,
DIST_LIST(425) TYPE C,
SUBJECT(60) TYPE C.
DATA: BEGIN OF ITAB OCCURS 0.
DATA GROUP LIKE /BI0/PGRP-GRP.
DATA: END OF ITAB.
LOOP AT ITAB.
SUBJECT = ITAB-GROUP.
IF ITAB-GROUP = '501'.
DIST_LIST = '[email protected]'.
ENDIF.
IF ITAB-GROUP = '502'.
DIST_LIST = '[email protected]'.
ENDIF.
IF ITAB-GROUP = '503'.
DIST_LIST = '[email protected]'.
ENDIF.
IF ITAB-GROUP = '504'.
DIST_LIST = '[email protected]'.
ENDIF.
clear MAIL_FILE.
clear MAIL_TEXT.
UNASSIGN <FILE1>.
CONCATENATE '/tmp/' SY-UNAME '.txt' INTO MAIL_FILE.
TRANSLATE MAIL_FILE TO LOWER CASE.
OPEN DATASET MAIL_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
MAIL_TEXT = ITAB-GROUP.
TRANSFER MAIL_TEXT TO MAIL_FILE LENGTH 200.
CLOSE DATASET MAIL_FILE.
clear MAIL_TEXT.
CONCATENATE '< ' MAIL_FILE INTO MAIL_TEXT SEPARATED BY SPACE.
ASSIGN MAIL_TEXT TO <FILE1>.
*Create UNIX MAIL Command
CONCATENATE 'mailx -s'
'"' SUBJECT '"' '"' DIST_LIST '"' <FILE1>
INTO COMMAND SEPARATED BY SPACE.
Send the E-mail
CALL FUNCTION 'RFC_REMOTE_EXEC'
DESTINATION 'SERVER_EXEC'
EXPORTING
COMMAND = COMMAND
EXCEPTIONS
OTHERS = 04.
ENDLOOP.Hi Zhenglin,
thanks for your reply.
Now, it's working after I changed attachment file name (user name) with ITAB-GROUP.
but, I'm not clear on why it was not working even if the file name is same in every loop, as I'm unassigning the file contents and loading new contents at the start of each loop.
anyhow, it's working and many thanks for your help. -
Why does Mail change my attachments to DAT
I am looking for help on why the mail program on my iMac and MacAir change attachments sent to me to DAT files. The type of attachments doesn't matter. They can be Excel, PDF, or whatever, but when they come over, they are using a DAT extension. I've tried sending from various computers and other friends have sent me e-mails with attachements, but they always get changed to DAT files. When I receive e-mails on my Roadrunner account, they come over correctly on the same computers.
Thanks,
ScottHi Scott, it's because the silly users on the other end. & MS..
http://www.twistermc.com/583/open-winmaildat-files-mac/
https://itunes.apple.com/us/app/windat-opener/id405924251?mt=12 -
Is there a way to create a PDF from outlook e-mail that does not embed the attachment? better, is there a way to convert the e-mail with attachement (not embeded) as pdf pages?
- Problem: I have 1400 e-mails with attachments that need to be converted into pdf and the attachments cannot be embeded.
System: PC Windows 7 using Acrobat X Prof. - Thank you!Hi ,
There is an option of embedding index for faster search while converting email to a PDF .
However I am not sure that will serve your purpose or not .
I would recommend you to get in touch with Microsoft support as well .
Meanwhile I'll work on it and get back to you in case I get a desired solution .
Regards
Sukrit Dhingra -
Sending Mail with attachment and preserving the order of attachment
Hi Everyone!!!!!!
My requirement is to send Email with attachment in the same order as they were attached by Sender while composing the mail. I want to preserve order of attachment in the mail and when receiver open a mail, the attached files should be reflected in same order as it was on sender side. In my application,the documents being upload are already in my database. So, user just requires to mark the corresponding check box and enter the Sequence number for each attachment. When he clicks on "SEND" button, the Source file is first written from database to OS level and then files are attached from source available on OS . The attached file name could be anything. Based on the Sequence number file should be attached and send. My current code works fine,but problem it is that the Sequence number is not preserved in my attachment . However, when I traced the output of FOR Loop by inserting it in a table " temp_trace" I found that the Sequence is preserved in the order that I want. So, I think that uploaded files are written on the Operating system in same order but they are not attached in same order. Below is the sample code that is I am using to attach file in email. Here, the user_sequence is the sequence number entered by user.
for i in (select case when user_sequence is not null
then trim(to_char(user_sequence ,'09'))||'_'||file_name||'.pdf'
else ||'_'||file_name||'.pdf' end file_name ,
file_src,length(file_src) len,cd.doc_id,PRIORITY from
MIM_CLIENT_DOCS CD,(select DOC_ID ,user_sequence from table P_DOC_AND_user_sequence ) TEMP_TAB
WHERE CD.DOC_ID = TEMP_TAB.DOC_ID order by case when user_sequence is null then 1 else 0 end, file_name)
loop
insert into temp_trace values(i.file_name);
L_OUT := UTL_FILE.FOPEN(v_oracle_dir,i.file_name,'wb',32760);
end loop;
I want my output as
1_first attachment.txt
2_second_attachment.docx
3_abc.sql
_xxx.txt ------------------ When sequence is not assigned by user That is null at last.
Unfortunately, I am not getting attachment in mail in this sequence. Can anyone give me suggestion.
Sorry for stuff essay and thanks in advance!!!!!!!!!!!>
Please update your forum profile with a real handle instead of "974850".
My requirement is to send Email with attachment in the same order as they were attached by Sender while composing the mail. I want to preserve order of attachment in the mail and when receiver open a mail, the attached files should be reflected in same order as it was on sender side. In my application,the documents being upload are already in my database. So, user just requires to mark the corresponding check box and enter the Sequence number for each attachment. When he clicks on "SEND" button, the Source file is first written from database to OS level and then files are attached from source available on OS . The attached file name could be anything. Based on the Sequence number file should be attached and send. My current code works fine,but problem it is that the Sequence number is not preserved in my attachment . However, when I traced the output of FOR Loop by inserting it in a table " temp_trace" I found that the Sequence is preserved in the order that I want. So, I think that uploaded files are written on the Operating system in same order but they are not attached in same order. Below is the sample code that is I am using to attach file in email. Here, the user_sequence is the sequence number entered by user.Always post code using <tt>\...\</tt> tags as described in the FAQ.
for i in (select case when user_sequence is not null
then trim(to_char(user_sequence ,'09'))||'_'||file_name||'.pdf'
else ||'_'||file_name||'.pdf' end file_name ,
file_src,length(file_src) len,cd.doc_id,PRIORITY from
MIM_CLIENT_DOCS CD,(select DOC_ID ,user_sequence from table P_DOC_AND_user_sequence ) TEMP_TAB
WHERE CD.DOC_ID = TEMP_TAB.DOC_ID order by case when user_sequence is null then 1 else 0 end, file_name)
loop
insert into temp_trace values(i.file_name);
L_OUT := UTL_FILE.FOPEN(v_oracle_dir,i.file_name,'wb',32760);
end loop;I want my output as
1_first attachment.txt
2_second_attachment.docx
3_abc.sql
_xxx.txt ------------------ When sequence is not assigned by user That is null at last.
Unfortunately, I am not getting attachment in mail in this sequence. Can anyone give me suggestion.I see no code that attaches anything to email messages. What code is used to do this? Why are the files being written to the file system? -
Sending mail with attachment and body.
Hi Experts,
I have a requirement of sending a mail with an attachment and also the mail will have a body whose content will be same as that in the attachment.Subject of the mail will also be configured dynamically.Though I am able to send the mail with the attachment but I am not able to configure the body whose content will be same as that of the attachment.
I have unchecked the "Use Mail Package" and has hard-coded the "TO","From" field for sending the mail with attachment.
Can you please check and let me know how to configure the body which will be same as that of the attachment.
Thanks and Regards
Atanu MazumdarHi,
Use MTB module and then one of the parameter which can allow you to send message in attachment as well as in message body.
Transform.ContentDisposition: it helps us to decide if we want to send the payload as an attachment or in the message body. If we give the Parameter value as u201Cattachmentu201D then we will have the payload attached in the mail and if we assign this value as u201Cinlineu201D the payload will go in the mail body.
Hope this helps you..
Regards....
Maybe you are looking for
-
how do I create albums in the "Pictures" app to organize my photos
-
Start Workflow when Upload File using drag and drop
Hi, I am working with SharePoint 2013. I have a workflow needed to be started and run only once after a document is uploaded into the document library. The document library has required custom columns with default values. If I set workflow starting o
-
Help with Switch statements using Enums?
Hello, i need help with writing switch statements involving enums. Researched a lot but still cant find desired answer so going to ask here. Ok i'll cut story short. Im writing a calculator program. The main problem is writing code for controlling th
-
TS3991 If i produce a document on my PC in WORD. Can I open it, edit and save in CLOUD
Can anyone tell me if I produce a document on my PC in WORD can i edit it on my laptop and is it then saved in ICLOUD??
-
When I am at my home on the wireless network my room mate can access my desktop. How can I turn this off so this does not happen.