07-27-2015 6:39 PM
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.
08-07-2015 1:31 PM
Hi Zakiya,
Instead of SO_NEW_DOCUMENT_ATT_SEND_API1, use cls_bcs.. refer this code.
DATA: lo_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(24) TYPE 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.