Ver Mensaje Individual
  #3  
Viejo 02/11/10, 15:18:43
agv1976 agv1976 is offline
Member
 
Fecha de Ingreso: jun 2006
Mensajes: 66
Mira el codigo espero te sirva

*&---------------------------------------------------------------------*
*& Report ZARAMOS03 *
*& *
*&---------------------------------------------------------------------*
*& Carga de fichero XML para posterior conversión mediante el XSLT *
*& *
*&---------------------------------------------------------------------*

REPORT ZARAMOS03 .
*
parameters: p_file(100)
* default '/sapinterfaces/sd/SIT/historia/'
lower case
* obligatory
.
parameters: p_visu as checkbox.

data: d_path type string.
data: l_string type string.
data: lv_xml type xstring.
data: it_file(1024) type x occurs 0 with header line .
DATA: lt_orders TYPE zsdbl_salesorder_table. " Para XSLT



d_path = p_file.

*

if p_file is not initial.

***************************
* Abre y carga el fichero
OPEN DATASET d_path FOR INPUT IN BINARY MODE.

IF sy-subrc <> 0.
WRITE: / 'ERROR: No se pudo abrir el fichero de datos ',
d_path.
EXIT.
ENDIF.

* Lectura del fichero
READ DATASET d_path INTO lv_xml.
*
CLOSE DATASET d_path.

else.

CALL FUNCTION 'UPLOAD'
TABLES
DATA_TAB = it_file
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* Mover al String.
clear lv_xml.
loop at it_file.
**
** concatenate l_string it_file into l_string.
CONCATENATE lv_xml it_file INTO lv_xml IN BYTE MODE.
endloop.
***
** CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
** EXPORTING
** TEXT = l_string
*** MIMETYPE = ' '
*** ENCODING =
** IMPORTING
** BUFFER = lv_xml
** EXCEPTIONS
** FAILED = 1
** OTHERS = 2
** .
** IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
** ENDIF.


endif.



************************************
* TRANSFORMACION
************************************
TRY.

if p_file is not initial.

CALL TRANSFORMATION zxslt_admisiones_abap
SOURCE XML lv_xml
RESULT order_list = lt_orders.
else.
CALL TRANSFORMATION zxslt_admisiones_abap
SOURCE XML lv_xml
RESULT order_list = lt_orders.

endif.

CATCH cx_xslt_exception.
WRITE: / 'ERROR: No se pudo hacer la transformación'.

ENDTRY.

Break e001127.

if p_visu = 'X'.

DATA: lo_document TYPE REF TO if_ixml_document.


CALL FUNCTION 'SDIXML_XML_TO_DOM'
EXPORTING
xml = lv_xml
IMPORTING
document = lo_document
EXCEPTIONS
invalid_input.

IF sy-subrc EQ 0.
CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'
EXPORTING
document = lo_document
EXCEPTIONS
no_document = 1
OTHERS = 2.
endif.
endif.
Responder Con Cita