#3
|
|||
|
|||
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|