Transferencia de Datos
Transferencia de Datos
Transferencia de Datos
Sistema R / 3.
ABAP / 4.
Transferencia de datos.
Enero de 2019
Índice
An Indra company 2
1. Introducción a los Batch Inputs
Cambiando el sistema estándar SAP
Visión general de las tareas
Las razones para transferir datos sin que exista diálogo interactivo con el usuario son:
- Los ficheros son grandes y ya existen sobre un soporte de datos electrónico.
- Los datos son transferidos a otro sistema y sólo entonces son importados al sistema SAP.
No se debe transferir datos externos directamente a la base de datos SAP. Antes deben ser chequeados.
Grandes cantidades de datos son transferidas al sistema SAP usando BATCH INPUT.
Batch input es un procedimiento automático. A menudo es conocido como BDC (Batch data Communication).
Para garantizar la consistencia, los datos transferidos están sujetos a las mismas comprobaciones y
modificaciones que los datos proporcionados interactivamente por el usuario. Por ejemplo: comprobaciones
de formato, comprobaciones automáticas de rango de valores (contra tablas de chequeo o rango de valores),
conversión de datos de usuarios a datos de programa y viceversa, y valores de campos por defecto.
Los datos transferidos son almacenados temporalmente en forma de ‘sesiones batch input’ en un ‘fichero
cola’. Una sesión de batch input es un conjunto de transacciones.
Un diálogo de usuario es simulado en un procedimiento batch input.
En el sistema SAP, los procesamientos de diálogo y en background son controlados por programas de
pantallas.
Un programa de pantalla controla un paso de diálogo.
Los componentes de un paso de diálogo son:
- Un PBO ( Process Before Output), evento que prepara la pantalla para visualizarla.
- La entrada del usuario.
- Un PAI (Process After Input), evento que procesa la entrada del usuario.
Batch input o BDC es un procedimiento automático para transferir datos al sistema SAP sin que exista diálogo.
Un diálogo de usuario es simulado para este procedimiento para que las mismas comprobaciones y
modificaciones sean ejecutadas.
Un componente central de este procedimiento es el ‘ fichero cola’.
Para cargar los datos en las bases de datos SAP, Se debe procesar las sesiones con la función batch input
(System -> Services -> Batch input, Transacción SM35).
An Indra company 3
Programa Batch Input
Los datos son transferidos al ‘fichero cola’ por programas batch input.
Estos programas ejecutan las siguientes funciones:
- Proporcionan áreas de trabajo, estructuradas en forma de tabla interna (tabla BDC), para los datos
que van a ser transferidos.
- Leen los datos.
- Colocan los datos en la tabla BDC.
- Transfieren la tabla BDC llena al ‘fichero cola’.
- La tabla BDC recibe la entrada para las transacciones de transferencia de datos.
Una sesión batch input consta de una parte de cabecera y una parte de datos. La parte de cabecera es
almacenada en la estructura APQI del Diccionario ABAP/4 y la parte de datos es almacenada en la estructura
APQD.
Existen módulos de función (grupo de función SBDC) disponibles para crear sesiones batch input.
An Indra company 4
- HOLDDATE (fecha inicial de comienzo de sesión),
- KEEP indica si la sesión debería ser borrada tras su procesamiento,
- KEEP=’ ‘: Borrar sesión (valor por defecto),
- KEEP=’X’: No borrar sesión.
Se reciben varios valores de retorno vía EXCEPCIONES. Se pueden leer con SY-SUBRC.
El usuario siempre debe ser especificado. El tipo de usuario debería ser BDC.
En el procesamiento On-Line, el usuario On-Line (y no el nombre de usuario especificado), es usado para la
comprobación de autorizaciones.
Se usa el módulo de función BDC_INSERT para insertar los datos para una transacción en una sesión.
Para transferir los datos, se requiere una tabla interna (tabla BDC).
Se debe especificar los siguientes parámetros:
- TCODE (código de transacción),
- DYNPROTAB (tabla BDC).
Tabla BDC
Se declara la tabla BDC como una tabla interna con la estructura ‘BDCDATA’ del Diccionario ABAP/4.
El campo FVAL de la tabla BDC distingue entre mayúsculas y minúsculas, pero los campos PROGRAM y
FNAM no.
La tabla BDC es llenada línea a línea. Al igual que con las tablas internas, esto se hace con las sentencias
MOVE y APPEND.
Los campos de la cabecera de la tabla deberían ser reseteados a su valor inicial con CLEAR.
An Indra company 5
Se reciben los distintos valores de retorno vía EXCEPCIONES. Se puede usar SY-SUBRC para evaluar el
código de retorno de la excepción.
La función de aplicación ‘Modificar datos cliente’ (Transacción TFBA) muestra la creación de un programa
BDC.
Aquí, la dirección de un cliente puede ser modificada.
Antes de escribir un programa BDC para una función de aplicación, se debe conocer dicha función de
aplicación (para que el programa BDC pueda simularla).
En el Screen Painter (elegimos Herramientas -> Workbench ABAP/4 -> Screen Painter, o llamamos a la
transacción SE51), podemos obtener una lista completa de campos para una pantalla particular. Esta es una
alternativa a la función de ayuda On-Line.
Antes de escribir el programa batch input, se tiene que ejecutar la transacción y anotar los números de
pantalla, la secuencia de pantallas y los nombres de los campos de las pantallas que se van a referenciar
posteriormente en el programa. Se introducen estos datos en la tabla BDC.
El nombre del campo para el código OK es el mismo para todas las pantallas: BDC_OKCODE. El valor para
el código OK consta de una barra ‘/’ y el número de la tecla de función (p.e. ‘/11’).
Sección de declaración
En la sección de declaración del programa BDC, definimos la tabla BDC y una estructura para introducir los
datos.
An Indra company 6
Funcionalidad de la transacción SM35
Podemos procesar sesiones con la función Batch input (elegimos Sistema -> Servicios -> Batch Input, o
llamamos a la transacción SM35). La información que se proporciona en el Status es la secuencia de
pantallas, los contenidos de la pantalla, el usuario que está realizando el proceso, el modo de proceso,
servidor, así como el usuario usado para el chequeo de autorizaciones.
La función Modo Experto desactiva los mensajes de error 344 ‘Los datos Batch Input no existen para esta
pantalla’ por proceso de sesión interactivo. Esta opción es de particular interés si queremos irnos a otro
proceso de transacción, que no corresponde a la secuencia de pantallas en el programa batch input.
La función Registro extendido nos permite grabar mensajes W, I y S además de los E. Esta opción está
disponible también si estamos procesando sesiones en fondo.
Cuando procesamos una sesión con la transacción SM35, el sistema usa el código de transacción para buscar
la pantalla inicial. Sólo los datos relevantes de la sesión se copian a esta pantalla inicial.
La siguiente pantalla se procesa entonces. Primero los datos se leen de la base de datos SAP y entonces los
datos de sesión se copian a la pantalla.
Cuando la transacción ha sido procesada, el sistema busca el siguiente código de transacción en la sesión y
empieza la transacción.
Modos de proceso
En el modo ‘Proceso en primer plano’, se muestran todas las pantallas de una transacción. Se aplican las
autorizaciones del usuario realizando el proceso. Si una sesión termina de forma extraña en el modo de test,
podemos usar la función Reinicio para llegar directamente a la vista general de la sesión (donde podemos
reiniciar el proceso).
En el modo ‘Visualizar sólo errores’, las pantallas se muestran sólo cuando ocurre un error. Una transacción
contiene un error si aparece un error tipo E o tipo A. Se aplican las autorizaciones del usuario realizando el
proceso.
En el modo ‘Proceso en fondo’, la sesión se procesa en fondo. Nuestra pantalla está disponible para introducir
datos tan pronto como la sesión haya sido pasada al sistema de control de fondo. Las autorizaciones del
usuario BDC especificadas en la parte de la cabecera de la sesión se aplican.
Cuando procesamos una sesión, el modo de actualización siempre es síncrono (p.e. la siguiente transacción
se llama sólo cuando la actualización para la transacción precedente ha sido completada).
En modo de corrección (‘Proceso en fondo’ o ‘Visualizar sólo errores’), podemos controlar el proceso de
nuestra sesión eligiendo Sistema -> Servicios -> Batch input o introduciendo un comando en el campo de
comandos).
Estado de sesión
An Indra company 7
Creando y procesando sesiones
Cuando creamos programas batch input, debemos tener en cuenta que la creación de sesiones y el proceso
de sesiones tienen lugar en diferentes momentos (t1 y t2). Lo que se procesa en el momento t2 está
planificado ya en el momento t1.
Ejemplo: en el momento t2, el sistema de batch input no puede responder a los mensajes de diálogo (excepto
a través de la entrada de usuario en el modo de corrección).
El sistema de batch input no toma ningún parámetro SPA/GPA en el momento t2.
Cuando creamos un programa batch input, debemos saber la transacción en la que está basado.
Ejecutamos la transacción y anotamos los números de pantallas, la secuencia de pantallas y los nombres de
los campos de pantalla que se van a referenciar más tarde en el programa.
Introducimos estos datos en la tabla BDC.
La transacción TCF2 es usada para modificar la tabla SFLIGHT añadiendo nuevos datos de vuelos.
An Indra company 8
Creación de Sesiones: Parte de declaración
Creación de Sesiones
Campos Especiales
En un programa batch input, se puede direccionar el OK code, los campos del Table Control/Loop y el cursor.
Al llenar la tabla BDC se aplican las siguientes reglas:
El nombre del campo para el OK code es siempre ‘BDC_OKCODE’.
Un campo de un Table Control/Loop debe tener un número válido de línea.
El nombre del campo para el cursor es ‘BDC_CURSOR’.
En el procesamiento batch input, se puede finalizar una transacción de dos formas: a través de una
modificación, o retornando al menú principal del SAP.
Una transacción no soporta batch input si ha comenzado con LEAVE TO TRANSACTION <código de
transacción>, con CALL TRANSACTION <código de transacción> o con ‘/n<código de transacción>’ en el
campo de comando.
La función ‘ Delete mode’ no es soportada en batch input.
Report RSBDCSUB
An Indra company 9
Autorizaciones para el procesamiento batch input
Cuando el procedimiento batch input es usado para importar datos desde un sistema cliente, el programa
batch input generalmente transfiere los datos desde un fichero secuencial.
Se crea el fichero secuencial con un programa de transferencia del cliente. Luego, se usa un programa batch
input (el programa de transferencia de SAP) para transferir los datos desde el fichero secuencial al ‘fichero
cola’ de SAP.
El sistema SAP ofrece programas batch input estándares para muchos casos de transferencia de datos. Esto
significa que no se tiene que escribir un programa batch input propio. Sin embargo, los datos que se
proporcionan deben ajustarse al formato predefinido de SAP.
Los registros de datos de un fichero secuencial deben tener un formato que pueda ser leído por un programa
batch input estándar de SAP.
Las aplicaciones proporcionan descripciones de las estructuras para los programas batch input estándar de
SAP en el Diccionario de ABAP/4.
Las descripciones de las estructuras y la estructura del fichero secuencial dependen de la aplicación. Éstas
están descritas en la documentación de los programas batch input estándar de SAP.
Ejemplo: En Contabilidad Financiera, hay tres tipos diferentes de registros de datos:
Tipo 0: Datos de cabecera de sesión (Por ejemplo: nombre de sesión).
Tipo 1: Datos de cabecera de transacción (Por ejemplo: código de transacción).
Tipo 2: Datos de la tabla SAP (Por ejemplo: nombre de la tabla, nombre del campo, contenidos del campo,...)
Análisis de datos
An Indra company 10
Programa de transferencia
Inicialización y conversión
Para cada campo pasado en la estructura batch input, se deberá tomar una decisión en función de si el valor
del campo es inicial o si el batch input no es necesario para este campo.
Si los datos batch input no son asignados a ningún campo en el sistema SAP, el programa estándar batch
input espera un carácter especial (etiqueta NODATA). El carácter especial por defecto es ‘/’, pero se puede
definir su propio carácter con el campo BGR00-NODATA. Luego, deberás inicializar las estructuras batch
input de SAP con este carácter especial.
Si los campos con las estructuras antiguas son de una longitud o tipo diferente a los campos con las
estructuras SAP, el programa de transferencia debe realizar las conversiones. Los campos con las estructuras
batch input de SAP son siempre tipo C.
Existen otras tareas que los programas de transferencia del cliente pueden realizar. Ejemplos:
Comprobaciones de los datos del cliente (para ver si los datos deberían ser en realidad transferidos, por
ejemplo). Conversión de datos de acuerdo con reglas definidas. Escritura de los datos incorrectos en una
tabla de error del cliente después del chequeo de datos.
Como alternativa al batch input, hay programas de aplicaciones específicas que usan la técnica del direct
input. Cuando transfieres grandes volúmenes de datos (más de 10000 transacciones), se puede conseguir
una mejora considerable en la ejecución usando direct input.
Al igual que usando CALL TRANSACTION el direct input conlleva una modificación inmediata de los datos.
Sin embargo, a diferencia del CALL TRANSACTION y del batch input, los datos son importados llamando a
módulos de función que chequean los datos y los transfieren directamente a las tablas. Ya que el direct input
ofrece un mecanismo de reinicio en caso de error, el programa sólo puede correr como ‘background jobs’. Se
controlan y se ejecutan estos jobs con el report RBMVSHOW o con la transacción BMV0.
An Indra company 11
3. Call Transaction. Grabación de Batch Inputs
Vista general
Al contrario que en los batch input, la sentencia CALL TRANSACTION nos permite pasar datos directamente
a las interfaces de diálogo (sin usar un fichero de cola). Para almacenar datos temporalmente, usamos una
tabla interna (una tabla BDC que tiene la misma estructura que la del batch input). Entonces, llamamos a la
transacción deseada en nuestro programa y el sistema copia los datos temporalmente almacenados en la
tabla BDC a las pantallas de la transacción.
Como en los batch input, podemos elegir un modo de visualización particular para procesar la transacción.
Al contrario que en los batch input, podemos especificar un modo de actualización. En procesos de
actualización asíncronos, la transacción llamada no espera a que la base de datos actualice, sino que pasa
la actualización a la tarea de actualización. En procesos de actualización síncronos, espera hasta que la
actualización se ha completado. Aunque la actualización asíncrona es más lenta, es más segura porque la
transacción llamada puede informar de errores al programa llamado. En batch input, el modo de actualización
es siempre ‘S’ (síncrono).
Los parámetros MODE y UPDATE son opcionales. Por defecto, ambos tienen ‘A’ (asíncrono).
La opción MESSAGES INTO <messtab> nos permite almacenar cualquier mensaje de salida por la
transacción llamada en una tabla interna. La tabla interna <messtab> debe tener la estructura BDCMSGCOLL.
Para encontrar si el proceso de la transacción llamada ha sido satisfactorio o no, podemos leer el valor del
código de retorno. Hay también otros campos de sistema que contienen el número, ID, tipo y variable del
mensaje de diálogo mostrado por la transacción llamada. Podemos usar esta información para visualizar el
texto del mensaje.
Si queremos ver todos los mensajes mostrados por la transacción, debemos usar la opción MESSAGES INTO
<messtab> y entonces evaluar los contenidos de <messtab>.
Mensajes de salida
La sentencia MESSAGE nos permite mostrar un mensaje de diálogo de la transacción llamada a través del
programa llamado.
Sin embargo, el mensaje que informa del éxito o fallo del proceso se muestra automáticamente. Se
recomienda usar la sentencia MESSAGE si ejecutamos el programa en fondo. En este caso, el mensaje se
ve en el registro.
An Indra company 12
Batch Input / CALL TRANSACTION - Resumen
Los Batch Input y la sentencia CALL TRANSACTION son dos opciones diferentes para copiar datos a
pantallas en una transacción de aplicación.
Batch Input CALL
TRANSACTION
Código de retorno No Sí
Registro de errores Sí No
Proceso Después de un tiempo Inmediatamente
Los programas de ABAP/4 corren sobre la aplicación servidor y tienen acceso a sus ficheros secuenciales.
También se puede usar un programa de ABAP/4 para procesar ficheros locales (que pertenecen a la
presentación servidor).
Se procesan ficheros secuenciales sobre la aplicación servidor en programas de ABAP/4 con las sentencias
READ DATASET y TRANSFER, las cuales nos permiten copiar datos desde/a un campo cadena.
Se procesan ficheros secuenciales locales sobre la presentación servidor con (UPLOAD y DOWNLOAD)
módulos de función. Éstos copian datos desde/a una tabla interna.
DOWNLOAD y UPLOAD
El módulo de función DOWNLOAD baja el contenido de una tabla interna a un fichero secuencial local.
El módulo de función UPLOAD sube el contenido de un fichero secuencial local a una tabla interna.
Para el fichero local, Se debe especificar el nombre absoluto. El directorio debe ser conocido en la
presentación servidor. La elección de un nombre de fichero adecuado es responsabilidad del cliente.
El sistema requiere el nombre del fichero y el tipo de fichero interactivamente.
Los datos son convertidos de acuerdo con el tipo de fichero.
Para el módulo de función DOWNLOAD, se necesita una tabla interna para transferir los datos. Se define esta
tabla de acuerdo con las estructuras de datos, al principio del programa, y luego se llenan con datos.
Se usa el parámetro MODE para definir el modo de escritura (‘A’ para ampliar un fichero, ‘ ‘ para crear uno
nuevo).
La especificación de valores por defecto para el nombre de fichero, el tipo y la cabecera, para el diálogo de
fichero, es opcional.
Los parámetros IMPORT especifican los valores introducidos realmente por el usuario para el nombre de
fichero, el tipo de fichero, y el número de bytes bajados.
Sólo se especifica un valor para el parámetro de exportación CODEPAGE cuando se realiza un DOWNLOAD
a DOS (el único valor posible es ‘IBM’). En otro caso este parámetro no se usa.
Todos los parámetros de exportación son opcionales.
An Indra company 13
Si se quiere generar un fichero binario, se debe especificar la longitud del fichero. En este caso, la tabla de
transferencia debe constar de una columna de tipo ‘X’.
Formatos
Con UPLOAD y DOWNLOAD, otros formatos disponibles para la conversión aparte de ASC (ASCII) y BIN
(binario) es DAT para Excel. Con DOWNLOAD, WK1 está también disponible para Excel y Lotus.
Para el formato DAT, las columnas de las tablas están separadas por tabuladores, y las líneas, por retornos
de carros.
Para el formato WK1, los datos de una tabla son introducidos en una hoja de cálculo específica de WK1.
Para el módulo de función UPLOAD, se necesita una tabla interna para transferir los datos. Se define esta
tabla de acuerdo a las estructuras de datos, al principio del programa.
La especificación de valores por defecto para el nombre de fichero, el tipo y la cabecera, para el diálogo de
fichero, es opcional.
Sólo se especifica un valor para el parámetro de exportación CODEPAGE cuando se realiza un DOWNLOAD
a DOS (el único valor posible es ‘IBM’). En otro caso este parámetro no se usa.
Cuando hacemos DOWNLOAD, es suficiente bajar la tabla con los datos para el fichero. Sin embargo, también
se puede especificar valores por defecto para el nombre de fichero, el tipo y la cabecera, para el diálogo de
fichero. Si no se hace ninguna especificación acerca del modo, el fichero es siempre re-creado (Parámetro
MODE= ‘ ‘).
Se puede hacer DOWNLOAD desde un listado (eligiendo Sistema -> Listado -> Grabar -> Fichero local) o
desde el editor de ABAP/4 para bajar un listado o un programa de ABAP/4 a un fichero local.
Este proceso soporta varios formatos.
Se puede hacer UPLOAD desde el editor ABAP/4 para subir un programa de ABAP/4 desde un fichero local
al editor ABAP/4.
Se puede usar READ DATASET y DOWNLOAD para copiar los contenidos de un fichero secuencial a un
fichero secuencial local vía una tabla interna.
Del mismo modo, se puede usar UPLOAD y TRANSFER para transferir datos desde un fichero secuencial
local a un fichero secuencial.
Los módulos de función UPLOAD y DOWNLOAD constituyen una forma adecuada para procesar ficheros
locales, ya que realizan todas las actividades necesarias de forma automática. El usuario debe proporcionar,
interactivamente, el nombre y el tipo de fichero.
Existen, también, otros módulos de función para procesar ficheros:
An Indra company 14
WS_DOWNLOAD y WS_UPLOAD: Como DOWNLOAD / UPLOAD, excepto que el nombre y el tipo del fichero
no son especificados interactivamente, y las excepciones deben ser manejadas por el programa que llama.
WS_QUERY: Comprueba la existencia y tamaño de un fichero, además de otras variables de entorno.
WS_EXECUTE: Comienza un programa sobre la presentación servidor.
Ficheros secuenciales
Visión general
Se pueden procesar ficheros secuenciales con la sentencia READ DATASET (para operaciones de lectura) y
TRANSFER (para operaciones de escritura).
El fichero secuencial debe ser visible a la aplicación servidor. Los ficheros en la presentación servidor actual
no pueden ser procesados con TRANSFER o READ DATASET.
Los ficheros secuenciales son una interface entre un sistema cliente y el sistema R/3.
Los ficheros secuenciales son el medio para importar datos desde un sistema cliente al sistema R/3 y para
exportar datos desde el sistema R/3 a un sistema cliente.
Procesamiento de ficheros
Antes de que los registros de datos puedan ser escritos o leídos desde un fichero secuencial, el fichero debe
ser abierto.
Después del procesamiento, el fichero debe ser cerrado.
En el programa, se llama al fichero por su nombre absoluto. El nombre absoluto consta del camino exacto y
del nombre del fichero actual.
El formato de los nombres de los ficheros depende en gran medida del Sistema Operativo.
Abriendo un fichero
Para abrir un fichero, se usa la sentencia OPEN DATASET <nombre fichero>. La variable sy-subrc valdrá 0
si la operación se realizó sin problemas. En otro caso, tomará el valor 8. Los errores son ignorados.
Si no se especifica nada, el fichero es abierto para lectura.
Opciones posibles:
- FOR OUTPUT: Abre el fichero para escritura. Si el fichero ya existe, su contenido es borrado, pero
esto sólo se aplica una vez finalizado el programa. Si la sentencia aparece en el programa, el cursor
simplemente se posiciona al principio del fichero. Se debe especificar CLOSE DATASET para que el
fichero sea borrado. Si el fichero no existe, es generado.
- FOR INPUT: Abre un fichero existente para lectura. Si el fichero ya está abierto, el cursor es
posicionado al principio. No tiene que especificar FOR INPUT explícitamente.
- FOR APPENDING: Abre el fichero para escribir al final del mismo. Si el fichero no existe, es
generado. Si el fichero ya está abierto, el cursor es posicionado al final.
An Indra company 15
Abriendo un fichero (Modo texto y binario)
En modo texto, el carácter fin de línea específico del sistema operativo es establecido después de cada
registro de datos.
Los blancos al final de cada registro de datos no son suprimidos en modo texto.
An Indra company 16
Lectura de registros de datos
Cada sentencia READ DATASET lee un registro desde un fichero secuencial a un campo o a una estructura.
Algunas estructuras posibles son campos cadena o áreas de trabajo de tablas.
La ejecución de la sentencia READ DATASET depende del modo:
- Modo Binario: Lee la longitud de la estructura.
- Modo Texto: Lee una línea.
Si el fichero especificado no está abierto, READ DATASET intenta abrirlo (IN BINARY MODE FOR INPUT o
con las opciones de la última sentencia OPEN DATASET para este fichero).
Si hemos alcanzado el final del fichero, SY-SUBRC vale 4. En otro caso, vale 0. Si el fichero no ha podido ser
abierto, SY-SUBRC vale 8. Los errores provocan la terminación del programa.
READ DATASET, al igual que TRANSFER, no realiza conversiones implícitamente. Los datos son leídos tal
y como fueron escritos.
El parámetro adicional LENGTH <length> de la sentencia READ DATASET nos permite especificar una
longitud en bytes (con el formato READ DATASET <filename> INTO <structure> LENGTH <length>). En este
caso, el número exacto de caracteres especificado en <length> es leído desde el registro de datos a la
estructura. Si la estructura es más corta, el registro es rellenado (con blancos en modo texto y ceros en
hexadecimal en modo binario). Si la estructura es más larga, el registro es truncado.
Usamos la sentencia CLOSE DATASET <filename> para cerrar un fichero secuencial explícitamente.
Al igual que ocurría con OPEN DATASET, los errores son ignorados.
En un programa, todos los ficheros abiertos son implícitamente cerrados cada vez que la pantalla cambia, y
luego son reabiertos exactamente donde estaban, cuando se reanuda el proceso.
Al finalizar un programa, todos los ficheros son cerrados.
Abrir y cerrar ficheros explícitamente mejora la legibilidad. Otra ventaja de usar OPEN DATASET es que se
puede usar la adición MESSAGE para evitar que un programa termine si se produce un error al abrir el fichero
(SY-SUBRC = 8). Además, se debería tener en cuenta, que en los casos en que un fichero es leído, o
generado y leído, varias veces en el mismo report, sólo abrir y cerrar ficheros explícitamente garantiza que el
cursor sea reposicionado al principio del mismo.
Un fichero no es cerrado implícitamente cuando la sentencia READ DATASET alcanza el final del fichero.
Se puede usar la sentencia DELETE DATASET <filename> para borrar un fichero secuencial explícitamente.
Si la operación se realiza sin problemas, SY-SUBRC toma el valor 0.
Se puede mostrar el estado actual del fichero en debugging eligiendo GOTO -> SYSTEM -> SYSTEM AREAS
y luego seleccionando DATASETS.
An Indra company 17
También se puede usar estructuras del Diccionario de ABAP/4 para transferir datos. Para hacer esto,
declaramos las estructuras con TABLES.
Luego, en el programa, se puede hacer lo siguiente:
Usar el área de trabajo declarada con TABLES.
Copiar la estructura, para su variable cadena, con INCLUDE STRUCTURE.
Se puede visualizar la estructura del Diccionario de ABAP/4 en el editor de ABAP/4 con el comando
SHOW.
Para añadir registros de datos al final de un fichero, se usa la adición FOR APPENDING de la sentencia
OPEN DATASET.
En un programa de procesamiento de ficheros, primero se definen las estructuras requeridas para los registros
de datos con las sentencias TABLES o DATA. El programa usa estas estructuras como buffers internos para
los registros de datos.
Luego, se abre el fichero secuencial para lectura o escritura con la sentencia OPEN.
Cuando se escribe en el fichero, se transfieren las estructuras llenas al fichero con la sentencia TRANSFER.
Cuando se lee del fichero, se llenan las estructuras con READ DATASET.
Para cerrar el fichero secuencial, se abandona el procesamiento del fichero con la sentencia CLOSE
DATASET.
An Indra company 18
An Indra company
Persona de contacto
pgarciap@minsait.com