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 in sending the text file as an attachment ...

Former Member
0 Kudos

Hi all,

I have a problem while sending a text file as an attachment. That file should be downloaded to PC and will be opened in text format.

File is attached and downloaded properly. The file is proper even if we open in notepad, but the client says when he opens the file in his legacy system he can see '##' charecters at the begining of each line and an empty line at the last line of the file. The whole data is correct except the above 2 issues, because of which the client has rejected the file.

The problem is each line in the text file should be 300 chars, and the line should not split, the next line should not be concatenated with the first line for this i have used the attribute cr_lf from class cl_abap_char_utilities.

Can anyone help me in deleting the 2 #'s and the empty line at the last of the file.

I have used the FM SO_DOCUMENT_SEND_API1 to send the internal table as an text file attachment to the client.

We tried a lot to solve it. But no luck.

Please try to solve this. Thanks in advance

Regards,

venu

5 REPLIES 5

former_member194669
Active Contributor
0 Kudos

Try this way


data : begin of i_textfile occurs 0.
data : text(300) type c.
data : end of i_textfile.
    
loop at itab.
  move itab to i_textfile-text.
  append i_textfile.
endloop.

and send i_textfile using fm SO_DOCUMENT_SEND_API1

0 Kudos

The problem is that the FM above will send 255 chars in a line, but i dont want to break the 300 chars line in to 2 pieces, for that i have used the attribute CR_LF from class CL_ABAP_CHAR_UTILITIES. Is anyone there to help me out this is a quite urgent requirement.

0 Kudos

try changing the modes ( ASC or BIN ) modes and give a try to eliminate ##

0 Kudos

I have to send the file by email as an notepad (.txt) attachement not with binary or ascii format, the requirement is notepad. Is anyone there to help me.

venkat_o
Active Contributor
0 Kudos

Hi Venu, Check the sample program. It sends mail with Text attachment. It works fine. Change accordingly.


REPORT  zvenkat_mai_txt_attach.

*--------------------------------------------------------*
"  Data retrieval related declarations
*--------------------------------------------------------*
TYPES:
     BEGIN OF t_emp_dat,
       pernr TYPE pa0001-pernr,
       persg TYPE pa0001-persg,
       persk TYPE pa0001-persk,
       plans TYPE pa0001-plans,
       stell TYPE pa0001-stell,
     END OF t_emp_dat.
DATA:
     w_emp_data TYPE t_emp_dat.
DATA:
     i_emp_data TYPE STANDARD TABLE OF t_emp_dat.
*--------------------------------------------------------*
"  MAI related declarations
*--------------------------------------------------------*
"Variables
DATA :
     g_sent_to_all   TYPE sonv-flag,
     g_tab_lines     TYPE i.
"Types
TYPES:
     t_document_data  TYPE  sodocchgi1,
     t_packing_list   TYPE  sopcklsti1,
     t_attachment     TYPE  solisti1,
     t_body_msg       TYPE  solisti1,
     t_receivers      TYPE  somlreci1.
"Workareas
DATA :
     w_document_data  TYPE  t_document_data,
     w_packing_list   TYPE  t_packing_list,
     w_attachment     TYPE  t_attachment,
     w_body_msg       TYPE  t_body_msg,
     w_receivers      TYPE  t_receivers.
"Internal Tables
DATA :
     i_document_data  TYPE STANDARD TABLE OF t_document_data,
     i_packing_list   TYPE STANDARD TABLE OF t_packing_list,
     i_attachment     TYPE STANDARD TABLE OF t_attachment,
     i_body_msg       TYPE STANDARD TABLE OF t_body_msg,
     i_receivers      TYPE STANDARD TABLE OF t_receivers.

PARAMETERS:p_mai(99) TYPE c OBLIGATORY.

*--------------------------------------------------------*
"Start-of-selection.
*--------------------------------------------------------*
START-OF-SELECTION.
  PERFORM get_data.
  PERFORM build_xls_data_table.

*--------------------------------------------------------*
  "End-of-selection.
*--------------------------------------------------------*
END-OF-SELECTION.
  PERFORM send_mai.

*&--------------------------------------------------------*
  "Form  get_data from PA0001
*&--------------------------------------------------------*
FORM get_data.

  SELECT pernr
         persg
         persk
         plans
         stell
   FROM pa0001
   INTO CORRESPONDING FIELDS OF TABLE i_emp_data
   UP TO 4 ROWS.

ENDFORM.                    " get_data
*&---------------------------------------------------------*
"Form  build_xls_data_table
*&---------------------------------------------------------*
FORM build_xls_data_table.
  "If you have Unicode check active in program attributes then
  "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 'PERNR' 'PERSG' 'PERSK' 'PLANS' 'STELL'
         INTO  w_attachment
 SEPARATED BY  con_tab.

  CONCATENATE con_cret
              w_attachment
         INTO w_attachment.

  APPEND w_attachment TO i_attachment.
  CLEAR  w_attachment.

  LOOP AT i_emp_data INTO w_emp_data.

    CONCATENATE w_emp_data-pernr
                w_emp_data-persg
                w_emp_data-persk
                w_emp_data-plans
                w_emp_data-stell
           INTO w_attachment
   SEPARATED BY con_tab.

    CONCATENATE con_cret w_attachment
           INTO w_attachment.

    APPEND w_attachment TO i_attachment.
    CLEAR  w_attachment.
  ENDLOOP.

ENDFORM.                    "build_xls_data_table
*&----------------------------------------------------------*
"Form  send_MAI
"---------------
"PACKING LIST
"This table requires information about how the data in the
"tables OBJECT_HEADER, CONTENTS_BIN and CONTENTS_TXT are to
"be distributed to the documents and its attachments.The first
"row is for the document, the following rows are each for one
"attachment.
*&-----------------------------------------------------------*
FORM send_mai .

  "Subject of the MAI.
  w_document_data-obj_name  = 'MAI_TO_HEAD'.
  w_document_data-obj_descr = 'Regarding MAI Program by SAP ABAP'.

  "Body of the MAI
  PERFORM build_body_of_mai
    USING:space,
          'Hi,',
          'I am fine. How are you? How are you doing ? ',
          'This program has been created to send simple MAI',
          'with Subject,Body with Address of the sender. ',
          'Regards,',
          'Venkat.O,',
          'SAP HR Technical Consultant.'.

  "Write Packing List for Body
  DESCRIBE TABLE i_body_msg LINES g_tab_lines.
  w_packing_list-head_start = 1.
  w_packing_list-head_num   = 0.
  w_packing_list-body_start = 1.
  w_packing_list-body_num   = g_tab_lines.
  w_packing_list-doc_type   = 'RAW'.
  APPEND w_packing_list TO i_packing_list.
  CLEAR  w_packing_list.

  "Write Packing List for Attachment
  w_packing_list-transf_bin = 'X'.
  w_packing_list-head_start = 1.
  w_packing_list-head_num   = 1.
  w_packing_list-body_start = 1.
  DESCRIBE TABLE i_attachment LINES w_packing_list-body_num.
  w_packing_list-doc_type   = 'TXT'.
  w_packing_list-obj_descr  = 'TEXT Attachment'.
  w_packing_list-obj_name   = 'TXT_ATTACHMENT'.
  w_packing_list-doc_size   = w_packing_list-body_num * 255.
  APPEND w_packing_list TO i_packing_list.
  CLEAR  w_packing_list.

  "Fill the document data and get size of attachment
  w_document_data-obj_langu  = sy-langu.
  READ TABLE i_attachment INTO w_attachment INDEX g_tab_lines.
  w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + STRLEN( w_attachment ).

  "Receivers List.
  w_receivers-rec_type   = 'U'.  "Internet address
  w_receivers-receiver   = p_mai.
  w_receivers-com_type   = 'INT'.
  w_receivers-notif_del  = 'X'.
  w_receivers-notif_ndel = 'X'.
  APPEND w_receivers TO i_receivers .
  CLEAR:w_receivers.

  "Function module to send MAI to Recipients
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = w_document_data
      put_in_outbox              = 'X'
      commit_work                = 'X'
    IMPORTING
      sent_to_all                = g_sent_to_all
    TABLES
      packing_list               = i_packing_list
      contents_bin               = i_attachment
      contents_txt               = i_body_msg
      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.

  IF sy-subrc = 0 .
    MESSAGE i303(me) WITH 'MAI has been Successfully Sent.'.
  ELSE.
    WAIT UP TO 2 SECONDS.
    "This program starts the SAPconnect send process.
    SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'
                    AND RETURN.
  ENDIF.

ENDFORM.                    " send_MAI
*&-----------------------------------------------------------*
"      Form  build_body_of_MAI
*&-----------------------------------------------------------*
FORM build_body_of_mai  USING l_message.

  w_body_msg = l_message.
  APPEND w_body_msg TO i_body_msg.
  CLEAR  w_body_msg.

ENDFORM.                    " build_body_of_MAI 
I hope that it solves ur problem. Regards, Venkat.O