You are on page 1of 18

REPORT.

*"----------------------------------------------------------------------
*"*"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.

TYPES : BEGIN OF ty,


/bic/gpucntct TYPE char35,
subregtxtlg TYPE char35,
/bic/gpufsejul TYPE char35,
/bic/gpu_fduom TYPE char35,
fy_exposure TYPE char35,
/bic/gpuuom TYPE char35,
/bic/gpuccprictype TYPE char35,
currency TYPE char35,
/bic/gpucsdjul TYPE char35,
chng_vs_prev TYPE char35,
/bic/gpucocdat_1 TYPE char35,
/bic/gpu_fcycl TYPE char35,
END OF ty.

TYPES : BEGIN OF ty1,


/bic/gpu_fduom1 TYPE char35,
fy_comm_spnd TYPE char35,
figcy_prevmnth TYPE char35,
END OF ty1.
DATA : wa_tab1 TYPE ty,
t_tab1 TYPE TABLE OF ty,
t_tab2 TYPE TABLE OF ty1,
wa_tab2 TYPE ty1.
DO 15 TIMES.
wa_tab1-/bic/gpucntct = '123'.
wa_tab1-subregtxtlg = 'test'.
wa_tab1-/bic/gpufsejul = 'fslk'.
wa_tab1-/bic/gpu_fduom = 'sjdsajld'.
wa_tab1-fy_exposure = '566'.
wa_tab1-/bic/gpuuom = '678'.
wa_tab1-/bic/gpuccprictype = '678'.
wa_tab1-currency = '678'.
wa_tab1-/bic/gpucsdjul = '678'.
wa_tab1-chng_vs_prev = '678'.
wa_tab1-/bic/gpucocdat_1 = '678'.
wa_tab1-/bic/gpu_fcycl = '678'.
APPEND wa_tab1 TO t_tab1.

ENDDO.

DO 15 TIMES.
wa_tab2-/bic/gpu_fduom1 = '2234'.
wa_tab2-fy_comm_spnd = '686'.
wa_tab2-figcy_prevmnth = '997979'.
APPEND wa_tab2 TO t_tab2.
ENDDO.

TYPES: BEGIN OF xml_line,


data(255) TYPE x,
END OF xml_line.

DATA: l_ixml TYPE REF TO if_ixml,


l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_ostream TYPE REF TO if_ixml_ostream,
l_renderer TYPE REF TO if_ixml_renderer,
l_document TYPE REF TO if_ixml_document.

DATA: l_element_root TYPE REF TO if_ixml_element,


ns_attribute TYPE REF TO if_ixml_attribute,
r_element_properties TYPE REF TO if_ixml_element,
r_element TYPE REF TO if_ixml_element,
r_worksheet TYPE REF TO if_ixml_element,
r_table TYPE REF TO if_ixml_element,
r_column TYPE REF TO if_ixml_element,
r_row TYPE REF TO if_ixml_element,
r_cell TYPE REF TO if_ixml_element,
r_data TYPE REF TO if_ixml_element,
l_value TYPE string,
l_type TYPE string,
l_text(100) TYPE c,
r_styles TYPE REF TO if_ixml_element,
r_style TYPE REF TO if_ixml_element,
r_style1 TYPE REF TO if_ixml_element,
r_style2 TYPE REF TO if_ixml_element,
r_style3 TYPE REF TO if_ixml_element,
r_style4 TYPE REF TO if_ixml_element,
r_format TYPE REF TO if_ixml_element,
r_border TYPE REF TO if_ixml_element,
num_rows TYPE i.

DATA: l_xml_table TYPE TABLE OF xml_line,


wa_xml TYPE xml_line,
l_xml_size TYPE i,
l_rc TYPE i.

DATA: d_value TYPE p DECIMALS 2,


d_num_result(20) TYPE c,
d_decimal(2) TYPE c,
d_number(20) TYPE c.

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' ).
l_value = 'Change vs'.

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 DECIMALS 8,

wa_output TYPE p DECIMALS 2.

* Data Table
LOOP AT 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.

CALL FUNCTION '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.

CALL FUNCTION '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
LOOP AT 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 = 'sakdnjlk'.
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.

CALL FUNCTION '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.

CALL FUNCTION '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 OCCURS 2 WITH HEADER LINE.


DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
DATA: objbin LIKE solix OCCURS 10 WITH HEADER LINE.
DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE.
DATA: doc_chng LIKE sodocchgi1.
DATA: tab_lines LIKE sy-tabix.
DATA: l_num(3).
DATA: subj_date(10) TYPE c.

doc_chng-obj_descr = 'Multiple Tabs' .

DESCRIBE TABLE objtxt LINES tab_lines.


READ TABLE 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


LOOP AT l_xml_table INTO wa_xml.
CLEAR objbin.
objbin-line = wa_xml-data.
APPEND objbin.
ENDLOOP.

DESCRIBE TABLE 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 = 'nchintha@applelg.net'.
reclist-rec_type = 'U'.
reclist-express = 'X'.

APPEND reclist.

* Sending the document


CALL FUNCTION '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 EQ 0.
COMMIT WORK .
WRITE : 'Mail Sent'.

ENDIF.

You might also like