Exporta tabla interna a XML
*----------------------------------------------------------------------*
* Report ZEXPORT_TO_XML *
* Export an internal table to XML document *
* NO BORRAR ESTE CODIGO *
*----------------------------------------------------------------------*
REPORT zprueba_mml_13.
*----------------------------------------------------------------------*
* PANTALLA SELECCION *
PARAMETERS: gk_ruta TYPE rlgrap-filename.
* PANTALLA SELECCION *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TYPE TURNOS *
TYPES: BEGIN OF turnos,
LU LIKE T552A-TPR01, "Plan horario trabajo diario
MA LIKE T552A-TPR01, "Plan horario trabajo diario
MI LIKE T552A-TPR01, "Plan horario trabajo diario
JU LIKE T552A-TPR01, "Plan horario trabajo diario
VI LIKE T552A-TPR01, "Plan horario trabajo diario
SA LIKE T552A-TPR01, "Plan horario trabajo diario
DO LIKE T552A-TPR01, "Plan horario trabajo diario
END OF turnos.
* TYPE TURNOS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TYPE SOCIO *
TYPES: BEGIN OF socio,
NUMERO LIKE PERNR-PERNR, "Número de personal
REPOSICION LIKE PA0050-ZAUVE, "Versión identificación
NOMBRE LIKE PA0002-VORNA, "Nombre de pila
turnos TYPE turnos,
END OF socio.
* TYPE SOCIO *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* ESTRUCTURA ACCESOS *
DATA: BEGIN OF accesos OCCURS 0,
socio TYPE socio,
END OF accesos.
* ESTRUCTURA ACCESOS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* START OF SELECTION *
START-OF-SELECTION.
PERFORM llena_accesos.
PERFORM descarga_xml.
END-OF-SELECTION.
* END OF SELECTION *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FORM LLENA_ACCESOS *
FORM llena_accesos.
REFRESH accesos.
CLEAR accesos.
MOVE: '45050' TO accesos-socio-numero,
'MOISES MORENO' TO accesos-socio-nombre,
'0' TO accesos-socio-reposicion,
'T1' TO accesos-socio-turnos-lu,
'T2' TO accesos-socio-turnos-ma,
'T3' TO accesos-socio-turnos-mi,
'T4' TO accesos-socio-turnos-ju,
'T5' TO accesos-socio-turnos-vi,
'T6' TO accesos-socio-turnos-sa,
'T7' TO accesos-socio-turnos-do.
APPEND accesos.
CLEAR accesos.
MOVE: '45051' TO accesos-socio-numero,
'RUTH PEÑA' TO accesos-socio-nombre,
'0' TO accesos-socio-reposicion,
'T1' TO accesos-socio-turnos-lu,
'T2' TO accesos-socio-turnos-ma,
'T3' TO accesos-socio-turnos-mi,
'T4' TO accesos-socio-turnos-ju,
'T5' TO accesos-socio-turnos-vi,
'T6' TO accesos-socio-turnos-sa,
'T7' TO accesos-socio-turnos-do.
APPEND accesos.
ENDFORM.
* FORM LLENA_ACCESOS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FORM DESCARGA_XML *
FORM descarga_xml.
DATA: l_dom TYPE REF TO if_ixml_element,
m_document TYPE REF TO if_ixml_document,
g_ixml TYPE REF TO if_ixml,
w_string TYPE xstring,
w_size TYPE i,
w_result TYPE i,
w_line TYPE string,
it_xml TYPE dcxmllines,
s_xml LIKE LINE OF it_xml,
w_rc LIKE SY-SUBRC.
DATA: xml TYPE dcxmllines.
DATA: rc TYPE SY-SUBRC,
BEGIN OF xml_tab OCCURS 0,
d LIKE LINE OF xml,
END OF xml_tab.
CLASS cl_ixml DEFINITION LOAD.
g_ixml = cl_ixml=>create( ).
CHECK NOT g_ixml IS INITIAL.
m_document = g_ixml->create_document( ).
CHECK NOT m_document IS INITIAL.
WRITE: / 'Converting DATA TO DOM 1:'.
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'ACCESOS'
dataobject = accesos[]
IMPORTING
data_as_dom = l_dom
CHANGING
document = m_document
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE 'Ok'.
ELSE.
WRITE:: 'Err =',
SY-SUBRC.
ENDIF.
CHECK NOT l_dom IS INITIAL.
w_rc = m_document->append_child( new_child = l_dom ).
IF w_rc IS INITIAL.
WRITE 'Ok'.
ELSE.
WRITE:: 'Err =',
w_rc.
ENDIF.
CALL FUNCTION 'SDIXML_DOM_TO_XML'
EXPORTING
document = m_document
IMPORTING
xml_as_string = w_string
size = w_size
TABLES
xml_as_table = it_xml
EXCEPTIONS
no_document = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE 'Ok'.
ELSE.
WRITE:: 'Err =',
SY-SUBRC.
ENDIF.
LOOP AT it_xml INTO xml_tab-d.
APPEND xml_tab.
ENDLOOP.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
bin_filesize = w_size
filename = gk_ruta
filetype = 'BIN'
TABLES
data_tab = xml_tab
EXCEPTIONS
OTHERS = 10.
IF SY-SUBRC <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
|