Introducción
Los archivos se manejan de manera diferente cuando están en el servidor de aplicaciones o en el servidor de presentación
Los archivos pueden procesarse en 2 modos, ya sea texto (en una codificación determinada) o binario (generado por un software como Microsoft Office, Adobe Acrobat, etc.) Desde ABAP, puede escribir y leer directamente archivos de texto, mientras que los archivos binarios pueden solo debe ser escrito y leído por el software. El modo se elige al abrir el archivo.
Trabajando con archivos en el servidor de aplicaciones
- El código de transacción AL11 lo lleva al servidor de aplicaciones en el que encuentra los directorios sap y los archivos dentro de los directorios. El botón de configuración en la pantalla principal se puede usar para crear y administrar enlaces a directorios existentes.
- Los archivos pueden procesarse de 2 maneras, decididas en la declaración OPEN DATASET: ya sea como archivos de texto con una codificación dada (adiciones EN MODO DE TEXTO, CODIFICACIÓN y PÁGINA DE CÓDIGOS), o como archivos binarios (adición en MODO BINARIO).
Cómo crear o escribir en un archivo
Utilice las declaraciones ABAP DATASET ABIERTO con la palabra clave FOR OUTPUT, TRANSFER, CLOSE DATASET.
Cómo leer un archivo
Utilice las declaraciones ABAP ABRIR DATASET con la palabra clave FOR INPUT, READ DATASET y CLOSE DATASET.
Comprobando la existencia del archivo
- ya sea el módulo de función OCS_GET_FILE_INFO
- o la declaración ABAP «OPEN DATASET»
Cómo obtener una lista de archivos en un directorio
Para leer los nombres de los archivos presentes en una ruta particular en el servidor de aplicaciones, podemos usar los módulos de función SUBST_GET_FILE_LIST o EPS_GET_DIRECTORY_LISTING.
¿Existe una ayuda de búsqueda para seleccionar un archivo?
- El módulo de función F4_DXFILENAME_TOPRECURSION puede usarse para mostrar una ayuda de búsqueda para elegir un archivo
- Retazo
Mejores prácticas
En lugar de codificar los nombres de archivo, es posible definir nombres genéricos que se denominan «nombres de archivo lógicos». Se pueden definir usando el código de transacción FILE, y usar el módulo de función FILE_GET_NAME.
Diverso
- contribución sdn: acceso a archivos del lado del servidor ABAP, por Thomas Jung (clase ZCL_ES_SERVER_FILE_ACCESS)
- Nota 752859: sapiconv: una herramienta para convertir la codificación de archivos
Trabajando con archivos en el servidor de presentación
Cómo crear o escribir un archivo
- ya sea Snippet del módulo de funciones GUI_DOWNLOAD
- o CL_GUI_FRONTEND_SERVICES => GUI_DOWNLOAD método
de fragmentos - Nota: los módulos de función DOWNLOAD y WS_DOWNLOAD están obsoletos
Cómo leer un archivo
- ya sea Snippet del módulo de funciones GUI_UPLOAD
- o CL_GUI_FRONTEND_SERVICES => método GUI_UPLOAD
- Nota: los módulos de función UPLOAD y WS_UPLOAD están obsoletos
Comprobando la existencia del archivo
- ya sea el módulo de función DX_FILE_EXISTENCE_CHECK
- o CL_GUI_FRONTEND_SERVICES => método FILE_EXIST
Cómo obtener una lista de archivos en un directorio
- ya sea el módulo de función TMP_GUI_DIRECTORY_LIST_FILES
- o CL_GUI_FRONTEND_SERVICES => método DIRECTORY_LIST_FILES
¿Existe una ayuda de búsqueda para seleccionar un archivo o directorio?
Para seleccionar un archivo * «, puede usar:
- Método CL_GUI_FRONTEND_SERVICES => FILE_OPEN_DIALOG (Base, 4.6 y posteriores): muestra la lista como una ventana emergente con el título «Abrir» y devuelve el nombre del archivo seleccionado
- Método CL_GUI_FRONTEND_SERVICES => FILE_SAVE_DIALOG (base, 4.6 y posteriores): muestra la lista como una ventana emergente con el título «Guardar» y devuelve el nombre del fragmento de archivo seleccionado
- Módulo de función WS_FILENAME_GET (Base, cualquier versión)
- Módulo de función F4_FILENAME (solo R / 3 y ECC)
Para seleccionar un directorio , puede usar:
- CL_GUI_FRONTEND_SERVICES => Método DIRECTORY_BROWSE
¿Es posible trabajar en segundo plano?
No, esta funcionalidad no se proporciona porque los servidores de presentación pueden apagarse en cualquier momento sin garantía.
Las soluciones pueden ser:
- Trabajar con archivos en el servidor de aplicaciones. El usuario puede copiar archivos desde o hacia el servidor de aplicaciones cuando está conectado
- Si toma la decisión de hacer que el servidor de presentación funcione como un servidor (siempre la misma computadora, y estaría encendido), considere que es un servidor RFC.
Diverso
- La clase CL_GUI_FRONTEND_SERVICES proporciona muchos otros métodos sobre archivos
Copiar desde el servidor a la interfaz o viceversa
- CL_GUI_FRONTEND_SERVICES => método FILE_COPY
- Comandante de SAP
- R / 3 y ECC: códigos de transacción CG3Y (del servidor a la interfaz) y CG3Z (de la interfaz al servidor)
Compresión de archivos (zip)
- La clase CL_ABAP_ZIP se puede usar para leer o escribir un archivo comprimido.
- En el servidor de aplicaciones, la instrucción OPEN DATASET se puede usar con la adición de FILTER para comprimir o descomprimir
Nota: también existe la clase CL_ABAP_GZIP, pero no se puede usar para procesar archivos, solo se puede usar para comprimir o descomprimir datos en la memoria.
Trabajando con archivos especiales
Tipos de archivo de Excel
Ver tipos de archivos de Excel (CSV, XML, XSLX, OLE)
OLE / DOI para archivos nativos de Office (Excel, Word, etc.)
- Cuando un usuario está conectado a SAP a través de SAPGUI para Windows, puede usar declaraciones OLE ABAP (consulte la documentación de ABAP) o el marco de integración de Desktop Office (también usa OLE).
- No es posible usar OLE o DOI en un programa desconectado de SAPGUI (trabajo en segundo plano, por ejemplo).
- Es posible crear documentos de Office usando archivos XML
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.