메뉴 건너뛰기

SAP 한국 커뮤니티



internal table to an XML file

BlackBean 2007.06.04 16:39 조회 수 : 5036

이터널테이블의 내용을 XML로 변환하는 예제입니다.


 


 


This program exports an internal table to an XML file. *----------------------------------------------------------------------*
 * Report ZPRUEBA_MML_13 *
 * 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,
     MA LIKE T552A-TPR01,
     MI LIKE T552A-TPR01,
     JU LIKE T552A-TPR01,
     VI LIKE T552A-TPR01,
     SA LIKE T552A-TPR01,
     DO LIKE T552A-TPR01,
 END OF TURNOS.
 * TYPE TURNOS *
 *----------------------------------------------------------------------*
 
 *----------------------------------------------------------------------*
 * TYPE SOCIO *
 TYPES: BEGIN OF SOCIO,
     NUMERO LIKE PERNR-PERNR,
     REPOSICION LIKE PA0050-ZAUVE,
     NOMBRE LIKE PA0002-VORNA,
     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.
 * FORM DESCARGA_XML *
 *----------------------------------------------------------------------*