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: 

Problem with TXT file with row length > 128 as email attachment

Former Member
0 Kudos

Hi all,

I have a little bit a problem with sending TXT file as attachment. If there is row length > 128 then file isn't appeared in notepad correctly. Where I do any misteakes. See on my test code please. Thanks.

 
 REPORT test.

PARAMETERS: p_email(45) LOWER CASE.

START-OF-SELECTION.

  PERFORM send_list.
  


FORM send_list.
  DATA: it_attachment     LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        it_attachment_xls LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        it_attachment_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE.

  CLASS cl_abap_char_utilities DEFINITION LOAD.
  DATA:
      con_tab  TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
      con_cret(2) TYPE c VALUE cl_abap_char_utilities=>cr_lf.


  REFRESH: it_attachment,it_attachment_txt.
  REFRESH: it_attachment_xls.

  DATA: BEGIN OF st,
        f1(2) TYPE n,
        f2(20) TYPE c,
        f3(20) TYPE c,
        f4(20) TYPE c,
        f5(20) TYPE c,
        f6(20) TYPE c,
        f7(20) TYPE c,
        END OF st.

  DATA: itab1 LIKE TABLE OF st WITH HEADER LINE,
        itab2 LIKE TABLE OF st WITH HEADER LINE.

  DO 3 TIMES.
    CLEAR itab1.
    itab1-f1 = sy-index.
    itab1-f2 = 'AAAAAAAAAAAAAAAAAAAAAA'.
    itab1-f3 = 'BBBBBBBBBBBBBBBBBBBBBB'.
    itab1-f4 = 'CCCCCCCCCCCCCCCCCCCCCC'.
    itab1-f5 = 'DDDDDDDDDDDDDDDDDDDDDD'.
    itab1-f6 = 'EEEEEEEEEEEEEEEEEEEEEE'.
    itab1-f7 = 'FFFFFFFFFFFFFFFFFFFFFF'.

    APPEND itab1.
  ENDDO.

  DO 5 TIMES.
    CLEAR itab2.
    itab2-f1 = sy-index.
    itab2-f2 = 'UUUUUUUUUUUUUUUUUUUUUU'.
    itab2-f3 = 'VVVVVVVVVVVVVVVVVVVVVV'.
    itab2-f4 = 'WWWWWWWWWWWWWWWWWWWWWW'.
    itab2-f5 = 'XXXXXXXXXXXXXXXXXXXXXX'.
    itab2-f6 = 'YYYYYYYYYYYYYYYYYYYYYY'.
    itab2-f7 = 'ZZZZZZZZZZZZZZZZZZZZZZ'.

    APPEND itab2.
  ENDDO.  

Thanks for help.

Edited by: Martin Filipczyk on Jul 22, 2009 1:45 PM

4 REPLIES 4

Former Member
0 Kudos

  LOOP AT itab1.
    CONCATENATE itab1-f1 itab1-f2 itab1-f3 itab1-f4 itab1-f5 itab1-f6 itab1-f7
           INTO it_attachment_xls SEPARATED BY con_tab.
    CONCATENATE it_attachment_xls con_cret INTO it_attachment_xls.
    APPEND it_attachment_xls.
  ENDLOOP.

  con_tab = ';'.
  con_cret = ''.

  LOOP AT itab2.
    CONCATENATE itab2-f1 itab2-f2 itab2-f3 itab2-f4 itab2-f5 itab2-f6 itab2-f7
           INTO it_attachment_txt SEPARATED BY con_tab.
    APPEND it_attachment_txt.
  ENDLOOP.


  LOOP AT it_attachment_xls.
    APPEND it_attachment_xls TO it_attachment.
  ENDLOOP.


  LOOP AT it_attachment_txt.
    APPEND it_attachment_txt TO it_attachment.
  ENDLOOP.

  PERFORM send_file_as_email_attachment TABLES it_attachment
                                               it_attachment_xls
                                               it_attachment_txt USING p_email.


  if not it_attachment[] is initial.
  PERFORM initiate_mail_execute_program.
ENDIF.

ENDFORM. 

FORM send_file_as_email_attachment TABLES it_attachment
                                          it_attachment_xls
                                          it_attachment_txt USING f_email.
  DATA: it_message       TYPE solisti1 OCCURS 0 WITH HEADER LINE,
        it_packing_list  TYPE sopcklsti1 OCCURS 0 WITH HEADER LINE,
        it_contents      TYPE solisti1 OCCURS 0 WITH HEADER LINE,
        it_receivers     TYPE somlreci1 OCCURS 0 WITH HEADER LINE,
        it_object_header TYPE solisti1 OCCURS 0 WITH HEADER LINE,
        it_objhead       TYPE solisti1 OCCURS 1 WITH HEADER LINE.

  DATA: tab_lines     TYPE i,
        tab_lines_xls TYPE i,
        tab_lines_txt TYPE i,
        w_sent_all(1) TYPE c,
        w_doc_data    TYPE sodocchgi1,
        gd_error      TYPE sy-subrc,
        gd_reciever   TYPE sy-subrc.

Former Member
0 Kudos

 it_message = 'Test description'.
  APPEND it_message.

  DESCRIBE TABLE it_attachment LINES tab_lines.

  CLEAR w_doc_data.
  READ TABLE it_attachment INDEX tab_lines.
  w_doc_data-doc_size =  ( tab_lines - 1 ) * 255 + STRLEN( it_attachment ).

* Jostain syystä vanhenemispäivä ei toimi...
  w_doc_data-obj_langu  = sy-langu.
  w_doc_data-obj_name   = 'EMAIL'.           "name of object
  w_doc_data-obj_descr  = 'test'.            "short text
  w_doc_data-sensitivty = 'F'.
  w_doc_data-expiry_dat = sy-datum + 30.     "expiration date
  w_doc_data-obj_expdat = sy-datum + 30.

  DESCRIBE TABLE it_message LINES tab_lines.

  CLEAR: it_packing_list.
  it_packing_list-head_start = 1.
  it_packing_list-head_num = 0.
  it_packing_list-body_start = 1.
  it_packing_list-body_num = tab_lines.
  it_packing_list-doc_type = 'RAW'.
  APPEND it_packing_list.

*Attachment 1

    CLEAR: it_packing_list.
    DESCRIBE TABLE it_attachment_xls LINES tab_lines_xls.
    it_packing_list-doc_size = tab_lines_xls * 255.
    it_packing_list-transf_bin = 'X'.
    it_packing_list-head_start = 1.
    it_packing_list-head_num = 1.
    it_packing_list-body_start = 1.
    it_packing_list-body_num = tab_lines_xls.
    it_packing_list-doc_type = 'XLS'.
    it_packing_list-obj_descr = 'List.xls'.
    APPEND it_packing_list.


*Attachment 2

    DESCRIBE TABLE it_attachment_txt LINES tab_lines_txt.
    it_packing_list-doc_size = tab_lines_txt * 255.
    it_packing_list-transf_bin = 'X'.
    it_packing_list-head_start = 1.
    it_packing_list-head_num = 1.
    it_packing_list-body_start = tab_lines_xls + 1.   " + 1 = header xls
    it_packing_list-body_num = tab_lines_txt.
    it_packing_list-doc_type = 'RAW'.
    it_packing_list-obj_descr = 'List.txt'.
    APPEND it_packing_list.


* Add the recipients email address
  CLEAR it_receivers.
  REFRESH it_receivers.

  it_receivers-receiver   =  f_email.
  it_receivers-rec_type   = 'U'.          "Internet
  APPEND it_receivers.
     

Former Member
0 Kudos


*Send the e-mail
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = w_doc_data
      put_in_outbox              = 'X'
      commit_work                = 'X'
    TABLES
      packing_list               = it_packing_list
      contents_bin               = it_attachment
      contents_txt               = it_message
      receivers                  = it_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.


ENDFORM. 

FORM initiate_mail_execute_program.
  WAIT UP TO 2 SECONDS.
  SUBMIT rsconn01 WITH mode = 'INT'
                WITH output = ' '
                AND RETURN.
ENDFORM.

Former Member
0 Kudos

refresh