En mi blog anterior, mostré cómo se pueden cargar los datos de un archivo CSV en un backend de SAB Build Apps Visual Cloud Functions (VCF).
Hoy quiero cubrir otro caso de uso: desarrolló una aplicación SAP Build Apps y la ejecutó algunas veces en una subcuenta BTP, guardando datos valiosos en el backend VCF. Ahora necesita migrar su aplicación a otra subcuenta y desea mover también los datos que guardó al backend.
Como mencioné en mi blog anterior, en la actualidad, VCF no brinda la capacidad de cargar o descargar datos masivamente utilizando, por ejemplo, un archivo CSV.
En este artículo, explicaré cómo se pueden descargar datos desde su backend VCF a archivos CSV. Los datos guardados en archivos CSV se pueden utilizar con fines de migración, pero también para diferentes actividades: por ejemplo, puede cargarlos en una hoja de Excel y realizar manipulaciones masivas en ellos.
Comencemos el desarrollo de nuestra aplicación simplemente creando un nuevo proyecto, habilitando la autenticación BTP e instalando la integración con el backend VCF que desea usar. esta entrada de blog explica cómo completar esta tarea (consulte el Habilitación del backend desde la interfaz de usuario sección).
Luego necesitamos instalar un componente adicional del Marketplace, para administrar la descarga del archivo CSV. Esto se puede hacer simplemente haciendo clic en Marketplace:
y buscando «archivo»:
y seleccionando e instalando el componente requerido: «Descargar texto Base64 como archivo (solo web)».
En el lienzo de la interfaz de usuario vacío, solo necesitamos agregar un botón y, tal vez, algún texto que brinde una explicación:
Definimos las variables que necesita la lógica de procesamiento:
Nombre de variable: listas de objetos
Tipo de variable: variable de datos
Esta variable debe definirse para leer una colección de registros desde el backend de VCF:
La lógica de variable de datos predeterminada debe eliminarse, porque queremos que nuestra lógica se ejecute después de presionar el botón, no al cargar la página inicial.
Solo se necesita declarar otra variable:
Nombre de variable: texto convertido
Tipo de variable: texto.
Aquí siguiendo la lógica a ser definida para el Descargar datos botón:
Repasemos cada uno de los pasos:
Obtener colección de registros: este paso lee todo el registro que tenemos en el backend de VCF.
Establecer variable de datos: este paso llena la variable de datos ObjectList con todo el registro leído en el paso anterior.
JS: este paso es el corazón de nuestro proceso de descarga y se implementa como una rutina de JavaScript. La rutina escanea todos los registros de la variable de datos ObjectList (en entrada) y genera una variable de texto como salida que contiene todos los registros en formato CSV. Aquí siguiendo el código que usé:
try {
a = inputs.input1;
for (var i = 0; i < a.length; i++) {
delete a[i].id
}
let topLine = Object.keys(a[0]).join(";");
const lines = a.reduce( (acc, val) =>
acc.concat( Object.values(val).join(";") ), [] );
const csv = topLine.concat(`\r\n${lines.join("\r\n")}`);
return { result: csv };
}
catch (err) {
const error = {
code: 'unknownError',
message: 'Something went wrong.',
rawError: err,
}
return [1, { error }]
}
Tenga en cuenta que en la fila n. ° 4 eliminé la propiedad identificación de todos los registros. Esto se debe a que quiero que mi archivo CSV no contenga el UUID generado automáticamente por VCF al cargar datos. Si desea tener esta información en su archivo CSV, debe eliminar las filas #3, #4 y #5.
Establecer variable de página: este paso establece la variable convertText en el resultado del paso anterior, codificándolo en el formato base64. Usé la siguiente fórmula:
ENCODE_BASE64(outputs["Function"].result)
Descargar texto Base64 como archivo (solo web): este paso descarga el archivo CSV a su PC. Debe configurarlo proporcionando como entrada la variable convertText, definiendo el nombre asignado al archivo cuando se descarga (en mi caso: Output.csv) y configurando el Tipo MIME en Texto sin formato:
Nuestra aplicación ya está lista. Puede ejecutarlo simplemente haciendo clic en INICIAR, abriendo el portal de vista previa y seleccionando la opción Vista previa web.
Después de hacer clic en el botón Descargar datos, el archivo CSV se descargará a su PC (tal vez deba proporcionar alguna autorización, dependiendo de la configuración de su navegador).
El archivo CSV se puede editar con un editor de texto o Excel y se puede cargar en el backend VCF de otra subcuenta BTP, utilizando el enfoque que describí en mi blog anterior.
Si su backend VCF contiene pocos registros (50 – 100), esta aplicación es suficiente para sus requisitos. Pero si necesita descargar más registros, no funcionará: la variable que declaramos para almacenar internamente los registros después de leerlos desde el backend (lista de objetos), se convierte en un cuello de botella, porque el sistema no es capaz de asignar a esa variable toda la memoria necesaria para manejar una gran cantidad de registros.
En ese caso, necesitamos cambiar la aplicación: podemos descargar todos los registros que tenemos en nuestro backend VCF particionando el proceso de descarga en una secuencia de unidades de trabajo. Y esto se puede hacer usando la capacidad de Paginación provista por el backend VCF: es posible configurar un Obtener registro componente que dice el número de registro que queremos leer para cada página y la configuración del número de página que queremos leer. Luego, el enfoque consiste en leer del backend VCF una secuencia de páginas y descargar un archivo CSV para cada página que se haya leído.
La lógica de la aplicación extendida se ve así:
Como primer paso, un nuevo índice La variable (tipo = número) debe declararse y establecerse en 1. Esta variable se utilizará para identificar el número de página que se leerá desde el backend durante cada iteración.
En el siguiente paso, llamado Primera lecturaaccedemos al backend para obtener la primera página, usando un Obtener registro componente. En mi ejemplo, decidí establecer el tamaño de página en 50 registros.
El Obtener registro debe configurarse el componente, configurando el Paginación propiedad como un objeto:
y ese objeto se debe configurar con el número de registros por página (50 en mi ejemplo), el número de página (correspondiente al contenido de la variable index) e incluyendo el Total Count como variable de salida:
Luego, el resultado de este paso se almacena, como de costumbre, en una variable de datos y Cuenta total La salida se utiliza para calcular el número total de páginas que se leerán desde el backend VCF. Podemos usar la siguiente fórmula para establecer el valor de la número de páginas variable:
INTEGER(outputs["FirstRead"].totalCount /50) + 1
En este punto, un ciclo comienza a realizar los siguientes pasos:
Y eso es todo !
Al ejecutar la aplicación, después de hacer clic en el Descargar datos botón, un conjunto de archivos CSV se descargará automáticamente a su PC.
Puede cargarlos en el backend VCF de otra subcuenta BTP, utilizando el enfoque que describí en mi blog anterior. O puede fusionarlos en un solo archivo CSV usando un script simple.
Ahora podrá extraer datos de sus backends VCF, para migrarlos a otro entorno o para procesarlos manualmente y volver a cargarlos en el mismo backend. Algunos de los conceptos que describí en este artículo pueden reutilizarse para implementar otro tipo de aplicaciones. Los más interesantes son:
¡Y eso es todo por hoy! Ahora puede continuar siguiendo la página del tema del entorno SAP Build Apps (https://community.sap.com/topics/build-apps), publicar y responder preguntas (https://answers.sap.com/tags/6cfd8176-04ae-4548-8f38-158456e1a47a), y leer otras publicaciones sobre el tema (https://blogs.sap.com/tags/6cfd8176-04ae-4548-8f38-158456e1a47a/).
¡Diviértete con SAP Build Apps! Y continúe siguiendo mi perfil para nuevos blogs y déjeme sus comentarios.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073