• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
Technical Articles  ·  Visual Cloud Functions

Descarga de datos de un backend VCF de SAP Build Apps a archivos CSV

By s4pcademy 


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:

  • convertir la variable ObjectList al formato CSV utilizando la rutina de JavaScript explicada anteriormente;
  • codifique en el formato base64 de la salida de JavaScrip, como se explicó anteriormente;
  • descargar un archivo CSV; en este caso podemos usar el contenido de la variable index para generar un nombre diferente para cada archivo (Output1.csv, Output2.csv,…);
  • aumentar en 1 el valor de la variable índice;
  • compruebe si el contenido de la variable de índice ahora es mayor que el número de páginas calculado. Si es así, el ciclo termina. Si no, continúa con los siguientes pasos:
  • lea la página siguiente del VCF (en el InCycleRead paso) y establecer como de costumbre el contenido de la variable ObjectList (el índice variable se utiliza para identificar el número de la página que se va a leer);
  • saltar al principio del ciclo para la siguiente iteración.

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:

  • cómo analizar un objeto JavaScript y convertirlo al formato CSV;
  • cómo usar la capacidad de paginación proporcionada por el backend VCF (esta capacidad también está disponible en otros servicios de integración);
  • cómo descargar un archivo generado por la aplicación a su PC.

¡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.



Source link


AppsarchivosbackendBuildCSVdatosDescargaSAPVCF

Artículos relacionados


Product Information  ·  SAP 分析云
故事+分析应用二合一:在SAP Analytics Cloud 分析云中体验新的优化故事体验 | Blogs de SAP
Technical Articles
SAP Integration Suite: supervisión simplificada con Open Connectors: Twilio, parte 1
SAP Repair  ·  Technical Articles
Reparación de SA: Automatice con SAP Build Process Automation

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Anuncio de lanzamiento: descubra el aprendizaje electrónico de SAP Sales Cloud
Previo
Descubriendo gemas ocultas: SAP Customer Data Cloud Analytics para el crecimiento empresarial
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar