Payment advisory mail attachment in OTF format unable to open
Hi All,
We have copied the function module from BTE 00002040 and made the changes c_finaa-nacha = '1'. We have also assigned this FM in FIBF transaction.
After doing all the settings we are able to send the payment advisory note copy to vendor email id.
But the issue is vendor is receiving the mail with attachment as SAPscrip.OTF (OTF format) and vendor is not able to open this attachment in his mail.
Please give your valuble suggestions.
Thanks in advance,
DSaya
Refer SAP Notes
Note 1391851 - Payment advice note by mail in 4.70: Attachment is incorrect
Note 1033893 - Payt advice note by mail: Introductory text w/ attachment
Note 1168342 - Payment advice notes by e-mail and PDF with Unicode
Note 1223264 - Payt advice notes: No optical archiving and no log
Similar Messages
-
My e-mail attachment in xls format appears on PC's as infected and I'm unable to open it. What can I do?, My e-mail attachment in xls format appears on PC's as infected and I'm unable to open it. What can I do?
What does it have to do in iPad forum?
-
Sending PO in mail attachment with pdf format
Hello,
We are sending PO to vendor in a pdf attachment. The configuration is in place and as soon as the PO(ME22N) is saved the pdf mail is sent to vendor external mail address.
The requirement however is to add some text to this mail body ( in addition to the existing PDF attachment ).
The NACE config is using SAPFM06P program with entry_neu form and a custom sap script.
can somebody help as where is this mail functionality added in this standard program so that I may try to customize the same for the above requirement.
All I can see is 2 FM used in this ENTRY_NEU Form. Of which I guess ME_PRINT_PO is sending the mail ( I may be wrong here ) but where ?
I will be thankful for any kind of hint to help solve this issue.In general you will have to do the following:
1) Set NAST-NACHA = 8 (Special function)
2) Before OPEN_FORM (maybe in In enhancement spot) if NAST-NACHA = 8, then set itcpo-tdgetotf = 'X' (to get OTF back from CLOSE_FORM!)
3) During CLOSE_FORM, if NAST-NACHA = '8', get OTF output from TABLES parameter OTFDATA
4) Convert this OTF output to PDF using following sample code:
data: I_PDF STRUCTURE TLINE occurs 0,
I_OTF i_otf LIKE itcoo OCCURS 0.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 134
IMPORTING
bin_filesize = w_bytes
TABLES
otf = i_otf
lines = i_pdf
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
5) Send email with PDF attachment using the method(s) mentioned in one of these excellent blogs:
/people/thomas.jung3/blog/2004/09/07/sending-e-mail-from-abap--version-46d-and-lower--api-interface
/people/thomas.jung3/blog/2004/09/08/sending-e-mail-from-abap--version-610-and-higher--bcs-interface
or you can follow below procedure as well:
I suggest you make yourself very familiar with the SAP code that does this automatically. Once you understand the processing sequence SAP uses, it is much easier to add your customization and insert your enhancements. To debug it and step through the code, but a breakpoint in ENTRY_NEU, and process a PO. If you're sending your messages using a scheduled job, you'll hit the breakpoint when you process the message using RSNAST00. That's how I did it. I can tell you what I did to meet my requirements. You can change to meet your needs. It required a custom program, to use instead if ENTRY_NEU, and 3 enhancements to SAP code using the Enhancement Framework. You need to know how to use the framework. 1. configure your output type ZNE2 to to run a new program ZMRP_OUTCTRL, to run form routine ENTRY_ZNE2, to create form Z_PURCHASE_ORDER. 2. In ZMRP_OUTCTRL, call standard function modules, ME_READ_PO_FOR_PRINT and ME_PRINT_PO. 3. Drill down into ME_PRINT_PO to PREPARE_FORMULAR function module. Create new enhancement, and if NAST-KSCHL = ZNE2, then lookup the recipient's email address. Pass it as parameter to ADDR_GET_NEXT_COMM_TYPE. 4. Still in ME_PRINT_PO, PREPARE_FORMULAR, add another enhancement to set the value of itcpo-getotf to u2018Xu2019, to enable CLOSE_FORM to capture OTF data for PDF. Only set this OTF flag when the output is being run by RSNAST00, not when a user is simply previewing the printout. Sy-ucomm will be blank when RSNAST00 is running. 5. In ME_PRINT_PO, drill down to ENDE, and add an enhancement to check for NAST-KSCHL = ZNE2, and if so, call standard SAP function modules to END_FORM, START_FORM, WRITE_FORM, and END_FORM. Next call the function CLOSE_FORM, and set table parameter to capture the OTF_DATA as a table parameter OTF_DATA. 6. If OTF_DATA is found, then: If nast-kschl = 'ZNE2'. if NOT otf_data[] is initial. gs_OTF[] = otf_data[]. CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_filesize = v_len_in TABLES otf = gs_otf lines = gt_pdf EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 OTHERS = 4. IF SY-SUBRC 0. p_retco = '1'. PERFORM protocol_update USING '303' 'OTF Conversion failed.' 'Output Message Cancelled.' space space. IF 1 = 2. MESSAGE S303(me) with 'OTF Conversion failed.'. ENDIF. EXIT. ENDIF. CALL FUNCTION 'QCE1_CONVERT' TABLES T_SOURCE_TAB = gt_pdf T_TARGET_TAB = outbin. IF SY-SUBRC 0. p_retco = '1'. PERFORM protocol_update USING '303' 'PDF Conversion failed.' 'Output Message Cancelled.' space space. IF 1 = 2. MESSAGE S303(me) with 'PDF Conversion failed.'. ENDIF. EXIT. ENDIF. *get email recipients (this is specific to my requirements) select single banfn ernam zuname1 into (lv_banfn, lv_ernam, lv_zuname ) from eban where ebeln = nast-objky. IF SY-SUBRC 0. p_retco = '1'. PERFORM protocol_update USING '303' 'Requisition Data not found.' 'Output Message Cancelled.' space space. IF 1 = 2. MESSAGE S303(me) with 'Requisition Data not found.'. ENDIF. EXIT. ENDIF. 8. Build your OBJPACK and OBJBIN parameters: describe table mail_content lines lin. read table mail_content index lin. mail_data-doc_size = ( lin - 1 ) * 255 + STRLEN( mail_content ). clear objpack-transf_bin. objpack-head_start = 1. objpack-head_num = 0. objpack-body_start = 1. objpack-body_num = lin. objpack-doc_type = 'TXT'. APPEND objpack. describe table outbin lines lin. read table outbin index lin. objpack-doc_size = ( lin - 1 ) * 255 + strlen( outbin ). objpack-transf_bin = 'X'. objpack-head_start = 1. objpack-head_num = 0. objpack-body_start = 1. objpack-body_num = lin. objpack-doc_type = 'PDF'. objpack-obj_name = 'ATTACHMENT'. objpack-obj_descr = l_descr. APPEND objpack. CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING DOCUMENT_DATA = mail_data PUT_IN_OUTBOX = 'X' TABLES PACKING_LIST = objpack CONTENTS_BIN = outbin CONTENTS_TXT = mail_content RECEIVERS = 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. IF SY-SUBRC 0. p_retco = '1'. PERFORM protocol_update USING '303' 'Send Email function failed.' 'Output Message Cancelled.' space space. IF 1 = 2. MESSAGE S303(me) with 'Send Email function failed.'. ENDIF. EXIT. ENDIF. 9. Call function CLOSE_FORM, and end enhancement
Edited by: Devireddy omkar on Aug 2, 2011 11:15 AM
Edited by: Devireddy omkar on Aug 2, 2011 11:17 AM -
Email attachment in pdf format not getting opened
Dear freinds,
i have to send Payslip as PDF as email attachment. So i have used the FM BAPI_GET_PAYSLIP_PDF and further passed the data to FM
SO_NEW_DOCUMENT_ATT_SEND_API1.
But, now iam not able to open the attachment which is in my inbox and it is giving message as the pdf as file is curropt. please could any one tell me what i have to do in this regard
regards
vamsi.Hi Sai,
call function 'CONVERT_OTF'
exporting
format = 'PDF'
max_linewidth = 132
importing
bin_filesize = w_filesize
tables
otf = t_otf
lines = t_line
exceptions
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4.
loop at t_line.
concatenate w_string t_line into w_string.
endloop. " LOOP AT T_LINE
*" convert the 132 line character to 255 character ....................
do.
t_attach = w_string.
append t_attach.
shift w_string left by 255 places.
if w_string is initial.
exit.
endif. " IF W_STRING IS INITIAL
enddo. " DO
t_objbin[] = t_attach[].
*" Body of the mail..................................................
clear t_message. refresh t_message.
t_message = 'This is a mail from SAP ECC6'.
append t_message.
t_message = 'Thanks and Regards'.
append t_message.
t_message = 'Sravanthi'.
append t_message.
describe table t_message lines w_msg.
*" Document data.......................................................
w_docdata-obj_name = 'SAPRPT'.
w_docdata-expiry_dat = sy-datum + 10.
w_docdata-obj_descr = 'Smartform mail from Sravanthi'.
w_docdata-sensitivty = 'F'.
w_docdata-doc_size = w_msg * 255.
w_docdata-obj_langu = sy-langu .
*" Fill the packing list...............................................
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.
t_packing_list-body_num = w_msg.
t_packing_list-doc_type = 'RAW'.
append t_packing_list.
t_packing_list-transf_bin = 'X'.
describe table t_objbin lines w_objbin.
*" doc_size = (lines in pdf table) * 255...............................
t_packing_list-doc_size = w_objbin * 255.
t_packing_list-body_num = w_objbin.
t_packing_list-doc_type = 'PDF'.
t_packing_list-obj_name = 'smart'.
t_packing_list-obj_descr = 'test'.
append t_packing_list.
call function 'SO_DOCUMENT_SEND_API1'
exporting
document_data = w_docdata
put_in_outbox = 'X'
sender_address = w_sender
commit_work = 'X'
tables
packing_list = t_packing_list
contents_bin = t_objbin
contents_txt = t_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.
if sy-subrc ne 0.
write:/ 'Error When Sending the File', sy-subrc.
else.
write:/ 'Mail sent'.
endif.
Regards,
Sravanthi -
Just upgraded to os x yosomite now my husband is unable to access his mail on our Mac only on iPad. Why
Feecol1 wrote:
Why
There could be many reason why. Read this article: OS X Mail: Troubleshooting sending and receiving email messages - Apple Support
It will help you find out why... -
i am tryng to open the Attached xls file in the mail but i cant save that file in to a specified location also thats my problem please sugest a solution for that
Having the same problem. Click mail, it bounces, a quick flash, then nothing. Also as a side note, Entourage as of this morning will no longer send mail to either of my work accounts, that is why I was trying mail. Also tried several other mail programs and the same result, can receive mails, but not send.
Have reset the router, cable modem, checked that I have the latest MS and Apple software loaded and it is all good. Very strange.
Ron -
I closed the mail folder when I did a software update. This morning, the mail icon is missing, and am not able to open from applications, or find it anyware in the toolbar. Error message says that Mail 3.6 is not supported by OSX Lion 10.7.3
Xcode 4.x cannot be installed on Snow Leopard. You need a 3.x. So if that is what you used then yes, you need to install lion. If connect.apple.com still alows registration or logins using an existing appleid then you could download the last xcode 3.2.6 for free.
-
Hi,
im working on sending report output as mail attachment in pdf format..
but im not getting the required output,,,i.e., even after entering email addresses in the selection screen....im not getting any mail to the respective mail-ids..
im pasting the code..pls fix the problem..
pls let me know wat we have to do in SCOT transaction after executing the program....pls respond ..pls ..
TABLES : t001, "COMPANY CODE
knb1, "CUSTOMER MASTER(COMPANY CODE)
cdhdr, "CHANGE DOCUMENT HEADER
knkk, "CUSTOMER MASTER CREDIT MANAGEMENT: CONTROL AREA DATA
kna1, "GENERAL DATA IN CUSTOMER MASTER
adrc, "ADDRESSES (BUSINESS ADDRESS SERVICES)
t001s, "ACCOUNTING CLERKS
adrt, "COMMUNICATION DATA TEXT (BUSINESS ADDRESS SERVICES)
adr6. "E-MAIL ADDRESSES (BUSINESS ADDRESS SERVICES)
TABLES: itcpo, "SAPscript output interface
itcpp. "SAPscript output parameters
TYPES: BEGIN OF y_t001,
bukrs TYPE bukrs,
kkber TYPE kkber,
adrnr TYPE adrnr,
END OF y_t001.
TYPES: BEGIN OF y_cust,
p_objectid TYPE cdobjectv,
END OF y_cust.
TYPES: BEGIN OF y_knkk,
kunnr TYPE kunnr,
kkber TYPE kkber,
dtrev TYPE dtrev_cm,
nxtrv TYPE nxtrv_cm,
klimk TYPE klimk,
dbwae TYPE dbwae_cm,
END OF y_knkk.
TYPES: BEGIN OF y_customer,
kunnr TYPE kunnr,
adrnr TYPE adrnr,
END OF y_customer.
TYPES: BEGIN OF y_custo ,
kunnr TYPE kunnr,
name TYPE name1_gp,
kkber TYPE kkber,
END OF y_custo.
TYPES: BEGIN OF y_knkk1,
kunnr LIKE knkk-kunnr,
dtrev LIKE knkk-dtrev,
nxtrv LIKE knkk-nxtrv,
klimk LIKE knkk-klimk,
END OF y_knkk1.
TYPES: BEGIN OF y_report_display,
kunnr TYPE kunnr,
name TYPE name1_gp,
dtrev TYPE dtrev_cm,
nxtrv TYPE nxtrv_cm,
klimk TYPE klimk,
dbwae TYPE dbwae_cm,
END OF y_report_display.
TYPES: BEGIN OF y_adrt,
addrnumber TYPE adrnr,
comm_type TYPE ad_comm,
remark TYPE ad_remark2,
persnumber TYPE ad_persnum,
date_from TYPE ad_date_fr,
consnumber TYPE ad_consnum,
smtp_addr TYPE ad_smtpadr,
END OF y_adrt.
*TYPES : BEGIN OF y_adr6,
addrnumber TYPE ad_addrnum,
persnumber TYPE ad_persnum,
date_from TYPE ad_date_fr,
consnumber TYPE ad_consnum,
smtp_addr TYPE ad_smtpadr,
END OF y_adr6.
*TYPES: BEGIN OF y_addr,
addrnumber TYPE adrnr,
name1 TYPE ad_name1,
postcode TYPE ad_pstcd1,
city1 TYPE ad_city1,
street TYPE ad_street,
housenum TYPE ad_hsnm1,
telnum TYPE ad_tlnmbr1,
faxnum TYPE ad_fxnmbr1,
END OF y_addr.
TYPES: BEGIN OF y_custnam,
adrnr TYPE adrnr,
name2 TYPE ad_name1,
END OF y_custnam.
TYPES: BEGIN OF y_kna1,
kunnr TYPE kunnr,
adrnr TYPE adrnr,
name1 TYPE name1,
END OF y_kna1.
TYPES: BEGIN OF y_knb1,
kunnr TYPE kunnr,
bukrs TYPE bukrs,
busab TYPE busab,
END OF y_knb1.
TYPES: BEGIN OF y_clv,
dtrev TYPE dtrev_cm,
nxtrv TYPE nxtrv_cm,
klimk TYPE klimk,
END OF y_clv.
TYPES: BEGIN OF y_ccname,
sname TYPE t001s-sname,
END OF y_ccname.
*TYPES DECLARATION FOR DESIGING SCRIPT
TYPES : BEGIN OF y_adrc,
addrnumber LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
post_code1 LIKE adrc-post_code1,
city1 LIKE adrc-city1,
street LIKE adrc-street,
house_num1 LIKE adrc-house_num1,
tel_number LIKE adrc-tel_number,
nation LIKE adrc-nation ,
fax_number LIKE adrc-fax_number,
country LIKE adrc-country,
END OF y_adrc.
*TO GET C1 (CUSTOMER NAME IN RUSSIAN
TYPES : BEGIN OF y_adrc1,
addrnumber LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
nation LIKE adrc-nation,
END OF y_adrc1.
*TO GET C7
TYPES :BEGIN OF y_t001s,
bukrs LIKE t001s-bukrs, "Company Code
busab LIKE t001s-busab,
sname LIKE t001s-sname,
END OF y_t001s.
CONSTANTS:
c_printer LIKE itcpp-tddevice VALUE 'PRINTER',
c_true(1) TYPE c VALUE 'X',
c_1(1) TYPE n VALUE '1',
c_pdf_format(3) TYPE c VALUE 'PDF',
c_u LIKE soos1-recesc VALUE 'U',
c_recipient_name LIKE soos1-recnam VALUE 'U-',
c_english LIKE sy-langu VALUE 'E',
c_f LIKE sood1-objsns VALUE 'F',
c_int(3) TYPE c VALUE 'INT',
c_main(4) TYPE c VALUE 'ITEM',
c_main_window(4) TYPE c VALUE 'MAIN',
c_header(6) TYPE c VALUE 'HEADER',
c_minus_sign(1) TYPE c VALUE '-',
c_document_type LIKE sood-objtp VALUE 'EXT',
c_space(1) TYPE c VALUE ' '.
DATA t_result LIKE itcpp.
DATA :w_t001 TYPE t001,
w_custo TYPE y_custo,
w_knkk TYPE y_knkk,
w_cust TYPE y_cust,
w_customer TYPE y_customer,
w_report_display TYPE y_report_display,
w_addr TYPE y_addr,
w_custnam TYPE y_custnam,
w_adrt TYPE y_adrt,
w_adr6 TYPE y_adr6,
w_kna1 TYPE y_kna1,
w_knb1 TYPE y_knb1,
w_clv TYPE y_clv,
w_ccname TYPE y_ccname.
DATA: w_error_found(1) TYPE c,
w_key_date_text(30) TYPE c,
w_total(10) TYPE p DECIMALS 2,
w_htddevice LIKE itcpp-tddevice.
DATA: E_PROFILE LIKE SOPRD.
DATA: t_t001 TYPE STANDARD TABLE OF y_t001,
t_custo TYPE STANDARD TABLE OF y_custo,
t_knkk TYPE STANDARD TABLE OF y_knkk,
t_cust TYPE STANDARD TABLE OF y_cust,
t_customer TYPE STANDARD TABLE OF y_customer,
t_report_display TYPE STANDARD TABLE OF y_report_display,
t_addr TYPE STANDARD TABLE OF y_addr,
t_custnam TYPE STANDARD TABLE OF y_custnam,
t_adrt TYPE STANDARD TABLE OF y_adrt,
t_adr6 TYPE STANDARD TABLE OF y_adr6,
t_kna1 TYPE STANDARD TABLE OF y_kna1,
t_knb1 TYPE STANDARD TABLE OF y_knb1,
t_clv TYPE STANDARD TABLE OF y_clv,
t_ccname TYPE STANDARD TABLE OF y_ccname.
DATA : number LIKE spell,
amount(1000) TYPE c.
For storing error log
DATA: BEGIN OF t_error OCCURS 0,
kunnr LIKE kna1-kunnr,
comm(30) TYPE c,
END OF t_error.
For storing customer's email address
DATA: BEGIN OF t_email OCCURS 0,
smtp_addr LIKE adr6-smtp_addr,
END OF t_email.
To be used in the function to send a layout via email
DATA: t_otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,
t_htline LIKE tline OCCURS 0 WITH HEADER LINE.
DATA DECLARATIONS FOR DESIGING SCRIPT
DATA : it_t001 TYPE STANDARD TABLE OF y_t001,
wa_t001 TYPE y_t001.
DATA : it_adrc TYPE STANDARD TABLE OF y_adrc,
wa_adrc type y_adrc.
DATA : it_adrc1 TYPE STANDARD TABLE OF y_adrc1,
wa_adrc1 TYPE y_adrc1.
DATA : it_knb1 TYPE STANDARD TABLE OF y_knb1,
wa_knb1 TYPE y_knb1.
DATA : it_kna1 TYPE STANDARD TABLE OF y_kna1,
wa_kna1 TYPE y_kna1.
DATA : it_knkk TYPE STANDARD TABLE OF y_knkk,
wa_knkk TYPE y_knkk.
DATA : it_knkk1 TYPE STANDARD TABLE OF y_knkk1,
wa_knkk1 TYPE y_knkk1.
DATA : it_t001s TYPE STANDARD TABLE OF y_t001s,
wa_t001s TYPE y_t001s.
*DATA STATEMENTS FOR EMAIL ADDRESSES
DATA : it_adrt TYPE TABLE OF y_adrt,
wa_adrt TYPE y_adrt,
wa_email LIKE t_email.
*DATA : it_adr6 TYPE TABLE OF y_adr6,
wa_adr6 TYPE y_adr6,
DATA : counter TYPE i,
counter1 TYPE i,
c5 LIKE spell.
SELECTION-SCREEN BEGIN OF BLOCK clcn WITH FRAME TITLE text-200.
SELECTION-SCREEN SKIP.
PARAMETERS: p_bukrs LIKE t001-bukrs OBLIGATORY, "COMPANY CODE
p_kkber LIKE t001-kkber OBLIGATORY. "CREDIT CONTROL AREA
SELECT-OPTIONS: s_kunnr FOR knb1-kunnr OBLIGATORY, "CUSTOMER NUMBER
s_datum FOR sy-datum OBLIGATORY DEFAULT sy-datum. "DATE OF CREDIT LIMIT UPDATE
SELECTION-SCREEN SKIP.
PARAMETERS : p_simul AS CHECKBOX DEFAULT 'X'. "RUN IN SIMULATION MODE
SELECTION-SCREEN SKIP.
PARAMETERS : p_lemail LIKE adr6-smtp_addr. " EMAIL
SELECTION-SCREEN END OF BLOCK clcn.
AT SELECTION-SCREEN.
PERFORM f0100_validate_bukrs. "* For Company Code.
PERFORM f0200_validate_kkber. "* For Credit Control Area.
PERFORM f0300_validate_kunnr. "* For Customer Number
PERFORM f0400_validate_datum. "* For Date of Credit Limit Update
PERFORM f0500_validate_simul. "* For simulation mode and e-mail address
*======================================================================
START-OF-SELECTION.
PERFORM f1000_get_customer. "** COLLECT INFO FOR REPORT DISPLAY
IF p_simul is initial AND NOT P_lemail IS INITIAL.
PERFORM F1000_CHECK_GATEWAY_CONNECTION.
ENDIF.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL.
PERFORM f3000_process_data_script USING t_report_display.
ENDIF.
END-OF-SELECTION.
IF NOT p_simul IS INITIAL.
PERFORM f2000_display_customer USING t_report_display.
ENDIF.
FORM f0100_validate_bukrs.
DATA : w_bukrs TYPE bukrs.
VALIDATION OF P_BUKRS
SELECT SINGLE bukrs
FROM t001
INTO w_bukrs
WHERE bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'Invalid Company Code' p_bukrs. "(E01).
*AUTHORIZATION CHECK
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs
ID 'ACTVT' FIELD '03'.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'No Authorization for company code' p_bukrs."(e06).
ENDIF.
ENDIF.
ENDFORM. " F0100_VALIDATE_BUKRS
*Eject
*& Form F0200_VALIDATE_KKBER
*-> CREDIT CONTROL AREA AUTHORITY CHECK
FOR CREDIT CONTROL AREA.
FORM f0200_validate_kkber.
DATA : w_kkber LIKE t001-kkber.
SELECT SINGLE kkber
FROM t001
INTO w_kkber
WHERE bukrs EQ p_bukrs
AND kkber EQ p_kkber.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH
'Credit Control Area' p_kkber 'not defined for Company Code' p_bukrs."(e02).
MESSAGE e999 WITH text-e02 p_kkber .
ENDIF.
ENDFORM. "F0200_VALIDATE_KKBER
*& Form F0300_VALIDATE_KUNNR
*-> CUSTOMER NUMBER AUTHORITY CHECK
FORM f0300_validate_kunnr.
VALIDATION OF S_KUNNR
DATA : w_kunnr TYPE kunnr,
w_bukrs TYPE bukrs.
IF s_kunnr IS INITIAL .
MESSAGE e999 WITH 'Enter Customer Number'(e04).
SUBMIT (sy-cprog) VIA SELECTION-SCREEN.
ENDIF.
LOOP AT s_kunnr.
CLEAR : w_kunnr,
w_bukrs.
IF NOT s_kunnr-low IS INITIAL.
SELECT SINGLE kunnr bukrs
FROM knb1 INTO (w_kunnr ,w_bukrs)
WHERE kunnr EQ s_kunnr-low
AND bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'Customer S_KUNNR-LOW not defined in company code' p_bukrs."(e03).
ENDIF.
ENDIF. "if not s_kunnr-low is initial.
IF NOT s_kunnr-high IS INITIAL.
CLEAR : w_kunnr,
w_bukrs.
SELECT SINGLE kunnr bukrs
FROM knb1 INTO (w_kunnr , w_bukrs)
WHERE kunnr EQ s_kunnr-high
AND bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e999(zf) WITH 'Customer S_KUNNR-HIGH not defined in company code' p_bukrs."(e03).
ENDIF.
ENDIF. "if not s_kunnr-high is initial.
ENDLOOP. " loop at s_kunnr
ENDFORM. " F0200_VALIDATE_KUNNR
*& Form F0400_VALIDATE_DATUM
*-> DATE OF CREDIT LIMIT UPDATE
FORM f0400_validate_datum.
IF s_kunnr IS INITIAL AND s_datum IS INITIAL.
MESSAGE e999 WITH 'Enter either Date of CL update or Customer number.'(e04).
ENDIF.
ENDFORM. "F0400_VALIDATE_DATUM
*& Form F1000_GET_CUSTOMER
text
--> p1 text
<-- p2 text
FORM f1000_get_customer .
DATA : w_kunnr LIKE knkk-kunnr,
w_kkber LIKE knkk-kkber.
IF s_datum IS NOT INITIAL.
SELECT objectid
FROM cdhdr
INTO TABLE t_cust
WHERE objectclas IN ('KLIM','DTREV','NXTRV')
AND change_ind IN ('U','I')
AND udate IN s_datum.
WHERE ( objectclas EQ 'KLIM' OR objectclas EQ 'DTREV' OR objectclas EQ 'NXTRV')
AND ( change_ind EQ 'U' OR change_ind EQ 'I')
AND udate IN s_datum .
ENDIF.
IF sy-subrc NE 0.
MESSAGE s999 WITH 'There is no data for selected period'(e07).
ELSE.
MOVE t_cust TO t_customer.
ENDIF.
SORT t_customer BY kunnr.
IF NOT t_customer[] IS INITIAL.
SELECT kunnr
kkber
dtrev
nxtrv
klimk
dbwae
FROM knkk
INTO TABLE t_knkk
FOR ALL ENTRIES IN t_customer
WHERE kunnr = t_customer-kunnr
AND kkber = p_kkber.
ELSE.
MESSAGE e999 WITH text-e07.
ENDIF.
IF sy-subrc NE 0.
ENDIF.
SORT t_knkk BY kunnr kkber.
IF NOT t_knkk[] IS INITIAL.
SELECT kunnr
name1
FROM kna1
INTO TABLE t_custo
FOR ALL ENTRIES IN t_knkk
WHERE kunnr = t_knkk-kunnr.
ENDIF.
IF sy-subrc = 0.
ENDIF.
SORT t_custo BY kunnr kkber.
LOOP AT t_custo INTO w_custo.
CLEAR w_knkk.
READ TABLE t_knkk INTO w_knkk WITH KEY kunnr = w_custo-kunnr
BINARY SEARCH.
IF sy-subrc = 0.
w_report_display-kunnr = w_custo-kunnr.
w_report_display-name = w_custo-name.
w_report_display-dtrev = w_knkk-dtrev.
w_report_display-nxtrv = w_knkk-nxtrv.
w_report_display-klimk = w_knkk-klimk.
w_report_display-dbwae = w_knkk-dbwae.
APPEND w_report_display TO t_report_display .
ENDIF.
ENDLOOP.
ENDFORM. " F1000_GET_CUSTOMER
*& Form F2000_DISPLAY_CUSTOMER
text
-->P_T_REPORT_DISPLAY text
FORM f2000_display_customer USING p_t_report_display.
DATA: no TYPE n VALUE 1.
DATA: t_data TYPE STANDARD TABLE OF y_report_display.
t_data = p_t_report_display.
DATA : w_data LIKE LINE OF t_data .
ULINE (118).
WRITE:/ sy-vline,
8 'CREDIT LIMIT CHANGE NOTIFICATION REPORT ON',
sy-datum , 118 sy-vline.
ULINE (118).
WRITE:/ sy-vline,'NO'(008) ,
10 sy-vline, 11 'CUSTOMER NUMBER',
28 sy-vline, 29 'CUSTOMER NAME', 43 sy-vline,
44 'CREDIT LIMIT VALID', 63 sy-vline ,
64 'CREDIT LIMIT AMOUNT', 85 sy-vline, 86 'CURRENCY',
95 sy-vline , 96 'Notification Status',118 sy-vline.
ULINE (118).
WRITE:/ sy-vline,43 sy-vline, 44 'FROM', 53 sy-vline,
56 'TILL', 63 sy-vline, 118 sy-vline .
ULINE (118).
LOOP AT t_data INTO w_data.
WRITE:/ sy-vline, no,
10 sy-vline, 11 w_data-kunnr ,
28 sy-vline, 29 w_data-name, 43 sy-vline, 44 w_data-dtrev,
53 sy-vline, 56 w_data-nxtrv ,63 sy-vline ,64 w_data-klimk,
85 sy-vline, 86 w_data-dbwae,
95 sy-vline , 118 sy-vline.
no = no + 1.
ULINE (118).
ENDLOOP.
ENDFORM. " F2000_DISPLAY_CUSTOMER
*& Form F3000_PROCESS_DATA_SCRIPT
text
-->P_T_REPORT_DISPLAY text
FORM f3000_process_data_script USING p_t_report_display.
DATA: t_data TYPE STANDARD TABLE OF y_report_display.
t_data = p_t_report_display.
DATA : w_data LIKE LINE OF t_data .
DATA: temp_is_negative(1) TYPE c,
temp_text(20) TYPE c,
temp_sname LIKE t001s-sname,
temp_email LIKE adr6-smtp_addr.
DATA : number LIKE spell,
amount(255) TYPE c.
PERFORM f3100_initialize_settings.
LOOP AT t_data INTO w_data.
AT NEW kunnr.
CLEAR w_error_found.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL.
PERFORM f3300_open_form.
data: wa_t001 like line of t001
DATA : begin of wa_t001,
adrnr like t001-adrnr,
end of wa_t001.
SELECT SINGLE
adrnr FROM t001 INTO wa_t001
WHERE bukrs = p_bukrs.
DATA: BEGIN OF wa_adrc,
addrnumber LIKE adrc-addrnumber,
name1 LIKE adrc-name1,
post_code1 LIKE adrc-post_code1,
city1 LIKE adrc-city1,
street LIKE adrc-street,
house_num1 LIKE adrc-house_num1,
tel_number LIKE adrc-tel_number,
nation LIKE adrc-nation ,
fax_number LIKE adrc-fax_number,
country LIKE adrc-country,
END OF wa_adrc.
SELECT SINGLE
addrnumber
name1
post_code1
city1
street
house_num1
tel_number
nation
fax_number
country
FROM adrc
INTO corresponding fields of wa_adrc
WHERE addrnumber EQ wa_t001-adrnr AND
nation EQ ' '.
PERFORM f3700_write_form.
DATA: wa_kna1 LIKE LINE OF t_kna1,
wa_adrcc LIKE LINE OF it_adrc.
SELECT SINGLE
kunnr
adrnr FROM kna1
INTO wa_kna1
WHERE kunnr = w_data-kunnr.
IF sy-subrc EQ 0.
SELECT SINGLE
addrnumber
name1
FROM adrc
INTO wa_adrcc
WHERE addrnumber = wa_kna1-adrnr
AND nation = ' '.
ENDIF.
PERFORM f3701_write_form.
DATA : wa_knkk LIKE LINE OF t_knkk.
DATA : counter TYPE i,
counter1 TYPE i.
IF sy-subrc EQ 0.
SELECT SINGLE KUNNR
DTREV
NXTRV
KLIMK FROM KNKK INTO WA_KNKK WHERE
KUNNR EQ W_DATA-KUNNR.
ENDIF.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = w_knkk-klimk
CURRENCY = ' '
FILLER = ' '
language = sy-langu
IMPORTING
in_words = number.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
amount = number-word.
PERFORM f3702_write_form.
DATA: wa_knb1 LIKE LINE OF t_knb1.
IF sy-subrc EQ 0.
SELECT SINGLE
busab
FROM knb1
INTO wa_knb1
WHERE kunnr = w_data-kunnr
AND bukrs = p_bukrs.
ENDIF.
DATA : wa_t001s LIKE LINE OF it_t001s.
IF sy-subrc EQ 0.
SELECT SINGLE bukrs
busab
sname
FROM t001s
INTO wa_t001s
WHERE bukrs = wa_knb1-bukrs
AND busab = wa_knb1-busab.
ENDIF.
PERFORM f3703_write_form.
PERFORM f3704_write_form.
IF counter1 < counter.
PERFORM f3705_write_form.
ENDIF.
PERFORM f3706_close_form.
ENDIF.
ENDAT.
IF w_error_found EQ c_true.
ENDIF.
AT END OF kunnr.
PERFORM F3400_WRITE_FORM USING C_TOTAL C_MAIN_WINDOW.
PERFORM F3500_CLOSE_FORM.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL. "Email setting
PERFORM f3200_get_email_addr USING w_data-kunnr.
PERFORM f3600_send_data_via_email USING w_data-kunnr.
ENDIF.
ENDAT.
ENDLOOP.
WRITE:/ ' E-Mail is sent to the customer'.
ENDFORM. " F3000_PROCESS_DATA_SCRIPT
*& Form F3100_INITIALIZE_SETTINGS
text
--> p1 text
<-- p2 text
FORM f3100_initialize_settings .
SELECT SINGLE spld
INTO itcpo-tddest
FROM usr01
WHERE bname EQ sy-uname.
IF sy-subrc NE 0.
itcpo-tddest = 'LOCAL'.
ENDIF.
w_htddevice = c_printer.
itcpo-tddest = ''.
itcpo-tdrdidev = ''.
itcpo-tdsenddate = sy-datum.
itcpo-tdsendtime = sy-uzeit.
itcpo-tdschedule = 'IMM'.
itcpo-tdimmed = ' '.
itcpo-tdnewid = c_true. "PRINT: New spool request
itcpo-tdlifetime = c_1. "PRINT: Spool retention period
itcpo-tdgetotf = c_true.
IF p_simul IS INITIAL AND NOT p_lemail IS INITIAL. "Email setting
itcpo-tdgetotf = c_true.
ENDIF.
ENDFORM. " F3100_INITIALIZE_SETTINGS
*& Form f0500_validate_simul
text
--> p1 text
<-- p2 text
FORM f0500_validate_simul .
IF p_simul IS INITIAL AND p_lemail IS INITIAL. "Email setting
MESSAGE e999(zf) WITH 'Enter Email address'. "(e05).
ENDIF.
ENDFORM. " f0500_validate_simul
*& Form F3600_SEND_DATA_VIA_EMAIL
text
-->P_W_DATA_KUNNR text
FORM f3600_send_data_via_email USING p_w_data_kunnr.
DATA: fle1(2) TYPE p,
fle2(2) TYPE p,
off1 TYPE p,
hltlines TYPE i,
temp_filesize TYPE i,
hfeld(500) TYPE c,
header(50) TYPE c,
htabix LIKE sy-tabix,
x_sent_to_all LIKE sonv-flag.
DATA: BEGIN OF x_objcont OCCURS 0.
INCLUDE STRUCTURE soli.
INCLUDE STRUCTURE SOLISTI1.
DATA: END OF x_objcont.
DATA: BEGIN OF x_object_hd_change.
INCLUDE STRUCTURE sood1.
DATA: END OF x_object_hd_change.
DATA: BEGIN OF x_receivers OCCURS 0.
INCLUDE STRUCTURE soos1.
INCLUDE STRUCTURE SOMLRECI1.
DATA: END OF x_receivers.
DATA: BEGIN OF x_objhead OCCURS 1.
INCLUDE STRUCTURE soli.
DATA: END OF x_objhead.
**Data: begin of objpack occurs 0.
include structure SOPCKLSTI1.
**Data: end of objpack.
**Data: begin of email_data occurs 0.
include structure SODOCCHGI1.
**Data: end of email_data.
Converts the layout set to PDF format
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = c_pdf_format
IMPORTING
bin_filesize = temp_filesize
TABLES
otf = t_otfdata
lines = t_htline
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc NE 0.
w_error_found = c_true.
t_error-kunnr = p_w_data_kunnr.
t_error-comm = 'Error in conversion to PDF format.'(e08).
APPEND t_error.
CLEAR t_error.
EXIT.
ENDIF.
Convert the PDF file into an internal table which to be used in the
function that will send a PDF file to a email address
DESCRIBE TABLE t_htline LINES hltlines.
DESCRIBE FIELD T_HTLINE LENGTH FLE1 IN BYTE MODE.
DESCRIBE FIELD t_htline LENGTH fle1
IN CHARACTER MODE.
DESCRIBE FIELD X_OBJCONT LENGTH FLE2 IN BYTE MODE.
DESCRIBE FIELD x_objcont LENGTH fle2
IN CHARACTER MODE.
CLEAR x_objcont.
REFRESH x_objcont.
LOOP AT t_htline.
htabix = sy-tabix.
MOVE t_htline TO hfeld+off1.
IF htabix = hltlines.
fle1 = STRLEN( t_htline ).
ENDIF.
off1 = off1 + fle1.
IF off1 GE fle2.
CLEAR x_objcont.
x_objcont = hfeld(fle2).
APPEND x_objcont.
SHIFT hfeld BY fle2 PLACES.
off1 = off1 - fle2.
ENDIF.
IF htabix = hltlines.
IF off1 GT 0.
CLEAR x_objcont.
x_objcont = hfeld(off1).
APPEND x_objcont.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT t_email.
x_receivers-receiver = t_email-smtp_addr.
x_receivers-rec_type = c_u.
APPEND x_receivers.
ENDLOOP.
x_receivers-receiver = p_lemail.
x_receivers-rec_type = c_u.
APPEND x_receivers.
DESCRIBE TABLE x_objcont LINES sy-tfill.
READ TABLE x_objcont INDEX sy-tfill.
email_data-doc_size = ( sy-tfill - 1 ) * 255 + STRLEN( x_objcont ).
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = sy-tfill.
objpack-doc_type = 'RAW'.
APPEND objpack.
email_data-obj_descr = 'Notification'.
APPEND email_data.
IF x_receivers[] IS NOT INITIAL.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = email_data
put_in_outbox = 'X'
commit_work = 'X' "used from rel. 6.10
TABLES
packing_list = objpack
object_header = email_fname
contents_bin = email_text
contents_txt = x_objcont
receivers = x_receivers.
endif.
CLEAR x_objhead.
REFRESH x_objhead.
CLEAR x_object_hd_change.
x_object_hd_change-objnam = 'EMAIL'(t04).
header = 'Procter & Gamble'(t05).
x_object_hd_change-objdes = header. "Title
x_object_hd_change-objla = c_english. "Language
x_object_hd_change-objsns = c_f.
x_object_hd_change-objlen = temp_filesize.
x_object_hd_change-file_ext = c_pdf_format.
Transfer the email address to an internal table which will be used
in the function that will send a PDF file to a email address
CLEAR x_receivers.
REFRESH x_receivers.
LOOP AT t_email.
x_receivers-sndex = c_true.
x_receivers-sndpri = c_1.
x_receivers-recesc = c_u.
x_receivers-recnam = c_recipient_name.
Populate the email address of the customer
x_receivers-recextnam = t_email-smtp_addr.
x_receivers-recesc = c_english.
x_receivers-sndart = c_int.
APPEND x_receivers.
ENDLOOP.
x_receivers-sndex = c_true.
x_receivers-sndpri = c_1.
x_receivers-recesc = c_u.
x_receivers-recnam = c_recipient_name.
Populate the Local mail address
x_receivers-recextnam = p_lemail.
x_receivers-recesc = c_english.
x_receivers-sndart = c_int.
APPEND x_receivers.
Calling a SAP function to send out email with attachment of PDF file
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
object_hd_change = x_object_hd_change
object_type = c_document_type
outbox_flag = c_true
IMPORTING
sent_to_all = x_sent_to_all
TABLES
objcont = x_objcont
objhead = x_objhead
receivers = x_receivers
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
folder_not_exist = 4
folder_no_authorization = 5
forwarder_not_exist = 6
note_not_exist = 7
object_not_exist = 8
object_not_sent = 9
object_no_authorization = 10
object_type_not_exist = 11
operation_no_authorization = 12
owner_not_exist = 13
parameter_error = 14
substitute_not_active = 15
substitute_not_defined = 16
system_failure = 17
too_much_receivers = 18
user_not_exist = 19
x_error = 20
OTHERS = 21.
IF sy-subrc NE 0.
w_error_found = c_true.
t_error-kunnr = p_w_data_kunnr.
t_error-comm = 'Error in sending email.'(e09).
APPEND t_error.
CLEAR t_error.
ELSEIF sy-subrc EQ 0.
COMMIT WORK.
*Transmit Mail
SUBMIT rsconn01 WITH mode = c_int
WITH output = c_space
AND RETURN.
ENDIF.
ENDFORM. " F3600_SEND_DATA_VIA_EMAIL
*& Form F3200_GET_EMAIL_ADDR
text
-->P_T_REPORT_DISPLAY text
FORM f3200_get_email_addr USING p_w_data_kunnr.
REFRESH t_customer.
REFRESH t_adrt.
REFRESH t_email.
DATA: t_data TYPE STANDARD TABLE OF y_report_display.
t_data = p_t_report_display.
DATA : w_data LIKE LINE OF t_data .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
also try this one for background scheduling the same
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> -
Re: How to open Word Doc in e-mail attachment
I use iworks '09. I received an e-mail with a MS Word attachment that I was unable to open-stated "this document was created with an unsupported version of Word. Must I buy MS Office for Mac. Or will NeoOffice or Open Office open the file?
I ditched MS Office over two years ago for NeoOffice and it has been able to open every word doc's or pps that have come my way.
Dennis -
Office 2013 - Unable to open word template
Hi,
I have windows service written in VC++ and trying to open a word template xxx.dotx located on the server. however, I am geting below error code while opening the same template. I have written a sample application and it is opening the template.
my windows service is 32 bit and I have installed office 2013 64bit and OS win 7 64bit.
<hr=-2147467259>
working code
#import "MSO.DLL" rename_namespace("MSOFFICE") rename("RGB", "ofRGB") rename("DocumentProperties", "ofDocumentProperties")
#import "VBE6EXT.OLB" rename_namespace("MSVBEXT") rename("Application", "ApplicationVBExt") raw_interfaces_only
#import "msword.olb" rename_namespace("MSWORD") rename("DialogBox", "DialogBoxWRD") rename("RGB", "RGBWRD") rename("DocumentProperties", "DocumentPropertiesWRD") rename("ExitWindows", "ExitWindowsWRD") named_guidsvoid CWordTestDlg::OnButton1()
// TODO: Add your control notification handler code here
MSWORD::_ApplicationPtr m_pWordApp;
HRESULT hr = m_pWordApp.CreateInstance("Word.Application");
if(FAILED(hr))
AfxMessageBox("Unable to start MS Word.", hr);
return;
AfxMessageBox("Successfully Created");
m_pWordApp->DisplayAlerts = MSWORD::wdAlertsNone;
// Make sure the application is not visible.
m_pWordApp->Visible = VARIANT_FALSE;
MSWORD::_DocumentPtr m_pWordDoc = NULL;;
MSWORD::DocumentsPtr pDocs = m_pWordApp->Documents;
if(pDocs == NULL)
AfxMessageBox("Unable to retrieve the documents collection from MS Word.", pDocs);
return;
// Open the template.
CComVariant varTemplateName(_T("\\\\xxx.xxx.xxx.xxx\\kx.dotx"));
m_pWordDoc = pDocs->Open(&varTemplateName);
if(m_pWordDoc == NULL)
CString msg;
msg.Format("Unable to open %s.", _T("\\\\xxx.xxx.xxx.xxx\\kx.dotx"));
AfxMessageBox(msg);
return;
AfxMessageBox("Successfully Opened");
m_pWordApp.Detach();
// Reset the MSWord Document ptr.
m_pWordDoc.Detach();
thanks,
KrishnaHi,
Interop is not supported on a Server or with in a services.
But if you want to this, you have to set up the Environment. I follow this Guideline with my Word and I'm able to start Word on a Server.
1) Goto Control panel -> Administrative Tools -> Component Services
2) Expand Tree by clicking on Component Services -> Computers -> My Computer -> DCOM Config
3) Search CLSId 00020906-0000-0000-C000-000000000046 (which is for Word 97-2003 application)
4) By selecting 00020906-0000-0000-C000-000000000046 this CLSId now right click on Properties
5) In the Propeties area, click on Security TAB
6) Select Customize option from all (Launch and Activations Permissions, Access Pemissions, Configuration Permissions)
7) Take the User of the Services and Allow all permissions for this user
8) Go to Identity TAB in the same properties area, select option as a This user and then add username (the user must be administrator of this machine) and password. Click on Apply, Ok
Locale Profile: True
9) Refresh Component Services and check your application is working fine or not.
10) set Folder, if not present:
C:\Windows\SysWOW64\config\systemprofile\Desktop
This article gives some insights.
http://theether.net/download/Microsoft/kb/288367.html
Hope this helps.
Kind Regards
Thomas -
Unable to open attachments in Exchange Calendar
Is there an issue with opening an attachment within the exchange calendar e.g. someone sends an appointment with an attachment and users are unable to open the attachment.
'''Try the Firefox Safe Mode''' to see how it works there. The Safe Mode is a troubleshooting mode, which disables most add-ons.''
''(If you're not using it, switch to the Default theme.)''
* You can open the Firefox 4.0+ Safe Mode by holding the '''Shift''' key when you use the Firefox desktop or Start menu shortcut.
* Or use the Help menu item and click on the '''Restart with Add-ons Disabled...''' menu item while Firefox is running.
''Don't select anything right now, just use "'Start in Safe Mode"''
''To exit the Firefox Safe Mode, just close Firefox and wait a few seconds before using the Firefox shortcut (without the Shift key) to open it again.''
'''''If it is good in the Firefox Safe Mode''''', your problem is probably caused by an extension, and you need to figure out which one.
Please follow the [[Troubleshooting extensions and themes]] article for that.
''When you figure out what's causing your issues, please let us know. It might help other users who have the same problem.'' -
Retrieve mail pdf attachment in xstrinf or otf format.
Hi,
as in the Subjesct I must retrieve from mail the attachments that are in pdf format and convert then in xstring or otf format, then archive the documents in DMS server.
It's possible?
Thanks for answers.Hi,
In SAP we execute function SX_OBJECT_CONVERT_OTF_PDF which generates binary context for a PDF document.
Or check the below code
data: l_pdf_xstring type xstring,
lt_lines type table of tline,
ls_line type tline,
l_pdf_len type i,
itab type TSFOTF,
witab type ITCOO,
tmp_line type STRING,
tmp_header type STRING.
tmp_header = 'BSP to PDF'.
tmp_line = file_content.
CONCATENATE
tmp_header
tmp_line
INTO tmp_line IN CHARACTER MODE.
APPEND tmp_line TO itab.
call function 'CONVERT_OTF'
exporting
format = 'PDF'
importing
bin_filesize = l_pdf_len
bin_file = l_pdf_xstring
tables
otf = itab
lines = lt_lines
exceptions
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
others = 5
if sy-subrc EQ 0.
response->set_header_field( name = 'content-type'
value = 'application/pdf' ).
response->set_header_field(
name = 'cache-control'
value = 'max-age=0' ).
response->set_header_field(
name = 'content-disposition'
value = 'attachment; filename=test.pdf' ).
l_pdf_len = xstrlen( l_pdf_xstring ).
response->set_data( data = l_pdf_xstring
length = l_pdf_len ).
navigation->response_complete( ).
ENDIF.
Edited by: Raj on Jul 26, 2010 2:02 PM -
Attached PDF file in mail through PL/SQL, unable to open
Hi All,
Database : Oracle Database 10g Release 10.2.0.1.0 - Production
I have database procedure which attach a pdf in mail and send to specified user.
Its working fine, but my problem here, if inside the PDF file have any logo or images, user unable to open the attachment file.
It give error "It was sens as an email attachment and was not correctly decoded".
For Encoding I have used : utl_encode.base64_encode
If normal PDF file they can open.(I mean without any locg or images).
Please give me your solution for handle this situation.
Thanks in advance.Sun wrote:
Thanks for your advice,
Please let me know, how can i do this. plz..What do you not understand in my suggestion?
Use your own mail reader. Create an e-mail. Attach the PDF. Send the e-mail to your address.
In your inbox, the mail will arrive.
Now select the "+view raw format+" option of your mail reader (most mail readers have this, including MS Outlook).
Look at the contents of the mail body. This will show you how the attachment was inserted into the mail itself. Look at the Mime types. Look at the mail header. This is a working example of what your code needs to create as an e-mail body in PL/SQL (or any other language).
This is not rocket science.... -
Unable to send mp3 with mail attachment. Zip the file doesn't work same
Tried to send an mp3 file several times and kept getting this message. The file was only 11 mg.
Unable to send with mail attachment.
Your message couldn't be sent because a server error occurred. To send this message,please delete the current attachment,then re-attach.
iMac, Mac OS X (10.7.2)
Toad replyed try zip file (compress) I did and still got the same messageMany mail servers cap their message sending or receiving at 4MB. If you are sending your own work that you want distributed by someone else, check with your internet provider if they can temporarily raise that restriction and the recipient's mail server can temporarily raise those restrictions. Better would be for both of you to be able to access a webhosting site to share the material and use some FTP programs to send the file to each other. If it is an MPEG-3 of a commercial CD's music, we can't help you as such distribution is illegal.
-
Sending a smartform output as an attachment in RTF format via E-mail
Hi all,
I have a scenario in which the output displayed using smartforms is to be sent as a e-mail attachment. Also, the attachment should be a word doc(RTF format). Can you please me with this.
Warm Regards,
AbhijeetHI,
See the call to function 'LF_FM_NAME' in standard print program <b>RLB_INVOICE</b>. Notice the preceding call to function WFMC_PREPARE_SMART_FORM? This function does the heavy lifting for you; here, no additional work is needed in either the form or the print program. To generate e-mail output.
See the below link
/people/pavan.bayyapu/blog/2005/08/30/sending-html-email-from-sap-crmerp
Thanks
Sudheer
Maybe you are looking for
-
I am looking at creating some very complex reports. I'm concerned about their supportability. How do folks out there create documentation to support the word templates they create?
-
Div looses formatting when made editable in a template
I am creating a template and as I work my way down the page when I select the fifth div to make editable the whole page transforms and this div area changes to no css formating. Is there anything I should notice different about this div...it works fi
-
EXP-00000: Export terminated unsuccessfully
When Im perform export it terminated unsuccessfully with bellow message,please clarify why is this EXP-00008: ORACLE error 1555 encountered ORA-01555: snapshot too old: rollback segment number 3 with name "_SYSSMU3$" too small EXP-00000: Export termi
-
How can i stop iPhone from skipping songs?
Hi all, I have a iPhone 4 and on some albums when i go to play the song it justs skips to the next song. But, if im quick and can drag the slider so it skips to like 3 seconds in, it will then play the song! It will also play the song if i leave the
-
i can not wait forever so will leave. [email protected] if anyone has suggestions on this problem. Thank you, Joseph