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

Conozca RAP: Definir modelo de datos – Parte 1

By s4pcademy 


Esta es la segunda publicación de esta serie. Aquí está la publicación anterior del blog: [Get to Know RAP: Introduction]

Esta entrada de blog también sigue con una video que lo guía a través del tutorial que repasaré.

Como se mencionó en la publicación de blog anterior, nuestro objetivo es desarrollar una aplicación Fiori utilizando el modelo de programación de aplicaciones ABAP RESTful. Usaremos pasos que abarcan las 3 capas (Modelado de datos y comportamiento, servicio empresarial, Consumo de servicios).

Partiremos desde el Modelado de datos y comportamiento y trabajar nuestro camino hacia arriba. Dado que nuestro objetivo general es crear una aplicación transaccional completamente nueva para una interfaz de usuario de Fiori Elements siguiendo el enfoque de campo nuevo, crearemos todo desde cero. Con la mayoría de los nuevos desarrollos, siempre confiará en el enfoque administrado, ya que RAP Framework se hace cargo de toda la administración del objeto.

Para comenzar, seguiré los tutoriales grupales Desarrollar una aplicación Fiori utilizando el modelo de programación de aplicaciones ABAP RESTful (escenario administrado) para desarrollar una aplicación SAP Fiori de reserva de viajes. Para esta publicación de blog, le proporcionaré mi comida para llevar sobre creando persistencia de tablas y generando datos para ello.

Como mencionamos anteriormente, el modelo de datos consiste en las entidades involucradas en un escenario comercial, como VIAJES y RESERVAS, y cómo se relacionan entre sí. El modelo de programación ABAP RESTful utiliza CDS para organizar y definir el modelo de datos. Las entidades CDS son los bloques de construcción fundamentales para su aplicación.

El objeto comercial de viajes consta de tres entidades que están estructuradas en un árbol jerárquico. Cada entidad en el árbol de composición BO se modela con una entidad de vista CDS. Las entidades de negocio sobre las que vamos a trabajar en nuestros escenarios actuales son:

  • Viaje: la entidad raíz define los datos generales del viaje, como el ID de la agencia o el ID del cliente, el estado de la reserva del viaje y el precio del viaje.
  • Reserva: La entidad de reserva define los datos del vuelo y de la reserva, los datos del cliente, el ID del cliente para el que se reserva el vuelo y el ID del viaje al que pertenece la reserva.
  • Suplemento de reserva: La entidad de suplemento de reserva presenta un suplemento reservable adicional para una determinada reserva. Estas son comidas y bebidas para los vuelos.

Entidades Editables del Objeto de Negocio

A continuación se muestra una descripción general del flujo de trabajo de desarrollo típico en RAP. El desarrollo de nuestra aplicación también se verá así.

En este ejercicio, primero crearemos una tabla de base de datos para almacenar la viajar datos. También reutilizaremos el contenido de demostración ya existente del escenario de referencia de vuelo ABAP (Agencia, Cliente y Vuelo), así como algunos más.

📝 Nota: En el escenario de referencia de vuelo ABAP para las tablas de base de datos persistentes, usamos el prefijo A_ para indicar la persistencia activa. Para obtener información detallada, consulte Convenciones de nomenclatura para objetos de desarrollo.

Antes de comenzar, es importante conocer los requisitos previos:

requisitos previos

Crear paquete ABAP

Lo primero que había que hacer era crear un paquete ABAP, esto es bastante sencillo. Simplemente inicie sesión en el sistema SAP. Desde allí, selecciono la opción para crear un nuevo paquete. El sistema me solicita que proporcione un nombre y una descripción para el paquete. No olvides revisar Agregar a paquetes favoritos para que puedas acceder a él fácilmente. No tiene que ir a buscarlo en ZLOCAL, donde podría correr el riesgo de elegir accidentalmente el paquete de otra persona.

Paquete ABAP

Es importante asegurarse de que el paquete que está creando no exista ya en ZLOCAL. Esto se debe a que se comparte la versión de prueba del entorno ABAP y hay muchos paquetes disponibles. Por lo tanto, asegúrese de tener un nombre único y asegúrese de agregar un número que actualmente sea gratuito. Tuve este problema al principio cuando estaba creando mi paquete por primera vez, luego descubrí que ya lo había tomado otra persona.

Para este tutorial, decidí usar el sufijo 234 para los diversos objetos que voy a crear. Después de proporcionar el nombre y la descripción del paquete, guardo el paquete y está listo para usar. En general, este paso es sencillo y fácil de seguir.

Tabla de base de datos

Pasando de crear el paquete, fui y creé una tabla de base de datos para almacenar el viajar datos que se nos proporcionaron en el tutorial. El tutorial le proporcionará los pasos para crear la tabla. Al crear la tabla de la base de datos, es importante agregar su sufijo al ejemplo de código. Me tomó un tiempo darme cuenta de por qué mi código no se activaba, solo para descubrir que era porque el sufijo no se agregó al código. Me gustaría proporcionarle una explicación del código, para que esté familiarizado con los pasos.

La tabla que creé se abrirá en el editor y el campo de cliente se agregará automáticamente porque es un tabla específica del cliente.

@EndUserText.label : 'Database table for travel data 000'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table ztravel_000 {
  key client      : abap.clnt not null;
  key mykey       : sysuuid_x16 not null;
  travel_id       : /dmo/travel_id;
  agency_id       : /dmo/agency_id;
  customer_id     : /dmo/customer_id;
  begin_date      : /dmo/begin_date;
  end_date        : /dmo/end_date;
  @Semantics.amount.currencyCode : 'ztravel_000.currency_code'
  booking_fee     : /dmo/booking_fee;
  @Semantics.amount.currencyCode : 'ztravel_000.currency_code'
  total_price     : /dmo/total_price;
  currency_code   : /dmo/currency_code;
  description     : /dmo/description;
  overall_status  : /dmo/overall_status;
  created_by      : syuname;
  created_at      : timestampl;
  last_changed_by : syuname;
  last_changed_at : timestampl;

}   
*No olvides reemplazar todos los 000 con tu número personalizado

Explicación del código:

  • La tabla ahora consta de los campos clave, cliente y mykey. También incluye campos de tabla, como TRAVEL_ID legible por humanos, AGENCY_ID, CLIENTE_ID, TOTAL_PRICE y OVERALL_STATUS
  • Algunos de los objetos tienen /DMO. Esto se debe a que pertenecen a los ejemplos ABAP Flight Reference Scenario. Si está utilizando la versión de prueba, ya está preinstalada para usted.
  • Tenemos algunos datos de administración estándar, como CREATED_BY, CREATED_AT
  • El campo de tabla CURRENCY_CODE se especifica como el campo de referencia para los campos de cantidad BOOKING_FEE y TOTAL_PRICE usando @Semantics.amount.currencyCode

Crear clase ABAP

El informe de la lista de viajes actualmente no tiene datos, por lo que crearemos una clase ABAP para llenar la tabla de la base de datos con algunos datos de demostración.

Reemplazaremos el código y pegaremos el fragmento de código que se nos proporcionó. Me gustaría proporcionarle una explicación del código, para que esté familiarizado con los pasos.

CLASS zcl_generate_travel_data_000 DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS zcl_generate_travel_data_000 IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.

    DATA itab TYPE TABLE OF ztravel_000.

*   fill internal travel table (itab)
    itab = VALUE #(
      ( mykey = '02D5290E594C1EDA93815057FD946624' travel_id = '00000022' agency_id = '070001' customer_id = '000077' begin_date="20190624" end_date="20190628" booking_fee="60.00" total_price="750.00" currency_code="USD"
        description = 'mv' overall_status="A" created_by = 'MUSTERMANN' created_at="20190612133945.5960060" last_changed_by = 'MUSTERFRAU' last_changed_at="20190702105400.3647680" )
      ( mykey = '02D5290E594C1EDA93815C50CD7AE62A' travel_id = '00000106' agency_id = '070005' customer_id = '000005' begin_date="20190613" end_date="20190716" booking_fee="17.00" total_price="650.00" currency_code="AFN"
        description = 'Enter your comments here' overall_status="A" created_by = 'MUSTERMANN' created_at="20190613111129.2391370" last_changed_by = 'MUSTERMANN' last_changed_at="20190711140753.1472620" )
      ( mykey = '02D5290E594C1EDA93858EED2DA2EB0B' travel_id = '00000103' agency_id = '070010' customer_id = '000011' begin_date="20190610" end_date="20190714" booking_fee="17.00" total_price="800.00" currency_code="AFN"
        description = 'Enter your comments here' overall_status="X" created_by = 'MUSTERFRAU' created_at="20190613105654.4296640" last_changed_by = 'MUSTERFRAU' last_changed_at="20190613111041.2251330" )
    ).

*   delete existing entries in the database table
    DELETE FROM ztravel_000.

*   insert the new table entries
    INSERT ztravel_000 FROM TABLE @itab.

*   output the result as a console message
    out->write( |{ sy-dbcnt } travel entries inserted successfully!| ).

  ENDMETHOD.
ENDCLASS.

Código Explicación

  • Agregar las interfaces if_oo_adt_classrun nos permitirá utilizar ADT Eclipse. Esto le permitirá imprimir cualquier valor en la consola. Esto es útil porque imprimirá nuestro mensaje de consola y confirmará si todo es correcto.
  • Luego limpiamos la tabla eliminando cualquier entrada existente
  • Luego insertamos las nuevas entradas de la tabla que obtuvimos en nuestro ITAB
  • Luego mostramos el resultado como un mensaje de consola

Ahora podemos revisar los datos. Además, puede ver que se escribe un mensaje de éxito en la consola.

En esta publicación de blog, creé un paquete y luego, dentro del paquete, creé algo de persistencia. Creé una tabla de base de datos y también escribí una clase que nos permitía manipular esa tabla. En la próxima publicación del blog, definiré y expondré un modelo de datos de viaje basado en CDS y proporcionaré algunos puntos clave del tutorial.

Publicación de blog anterior:

Conozca RAP: yoIntroducción




La diferencia entre S_PROGRAM y S_PROGNAM y el uso de transacciones de parámetros Xiting
Previo
¡Comience su migración de SAP PO a Integration Suite ahora!
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.