lunes, 28 de octubre de 2013

Obtención de parámetros en una entidad.



Una de las dudas que me surgen siempre cuando estoy desarrollando es qué parámetros tengo en una entidad. 

El saber los parámetros me sirve para poder realizar controles en tiempo de ejecución, entre otras cosas.
Podemos averiguar los parámetros de una entidad por debuggin, navegando en el objeto ME hasta llegar a la estructura que contiene los datos

En concreto la navegación por el objeto es la siguiente:

ME->TYPED_CONTEXT->objeto a tratar-> ATTR_STRUCT_NAME

Una forma más sencilla es obtener desde el código un field symbol con los parámetros de la entidad, de la siguiente forma:

lr_entity ?= me->typed_context->btadminh->collection_wrapper->get_current( ).

DATA: lv_att_struc_name TYPE strukname,
ref_rowtype TYPE REF TO cl_abap_structdescr,
ref_wa TYPE REF TO data.
FIELD-SYMBOLS: <fs_properties> TYPE ANY.

lv_att_struc_name = lr_entity2->get_attr_struct_name( ).
ref_rowtype ?= cl_abap_typedescr=>describe_by_name( lv_att_struc_name ).
CREATE DATA ref_wa TYPE HANDLE ref_rowtype.
ASSIGN ref_wa->* TO <fs_properties>.


lr_entity->if_bol_bo_property_access~get_properties( IMPORTING es_attributes = <fs_properties> ).

En el field symbols tenemos todas las propiedades y accedemos a ellas tan simple como field-dato

3 comentarios:

  1. Gracias por compartir tan valiosa información, soy nueva en SAP y me a servido de mucho. Saludos.

    ResponderEliminar
  2. Hola, gracias por compartir tus conocimientos, estoy empezando con CRM y es muy útil.

    Ya no actualizas el blog?

    ResponderEliminar
    Respuestas
    1. Hola,

      No, tuve una época en la que no tenía tiempo y ahora estoy fuera del mundo SAP, con otras tecnologías.
      Me alegra que las entradas aún ayuden a alguien.

      Saludos

      Eliminar