-
types
:
begin of
xml_line
,
data
(
255
)
type
x
,
end of
xml_line
.
data
:
l_xml_table
type table of
xml_line
.
data
:
ls_itab
type
typ_itab
.
types
:
begin of
xml_line
,
data
(
< br>256
)
type
x
,
end of
xml_line
.
data
:
l_ixml
type ref to
if_ixml
,
l_streamfactory
type ref
to
if_ixml_stream_factory
,
p>
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_styles
type ref
to
if_ixml_element
,
r_style
type ref
to
if_ixml_element
,
r_borders
type ref
to
if_ixml_element
,
r_border
type ref
to
if_ixml_element
,
r_format
type ref
to
if_ixml_element
,
r_cell
type ref
to
if_ixml_element
,
r_data
type ref
to
if_ixml_element
,
* l_xml_table TYPE TABLE OF
xml_line,
l_xml_size
type i
,
l_rc
type
i
,
l_text
(
255
)
type c
,
l_value
type
string
,
l_type
type
string
,
p_type
.
field-symbols
:
type
any
,
type any
,
type
any
,
type any
.
data
:
p_tab
like
dd02l
-
tabname
.
data
:
data_tab
type ref to
data
,
gotstate
type
ddgotstate
,
dd03p_tab
type table
of
dd03p
,
dd03p
type
dd03p
.
field-
symbols
:
type standard
table
.
field-symbols
:
like line
of
dd03p_tab
.
clear
l_xml_table
.
define
add_fieldcol
.
unassign
:
.
clear
dd03p
.
dd03p
-
fieldname
=
&1
.
dd03p
-
ddtext
=
&2
.
dd03p
-
outputlen
=
&3
.
dd03p
-
inttype
=
&4
.
dd03p
-
decimals
=
&5
.
dd03p
-
reptext
=
&6
.
dd03p
-
position
=
&7
.
append
dd03p
to
dd03p_tab
assigning
.
end-of-
definition
.
add_fieldcol
'PRUEFLOS'
'
检验批
' '8' 'C' '0' ''
''
.
add_fieldcol
'WERK'
'
工厂
' '4' 'C' '0' ''
''
.
add_fieldcol
'CHARG'
'
批次
' '6' 'C' '0' ''
''
.
add_fieldcol
'MATNR'
'
物料编码
' '10' 'C' '0' ''
''
.
add_fieldcol
'MAKTX'
'
物料描述
' '35' 'C' '0' ''
''
.
add_fieldcol
'LOSMENGE'
'
交检数量
' '8' 'P' '3' ''
''
.
add_fieldcol
'GESSTICHPR'
'
抽检数量
' '8' 'P' '3' ''
''
.
add_fieldcol
'ERSTELDAT'
'
收货日期
' '8' 'C' '0' ''
''
.
add_fieldcol
'BUDAT'
'
过账日期
' '8' 'C' '0' ''
''
.
add_fieldcol
'LAGORTCHRG'
'
库位
' '4' 'C' '0' ''
''
.
add_fieldcol
'OBJNR'
'
工作指示编号
' '8' 'C' '0' ''
''
.
add_fieldcol
'ERSTELLER'
'
创建者
' '8' 'C' '0' ''
''
.
add_fieldcol
'TXT04'
'
系统状态
' '35' 'C' '0' ''
''
.
*
SORT dd03p_tab BY position .
create data
data_tab
type standard
table of
typ_itab
.
LE OF (P_TAB).
*
CREATE DATA DATA_TAB TYPE STANDARD TABLE OF
(P_TAB).
assign
data_tab
->
*
to
.
loop at
gt_itab
into
ls_itab
.
append
ls_itab
to
.
endloop
.
* 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'
*
uri = 'urn:schemas-microsoft-
com:office:spreadsheet'
parent
=
l_document
).
l_element_ro
ot
->
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_ro
ot
->
set_attribute_node
(
ns_attribute
).
ns_attribute
=
p>
l_document
->
create_
namespace_decl
(
name
=
'x'
prefix
=
'xmlns'
uri
=
'urn:schemas-
microsoft-com:office:excel'
).
l_element_ro
ot
->
set_attribute_node
(
ns_attribute
).
*
Create node for document properties.
r_element_properties
=
l_document
->
create_s
imple_element
(
name
=
'DocumentProperties'
parent
=
l_element_root
).
l_value
=
sy
-
uname
.
l_document
->
cre
ate_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 - Ice Blue,
BOLD
r_style
=
l_document
->
creat
e_simple_element
(
name
=
'Style'
parent
=
r_styles
r_style
->
set_at
tribute_ns
(
name
=
'ID'
prefix
=
'ss'
value
=
'Header'
).
r_format
=
l_document
->
create_simple_element
(
name
=
'Font'
parent
=
r_style
).
r_format
->
set_a
ttribute_ns
(
name
=
'Bold'
prefix
=
'ss'
value
=
'1'
).
r_format
=
l_document
->
create_simple_element
(
name
=
'Interior'
parent
=
r_style
).
r_format
->
set_a
ttribute_ns
(
name
=
'Color'
prefix
=
'ss'
value
=
'#F2F2F2'
).
r_format
->
set_attribute_ns
(
p>
name
=
'Pattern'
prefix
=
'ss'
value
=
'Solid'
).
r_format
=
l_document
->
create_simple_element
(
name
=
'Alignment'
parent
=
r_style
).
r_format
->
set_a
ttribute_ns
(
name
=
'Horizontal'
prefix
=
'ss'
value
=
'Center'
).
r_format
->
set_attribute_ns
(
p>
name
=
'Vertical'
prefix
=
'ss'
value
=
'Center'
).
r_format
->
set_attribute_ns
(
p>
).
name
=
'WrapText'
prefix
=
'ss'
value
=
'1'
).
****
设置颜色格式
*****
设置
合计行格式
r_style
=
l_document
->
create_simple_element
(
name
=
'Style'
parent
=
r_styles
).
r_style
->
set_attribute_ns
(
name
=
'ID'
prefix
=
'ss'
value
=
'RLine'
).
r_format
=
l_document
->
create_simple_element
(
name
=
'Interior'
parent
=
r_style
).
r_format
->
set_attribute_ns
(
p>
name
=
'Color'
prefix
=
'ss'
value
=
'#FF0000'
).
r_format
->
set_attribute_ns
(
p>
name
=
'Pattern'
prefix
=
'ss'
value
=
'Solid'
).
* r_borders =
l_document->create_simple_element(
* name =
'Borders'
*
parent = r_style ).
*
r_format =
l_document->create_simple_element(
* name =
'Border'
*
parent = r_borders ).
*
r_format->set_attribute_ns(
* name =
'Position'
*
prefix = 'ss'
*
value = 'Bottom' ).
*
r_format->set_attribute_ns(
* name =
'LineStyle'
*
prefix = 'ss'
*
value = 'Dash' ).
*
* r_format =
l_document->create_simple_element(
* name =
'Border'
*
parent = r_borders ).
*
r_format->set_attribute_ns(
* name =
'Position'
*
prefix = 'ss'
*
value = 'Right' ).
*
r_format->set_attribute_ns(
* name =
'LineStyle'
*
prefix = 'ss'
*
value = 'Dash' ).
*
* r_format =
l_document->create_simple_element(
* name =
'Border'
*
parent = r_borders ).
*
r_format->set_attribute_ns(
* name =
'Position'
*
prefix = 'ss'
*
value = 'Top' ).
*
r_format->set_attribute_ns(
* name =
'LineStyle'
*
prefix = 'ss'
*
value = 'Dash' ).
*
r_format =
l_document->create_simple_element(
* name =
'Font'
*
parent = r_style ).
*
r_format->set_attribute_ns(
* name =
'Bold'
*
prefix = 'ss'
*
value = '1' ).
******
设置颜色行是
黄色
r_style
=
l_document
->
create_simple_element
(
name
=
'Style'
parent
=
r_styles
).
r_style
->
set_attribute_ns
(
name
=
'ID'
prefix
=
'ss'
value
=
'YLine'
).
r_format
=
l_document
->
create_simple_element
(
name
=
'Interior'
parent
=
r_style
).
r_format
->
set_attribute_ns
(
p>
name
=
'Color'
prefix
=
'ss'
value
=
'#FFFF00'
).
r_format
->
set_attribute_ns
(
p>
name
=
'Pattern'
prefix
=
'ss'
value
=
'Solid'
).
*
Style for Data
loop at
dd03p_tab
into
dd03p
where
fieldname <>
'MANDT'
.
case
dd03p
-
inttype
.
when
'I'
or
'N'
.
*
General format
when
'P'
or
'F'
.
*
Numeric with specific number of
decimals
r_style
=
l_document
->
create_simple_element
(
name
=
'Style'
parent
=
r_styles
).
l_value
=
dd03p
-<
/p>
fieldname
.
r_style
->
set_attribute_ns
(
name
=
'ID'
prefix
=
'ss'
value
=
l_value
).
r_format
=
l_document
->
create_simple_element
(
name
=
'NumberFormat'
parent
=
r_style
).
if
dd03p
-
decimals
>
0
.
l_value
=
'0.'
.
do
dd03p
-
decimals
times
.
concatenate
l_value
'0'
into
l_value
.
enddo
.
else
.
l_value
=
''
.
endif
.
* l_value = '#,##0' .
r_format
->
set_attribute_ns
(
name
=
'Format'
prefix
=
'ss'
value
=
l_value
).
*
WHEN 'D'.
** General
format
when
others
.
*
Fixed text
r_style
=
l_document
->
create_simple_element
(
name
=
'Style'
parent
=
r_styles
).
l_value
=
dd03p
-<
/p>
fieldname
.
r_style
->
set_attribute_ns
(
name
=
'ID'
prefix
=
'ss'
value
=
l_value
).
r_format
=
< br>l_document
->
create_simple
_element
(
name
=
'NumberFormat'
parent
=
r_style
).
l_value
=
'@'
.
r_format
->
set_attribute_ns
p>
(
name
=
'Format'
prefix
=
'ss'
value
=
l_value
).
endcase
.
endloop
.
*
Worksheet
r_worksheet
=
l_document
->
create_simple_element
(
name
=
'Worksheet
'
parent
=
l_element_root
).
r_worksheet<
/p>
->
set_attribute_ns
(
name
=
'Name'
prefix
=
'ss'
value
=
'Sheet1'
).
*
TABLE
*