Creando una tabla transparente desde BTP ABAP

Creando una tabla transparente desde BTP ABAP

En esta ocasión veremos cómo crear una tabla transparente desde el editor de Eclipse, ya en entradas anteriores hemos platicado sobre cómo instalar y configurar nuestra instancia, bueno pues manos a la obra.

Primero abriremos eclipse, y para este ejercicio crearemos un paquete nuevo, donde almacenaremos los objetos.

fullstackabap.png

fullstackabap1.png

Después de esto crearemos nuestra tabla, dentro del mismo paquete que creamos.

fullstackabap2.png

Una vez que realizamos estos pasos, podemos ver que nos muestra la definición inicial de la tabla, cosa que para los que tenemos tiempo programando en SAP y venimos de programar desde SAP GUI, nos puede resultar muy curioso, pero también resulta mucho más práctico y rápido a mi parecer para crear y configurar una tabla transparente.

fullstackabap3.png

@EndUserText.label : 'zbooking'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #LIMITED
define table zbooking {
  key client         : abap.clnt not null;
  key booking        : abap.int4 not null;
  customername       : abap.char(50);
  numberofpassengers : abap.int2;
  emailaddress       : abap.char(50);
  country            : abap.char(50);
  dateofbooking      : timestampl;
  dateoftravel       : timestampl;
  @Semantics.amount.currencyCode : 'zbooking.currencycode'
  cost               : abap.curr(15,2);
  currencycode       : abap.cuky;
  lastchangedat      : timestampl;

}

En este código podemos mirar, que tenemos elementos, los cuales normalmente definimos en SAP GUI, por medio de menús ventanas adicionales y otras acciones, pero al crear la tabla desde Eclipse, tenemos la facilidad de generar estas opciones por medio de decoradores, lo cual hace todo mucho más rápido y sencillo.

La definición de la llave de la tabla la hacemos por medio de la indicación "KEY"

La categoría de ampliación la indicamos con este decorador: @AbapCatalog.enhancementCategory

La clase de entrega, de esta manera : @AbapCatalog.deliveryClass

La descripción : @EndUserText.label :

Cómo puedes ver todo muy fácil y de manera rápida.

Terminamos la creación de la tabla guardando y activando.

Con estos pasos hemos logrado crear una tabla transparente, ahora crearemos una clase, para poder crear contenido a esta tabla, para eso realizamos los siguientes pasos:

fullstackabap4.png

Agregamos el nombre y la descripción de la clase, el paquete donde esta almacenado, nos pedirá la orden de transporte y finalizamos.

Cabe mencionar que con estos pasos estamos creando una clase global, sería lo mismo que crearla por la SE24, sólo que al igual que la tabla transparente es mucho más fácil de esta manera, y todo lo que en SAP GUI hacemos con una interface gráfica aquí lo realizamos con código

Ya tenemos creado el Objeto, ahora agregaremos el siguiente código:

CLASS zbooking_fullstackabap DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

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

CLASS zbooking_fullstackabap IMPLEMENTATION.

METHOD if_oo_adt_classrun~main.
    DATA:it_bookings TYPE TABLE OF zbooking.

*    read current timestamp
    GET TIME STAMP FIELD DATA(zv_tsl).
*   fill internal table (itab)
    it_bookings = VALUE #(
        ( booking  = '1' customername = 'Buchholm' numberofpassengers = '3' emailaddress = 'tester1@flight.example.com'
          country = 'Germany' dateofbooking ='20180213125959' dateoftravel ='20180213125959' cost = '546' currencycode = 'EUR' lastchangedat = zv_tsl )
        ( booking  = '2' customername = 'Jeremias' numberofpassengers = '1' emailaddress = 'tester2@flight.example.com'
          country = 'USA' dateofbooking ='20180313125959' dateoftravel ='20180313125959' cost = '1373' currencycode = 'USD' lastchangedat = zv_tsl )
     ).

*   Delete the possible entries in the database table - in case it was already filled
    DELETE FROM zbooking.
*   insert the new table entries
    INSERT zbooking FROM TABLE @it_bookings.

*   check the result
    SELECT * FROM zbooking INTO TABLE @it_bookings.
    out->write( sy-dbcnt ).
    out->write( 'data inserted successfully!').

  ENDMETHOD.



ENDCLASS.

Una vez que guardamos y activamos la clase, ejecutaremos como ABAP Aplication (Console), haciendo click derecho sobre el programa y en el menú contextual buscando la opción:

fullstackabap5.png

Esto nos dará como resultado la creación del contenido que indicamos en nuestro código.

fullstackabap6.png

Regresamos a la definición de nuestra tabla, y ejecutamos la visualización de los datos, dando click derecho para el menu contextual - open with - Data Preview

fullstackabap8.png

fullstackabap7.png