Quantcast
Channel: SCN : Document List - ABAP Development
Viewing all articles
Browse latest Browse all 935

Send Email with Mutliple tabs of excel as a single attachment using OLE

$
0
0

 

Objective

    To send multiple tabs of excel sheet as a single attachment by email.

 

 

Introduction

This article is to send email with cell formatted excel attachment having multiple worksheets. This objective can be achieved by ole logic with creation of multiple sheets. This cannot be done by existing standard function modules. This can be created as Function module and we can use this function module wherever this requirement is needed by changing the import parameters. In this way, it is possible to improve the performance of the application by providing clarity of data in multiple tabs of excel sheet.

 

Steps

In this application, First create a Function Module with Receiver mail id as Import parameter.

Part 1

1.       Create one Function Module

Go to SE37 -> Give name of the Function Module -> Create

 

scr1.jpg

 

 

Give Function group name ->Description -> Save

 

scr2.jpg

 

 

 

2.       Then create I_mail_id of type ADR6-SMTP_ADDR as Import parameter , E_RETURN of type BAPIRET2 as Export parameter and T_TAB1 and T_TAB2 as tables parameter

3.       Save object either in Package or in local object

4.       Write logic in source code,

 

a)      Use xml code  and OLE logic

b)      Create First Workbook

c)       Then Create Styles for header, cell, Data

d)      Then Create 1st worksheet and  Pass data to 1st worksheet with styles as per requirements.

e)      Then Create 2nd worksheet and pass the another set of data to 2d worksheet as per specifications.

f)       Attachment Data will be in i_xml_data , loop this i_xml_data and append this to objbin.

g)      Then Call Mail sending Function Module 'SO_NEW_DOCUMENT_ATT_SEND_API1' and pass this attachment data objbin to contents_hex.

h)      Pass Importing Parameter to Receiver Mail id of Function Module

i)        Thus FM will send mail with multiple tabs of excel sheet as an attachment through email.

 

scr3.jpg

Sample Code

FUNCTION ZFM_SEND_MAIL_MULT_TABS.*"----------------------------------------------------------------------*"*"Local Interface:*"  IMPORTING*"     REFERENCE(I_MAIL_ID) TYPE  ADR6-SMTP_ADDR*"  EXPORTING*"     REFERENCE(E_RETURN) TYPE  BAPIRET2
  *"----------------------------------------------------------------------
*"----------------------------------------------------------------------
*"----------------------------------------------------------------------
DATA: lv_date TYPE d.DATA: lv_filename TYPE string.
data : wa_tab1 type Ztab1,
       wa_tab2
type Ztab2.

TYPES: BEGINOF xml_line,
       
data(255) TYPEx,
      
ENDOF xml_line.
DATA: l_ixml            TYPEREFTO if_ixml,
      l_streamfactory  
TYPEREFTO if_ixml_stream_factory,
      l_ostream        
TYPEREFTO if_ixml_ostream,
      l_renderer       
TYPEREFTO if_ixml_renderer,
      l_document       
TYPEREFTO if_ixml_document.
DATA: l_element_root        TYPEREFTO if_ixml_element,
      ns_attribute         
TYPEREFTO if_ixml_attribute,
      r_element_properties 
TYPEREFTO if_ixml_element,
      r_element            
TYPEREFTO if_ixml_element,
      r_worksheet          
TYPEREFTO if_ixml_element,
      r_table              
TYPEREFTO if_ixml_element,
      r_column             
TYPEREFTO if_ixml_element,
      r_row                
TYPEREFTO if_ixml_element,
      r_cell               
TYPEREFTO if_ixml_element,
      r_data               
TYPEREFTO if_ixml_element,
      l_value              
TYPE string,
      l_type               
TYPE string,
      l_text(
100)           TYPEc,
      r_styles             
TYPEREFTO if_ixml_element,
      r_style              
TYPEREFTO if_ixml_element,
      r_style1             
TYPEREFTO if_ixml_element,
      r_style2             
TYPEREFTO if_ixml_element,
      r_style3             
TYPEREFTO if_ixml_element,
      r_style4             
TYPEREFTO if_ixml_element,
      r_format             
TYPEREFTO if_ixml_element,
      r_border             
TYPEREFTO if_ixml_element,
      num_rows             
TYPEi.
DATA: l_xml_table       TYPETABLEOF xml_line,
      wa_xml           
TYPE xml_line,
      l_xml_size       
TYPEi,
      l_rc             
TYPEi.

DATA: d_value type p decimals2,
      d_num_result(
20) TYPEc,
      d_decimal(
2)     TYPEc,
      d_number(
20) typec.

  lv_date = sy-datum -
1.


* Creating a ixml Factory
  l_ixml = cl_ixml=>create( ).
* Creating the DOM Object Model
  l_document = l_ixml->create_document( ).
* Create Root Node 'Workbook'
  l_element_root  = l_document->create_simple_element( name =
'Workbook'  parent = l_document ).
  l_element_root->set_attribute( name =
'xmlns'  value = 'urn:schemas-microsoft-com:office:spreadsheet' ).

  ns_attribute = l_document->create_namespace_decl( name =
'ss'  prefix = 'xmlns'  uri = 'urn:schemas-microsoft-com:office:spreadsheet' ).
  l_element_root->set_attribute_node( ns_attribute ).

  ns_attribute = l_document->create_namespace_decl( name =
'x'  prefix = 'xmlns'  uri = 'urn:schemas-microsoft-com:office:excel' ).
  l_element_root->set_attribute_node( ns_attribute ).
* Create node for document properties.
  r_element_properties = l_document->create_simple_element( name =
'TEST_REPORT'  parent = l_element_root ).
  l_value = sy-uname.
  l_document->create_simple_element( name =
'Author'  value = l_value  parent = r_element_properties  ).
* Styles
  r_styles = l_document->create_simple_element( name =
'Styles'  parent = l_element_root  ).
* Style for Header
  r_style  = l_document->create_simple_element( name =
'Style'   parent = r_styles  ).
  r_style->set_attribute_ns( name =
'ID'  prefix = 'ss'  value = 'Header' ).


  r_format  = l_document->create_simple_element( name =
'Font'  parent = r_style  ).
  r_format->set_attribute_ns( name =
'Bold'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Interior' parent = r_style  ).
  r_format->set_attribute_ns( name =
'Color'   prefix = 'ss'  value = '#FFFFFF' ).
  r_format->set_attribute_ns( name =
'Pattern' prefix = 'ss'  value = 'Solid' ).

  r_format  = l_document->create_simple_element( name =
'Alignment'  parent = r_style  ).
  r_format->set_attribute_ns( name =
'Vertical'  prefix = 'ss'  value = 'Center' ).
  r_format->set_attribute_ns( name =
'WrapText'  prefix = 'ss'  value = '1' ).

  r_border  = l_document->create_simple_element( name =
'Borders'  parent = r_style ).
  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Bottom' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Left' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Top' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Right' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).
**** Style for tablename
  r_style2  = l_document->create_simple_element( name =
'Style'   parent = r_styles  ).
  r_style2->set_attribute_ns( name =
'ID'  prefix = 'ss'  value = 'Header1' ).


  r_format  = l_document->create_simple_element( name =
'Font'  parent = r_style2  ).
  r_format->set_attribute_ns( name =
'Bold'  prefix = 'ss'  value = '1' ).
  r_format->set_attribute_ns( name =
'Color'  prefix = 'ss'  value = '#FFFFFF'  ).

  r_format  = l_document->create_simple_element( name =
'Interior' parent = r_style2  ).
  r_format->set_attribute_ns( name =
'Color'   prefix = 'ss'  value = '#4F81BD' ).
  r_format->set_attribute_ns( name =
'Pattern' prefix = 'ss'  value = 'Solid' ).

  r_format  = l_document->create_simple_element( name =
'Alignment'  parent = r_style2  ).
  r_format->set_attribute_ns( name =
'Vertical'  prefix = 'ss'  value = 'Center' ).
  r_format->set_attribute_ns( name =
'Horizontal'  prefix = 'ss'  value = 'Center' ).
  r_format->set_attribute_ns( name =
'WrapText'  prefix = 'ss'  value = '1' ).*
  r_border  = l_document->create_simple_element( name =
'Borders'  parent = r_style2 ).
  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Bottom' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Left' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Top' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Right' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).****
*   Style for header2
  r_style4  = l_document->create_simple_element( name =
'Style'   parent = r_styles  ).
  r_style4->set_attribute_ns( name =
'ID'  prefix = 'ss'  value = 'Header2' ).


  r_format  = l_document->create_simple_element( name =
'Font'  parent = r_style4  ).
   r_format->set_attribute_ns( name =
'Color'  prefix = 'ss'  value = '#FFFFFF'  ).

  r_format  = l_document->create_simple_element( name =
'Interior' parent = r_style4  ).
  r_format->set_attribute_ns( name =
'Color'   prefix = 'ss'  value = '#4F81BD' ).
  r_format->set_attribute_ns( name =
'Pattern' prefix = 'ss'  value = 'Solid' ).

  r_format  = l_document->create_simple_element( name =
'Alignment'  parent = r_style4  ).
  r_format->set_attribute_ns( name =
'Vertical'  prefix = 'ss'  value = 'Center' ).
  r_format->set_attribute_ns( name =
'Horizontal'  prefix = 'ss'  value = 'Center' ).
  r_format->set_attribute_ns( name =
'WrapText'  prefix = 'ss'  value = '1' ).*
  r_border  = l_document->create_simple_element( name =
'Borders'  parent = r_style4 ).
  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Bottom' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Left' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Top' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Right' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).***********
*Style for main title
  r_style3  = l_document->create_simple_element( name =
'Style'   parent = r_styles  ).
  r_style3->set_attribute_ns( name =
'ID'  prefix = 'ss'  value = 'Main' ).


  r_format  = l_document->create_simple_element( name =
'Font'  parent = r_style3  ).
  r_format->set_attribute_ns( name =
'Bold'  prefix = 'ss'  value = '1' ).
  r_format->set_attribute_ns( name =
'Color'  prefix = 'ss'  value = '#366092' ).
******************* Style for Data
  r_style1  = l_document->create_simple_element( name =
'Style'   parent = r_styles  ).
  r_style1->set_attribute_ns( name =
'ID'  prefix = 'ss'  value = 'Data' ).

  r_border  = l_document->create_simple_element( name =
'Borders'  parent = r_style1 ).
  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Bottom' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Left' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Top' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

  r_format  = l_document->create_simple_element( name =
'Border'   parent = r_border  ).
  r_format->set_attribute_ns( name =
'Position'  prefix = 'ss'  value = 'Right' ).
  r_format->set_attribute_ns( name =
'LineStyle'  prefix = 'ss'  value = 'Continuous' ).
  r_format->set_attribute_ns( name =
'Weight'  prefix = 'ss'  value = '1' ).

   r_format  = l_document->create_simple_element( name =
'Alignment'  parent = r_style1  ).
  r_format->set_attribute_ns( name =
'Vertical'  prefix = 'ss'  value = 'Center' ).
  r_format->set_attribute_ns( name =
'Horizontal'  prefix = 'ss'  value = 'Left' ).
* Worksheet(First tab)
  r_worksheet = l_document->create_simple_element( name =
'Worksheet'  parent = l_element_root ).
  r_worksheet->set_attribute_ns( name =
'Name'  prefix = 'ss'  value = 'Commodity Impact' ).
* Table
  r_table = l_document->create_simple_element( name =
'Table'  parent = r_worksheet ).
  r_table->set_attribute_ns( name =
'FullColumns'  prefix = 'x'  value = '1' ).
  r_table->set_attribute_ns( name =
'FullRows'     prefix = 'x'  value = '1' ).
* Column Formatting
  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

   r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

   r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).
* Blank Row
  r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).


    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'MergeAcross'  prefix = 'ss'  value = '3' ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Main' ).*   r_cell->set_attribute_ns( name = 'StyleID'  prefix = 'ss'  value = 's78' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'Sheet 1-Table1'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).


r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).
r_row->set_attribute_ns( name =
'Height'  prefix = 'ss'  value = '27' ).

    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'MergeAcross'  prefix = 'ss'  value = '3' ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Main' ).*   r_cell->set_attribute_ns( name = 'StyleID'  prefix = 'ss'  value = 's78' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'Data of 1st table'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
*

r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).


r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).


*Title of table

  r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
  r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '1' ).
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'MergeAcross'  prefix = 'ss'  value = '2' ).

  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header1' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'COMMODITY  IMPACT'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).

* Column Headers Row

r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '1' ).*Commodity
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'Commodity'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* fy commodity
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'FY Commodity Spend ($MM)'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* change vs jan
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header' ).
 
CONCATENATE'Change vs' IW_FCYCL_P into l_value SEPARATEDBY space.

  r_data = l_document->create_simple_element( name =
'Data'  value = l_value parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).


* Blank Row after Column Headers
  r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).


DATA: WA_INPUT  TYPE P DECIMALS8,

      WA_OUTPUT
TYPE P DECIMALS2.
* Data Table
 
LOOPAT T_tab2 INTO wa_tab2.

    r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
* commodity
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab2-/BIC/GPU_FDUOM1.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format


WA_INPUT = wa_tab2-FY_COMM_SPND.
CALLFUNCTION'ROUND'

    
EXPORTING

         
INPUT         = WA_INPUT

    
IMPORTING

         
OUTPUT        = WA_OUTPUT.

* fy
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = WA_OUTPUT.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format



WA_INPUT = wa_tab2-FIGCY_PREVMNTH.
CALLFUNCTION'ROUND'

    
EXPORTING

         
INPUT         = WA_INPUT

    
IMPORTING

         
OUTPUT        = WA_OUTPUT.


* changes vs jan
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_output.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format

clear wa_tab2.
 
ENDLOOP.


***************  * Worksheet2( second tab)
  r_worksheet = l_document->create_simple_element( name =
'Worksheet'  parent = l_element_root ).

r_worksheet->set_attribute_ns( name = 'Name'  prefix = 'ss'value = 'Tab2' ).
* Table
  r_table = l_document->create_simple_element( name =
'Table'  parent = r_worksheet ).
  r_table->set_attribute_ns( name =
'FullColumns'  prefix = 'x'  value = '1' ).
  r_table->set_attribute_ns( name =
'FullRows'     prefix = 'x'  value = '1' ).
* Column Formatting
  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

   r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

   r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).

  r_column = l_document->create_simple_element( name =
'Column'  parent = r_table ).
  r_column->set_attribute_ns( name =
'Width'  prefix = 'ss'  value = '150' ).
* Blank Row
  r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).


    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'MergeAcross'  prefix = 'ss'  value = '3' ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Main' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'Atlas - PPV Forecast Transformation'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).


r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).
r_row->set_attribute_ns( name =
'Height'  prefix = 'ss'  value = '27' ).

    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'MergeAcross'  prefix = 'ss'  value = '3' ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Main' ).*   r_cell->set_attribute_ns( name = 'StyleID'  prefix = 'ss'  value = 's78' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'FEEDSTOCK COMMODITY IMPACT'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
************ 2 Blank rows
r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).


r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
   r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '0' ).

* Column Headers Row
  r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
  r_row->set_attribute_ns( name =
'AutoFitHeight'  prefix = 'ss'  value = '1' ).
*Supplier.
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'SUPPLIER'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* SUBREGION
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'SUBREGION'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* MATERIAL VOLUME
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'MATERIAL VOLUME'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* COMMODITY
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
  r_data = l_document->create_simple_element( name =
'Data'  value = 'COMMODITY'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* FY_EXPOSURE
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'FY_EXPOSURE'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).

* UOM
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'UOM'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).

* CURRENT COMMODITY PRICE
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'CURRENT COMMODITY PRICE'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
* * CURRENCY
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'CURRENCY'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).

* COMMODITY SPEND
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'COMMODITY SPEND'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
*  CHANGE VS PREVIOUS
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'CHANGE VS PREVIOUS'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).

* CREATION DATE(MONTH/YEAR)
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'CREATION DATE(MONTH/YEAR)'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).
*  FIG CYCLE
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Header2' ).
   r_data = l_document->create_simple_element( name =
'Data'  value = 'FIG CYCLE'  parent = r_cell ).
  r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'value = 'String' ).

* Blank Row after Column Headers
  r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).


  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).*
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).**
  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).

  r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
  r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).


* Data Table
 
LOOPAT T_tab1 INTO wa_tab1.

    r_row = l_document->create_simple_element( name =
'Row'  parent = r_table ).
* supplier
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPUCNTCT.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format
* sub region
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-SUBREGTXTLG.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format
* material volume
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPUFSEJUL.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format
* commodity
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPU_FDUOM.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                               " Cell format




* Fy_exposure
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-FY_EXPOSURE.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).          " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).                              " Cell format
*UOM
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPUUOM.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).



*  current commodity price
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPUCCPRIC.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).
*   currency
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-
CURRENCY.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).


WA_INPUT = wa_tab1-/BIC/GPUCSDJUL.
CALLFUNCTION'ROUND'

    
EXPORTING

         
INPUT         = WA_INPUT

    
IMPORTING

         
OUTPUT        = WA_OUTPUT.


*   commodity spend
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = WA_OUTPUT.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).





WA_INPUT = wa_tab1-CHNG_VS_PREV.
CALLFUNCTION'ROUND'

    
EXPORTING

         
INPUT         = WA_INPUT

    
IMPORTING

         
OUTPUT        = WA_OUTPUT.


*   change vs prev
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = WA_OUTPUT.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).

*   creation date
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPUCOCDAT_1.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).
*   Fig cycle
    r_cell = l_document->create_simple_element( name =
'Cell'  parent = r_row ).
    r_cell->set_attribute_ns( name =
'StyleID'  prefix = 'ss'  value = 'Data' ).
    l_value = wa_tab1-/BIC/GPU_FCYCL.
    r_data = l_document->create_simple_element( name =
'Data'  value = l_value   parent = r_cell ).           " Data
    r_data->set_attribute_ns( name =
'Type'  prefix = 'ss'  value = 'String' ).
clear wa_tab1.

 
ENDLOOP.


*  *Mail sending functionality*************
* Creating a Stream Factory
  l_streamfactory = l_ixml->create_stream_factory( ).
* Connect Internal XML Table to Stream Factory
  l_ostream = l_streamfactory->create_ostream_itable(
table = l_xml_table ).
* Rendering the Document
  l_renderer = l_ixml->create_renderer( ostream  = l_ostream  document = l_document ).
  l_rc = l_renderer->render( ).
* Saving the XML Document
  l_xml_size = l_ostream->get_num_written_raw( ).


 
DATA: objpack   LIKE sopcklsti1 OCCURS2WITHHEADERLINE.
 
DATA: objhead   LIKE solisti1 OCCURS1WITHHEADERLINE.
 
DATA: objbin    LIKE solix OCCURS10WITHHEADERLINE.
 
DATA: objtxt    LIKE solisti1 OCCURS10WITHHEADERLINE.
 
DATA: reclist   LIKE somlreci1 OCCURS5WITHHEADERLINE.
 
DATA: doc_chng  LIKE sodocchgi1.
 
DATA: tab_lines LIKE sy-tabix.
 
DATA: l_num(3).
 
DATA: subj_date(10) TYPEc.


doc_chng-obj_descr =
'Multiple Tabs'  .
*

 
DESCRIBETABLE objtxt LINES tab_lines.
 
READTABLE objtxt INDEX tab_lines.
  doc_chng-doc_size = ( tab_lines -
1 ) * 255 + STRLEN( objtxt ).
* Packing List For the E-mail Body
  objpack-head_start =
1.
  objpack-head_num   =
0.
  objpack-body_start =
1.
  objpack-body_num   = tab_lines.
  objpack-doc_type   =
'RAW'.
 
APPEND objpack.
* Creation of the Document Attachment
 
LOOPAT l_xml_table INTO wa_xml.
   
CLEAR objbin.
    objbin-
line = wa_xml-data.
   
APPEND objbin.
 
ENDLOOP.

 
DESCRIBETABLE objbin LINES tab_lines.
  objhead =
Multiple tabs'.
 
APPEND objhead.
* Packing List For the E-mail Attachment
  objpack-transf_bin =
'X'.
  objpack-head_start =
1.
  objpack-head_num   =
0.
  objpack-body_start =
1.
  objpack-body_num = tab_lines.
   objpack-obj_descr =
'Summary Table'.
  objpack-doc_type =
'XLS'.
  objpack-doc_size = tab_lines *
255.
 
APPEND objpack.
* Target Recipent
 
CLEAR reclist.
  reclist-receiver = I_MAILID.
  reclist-rec_type =
'U'.
  RECLIST-EXPRESS =
'X'.


 
APPEND reclist.



* Sending the document
 
CALLFUNCTION'SO_NEW_DOCUMENT_ATT_SEND_API1'
   
EXPORTING
      document_data              = doc_chng
      put_in_outbox              =
'X'
      COMMIT_WORK                =
'X'
   
TABLES
      packing_list               = objpack
      object_header              = objhead
      contents_txt               = objtxt
      contents_hex               = objbin
      receivers                  = reclist
   
EXCEPTIONS
      too_many_receivers         =
1
      document_not_sent          =
2
      operation_no_authorization =
4
     
OTHERS                     = 99.



IF sy-subrc EQ0.

       
MOVE: text-412TO ee_return-message,
             
'I'TO ee_return-type.

     
ENDIF.
ENDFUNCTION.

 

Technology

Tool & Technology: ABAP

Output

Execute FM by providing values for sender id and tables and see the attachment with multiple tabs of excel sheet as Output. Here we are creating two worksheets in OLE logic, thus two tabs will be in output attachment excel sheet with cell formatting (Color, font, borders, etc ).

 

out1.jpg

 

out2.jpg

 

Summary

 

This article is to send email with cell formatted excel attachment having multiple worksheets. This objective can be achieved by ole logic with creation of multiple sheets. This cannot be done by existing standard function modules. This can be created as Function module and we can use this function module wherever this requirement is needed by changing the import parameters. In this way, it is possible to improve the performance of the application by providing clarity of data in multiple tabs of excel sheet.

 

 

 


Viewing all articles
Browse latest Browse all 935

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>