Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Scheduling and Mailing

Former Member
0 Likes
978

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.

1 ACCEPTED SOLUTION
Read only

former_member194669
Active Contributor
0 Likes
936

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®

8 REPLIES 8
Read only

Former Member
0 Likes
936

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

Read only

Former Member
0 Likes
936

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

Read only

Former Member
0 Likes
936

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

Read only

former_member194669
Active Contributor
0 Likes
937

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®

Read only

0 Likes
936

s im getting spool..

Read only

0 Likes
936

then check your SCOT

a®

Read only

0 Likes
936

in scot what must i do?

Read only

0 Likes
936

SCOT> Utilities> overview of send request--> and check whether mail is in the list. May be your mail in the queue.

a®