Sie sind auf Seite 1von 12

*&---------------------------------------------------------------------*

*& Report ZEXCEL_FORMAT


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZEXCEL_FORMAT.

TYPE-POOLS: IXML.

*------------------------------------------------------------------------*
* Data Declarations *
*------------------------------------------------------------------------*
* Internal Table & Work Area for Final Internal Table
DATA: IT_FINAL TYPE TABLE OF MARA,
WA_FINAL TYPE MARA.

* Work Area for ADD3_DATA Structre


DATA: WA_ADDR TYPE BAPIADDR3.
DATA: IT_RETURN TYPE TABLE OF BAPIRET2.

DATA: LV_DATE TYPE D.


DATA: LV_FILENAME TYPE STRING.

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_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.
TYPES : BEGIN OF TS_DATA,
PERNR TYPE PA0000-PERNR,
ENAME TYPE PA0001-ENAME,
ORGEH TYPE PA0001-ORGEH,
DATEE TYPE PA0001-BEGDA,
ERROR TYPE PTR_F_FEHLER-ERROR,
ETEXT TYPE T555F-ETEXT,
IN_TIME TYPE TEVEN-LTIME,
OUT_TIME TYPE TEVEN-LTIME,
DATEC TYPE PA0001-BEGDA,
PARA(10),
ACT(200),
SRLNO(5) TYPE N,
END OF TS_DATA.

DATA : T_DATA TYPE STANDARD TABLE OF TS_DATA,


WA_DATA TYPE TS_DATA.

*------------------------------------------------------------------------*
* Initialization *
*------------------------------------------------------------------------*

INITIALIZATION.
LV_DATE = SY-DATUM - 1.

*------------------------------------------------------------------------*
* Start of Selection *
*------------------------------------------------------------------------*

START-OF-SELECTION.

PERFORM GET_USER_DATA.
PERFORM PROCESS_XML_DATA.
PERFORM SEND_MAIL.

*&---------------------------------------------------------------------*
*& Form get_user_data
*&---------------------------------------------------------------------*
* Fetch User details from USR02
*----------------------------------------------------------------------*

FORM GET_USER_DATA.

REFRESH IT_FINAL.
SELECT * FROM MARA INTO TABLE IT_FINAL UP TO 10 ROWS.

ENDFORM. " get_user_data

*&---------------------------------------------------------------------*
*& Form SEND_MAIL
*&---------------------------------------------------------------------*
* Send Email
*----------------------------------------------------------------------*

FORM SEND_MAIL.
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.

* Mail Subject
CONCATENATE LV_DATE+6(2) '-' LV_DATE+4(2) '-' LV_DATE+0(4) INTO SUBJ_DATE.
CONCATENATE 'SAP Application Usage Report ' SUBJ_DATE INTO DOC_CHNG-OBJ_DESCR
SEPARATED BY SPACE.

* Mail Contents
OBJTXT = 'Dear User,'.
APPEND OBJTXT.

CLEAR OBJTXT.
APPEND OBJTXT.

CONCATENATE 'Please find the attachment ' SUBJ_DATE INTO OBJTXT SEPARATED BY
SPACE. " Mail Contents
APPEND OBJTXT.

CLEAR OBJTXT.
APPEND OBJTXT.

OBJTXT = 'Thanks & Regards,'.


APPEND OBJTXT.

OBJTXT = 'Himanshu Kanekar'.


APPEND OBJTXT.

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 = 'SAP Login Details'.
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.
CONCATENATE 'SAP_Login_Details' SUBJ_DATE INTO OBJPACK-OBJ_DESCR SEPARATED BY
SPACE.
OBJPACK-DOC_TYPE = 'XLS'.
OBJPACK-DOC_SIZE = TAB_LINES * 255.
APPEND OBJPACK.

* Target Recipent
CLEAR RECLIST.
RECLIST-RECEIVER = 'rahul.sinha@india.nec.com'.
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'
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.

COMMIT WORK.

ENDFORM. " SEND_MAIL

*&---------------------------------------------------------------------*
*& Form process_xml_data
*&---------------------------------------------------------------------*
* Process XML Data
*----------------------------------------------------------------------*

FORM PROCESS_XML_DATA .

* 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' ).

*=== Color
R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Interior' PARENT = R_STYLE
).
R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'Color' PREFIX = 'ss' VALUE = '#92D050' ).
R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'Pattern' PREFIX = 'ss' VALUE = 'Solid' ).

*=== Bold
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 = '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 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' ).

* Worksheet
R_WORKSHEET = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Worksheet' PARENT =
L_ELEMENT_ROOT ).
R_WORKSHEET->SET_ATTRIBUTE_NS( NAME = 'Name' PREFIX = 'ss' VALUE = 'Sheet1' ).

* 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 = '50' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '50' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '60' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '40' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '70' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '40' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '50' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '40' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '40' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '60' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '60' ).

R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Column' PARENT =


R_TABLE ).
R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'Width' PREFIX = 'ss' VALUE = '20' ).

** Blank Row
* R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Row' PARENT = R_TABLE ).

* 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' ).

* Sr. No.
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 = 'Sr. No.'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* blank
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 = ' ' PARENT =
R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* User Name
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 = 'Personnel
Number' PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Full Name
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 = 'Name' PARENT
= R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Department
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 = 'Department'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Date of Error
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 = 'Date of
Error' PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Message Code
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 = 'Message code'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Message
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 = 'Message'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* In Punch
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 = 'In Punch'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Out Punch
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 = 'Out punch'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Date of correction
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 = 'Date of
correction' PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Parameters
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 = 'Parameters'
PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* Action Required from Att. Supervisor


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 = 'Action
Required from Att. Supervisor' PARENT = R_CELL ).
R_DATA->SET_ATTRIBUTE_NS( NAME = 'Type' PREFIX = 'ss' VALUE = 'String' ).

* ** Blank Row
R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Row' PARENT = R_TABLE ).

* Data Table
WA_DATA-PERNR = '1'.
WA_DATA-ENAME = 'abc'.
WA_DATA-ORGEH = '10'.
WA_DATA-DATEE = '01.01.2013'.
WA_DATA-ERROR = '00'.
WA_DATA-ETEXT = 'Error 1'.
WA_DATA-IN_TIME = '101010'.
WA_DATA-OUT_TIME = '220000'.
WA_DATA-DATEC = '02.01.2013'.
WA_DATA-PARA = 'ABCD'.
WA_DATA-ACT =
'dsaaaaaaaaaaaaaaaaaaaaaaaaadsaaaaaaaaaaaaaaaaaaaaaaaaadsfsfsdfsdfsdfsdfsdfsdfsd'.
APPEND WA_DATA TO T_DATA.

WA_DATA-PERNR = '2'.
WA_DATA-ENAME = 'abcsasasas'.
WA_DATA-ORGEH = '20'.
WA_DATA-DATEE = '02.01.2013'.
WA_DATA-ERROR = '11'.
WA_DATA-ETEXT = 'Error 2'.
WA_DATA-IN_TIME = '131010'.
WA_DATA-OUT_TIME = '230000'.
WA_DATA-DATEC = '04.01.2013'.
WA_DATA-PARA = 'AAAD'.
WA_DATA-ACT =
'dssasasaaaaaaaaaaadsaaaaaaaaaaaaaaaaaaaaaaaaadsfsfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf'.
APPEND WA_DATA TO T_DATA.

LOOP AT T_DATA INTO WA_DATA.

R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'Row' PARENT = R_TABLE ).

* Sr. No.
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 = SY-TABIX.
CONDENSE L_VALUE NO-GAPS.
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 = 'Number' ).
" Cell format

* Personnel Number
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_DATA-PERNR.
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

* Name
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_DATA-ENAME.
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

* Department
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_DATA-ORGEH.
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

* Date of Error
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_DATA-DATEE.
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

* Message code
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_DATA-ERROR.
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

* Message
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_DATA-ETEXT.
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

* In Punch
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_DATA-IN_TIME.
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

* Out Punch
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_DATA-OUT_TIME.
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

* Date of correction
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_DATA-DATEC.
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

* Parameters
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_DATA-PARA.
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

* Action Required from Att. Supervisor


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_DATA-ACT.
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
ENDLOOP.

* 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( ).

ENDFORM. " process_xml_data

Das könnte Ihnen auch gefallen