‎2007 Dec 19 4:00 AM
Hi,
I have scheduled a background job and in the spool-receipient field i gave a E-mail address.
The job got completed but no mail came to my mail-box.
Please help.
Warm Regards,
Will.
‎2007 Dec 19 4:31 AM
Hi,
In the background are yu getting any spool?
Try this sample program
report zars no standard page heading
line-size 170
line-count 65(4).
start-of-selection.
write : 'Testing'.
a®
‎2007 Dec 19 4:06 AM
Hi,
Check the transaction SCOT..The Email might be waiting to be send..
Use the program rsconn01 to send out the emails..
Execute the program rsconn01...Then give INT in the selection screen for the mode parameter
Thanks
Naren
‎2007 Dec 19 4:09 AM
hi,
I could not really analyze where you could have gone wrong.I have attached a code which will work where i have attached excel to send mail ..
pls check in debugger....
----
Tables
----
TABLES: mara,marc,mard,mkpf,mseg,likp,t156ht,kna1,lfa1, vbfa, lips.
----
Structures and Internal tables
----
DATA: BEGIN OF itab OCCURS 0,
lgort LIKE mseg-lgort, " St Location
name1 LIKE kna1-name1, " Ship to Name
ebeln LIKE mseg-ebeln, " PO Num
bktxt LIKE mkpf-bktxt, " Delivery Header
ort01 LIKE kna1-ort01, " Ship to City
budat LIKE mkpf-budat, " Posting date
bwart LIKE mseg-bwart, " Movement Type
btext LIKE t156ht-btext, " Movement Type Text
mblnr LIKE mkpf-mblnr, " Mat Doc Number
xblnr LIKE mkpf-xblnr, " Dlvy No
matnr LIKE mseg-matnr, " Material No
maktx LIKE makt-maktx, " Mat Desc
menge LIKE mseg-menge, " Qty
dmbtr LIKE mseg-dmbtr, " Amount in local currency
*dmbtr(15) type c,
kunnr LIKE mseg-kunnr, " Customer NO
lifnr LIKE mseg-lifnr, " Vendor No
kdauf LIKE mseg-kdauf, "Sales order
mat_kdauf LIKE mseg-mat_kdauf, "SAles order for mvt type 653 "0001
meins LIKE mseg-meins,
werks LIKE mseg-werks,
END OF itab.
DATA : BEGIN OF t_fin OCCURS 0,
lgort LIKE mseg-lgort, " St Location
lifnr LIKE mseg-lifnr, " Customer Or Vendor
name1 LIKE kna1-name1, " Ship to Name
ebeln LIKE mseg-ebeln, " PO Num "0001
ebeln LIKE vbak-bstnk, " PO num "0001
bktxt LIKE mkpf-bktxt, " Delivery Header
ort01 LIKE kna1-ort01, " Ship to City
budat LIKE mkpf-budat, " Posting date
bwart LIKE mseg-bwart, " Movement Type
btext LIKE t156ht-btext," Movement Type Text
mblnr LIKE mkpf-mblnr, " Mat Doc Number
xblnr LIKE mkpf-xblnr, " Dlvy No
matnr LIKE mseg-matnr, " Material No
maktx LIKE makt-maktx, " Mat Desc
menge(13) TYPE C, " Qty
dmbtr(13) TYPE C, " Amount in local currency
END OF t_fin.
*
DATA : T_FIN TYPE STANDARD TABLE OF IT_FIN INITIAL SIZE 0 WITH HEADER LINE,
WA_FIN TYPE IT_FIN.
**********
TYPES : BEGIN OF T_CHARTABLES,
LGORT(4) TYPE C,
LIFNR(10) TYPE C,
NAME1(35) TYPE C,
EBELN(20) TYPE C,
BKTXT(25) TYPE C,
ort01(35) TYPE C,
BUDAT(8) TYPE C,
BWART(3) TYPE C,
BTEXT(20) TYPE C,
MBLNR(10) TYPE C,
XBLNR(16) TYPE C,
MATNR(18) TYPE C,
MAKTX(40) TYPE C,
MENGE(13) TYPE C,
DMBTR(13) TYPE C,
END OF T_CHARTABLES.
DATA : WA_CHARTABLES TYPE T_CHARTABLES.
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.
************
----
Selection-screen
----
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_werks FOR marc-werks OBLIGATORY,
s_lgort FOR mard-lgort DEFAULT '0010',
s_matnr FOR mara-matnr,
s_matkl FOR mara-matkl,
s_budat FOR mkpf-budat,
s_bwart FOR mseg-bwart.
SELECTION-SCREEN END OF BLOCK blk1.
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT 'mailme.kar@gmail.com'.
AT SELECTION-SCREEN.
PERFORM 50_check_authority.
PERFORM 75_EMAIL_VALIDITY.
----
START-OF-SELECTION.
----
START-OF-SELECTION.
PERFORM 100_collect_dbrecs.
PERFORM 200_process_dbrecs.
PERFORM 300_xls_data_table.
----
END-OF-SELECTION.
----
END-OF-SELECTION.
perform 400_populate_email_mess_body.
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
'GOODS'
' '
' '
changing gd_error
gd_reciever.
PERFORM initiate_mail_execute_program.
&----
*& Form 50_check_authority
&----
form 50_check_authority .
TABLES: t001w.
SELECT werks
FROM t001w
INTO t001w-werks
WHERE werks IN s_werks.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD t001w-werks.
IF sy-subrc <> 0.
MESSAGE e000 WITH text-a00.
ENDIF.
ENDSELECT.
AUTHORITY-CHECK OBJECT 'M_MATE_BUK'
ID 'WERKS' FIELD s_bukrs.
endform. " 50_check_authority
&----
*& Form 100_collect_dbrecs
&----
form 100_collect_dbrecs .
TYPES : BEGIN OF stype_fields,
fieldname TYPE name_feld,
END OF stype_fields.
TYPES : stab_fields TYPE STANDARD TABLE
OF stype_fields
WITH DEFAULT KEY.
DATA : l_t_fields TYPE stab_fields.
create table with the fields to be transported
APPEND 'MSEG~AUFNR' TO l_t_fields.
APPEND 'MKPF~BKTXT' TO l_t_fields.
APPEND 'MKPF~BLDAT' TO l_t_fields.
APPEND 'MSEG~BPMNG' TO l_t_fields.
APPEND 'MSEG~BPRME' TO l_t_fields.
APPEND 'MSEG~BSTME' TO l_t_fields.
APPEND 'MSEG~BSTMG' TO l_t_fields.
APPEND 'MKPF~BUDAT' TO l_t_fields.
APPEND 'MSEG~BWART' TO l_t_fields.
APPEND 'MSEG~EBELN' TO l_t_fields.
APPEND 'MSEG~EBELP' TO l_t_fields.
APPEND 'MSEG~KUNNR' TO l_t_fields.
APPEND 'MSEG~LGORT' TO l_t_fields. " St Location
APPEND 'MSEG~LIFNR' TO l_t_fields. " Vendor Num
APPEND 'MSEG~MATNR' TO l_t_fields. " Mat No
APPEND 'MSEG~KDAUF' TO l_t_fields.
APPEND 'MSEG~MAT_KDAUF' TO l_t_fields. "sales order for mvt type 653 "0001
APPEND 'MKPF~MBLNR' TO l_t_fields.
APPEND 'MSEG~MEINS' TO l_t_fields.
APPEND 'MSEG~MENGE' TO l_t_fields.
APPEND 'MSEG~WERKS' TO l_t_fields.
APPEND 'MKPF~XBLNR' TO l_t_fields.
APPEND 'MKPF~BKTXT' TO l_t_fields.
APPEND 'MSEG~DMBTR' TO l_t_fields.
SELECT (l_t_fields)
INTO CORRESPONDING FIELDS OF TABLE itab
FROM mkpf INNER JOIN mseg
ON mkpfmandt = msegmandt
AND mkpfmblnr = msegmblnr
AND mkpfmjahr = msegmjahr
WHERE mkpf~budat IN s_budat
AND mseg~bwart IN s_bwart
AND mseg~lgort IN s_lgort
AND mseg~matnr IN s_matnr
AND mseg~werks IN s_werks.
endform. " 100_collect_dbrecs
&----
*& Form 200_process_dbrecs
&----
form 200_process_dbrecs .
DATA: l_adrnr TYPE adrc-addrnumber. "0002
LOOP AT itab.
CLEAR: mara-matkl,t_fin.
SELECT SINGLE matkl INTO mara-matkl
FROM mara
WHERE matnr EQ itab-matnr.
IF sy-subrc EQ 0.
IF mara-matkl IN s_matkl.
MOVE: itab-ebeln TO t_fin-ebeln. "0001
IF NOT itab-kunnr IS INITIAL.
*mod 0002
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM kna1
WHERE kunnr EQ itab-kunnr.
*end of 0002
*Begin of mod 0001
SELECT SINGLE kdauf FROM lips
INTO lips-kdauf
WHERE vbeln EQ itab-xblnr.
SELECT SINGLE vbelv FROM vbfa
INTO vbfa-vbelv
WHERE vbeln EQ itab-xblnr
AND vbtyp_n EQ 'J'.
SELECT SINGLE vgbel FROM lips
INTO lips-vgbel
WHERE vbeln EQ itab-xblnr.
IF sy-subrc EQ 0.
SELECT SINGLE bstnk FROM vbak
INTO t_fin-ebeln
WHERE vbeln EQ lips-vgbel.
*begin of 0002
CLEAR: l_adrnr.
SELECT SINGLE adrnr INTO l_adrnr
FROM vbpa
WHERE vbeln EQ vbfa-vbelv
AND parvw EQ 'WE'.
IF sy-subrc EQ 0.
SELECT SINGLE name1 mc_city1
INTO (itab-name1, itab-ort01)
FROM adrc
WHERE addrnumber EQ l_adrnr.
ENDIF.
*end of 0002
ENDIF.
*End of mod 0001
t_fin-lifnr = itab-kunnr.
MOVE: kna1-name1 to itab-name1,
kna1-ort01 to itab-ort01.
ELSEIF NOT itab-lifnr IS INITIAL.
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM lfa1
WHERE lifnr EQ itab-lifnr.
t_fin-lifnr = itab-lifnr.
ELSEIF NOT itab-kdauf IS INITIAL.
SELECT SINGLE kunnr bstnk "0001
INTO (itab-kunnr,t_fin-ebeln) "0001
FROM vbak
WHERE vbeln EQ itab-kdauf.
IF sy-subrc EQ 0. "0001
*Begin 0002
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM kna1
WHERE kunnr EQ itab-kunnr.
CLEAR: l_adrnr.
SELECT SINGLE adrnr INTO l_adrnr
FROM vbpa
WHERE vbeln EQ itab-kdauf
AND parvw EQ 'WE'.
IF sy-subrc EQ 0.
SELECT SINGLE name1 mc_city1
INTO (itab-name1, itab-ort01)
FROM adrc
WHERE addrnumber EQ l_adrnr.
ENDIF.
*end of 0002
t_fin-lifnr = itab-kunnr.
ENDIF. "0001
*Begin of mod 0001
ELSEIF NOT itab-mat_kdauf IS INITIAL AND itab-bwart EQ '653' .
SELECT SINGLE kunnr bstnk
INTO (itab-kunnr,t_fin-ebeln)
FROM vbak
WHERE vbeln EQ itab-mat_kdauf.
IF sy-subrc EQ 0.
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM kna1
WHERE kunnr EQ itab-kunnr.
t_fin-lifnr = itab-kunnr.
ENDIF.
*End of mod 0001
ENDIF.
SELECT SINGLE btext INTO itab-btext
FROM t156ht
WHERE bwart EQ itab-bwart
AND spras EQ sy-langu.
SELECT SINGLE maktx INTO itab-maktx
FROM makt
WHERE matnr EQ itab-matnr
AND spras EQ sy-langu.
MODIFY itab.
MOVE: itab-lgort TO t_fin-lgort,
itab-name1 TO t_fin-name1,
itab-bktxt TO t_fin-bktxt,
itab-ort01 TO t_fin-ort01,
itab-budat TO t_fin-budat,
itab-bwart TO t_fin-bwart,
itab-btext TO t_fin-btext,
itab-mblnr TO t_fin-mblnr,
itab-xblnr TO t_fin-xblnr,
itab-matnr TO t_fin-matnr,
itab-maktx TO t_fin-maktx,
itab-menge TO t_fin-menge,
itab-dmbtr TO t_fin-dmbtr.
APPEND t_fin.
CLEAR t_fin.
ELSE.
DELETE itab.
ENDIF.
ENDIF.
ENDLOOP.
endform. " 200_process_dbrecs
&----
*& Form 75_EMAIL_VALIDITY
&----
form 75_EMAIL_VALIDITY .
CONDENSE P_EMAIL NO-GAPS.
if NOT P_EMAIL <> space OR NOT P_EMAIL CS '@' OR NOT P_EMAIL CA '.'.
message 'Please Enter the Mail-Id in Proper Format' type 'W001'.
endif.
endform. " 75_EMAIL_VALIDITY
&----
*& Form 300_xls_data_table
&----
form 300_xls_data_table .
constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'LGORT' 'LIFNR' 'BWART' 'MATNR' 'MENGE' 'DMBTR' 'NAME1' 'EBELN' 'BKTXT' 'BUDAT' 'MBLNR' 'XBLNR' 'ORT01' 'BTEXT' 'MAKTX'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT t_FIN INTO wa_CHARTABLES.
CONCATENATE wa_charTABLES-LGORT wa_charTABLES-LIFNR WA_CHARTABLES-BWART WA_CHARTABLES-MATNR
WA_CHARTABLES-MENGE WA_CHARTABLES-DMBTR WA_CHARTABLES-NAME1 WA_CHARTABLES-EBELN
WA_CHARTABLES-BKTXT WA_CHARTABLES-BUDAT WA_CHARTABLES-MBLNR WA_CHARTABLES-XBLNR
WA_CHARTABLES-ORT01 WA_CHARTABLES-BTEXT WA_CHARTABLES-MAKTX
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
endform. " 300_xls_data_table
&----
*& Form 400_populate_email_mess_body
&----
form 400_populate_email_mess_body .
REFRESH it_message.
it_message = 'Please find attached a list Goods Movement Report'.
APPEND it_message.
endform. " 400_populate_email_mess_body
&----
*& Form send_file_as_email_attachment
&----
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
Uncomment to send it in foreground
&----
Uncomment to send it in foreground
form initiate_mail_execute_program .
*WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
hope this will be helpful...
regards,
karthik
endform. " initiate_mail_execute_program
‎2007 Dec 19 4:13 AM
hi will smith,
here is the sample program for sending email,
check this out......
TABLES: mara,marc,mard,mkpf,mseg,likp,t156ht,kna1,lfa1, vbfa, lips.
----
Structures and Internal tables
----
TYPE-POOLS: slis.
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: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1.
DATA: fieldcat TYPE slis_t_fieldcat_alv,
fieldcat_ln LIKE LINE OF fieldcat,
layout_in TYPE slis_layout_alv,
sortcat TYPE slis_t_sortinfo_alv,
sortcat_ln LIKE LINE OF sortcat,
eventcat TYPE slis_t_event,
eventcat_ln LIKE LINE OF eventcat,
col_pos TYPE i.
DATA: BEGIN OF itab OCCURS 0,
lgort LIKE mseg-lgort, " St Location
name1 LIKE kna1-name1, " Ship to Name
ebeln LIKE mseg-ebeln, " PO Num
bktxt LIKE mkpf-bktxt, " Delivery Header
ort01 LIKE kna1-ort01, " Ship to City
budat LIKE mkpf-budat, " Posting date
bwart LIKE mseg-bwart, " Movement Type
btext LIKE t156ht-btext, " Movement Type Text
mblnr LIKE mkpf-mblnr, " Mat Doc Number
xblnr LIKE mkpf-xblnr, " Dlvy No
matnr LIKE mseg-matnr, " Material No
maktx LIKE makt-maktx, " Mat Desc
menge LIKE mseg-menge, " Qty
dmbtr LIKE mseg-dmbtr, " Amount in local currency
*dmbtr(15) type c,
kunnr LIKE mseg-kunnr, " Customer NO
lifnr LIKE mseg-lifnr, " Vendor No
kdauf LIKE mseg-kdauf, "Sales order
mat_kdauf LIKE mseg-mat_kdauf, "SAles order for mvt type 653 "0001
meins LIKE mseg-meins,
werks LIKE mseg-werks,
END OF itab.
DATA: BEGIN OF t_fin OCCURS 0,
lgort LIKE mseg-lgort, " St Location
lifnr LIKE mseg-lifnr, " Customer Or Vendor
name1 LIKE kna1-name1, " Ship to Name
ebeln LIKE mseg-ebeln, " PO Num "0001
ebeln LIKE vbak-bstnk, " PO num "0001
bktxt LIKE mkpf-bktxt, " Delivery Header
ort01 LIKE kna1-ort01, " Ship to City
budat LIKE mkpf-budat, " Posting date
bwart LIKE mseg-bwart, " Movement Type
btext LIKE t156ht-btext, " Movement Type Text
mblnr LIKE mkpf-mblnr, " Mat Doc Number
xblnr LIKE mkpf-xblnr, " Dlvy No
matnr LIKE mseg-matnr, " Material No
maktx LIKE makt-maktx, " Mat Desc
menge(13) type c, " Qty
dmbtr(14) type c, " Amount in local currency
END OF t_fin.
DATA : wa_charekpo LIKE T_FIN,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
----
Selection-screen
----
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_werks FOR marc-werks OBLIGATORY,
s_lgort FOR mard-lgort DEFAULT '0010',
s_matnr FOR mara-matnr,
s_matkl FOR mara-matkl,
s_budat FOR mkpf-budat,
s_bwart FOR mseg-bwart.
PARAMETER: p_email LIKE somlreci1-receiver.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN.
IF P_EMAIL NA '@' OR P_EMAIL NA '.'.
MESSAGE 'INVALID E_MAIL' TYPE 'E'.
ENDIF.
PERFORM 50_check_authority.
----
START-OF-SELECTION.
----
START-OF-SELECTION.
PERFORM 100_collect_dbrecs.
PERFORM 200_process_dbrecs.
PERFORM 300_build_xls.
perform 600_POPULATE_EMAIL_MESS.
Send file by email as .xls speadsheet
PERFORM 400_send_file_as_email tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
'good_rec '
' '
' '
changing gd_error
gd_reciever.
perform 600_POPULATE_EMAIL_MESS.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM 500_INITIATE_MAIL_EXEC.
*
&----
*& Form 100_collect_dbrecs
&----
FORM 100_collect_dbrecs .
TYPES : BEGIN OF stype_fields,
fieldname TYPE name_feld,
END OF stype_fields.
TYPES : stab_fields TYPE STANDARD TABLE
OF stype_fields
WITH DEFAULT KEY.
DATA : l_t_fields TYPE stab_fields.
create table with the fields to be transported
APPEND 'MSEG~AUFNR' TO l_t_fields.
APPEND 'MKPF~BKTXT' TO l_t_fields.
APPEND 'MKPF~BLDAT' TO l_t_fields.
APPEND 'MSEG~BPMNG' TO l_t_fields.
APPEND 'MSEG~BPRME' TO l_t_fields.
APPEND 'MSEG~BSTME' TO l_t_fields.
APPEND 'MSEG~BSTMG' TO l_t_fields.
APPEND 'MKPF~BUDAT' TO l_t_fields.
APPEND 'MSEG~BWART' TO l_t_fields.
APPEND 'MSEG~EBELN' TO l_t_fields.
APPEND 'MSEG~EBELP' TO l_t_fields.
APPEND 'MSEG~KUNNR' TO l_t_fields.
APPEND 'MSEG~LGORT' TO l_t_fields. " St Location
APPEND 'MSEG~LIFNR' TO l_t_fields. " Vendor Num
APPEND 'MSEG~MATNR' TO l_t_fields. " Mat No
APPEND 'MSEG~KDAUF' TO l_t_fields.
APPEND 'MSEG~MAT_KDAUF' TO l_t_fields. "sales order for mvt type 653 "0001
APPEND 'MKPF~MBLNR' TO l_t_fields.
APPEND 'MSEG~MEINS' TO l_t_fields.
APPEND 'MSEG~MENGE' TO l_t_fields.
APPEND 'MSEG~WERKS' TO l_t_fields.
APPEND 'MKPF~XBLNR' TO l_t_fields.
APPEND 'MKPF~BKTXT' TO l_t_fields.
APPEND 'MSEG~DMBTR' TO l_t_fields.
SELECT (l_t_fields)
INTO CORRESPONDING FIELDS OF TABLE itab
FROM mkpf INNER JOIN mseg
ON mkpfmandt = msegmandt
AND mkpfmblnr = msegmblnr
AND mkpfmjahr = msegmjahr
WHERE mkpf~budat IN s_budat
AND mseg~bwart IN s_bwart
AND mseg~lgort IN s_lgort
AND mseg~matnr IN s_matnr
AND mseg~werks IN s_werks.
ENDFORM. " 100_collect_dbrecs
&----
*& Form 200_process_dbrecs
&----
FORM 200_process_dbrecs .
DATA: l_adrnr TYPE adrc-addrnumber. "0002
LOOP AT itab.
CLEAR: mara-matkl,t_fin.
SELECT SINGLE matkl INTO mara-matkl
FROM mara
WHERE matnr EQ itab-matnr.
IF sy-subrc EQ 0.
IF mara-matkl IN s_matkl.
MOVE: itab-ebeln TO t_fin-ebeln. "0001
IF NOT itab-kunnr IS INITIAL.
*mod 0002
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM kna1
WHERE kunnr EQ itab-kunnr.
*end of 0002
*Begin of mod 0001
SELECT SINGLE kdauf FROM lips
INTO lips-kdauf
WHERE vbeln EQ itab-xblnr.
SELECT SINGLE vbelv FROM vbfa
INTO vbfa-vbelv
WHERE vbeln EQ itab-xblnr
AND vbtyp_n EQ 'J'.
SELECT SINGLE vgbel FROM lips
INTO lips-vgbel
WHERE vbeln EQ itab-xblnr.
IF sy-subrc EQ 0.
SELECT SINGLE bstnk FROM vbak
INTO t_fin-ebeln
WHERE vbeln EQ lips-vgbel.
*begin of 0002
CLEAR: l_adrnr.
SELECT SINGLE adrnr INTO l_adrnr
FROM vbpa
WHERE vbeln EQ vbfa-vbelv
AND parvw EQ 'WE'.
IF sy-subrc EQ 0.
SELECT SINGLE name1 mc_city1
INTO (itab-name1, itab-ort01)
FROM adrc
WHERE addrnumber EQ l_adrnr.
ENDIF.
*end of 0002
ENDIF.
*End of mod 0001
t_fin-lifnr = itab-kunnr.
MOVE: kna1-name1 to itab-name1,
kna1-ort01 to itab-ort01.
ELSEIF NOT itab-lifnr IS INITIAL.
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM lfa1
WHERE lifnr EQ itab-lifnr.
t_fin-lifnr = itab-lifnr.
ELSEIF NOT itab-kdauf IS INITIAL.
SELECT SINGLE kunnr bstnk "0001
INTO (itab-kunnr,t_fin-ebeln) "0001
FROM vbak
WHERE vbeln EQ itab-kdauf.
IF sy-subrc EQ 0. "0001
*Begin 0002
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM kna1
WHERE kunnr EQ itab-kunnr.
CLEAR: l_adrnr.
SELECT SINGLE adrnr INTO l_adrnr
FROM vbpa
WHERE vbeln EQ itab-kdauf
AND parvw EQ 'WE'.
IF sy-subrc EQ 0.
SELECT SINGLE name1 mc_city1
INTO (itab-name1, itab-ort01)
FROM adrc
WHERE addrnumber EQ l_adrnr.
ENDIF.
*end of 0002
t_fin-lifnr = itab-kunnr.
ENDIF. "0001
*Begin of mod 0001
ELSEIF NOT itab-mat_kdauf IS INITIAL AND itab-bwart EQ '653' .
SELECT SINGLE kunnr bstnk
INTO (itab-kunnr,t_fin-ebeln)
FROM vbak
WHERE vbeln EQ itab-mat_kdauf.
IF sy-subrc EQ 0.
SELECT SINGLE name1 ort01
INTO (itab-name1,itab-ort01)
FROM kna1
WHERE kunnr EQ itab-kunnr.
t_fin-lifnr = itab-kunnr.
ENDIF.
*End of mod 0001
ENDIF.
SELECT SINGLE btext INTO itab-btext
FROM t156ht
WHERE bwart EQ itab-bwart
AND spras EQ sy-langu.
SELECT SINGLE maktx INTO itab-maktx
FROM makt
WHERE matnr EQ itab-matnr
AND spras EQ sy-langu.
MODIFY itab.
MOVE: itab-lgort TO t_fin-lgort,
itab-name1 TO t_fin-name1,
itab-bktxt TO t_fin-bktxt,
itab-ort01 TO t_fin-ort01,
itab-budat TO t_fin-budat,
itab-bwart TO t_fin-bwart,
itab-btext TO t_fin-btext,
itab-mblnr TO t_fin-mblnr,
itab-xblnr TO t_fin-xblnr,
itab-matnr TO t_fin-matnr,
itab-maktx TO t_fin-maktx,
itab-menge TO t_fin-menge,
itab-dmbtr TO t_fin-dmbtr.
APPEND t_fin.
CLEAR t_fin.
ELSE.
DELETE itab.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " 200_process_dbrecs
&----
*& Form TOP_OF_PAGE
&----
FORM top_of_page .
WRITE: /02 'Prog-Id:',sy-repid,
38 'Date:',sy-datum,
/02 'User-Id:',sy-uname,
38 'Page:',sy-pagno.
ULINE .
SKIP.
ENDFORM. " TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&IC1'.
CASE p_selfield-sel_tab_field.
WHEN 'T_FIN-BMENG' OR 'T_FIN-BMENG1'.
PERFORM get_selected_so USING p_selfield-tabindex.
PERFORM list_display1.
ENDCASE.
ENDCASE.
ENDFORM. "user_command
&----
*& Form 50_check_authority
&----
FORM 50_check_authority .
TABLES: t001w.
SELECT werks
FROM t001w
INTO t001w-werks
WHERE werks IN s_werks.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD t001w-werks.
IF sy-subrc <> 0.
MESSAGE e000 WITH text-a00.
ENDIF.
ENDSELECT.
AUTHORITY-CHECK OBJECT 'M_MATE_BUK'
ID 'WERKS' FIELD s_bukrs.
ENDFORM. " 50_check_authority
&----
*& Form 300_build_xls
&----
text
----
form 300_build_xls .
*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 'lgort' 'lifnr' 'name1' 'ebeln' 'bktxt' 'ort01' 'budat' 'bwart' 'btext' 'mblnr' 'Xblnr' 'MATNR' 'maktx' 'menge' 'dmbtr'INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT t_fin INTO wa_charekpo.
CONCATENATE wa_charekpo-lgort wa_charekpo-lifnr
wa_charekpo-name1 wa_charekpo-ebeln
wa_charekpo-bktxt wa_charekpo-ort01
wa_charekpo-budat wa_charekpo-bwart
wa_charekpo-btext wa_charekpo-mblnr
wa_charekpo-Xblnr wa_charekpo-MATNR
wa_charekpo-maktx wa_charekpo-menge
wa_charekpo-dmbtr
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
endform. " 300_build_xls
&----
*& Form 400_send_file_as_email
&----
Send email
----
FORM 400_send_file_as_email 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.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = 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 500_INITIATE_MAIL_EXEC
&----
Instructs mail send program for SAPCONNECT to send email.
----
FORM 500_INITIATE_MAIL_EXEC.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " 500_INITIATE_MAIL_EXEC
&----
*& Form 600_POPULATE_EMAIL_MESS
&----
Populate message body text
----
form 600_POPULATE_EMAIL_MESS.
REFRESH it_message.
it_message = 'hai da this is vikram i am sending mail from my SAP system if u get it send me reply bye..'.
APPEND it_message.
ENDFORM. " 600_POPULATE_EMAIL_MESS
Reward Points if usefull
‎2007 Dec 19 4:31 AM
Hi,
In the background are yu getting any spool?
Try this sample program
report zars no standard page heading
line-size 170
line-count 65(4).
start-of-selection.
write : 'Testing'.
a®
‎2007 Dec 19 4:41 AM
‎2007 Dec 19 4:45 AM
‎2007 Dec 19 4:47 AM
‎2007 Dec 19 4:55 AM
SCOT> Utilities> overview of send request--> and check whether mail is in the list. May be your mail in the queue.
a®