TRATAMIENTOS DE FICHEROS EN ABAP: NOMBRE DE LA RUTA SUBIR, SUBIR, ABRIR BAJAR, UPLOAD OPEN CLOSE DOWNLOAD FILES FOLDER LOG

2 08 2010

*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


Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: