*IMPORTANTE - OPTIMIZACION DE CODIGO ISO:
*- LA SENTECIA TABLES ESTA OBSOLETA, NO USAR.
*- VERIFICAR QUE LA FUNCIÓN ESTÉ LIBERADA PARA USARLA.
*La información anterior y más en –> Optimización Código Abap ( Estándar ISO – Best Practices )
*PARA CONSEGUIR LOS TIPOS DE DATOS:
*SE37 poner el nombre de la función, o en el editor picar dos veces sobre la *función y luego: en PARAMETROS, EXPORTING, IMPORTING, TABLES: Mirar el TYPE o* *TYPE REF.
*
***** Pantalla de Selección *****
SELECTION-SCREEN: BEGIN OF BLOCK datos1 WITH FRAME TITLE text-002.
PARAMETER carchivo(128) TYPE c OBLIGATORY. ” Archivo
* PARAMETER carchivo like HRP1000-STEXT OBLIGATORY. ” Archivo
SELECTION-SCREEN: END OF BLOCK datos1.
INITIALIZATION.
clear carchivo2.
break rfrusciante.
IF sy-host = ’rmcadev’.
carchivo = ’/tmp/’.
endif.
IF sy-host EQ ’rmcaqa’.
carchivo = ’/ABAP/INTERFAZ/AVERIAS/TAS/ENTRANTE/’.
concatenate ’AVERIAS’ SY-DATUM SY-UZEIT INTO CARCHIVO2
SEPARATED BY ’_’.
CONCATENATE CARCHIVO CARCHIVO2 ’.txt’ INTO CARCHIVO.
endif.
************************************************************************
* Form LEER_ARCHIVO *
************************************************************************
* Abre la conexión para poder leer el archivo plano. *
************************************************************************
FORM leer_archivo USING p_carchivo.
DATA: filetable TYPE filetable,
wa_filetable LIKE file_table,
filefilter TYPE string,
l_rc TYPE i,
user_action TYPE i,
ls_path TYPE string.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
default_extension = ’txt’
file_filter = filefilter
initial_directory = ls_path
CHANGING
file_table = filetable
rc = l_rc
user_action = user_action
EXCEPTIONS
OTHERS = 1.
IF user_action EQ 0.
READ TABLE filetable INTO wa_filetable INDEX 1.
MOVE: wa_filetable-filename TO p_carchivo.
REFRESH filetable.
ENDIF.
ENDFORM. ” leer_archivo
***********************************************************************
* FORM SUBIRDATOS *
***********************************************************************
* Se extraen los datos contenidos en al archivo plano TAS¨ *
* —-> *
* carchivo: nombre del archivo plano *
* <—- *
* record: Tabla interna con los datos del archivo plano. *
***********************************************************************
FORM subirdatos .
*——Autorizacion para lectura tabla ZCOD_CANCELACION.
*AUTHORITY-CHECK OBJECT ’S_TABU_DIS’
* ID ’DICBERCLS’ FIELD ’ZR02′
* ID ’ACTVT’ FIELD ’03′.
*
* if sy-subrc EQ 4.
* message i920.
* LEAVE TO TRANSACTION SY-TCODE AND SKIP FIRST SCREEN.
* elseif sy-subrc NE 0..
* message i921.
* LEAVE TO TRANSACTION SY-TCODE AND SKIP FIRST SCREEN.
* endif.
translate carchivo to lower case.
IF carchivo IS NOT INITIAL.
open dataset carchivo
for input in text mode encoding default.
if sy-subrc EQ 0.
do.
read dataset carchivo into wa_record.
if sy-subrc NE 0.
exit.
endif.
move-corresponding wa_record to record.
append record.
enddo.
endif.
close dataset carchivo.
*Utilizamos la funcion WS_UPLOAD para traernos los datos del archivo
*plano
* CALL FUNCTION ’WS_UPLOAD’
* EXPORTING
* filename = carchivo
* filetype = ’DAT’
* TABLES
* data_tab = record.
* IF sy-subrc <> 0.
* MESSAGE i368(00) WITH ’No se pudo cargar el archivo 1, verifique’
*.
* error = ’X’.
* ENDIF.
ENDIF.
ENDFORM. ” subirdatos
* CALL FUNCTION ’WS_DOWNLOAD’
* EXPORTING
** BIN_FILESIZE = ’ ’
** CODEPAGE = ’ ’
* filename = carchivo
* filetype = ’DAT’
** filetype = ’WK1′
** MODE = ’ ’
** WK1_N_FORMAT = ’ ’
** WK1_N_SIZE = ’ ’
** WK1_T_FORMAT = ’ ’
** WK1_T_SIZE = ’ ’
** COL_SELECT = ’ ’
** COL_SELECTMASK = ’ ’
** importing
** filelength =
* TABLES
* data_tab = t_itab3
** FIELDNAMES =
* EXCEPTIONS
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_table_width = 4
* invalid_type = 5
* no_batch = 6
* unknown_error = 7
* OTHERS = 8.
************************************************************************
****** ESTRUCTURA RLGRAP NECESARIA PARA LOS ARCHIVOS *****
************************************************************************
DATA: FILETYPE TYPE RLGRAP-FILETYPE.
DATA: P_FICHERO TYPE RLGRAP-FILENAME VALUE ’C:\EDITORIALES.TXT’.
SELECTION-SCREEN BEGIN OF BLOCK B1.
************************************************************************
****** ESTRUCTURA RLGRAP NECESARIA PARA LOS ARCHIVOS *****
************************************************************************
PARAMETER: FICHERO TYPE RLGRAP-FILENAME DEFAULT ’C:\SOCIOS.TXT’.
************************************************************************
SELECTION-SCREEN END OF BLOCK B1.
*Conseguimos LA RUTA DE ACCESO AL FICHERO
*&———————————————————————*
*& Form EXAMINADOR_ARCHIVOS
*&———————————————————————*
* text
*———————————————————————-*
* –>P_FICHERO text
*———————————————————————-*
FORM EXAMINADOR_ARCHIVOS USING P_FICHERO.
CALL FUNCTION ’WS_FILENAME_GET’
EXPORTING
DEF_PATH = ’C:\’
MASK = ’.txt,*.*.’
MODE = ’o’
TITLE = ’Búsqueda del ficheros….’
IMPORTING
FILENAME = P_FICHERO
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
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.
*Conseguimos EL FICHERO, LO CARGAMOS SOBRE UNA TABLA INTERNA.
************************************************************************
****** ’ASC’ -> ASCII *****
************************************************************************
FILETYPE = ’ASC’.
CALL FUNCTION ’WS_UPLOAD’
EXPORTING
FILENAME = P_FICHERO
FILETYPE = FILETYPE
TABLES
DATA_TAB = IT_UPLOAD.
LOOP AT IT_UPLOAD.
WRITE:/ IT_UPLOAD-COD_LIBRO,
IT_UPLOAD-NUM_EJEMPLAR,
IT_UPLOAD-COD_SOCIO,
IT_UPLOAD-FECHA_PRESTAMO,
IT_UPLOAD-FECHA_DEVOLUCION.
ENDLOOP.
ENDFORM.
*Guardamos EL FICHERO CON LA TABLA INTERNA ACTUALIZADA.
************************************************************************
****** ’ASC’ -> ASCII *****
************************************************************************
IT_DOWNLOAD[] = IT_UPLOAD[].
FILETYPE = ’ASC’.
CALL FUNCTION ’WS_DOWNLOAD’
EXPORTING
FILENAME = FICHERO
FILETYPE = FILETYPE
TABLES
DATA_TAB = IT_DOWNLOAD.
LOOP AT IT_SOCIOS.
WRITE:/ IT_SOCIOS-CODSOC, IT_SOCIOS-NOMBRE.
ENDLOOP.
* CALL FUNCTION ’WS_DOWNLOAD’
* EXPORTING
** BIN_FILESIZE = ’ ’
** CODEPAGE = ’ ’
* filename = carchivo
* filetype = ’DAT’
** filetype = ’WK1′
** MODE = ’ ’
** WK1_N_FORMAT = ’ ’
** WK1_N_SIZE = ’ ’
** WK1_T_FORMAT = ’ ’
** WK1_T_SIZE = ’ ’
** COL_SELECT = ’ ’
** COL_SELECTMASK = ’ ’
** importing
** filelength =
* TABLES
* data_tab = t_itab3
** FIELDNAMES =
* EXCEPTIONS
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_table_width = 4
* invalid_type = 5
* no_batch = 6
* unknown_error = 7
* OTHERS = 8.
*ESTO ES EN CASO QUE SE QUIERA TRATAR LA TABLA QUE HAS SUBIDO, ES SOLO UN EJEMPLO, *SE PUEDE TRATAR LA TABLA RECOGIDA DESDE EL FICHERO COMO UNO DESEE.
*&———————————————————————*
*& Form trata_error
*&———————————————————————*
* text
*———————————————————————-*
* –>P_TEXT_E01 text
* –>P_SW_ERR text
*———————————————————————-*
FORM trata_error USING texto sw_e mensaje1 linea mensaje2 Campo valor.
DATA: l TYPE i.
READ TABLE t_file_aux WITH KEY lifnr = t_file-lifnr.
l = STRLEN( t_error-descripcion ) + 1.
t_error-lifnr = t_file_aux-lifnr.
t_error-linea = sy-tabix.
t_error-mensaje1 = ’ linea ’.
t_error-campo = campo.
t_error-mensaje2 = ’ campo ’.
t_error-valor = valor.
MOVE p_texto TO t_error-descripcion+l.
*insert t_error.
APPEND t_error.
CLEAR: t_error, p_texto.
* CONCATENATE p_texto skip WA_T_FILE into t_error-descripcion.
sw_e = ’X’.
“ trata_error
Comentarios