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: 

SO_NEW_DOCUMENT_ATT_SEND_API1

0 Kudos

Hello experts,

By using above function module how to send ALV report  output to external email id in excel format.

the problem is that in excel it wont allow more than 255 characters how to handle this functionality.

Please reply urgently

thanks in advance.

1 REPLY 1

former_member197132
Participant
0 Kudos

  Hi Zakiya,

Instead of SO_NEW_DOCUMENT_ATT_SEND_API1, use cls_bcs.. refer this code.

DATAlo_send_request TYPE REF TO cl_bcs VALUE IS INITIAL.

   CLASS cl_bcs DEFINITION LOAD.

   DATA : lo_document TYPE REF TO cl_document_bcs VALUE IS INITIAL. "document object

   DATA : i_text TYPE bcsy_text. "Table for body

   DATA : w_text LIKE LINE OF i_text. "work area for message body

   DATA : lo_sender TYPE REF TO if_sender_bcs VALUE IS INITIAL. "sender

   DATA : lo_recipient TYPE REF TO if_recipient_bcs VALUE IS INITIAL. "recipient

   DATA : lv_string TYPE string,

          lv_data_string TYPE string,

          lv_xstring TYPE xstring,

          lv_code TYPE e1edl24-werks.

   DATA : lit_binary_content TYPE solix_tab,

          l_attsubject       TYPE sood-objdes.

   lo_send_request = cl_bcs=>create_persistent( ).

*-----Message Body & Subject

   w_text = 'This is a system generated email, please dont reply'.

   DATA : p_sub TYPE so_obj_des.

   SHIFT wa_final-vbeln LEFT DELETING LEADING '0'.

   CONCATENATE 'Delivery Notification' wa_final-vbeln into p_sub SEPARATED BY '-'.

   APPEND w_text TO i_text.

   CLEAR w_text.

   w_text-line = ' '.

   lo_document = cl_document_bcs=>create_document( "create document

   i_type = 'TXT' "Type of document HTM, TXT etc

   i_text i_text  "email body internal table

   i_subject = p_sub ). "email subject here p_sub input parameter

* Pass the document to send request

   lo_send_request->set_document( lo_document ).

   CONSTANTS : v_mat(24TYPE c VALUE 'Client''s delivery no',

               v_mat1(16) TYPE c VALUE 'Consignee''s SKU',

               v_mat3(46) TYPE c VALUE 'Client''s customer''s order number /PO number'.

   CONCATENATE                   v_mat

                                'Order Date'

                                'Consignee contact name'

                                'Consignee company name'

                                'Consignee Address1'

                                'Consignee Address2'

                                'Consignee Address3'

                                'Consignee Address4'

                                'Consignee City'

                                'Consignee State'

                                'Consignee Zip'

                                'Consignee country'

                                 v_mat3

                                'Carrier'

                                'Carrier Shipping Instructions'

                                'Order line number'

                                'SKU'

                                 v_mat1

                                'Order Quantity'

                                'UOM'

    INTO lv_string SEPARATED BY cl_abap_char_utilities=>horizontal_tab.

   CONCATENATE lv_data_string lv_string INTO lv_data_string. " SEPARATED BY '|' .

* SEPARATED BY CL_ABAP_CHAR_UTILITIES=>NEWLINE.

   LOOP AT it_final INTO wa_final.

     CONCATENATE wa_final-vbeln

           wa_final-erdat

           wa_final-v_person

           wa_final-name1

           wa_final-str_suppl2

           wa_final-street

           wa_final-str_suppl3

           wa_final-location

           wa_final-city1

           wa_final-regio

           wa_final-postl_cod1

           wa_final-country1

           wa_final-bstkd

           wa_final-bezei

           wa_final-s_inst

           wa_final-posnr

           wa_final-matnr

           wa_final-kdmat

           wa_final-lfimg

           wa_final-vrkme

     INTO lv_string SEPARATED BY cl_abap_char_utilities=>horizontal_tab.

     CONCATENATE lv_data_string lv_string  INTO lv_data_string SEPARATED BY cl_abap_char_utilities=>newline.

   ENDLOOP.

**Convert string to xstring

   CALL FUNCTION 'HR_KR_STRING_TO_XSTRING'

     EXPORTING

      codepage_to      = '8300'

       unicode_string   = lv_data_string

*     OUT_LEN          =

     IMPORTING

       xstring_stream   = lv_xstring

     EXCEPTIONS

       invalid_codepage = 1

       invalid_string   = 2

       OTHERS           = 3.

   IF sy-subrc <> 0.

     IF sy-subrc = 1 .

     ELSEIF sy-subrc = 2 .

       WRITE:/ 'invalid string ' .

     ENDIF.

   ENDIF.

***Xstring to binary

   CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

     EXPORTING

       buffer     = lv_xstring

     TABLES

       binary_tab = lit_binary_content.

**add attachment

   CLEAR l_attsubject .

*-----Starting of file naming convention

SHIFT wa_final-vbeln LEFT DELETING LEADING '0'.

if lv_code is NOT INITIAL.

CONCATENATE lv_code wa_final-vbeln 'FUTGRA001' 'WD' SY-DATUM INTO l_attsubject SEPARATED BY '_'.

ELSEIF lv_code is INITIAL.

     CONCATENATE wa_final-lgnum  wa_final-vbeln 'FUTGRA001' 'WD' SY-DATUM INTO l_attsubject SEPARATED BY '_'.

   endif.

CONDENSE lv_code.

* Create Attachment

   TRY.

     lo_document->add_attachment( EXPORTING

                                     i_attachment_type = 'XLS'

                                     i_attachment_subject = l_attsubject

                                     i_att_content_hex = lit_binary_content  ).

   ENDTRY.

   TRY.

     lo_sender = cl_sapuser_bcs=>create( sy-uname ). "sender is the logged in user

* Set sender to send request

     lo_send_request->set_sender(

     EXPORTING

     i_sender = lo_sender ).

*    CATCH CX_ADDRESS_BCS.

****Catch exception here

   ENDTRY.

   DATA: l_recipient TYPE ad_smtpadr.

**Set recipient for send request

   lo_recipient = cl_cam_address_bcs=>create_internet_address( 'Shailendra.karada@gmail.com').

   TRY.

     lo_send_request->add_recipient(

         EXPORTING

         i_recipient = lo_recipient

         i_express = 'X' ).

   ENDTRY.

   TRY.

     lo_send_request->send(

     EXPORTING

     i_with_error_screen = 'X' ).

     IF sy-subrc = 0.

     ENDIF.

   ENDTRY.