Application Development 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: 

Sending ITAB data to Mail

Former Member
0 Kudos

Hi,

How to send Internal table data to a mail (outlook or yahoo)

Thanks

5 REPLIES 5

Former Member
0 Kudos

refer to this link

or else use this code:

REPORT  ZTEST_EMAIL.
constants c_internet value 'A'." 'U'.
data:
  w_document_data LIKE sodocchgi1,     " Mail data

* This internal table is used to hold the content
i_object_content LIKE solisti1 OCCURS 10 WITH HEADER LINE,

* This is to dummy to pass to FM
i_object_parb    LIKE soparbi1 OCCURS 10 WITH HEADER LINE,

* This internal table is used to have the email recipients
i_receivers      LIKE somlreci1 OCCURS  2 WITH HEADER LINE.

 w_document_data-obj_expdat = sy-datum + 1.
  w_document_data-expiry_dat = sy-datum + 1.
  w_document_data-obj_name  = 'Repair Request from Check-in process'.
  w_document_data-obj_descr = 'Error desc'.
  w_document_data-obj_prio = '1'.
  w_document_data-priority = '1'.
  w_document_data-obj_langu     = sy-langu.

  i_object_content-line = 'CMI FAILED'.
  APPEND i_object_content.
  CLEAR i_object_content.

  i_receivers-receiver = 'anup@yash.com'.
  i_receivers-rec_type = c_internet.
  i_receivers-express = 'X'.
  APPEND i_receivers.
  CLEAR i_receivers.

  i_receivers-receiver = 'snehi@yash.com'.
  i_receivers-rec_type = c_internet.
  i_receivers-copy = 'X'.
  i_receivers-express = 'X'.
  COLLECT i_receivers.
  CLEAR i_receivers.
*
*  i_receivers-receiver = 'anup.k@yash.com'.
*  i_receivers-rec_type = c_internet.
*  i_receivers-copy = 'X'.
*  i_receivers-express = 'X'.
*  COLLECT i_receivers.
*  CLEAR i_receivers.

  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              = w_document_data
       TABLES
            object_content             = i_object_content
            object_parb                = i_object_parb
            receivers                  = i_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.

0 Kudos

Hi,

You can also work this way....

if l_contents is not initial. " you internal table

call function 'SO_SOLITAB_TO_SOLIXTAB'

exporting

ip_solitab = l_contents

importing

ep_solixtab = contents_hex.

  • Create the send request

try.

l_send_request = cl_bcs=>create_persistent( ).

  • Create the main document

l_doc = cl_document_bcs=>create_document(

i_type = 'RAW'

i_text = l_text

i_subject = p_sub ).

  • Add attachment to document

l_doc->add_attachment( i_attachment_type = i_attachment_type

i_attachment_subject = p_doc

  • i_att_content_text = contents_text ).

i_att_content_hex = contents_hex ).

  • Add document to send request

l_send_request->set_document( l_doc ).

  • Add recipients to send request

  • LOOP AT s_to.

l_recipient = cl_cam_address_bcs=>create_internet_address(

p_email1-low ).

l_send_request->add_recipient( i_recipient = l_recipient ).

  • Send email

l_sent_all = l_send_request->send( ).

if sy-subrc ne 0.

  • MESSAGE e070.

else.

  • MESSAGE s074.

endif.

catch cx_bcs into l_err.

  • MESSAGE e071 WITH l_err->error_type.

endtry.

*

  • ENDIF.

endif.

*ENDIF.

commit work.

Thanks & Regards,

Madhavi

Former Member
0 Kudos

Hi,

search in SE38 for BCS_EXAMPLE*. There are good examples.

Regards, Dieter

Former Member
0 Kudos

Hi Madhavi,

Plz send the complete code

Thanks

Former Member
0 Kudos

hi,

here is the required code:

REPORT ZVR_CHARGE_BACK_TRIGGER_MAIL.

TABLES: ZVT_CHRGEBCK_QTY, "Custom Table For Charge-Back Quantity

VBRK, "Billing: Header Data

VBRP, "Billing: Item Data

MAKT, "Material Descriptions

KNA1. "General Data in Customer Master

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS:

S_KUNAG FOR VBRK-KUNAG , "CUSTOMER

S_MATNR FOR VBRP-MATNR . "MATERIAL

SELECTION-SCREEN END OF BLOCK B1.

DATA:I_ZVT_CHRGEBCK_QTY LIKE ZVT_CHRGEBCK_QTY OCCURS 0 WITH HEADER LINE,

BEGIN OF I_INFO OCCURS 0,

KUNAG LIKE VBRK-KUNAG,

MATNR LIKE VBRP-MATNR,

CFKIMG LIKE ZVT_CHRGEBCK_QTY-CFKIMG,

AFKIMG LIKE ZVT_CHRGEBCK_QTY-AFKIMG,

STATUS LIKE ZVT_CHRGEBCK_QTY-STATUS,

NETWR LIKE VBRP-NETWR,

COUNT TYPE I,

FLAG(1),

END OF I_INFO.

TYPES: BEGIN OF T_CHAREKPO,

EBLEN(10) TYPE C,

EBELP(5) TYPE C,

AEDAT(8) TYPE C,

MATNR(18) TYPE C,

END OF T_CHAREKPO.

DATA: WA_CHAREKPO TYPE T_CHAREKPO.

DATA: IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: IT_ATTACH TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

T_CONTENTS LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

T_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

T_ZEMAILS LIKE ZEMAILS 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.

DATA: V_MAKTX LIKE MAKT-MAKTX,

V_NAME1 LIKE KNA1-NAME1,

V_CFKIMG(13),

V_AFKIMG(13),

V_DIFF(13),

V_NETWR(16).

************************************************************************

*START_OF_SELECTION

START-OF-SELECTION.

Retrieve sample data from table ekpo

PERFORM DATA_RETRIEVAL.

*END-OF-SELECTION

END-OF-SELECTION.

IF NOT I_INFO[] IS INITIAL.

Populate table with detaisl to be entered into .xls file

PERFORM BUILD_XLS_DATA_TABLE.

Populate message body text

PERFORM POPULATE_EMAIL_MESSAGE_BODY.

Send file by email as .xls speadsheet

PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT

TABLES IT_MESSAGE

IT_ATTACH

USING

'chargebackquantity.xls documnet attachment'

'xls'

'charge back quantity'

' '

' '

' '

CHANGING GD_ERROR

GD_RECIEVER.

Instructs mail send program for SAPCONNECT to send email(rsconn01)

PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.

ENDIF.

&----


*& Form DATA_RETRIEVAL

&----


Retrieve data form EKPO table and populate itab it_ekko

-


FORM DATA_RETRIEVAL.

SELECT * FROM ZVT_CHRGEBCK_QTY INTO TABLE I_ZVT_CHRGEBCK_QTY

WHERE KUNAG IN S_KUNAG

AND MATNR IN S_MATNR.

UPDATE ZVT_CHRGEBCK_QTY SET STATUS = ' '

WHERE KUNAG = S_KUNAG AND

MATNR = S_MATNR.

SORT I_ZVT_CHRGEBCK_QTY BY KUNAG MATNR.

LOOP AT I_ZVT_CHRGEBCK_QTY.

I_INFO-KUNAG = I_ZVT_CHRGEBCK_QTY-KUNAG.

I_INFO-MATNR = I_ZVT_CHRGEBCK_QTY-MATNR.

I_INFO-CFKIMG = I_ZVT_CHRGEBCK_QTY-CFKIMG.

I_INFO-AFKIMG = I_ZVT_CHRGEBCK_QTY-AFKIMG.

I_INFO-NETWR = I_ZVT_CHRGEBCK_QTY-NETWR.

I_INFO-COUNT = 1.

COLLECT I_INFO.

CLEAR I_ZVT_CHRGEBCK_QTY.

ENDLOOP.

for triggering mail

LOOP AT I_INFO .

IF I_INFO-CFKIMG > I_INFO-AFKIMG.

I_INFO-FLAG = 'Y'.

MODIFY I_INFO.

ENDIF.

I_INFO-NETWR = I_INFO-NETWR / I_INFO-COUNT.

MODIFY I_INFO.

ENDLOOP.

DELETE I_INFO WHERE FLAG NE 'Y'.

LOOP AT I_INFO .

UPDATE ZVT_CHRGEBCK_QTY SET STATUS = 'X'

WHERE KUNAG = I_INFO-KUNAG

AND MATNR = I_INFO-MATNR

AND MONAT = SY-DATUM+4(2)

AND GJAHR = SY-DATUM+0(4).

ENDLOOP.

ENDFORM. " DATA_RETRIEVAL

&----


*& Form BUILD_XLS_DATA_TABLE

&----


Build data table for .xls document

-


FORM BUILD_XLS_DATA_TABLE.

CONSTANTS: CON_CRET TYPE X VALUE '0D', "OK for non Unicode

CON_TAB TYPE X VALUE '09'. "OK for non Unicode

CONCATENATE 'Material'

' Material Description'

' Customer'

' Customer Name'

' Chrg Bck Qty'

' Actual Sales Qty.'

' Excess Chrg Bck Qty'

' Avg. Excess Dollar Value'

' '

INTO IT_ATTACH SEPARATED BY CON_TAB.

CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.

APPEND IT_ATTACH.

LOOP AT I_INFO WHERE STATUS 'X'.

SELECT SINGLE MAKTX FROM MAKT INTO V_MAKTX WHERE MATNR = I_INFO-MATNR

AND SPRAS = SY-LANGU.

SELECT SINGLE NAME1 FROM KNA1 INTO V_NAME1 WHERE KUNNR = I_INFO-KUNAG.

V_CFKIMG = I_INFO-CFKIMG.

V_AFKIMG = I_INFO-AFKIMG.

V_DIFF = I_INFO-CFKIMG - I_INFO-AFKIMG.

V_NETWR = I_INFO-NETWR * V_DIFF.

CONCATENATE I_INFO-MATNR V_MAKTX I_INFO-KUNAG V_NAME1

V_CFKIMG V_AFKIMG V_DIFF V_NETWR INTO IT_ATTACH SEPARATED

BY CON_TAB.

CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.

APPEND IT_ATTACH.

CLEAR: I_INFO,V_CFKIMG,V_AFKIMG,V_MAKTX,V_NAME1,V_NETWR.

ENDLOOP.

ENDFORM. " BUILD_XLS_DATA_TABLE

&----


*& Form SEND_FILE_AS_EMAIL_ATTACHMENT

&----


Send email

-


FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE

PIT_ATTACH

USING P_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.

SELECT * FROM ZEMAILS INTO TABLE T_ZEMAILS WHERE ZGROUP = 'CB'.

LOOP AT T_ZEMAILS.

CLEAR T_RECEIVERS.

REFRESH T_RECEIVERS.

T_RECEIVERS-RECEIVER = T_ZEMAILS-ZEMAIL.

T_RECEIVERS-REC_TYPE = 'U'.

T_RECEIVERS-COM_TYPE = 'INT'.

T_RECEIVERS-NOTIF_DEL = 'X'.

T_RECEIVERS-NOTIF_NDEL = 'X'.

APPEND T_RECEIVERS.

ENDLOOP.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

DOCUMENT_DATA = W_DOC_DATA

PUT_IN_OUTBOX = 'X'

SENDER_ADDRESS = LD_SENDER_ADDRESS

SENDER_ADDRESS_TYPE = LD_SENDER_ADDRESS_TYPE

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = W_SENT_ALL

TABLES

PACKING_LIST = T_PACKING_LIST

CONTENTS_BIN = T_ATTACHMENT

CONTENTS_TXT = IT_MESSAGE

RECEIVERS = T_RECEIVERS

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

DOCUMENT_TYPE_NOT_EXIST = 3

OPERATION_NO_AUTHORIZATION = 4

PARAMETER_ERROR = 5

X_ERROR = 6

ENQUEUE_ERROR = 7

OTHERS = 8.

Populate zerror return code

LD_ERROR = SY-SUBRC.

Populate zreceiver return code

LOOP AT T_RECEIVERS.

LD_RECEIVER = T_RECEIVERS-RETRN_CODE.

ENDLOOP.

ENDFORM.

&----


*& Form INITIATE_MAIL_EXECUTE_PROGRAM

&----


Instructs mail send program for SAPCONNECT to send email.

-


FORM INITIATE_MAIL_EXECUTE_PROGRAM.

WAIT UP TO 2 SECONDS.

SUBMIT RSCONN01 WITH MODE = 'INT'

WITH OUTPUT = 'X'

AND RETURN.

ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM

&----


*& Form POPULATE_EMAIL_MESSAGE_BODY

&----


Populate message body text

-


FORM POPULATE_EMAIL_MESSAGE_BODY.

REFRESH IT_MESSAGE.

CLEAR:IT_MESSAGE.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

IT_MESSAGE = 'Dear Sir/Madam,'.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

IT_MESSAGE = 'Charge Back quantity exceeds the actual sales Quantity.'.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

IT_MESSAGE = 'Please find the attachement for details.'.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

IT_MESSAGE = 'Regards,'.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

IT_MESSAGE = 'N.Jain'.

APPEND IT_MESSAGE.

CLEAR:IT_MESSAGE.

ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY

hope it will help you

rahul sharma