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: 

how to send mail in correct format

Former Member
0 Kudos

hi

i am using the fm SO_NEW_DOCUMENT_SEND_API1

seding some data to the particular users but i am facing a problem here

0000000572 |US NEW YORK

0000001250 |DE Hamburg

0000001251 |DE Frankfurt

0000001252 |DE Berlin

0000002025 |GB London

0000002350 |ES Madrid

0000003271 |US ANTIOCH

0000003272 |US SEATTLE

0000003273 |US MINNEAPOLIS

i am not getting the data in particular format what i have to do

i am getting the data in a zigzag form

thanks

Edited by: suma2285 on Apr 1, 2009 4:17 PM

12 REPLIES 12

Former Member
0 Kudos

Hi,

Try using the Offset like show below ..

LOOP AT p_emp_details INTO i_emp_details_line
    l_obj-line = i_emp_details_line-ename.
    l_obj-line+60 = i_emp_details_line-ltext.
    l_obj-line+128 = i_emp_details_line-srvdt.
    l_obj-line+150 = i_emp_details_line-mndat.
    APPEND l_obj TO lt_objtxt.   CLEAR l_obj.

OR 

Concatenate i_emp_details_line-ename
                   i_emp_details_line-ltext
                   i_emp_details_line-srvdt
                   i_emp_details_line-mndat
           INTO l_string
       SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
 APPEND l_string TO lt_objtxt.   CLEAR l_obj.
  ENDLOOP.

0 Kudos

hi

thanks for the reply i have tried the above one but it is not working

after 128 places again it is coming ina zigzag format

can u help me

thanks

0 Kudos

Hi,

If you showing this as email attachment then go for Excel instead of Text.

Or

If you are displaying in the Body then go for the HTML body.

Check this link..http://docs.google.com/Doc?id=dfv2hmgs_0fm22tggx&hl=en

Which has Excel as attachment and table in the EMAIL body using HTML.

Former Member
0 Kudos

Suma,

What value do you have gs_packing_list-doc_type, this belongs to the Tables parameter as shown below . This should be 'RAW'.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

document_data = gs_docdata

put_in_outbox = 'X'

TABLES

packing_list = gt_packing_list

Thnaks,

Santosh.

0 Kudos

HI,

i think you are getting proper output. if the line is exceeding more then specifed length it would look like zigzag. just see the ouput by setting outlook property as HTML.

Former Member
0 Kudos

Hi Suma,

See tha sample code for Send mail..


report zsendmail.
data: maildata type sodocchgi1.
data: mailtxt  type table of solisti1 with header line.
data: mailrec  type table of somlrec90 with header line.

start-of-selection.

  clear:    maildata, mailtxt,  mailrec.
  refresh:  mailtxt, mailrec.

  maildata-obj_name = 'TEST'.
  maildata-obj_descr = 'Test'.
  maildata-obj_langu = sy-langu.

  do 100 times.
    mailtxt-line = 'This is a test'.
    append mailtxt.
  enddo.

  mailrec-receiver = 'gsasidhar-yahoo-com'.
  mailrec-rec_type  = 'U'.
  append mailrec.

*  mailrec-receiver = 'NTWDEV'.
*  mailrec-rec_type  = 'B'.
*  append mailrec.



    call function 'SO_NEW_DOCUMENT_SEND_API1'
         exporting
              document_data              = maildata
              document_type              = 'RAW'
              put_in_outbox              = 'X'
         tables
              object_header              = mailtxt
              object_content             = mailtxt
              receivers                  = mailrec
         exceptions
              too_many_receivers         = 1
              document_not_sent          = 2
              document_type_not_exist    = 3
              operation_no_authorization = 4
              parameter_error            = 5
              x_error                    = 6
              enqueue_error              = 7
              others                     = 8.
    if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.

regards,

Prabhudas

0 Kudos

HI

I have checked the above solutions but it is not working

when i am sending a mail to sap inbox the data it is showing in a zigzag form

how to rectify it........

thanks

0 Kudos

just hint: there is a blog by Naimesh Patel, pls. search for the same in google.

thanq

Former Member
0 Kudos

Hi,

Call this FM 'SO_NEW_DOCUMENT_SEND_API1' in your program.

Regards,

Jyothi CH.

Former Member
0 Kudos

Hi,

I was also facing the same problem

Then I used the following method.

It will definetly work.

Try out this.

DATA: SEND_REQUEST TYPE REF TO CL_BCS.

DATA: SUBJECT TYPE SO_OBJ_DES.

DATA: ATT_TYPE TYPE SOODK-OBJTP.

DATA: IT_TEXT TYPE BCSY_TEXT.

DATA: WA_TEXT LIKE SOLI.

DATA: IT_BIN TYPE SOLIX_TAB.

DATA: WA_BIN TYPE SOLIX.

DATA: DOCUMENT TYPE REF TO CL_DOCUMENT_BCS.

DATA: SENDER TYPE REF TO CL_SAPUSER_BCS.

DATA: RECIPIENT TYPE REF TO IF_RECIPIENT_BCS.

DATA: BCS_EXCEPTION TYPE REF TO CX_BCS.

DATA: SENT_TO_ALL TYPE OS_BOOLEAN.

  • Bytes der Datei

DATA: IT_LENGHT TYPE SO_OBJ_LEN.

DATA: N10(10) TYPE N.

*

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

START-OF-SELECTION.

PERFORM MAIN.

PERFORM RSCONN01_EXECUTE.

END-OF-SELECTION.

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

FORM MAIN.

TRY.

*

  • Dokument erstellen (mit Anhang)

SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

*

PERFORM HEAD_CONT.

PERFORM RAW_ATT.

  • Dokument (mit Anhang) setzen

CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).

*

  • Absender setzen

*

SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).

CALL METHOD SEND_REQUEST->SET_SENDER

EXPORTING

I_SENDER = SENDER.

*

  • Empfänger setzen

*

RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

'email@address' ).

CALL METHOD SEND_REQUEST->ADD_RECIPIENT

EXPORTING

I_RECIPIENT = RECIPIENT

I_EXPRESS = 'X'.

*

  • Dokument senden

*

CALL METHOD SEND_REQUEST->SEND(

EXPORTING

I_WITH_ERROR_SCREEN = 'X'

RECEIVING

RESULT = SENT_TO_ALL ).

*

COMMIT WORK.

*

  • Sende-Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

ENDFORM. "main

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

FORM HEAD_CONT.

*

CLEAR: IT_TEXT[], WA_TEXT, SUBJECT.

*

ATT_TYPE = 'RAW'.

SUBJECT = 'Betreffzeile'.

*

WA_TEXT = 'First Line'. APPEND WA_TEXT TO IT_TEXT.

WA_TEXT = 'Second Line'. APPEND WA_TEXT TO IT_TEXT.

*

DESCRIBE TABLE IT_TEXT LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_TEXT ).

IT_LENGHT = N10.

*

TRY.

*

DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(

I_TYPE = ATT_TYPE

I_TEXT = IT_TEXT

I_LENGTH = IT_LENGHT

I_SUBJECT = SUBJECT ).

*

  • Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

*

ENDFORM. "HEAD_CONT

*&----


*

*& Form RAW_ATT

*&----


*

  • text

*----


*

FORM RAW_ATT.

*

CLEAR: IT_TEXT[], WA_TEXT, SUBJECT.

*

ATT_TYPE = 'RAW'.

*

SUBJECT = 'Text Anhang'.

*

WA_TEXT = 'First Line in ATT'. APPEND WA_TEXT TO IT_TEXT.

WA_TEXT = 'Second Line in ATT'. APPEND WA_TEXT TO IT_TEXT.

*

  • Lenght of Att_Text

DESCRIBE TABLE IT_TEXT LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_TEXT ).

IT_LENGHT = N10.

*

TRY.

*

CALL METHOD DOCUMENT->ADD_ATTACHMENT

EXPORTING

I_ATTACHMENT_TYPE = ATT_TYPE

I_ATT_CONTENT_TEXT = IT_TEXT

I_ATTACHMENT_SIZE = IT_LENGHT

I_ATTACHMENT_SUBJECT = SUBJECT.

*

  • Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

*

ENDFORM. "ATT_RAW

*&----


*

*& Form RSCONN01_EXECUTE

*&----


*

  • text

*----


*

FORM RSCONN01_EXECUTE.

  • Besser 2 Sekunden warten, damit alles versendet ist

WAIT UP TO 2 SECONDS.

*

SUBMIT RSCONN01 WITH MODE = 'INT'

WITH OUTPUT = ' '

AND RETURN.

*

ENDFORM. "RSCONN01_EXECUTE

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

In the method RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

'email@address' ).

Add the Email ID to which you want to send the mail.

This will definetly work.

Thanks and Regards,

Smriti

0 Kudos

hi

I am not getting the output in correct format it is coming in a zigzag way

but in sap inbox there is on setting 'TEXT IN NON PROPORTIONA FONT' by selecting these one it is getting correct.

But with out doing thse one is there an chance to get the ouput in a prepoer format.

and is it possible to send the data in a tabular format to the mail

thanks

Former Member
0 Kudos

Hello ,

Check this Program , May be you will get Idea .

DATA: SEND_REQUEST TYPE REF TO CL_BCS.

DATA: SUBJECT TYPE SO_OBJ_DES.

DATA: ATT_TYPE TYPE SOODK-OBJTP.

DATA: IT_TEXT TYPE BCSY_TEXT.

DATA: WA_TEXT LIKE SOLI.

DATA: IT_BIN TYPE SOLIX_TAB.

DATA: WA_BIN TYPE SOLIX.

DATA: DOCUMENT TYPE REF TO CL_DOCUMENT_BCS.

DATA: SENDER TYPE REF TO CL_SAPUSER_BCS.

DATA: RECIPIENT TYPE REF TO IF_RECIPIENT_BCS.

DATA: BCS_EXCEPTION TYPE REF TO CX_BCS.

DATA: SENT_TO_ALL TYPE OS_BOOLEAN.

  • Bytes der Datei

DATA: IT_LENGHT TYPE SO_OBJ_LEN.

DATA: N10(10) TYPE N.

*

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

START-OF-SELECTION.

PERFORM MAIN.

PERFORM RSCONN01_EXECUTE.

END-OF-SELECTION.

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

FORM MAIN.

TRY.

*

  • Dokument erstellen (mit Anhang)

SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

*

PERFORM HEAD_CONT.

PERFORM RAW_ATT.

  • Dokument (mit Anhang) setzen

CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).

*

  • Absender setzen

*

SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).

CALL METHOD SEND_REQUEST->SET_SENDER

EXPORTING

I_SENDER = SENDER.

*

  • Empfänger setzen

*

RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

'email@address' ).

CALL METHOD SEND_REQUEST->ADD_RECIPIENT

EXPORTING

I_RECIPIENT = RECIPIENT

I_EXPRESS = 'X'.

*

  • Dokument senden

*

CALL METHOD SEND_REQUEST->SEND(

EXPORTING

I_WITH_ERROR_SCREEN = 'X'

RECEIVING

RESULT = SENT_TO_ALL ).

*

COMMIT WORK.

*

  • Sende-Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

ENDFORM. "main

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

FORM HEAD_CONT.

*

CLEAR: IT_TEXT[], WA_TEXT, SUBJECT.

*

ATT_TYPE = 'RAW'.

SUBJECT = 'Betreffzeile'.

*

WA_TEXT = 'First Line'. APPEND WA_TEXT TO IT_TEXT.

WA_TEXT = 'Second Line'. APPEND WA_TEXT TO IT_TEXT.

*

DESCRIBE TABLE IT_TEXT LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_TEXT ).

IT_LENGHT = N10.

*

TRY.

*

DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(

I_TYPE = ATT_TYPE

I_TEXT = IT_TEXT

I_LENGTH = IT_LENGHT

I_SUBJECT = SUBJECT ).

*

  • Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

*

ENDFORM. "HEAD_CONT

&----

-


*& Form RAW_ATT

&----

-


  • text

-

-


FORM RAW_ATT.

*

CLEAR: IT_TEXT[], WA_TEXT, SUBJECT.

*

ATT_TYPE = 'RAW'.

*

SUBJECT = 'Text Anhang'.

*

WA_TEXT = 'First Line in ATT'. APPEND WA_TEXT TO IT_TEXT.

WA_TEXT = 'Second Line in ATT'. APPEND WA_TEXT TO IT_TEXT.

*

  • Lenght of Att_Text

DESCRIBE TABLE IT_TEXT LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_TEXT ).

IT_LENGHT = N10.

*

TRY.

*

CALL METHOD DOCUMENT->ADD_ATTACHMENT

EXPORTING

I_ATTACHMENT_TYPE = ATT_TYPE

I_ATT_CONTENT_TEXT = IT_TEXT

I_ATTACHMENT_SIZE = IT_LENGHT

I_ATTACHMENT_SUBJECT = SUBJECT.

*

  • Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

*

ENDFORM. "ATT_RAW

&----

-


*& Form RSCONN01_EXECUTE

&----

-


  • text

-

-


FORM RSCONN01_EXECUTE.

  • Besser 2 Sekunden warten, damit alles versendet ist

WAIT UP TO 2 SECONDS.

*

SUBMIT RSCONN01 WITH MODE = 'INT'

WITH OUTPUT = ' '

AND RETURN.

*

ENDFORM. "RSCONN01_EXECUTE

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

In the method RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

'email@address' ).

Add the Email ID to which you want to send the mail.

It will work .

Regards ,

GJ