Clases ABAP (Globales)

En SAP hay dos tipos de clases, las que podemos desarrollar en un reporte Z, como vimos en el post anterior, o las clases globales que son las que definimos en la transacción SE24.

La principal diferencia entre una clase global y una local es que las locales son especificas a un reporte, mientras las clases globales pueden ser usadas desde cualquier lado.

Para definir una clase, vamos a la transacción SE24, para seguir con el ejemplo anterior vamos a volver a crear la clase vehículo.

Hacemos click en “Create”

En la siguiente ventana ingresamos una descripción y hacemos click en “SAVE”

Creamos el objeto como un objeto local.

Nos aparecerá la siguiente ventana donde debemos especificar el método a crear, visibilidad, tipo, etc.

El siguiente paso es definir los parámetros de los métodos, para eso seleccionamos un método y hacemos click en el botón “Parameters”.

Vamos a la solapa “Attributes” y definimos nuestra variable protegida.

Con nuestra clase con los métodos y variable definidas le damos click a activar.

Nos aparecerá una ventana como la siguiente en donde seleccionamos todos los objetos y le damos OK.

Nuestra clase debería haber quedado activa.

Finalmente hay que hacer el código que en cada método para que la clase haga algo.

Metodo obtener tipo:

WRITE 'AUTO'.

Método obtener marca:

WRITE 'FORD'.

Método set_notas:

lv_notas = notas.

Método ver_notas:

notas = lv_notas.

En este punto ya tenemos nuestra clase lista, solo nos resta volver a activarla para asegurarnos que esta todo OK.

Ahora nuestra clase estará disponible para ser usada desde cualquier reporte que se quiera crear.

Abajo dejo un ejemplo de uso.

*&---------------------------------------------------------------------*
*& Report Z_CLASE_GLOBAL
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_CLASE_GLOBAL.

DATA: lc_cg TYPE REF TO ZCL_VEHICULO.

CREATE OBJECT lc_cg.

lc_cg->set_notas( 'Una nota' ).
lc_cg->obtener_tipo( ).
NEW-LINE.
lc_cg->obtener_marca( ).
NEW-LINE.

DATA: lv_notas TYPE string.
lc_cg->ver_notas( IMPORTING notas = lv_notas ).
WRITE lv_notas.

Leave a Reply