Run Time Type Services, mais conhecido como RTTS, nada mais é do que tipos de serviços processados em tempo de execução pelo AS ABAP. São implementados em função de uma hierarquia de classes específicas, cujas quais contém os métodos para a RTTI (Run Time Type Identification) e a RTTC (Run Time Type Creation).
A identificação de tipos em tempo de execução (RTTI) tem a finalidade de descrever a definição de instâncias existentes e/ou tipo nome absoluto (nomes reservados da linguagem de programação ABAP).
A criação de tipos em tempo de execução (RTTC) tem como primazia da função a criação de novas categorias de dados em tempo de execução, tendo em vista a utilização dos comandos ABAP: CREATE DATA (especifica o tipo de objeto a ser criado) e HANDLE (para criação de objetos de dados de maneira dinâmica).
As propriedades das categorias de tipos são definidas em função dos atributos dos objetos de tipos. Para cada categoria de tipo, existe um objeto de tipo. Para cada categoria de tipo na linguagem de programação ABAP (tipo elementar, tipo tabela, etc), existe um tipo de classe com atributos singulares para as propriedades de uma categoria de tipos específica. A hierarquia de classes dos tipos classes designam a estrutura de organização hierárquica das categorias de tipos existentes no sistema de tipos da linguagem de programação ABAP.
Os objetos de tipos apenas serão criados através de métodos de um tipo classe específico, conseguimos tal feito através da referência possivelmente adquirida através de um método estático específico da super classe (dentro da hierarquia de classes de tipos) CL_ABAP_TYPEDESCR ou mediante a chamada de um método pertencente a um tipo classe especial.
Hierarquia de tipo classe
CL_ABAP_TYPEDESCR
|
|–CL_ABAP_DATADESCR
| |
| |–CL_ABAP_ELEMDESCR
| |–CL_ABAP_REFDESCR
| |–CL_ABAP_COMPLEXDESCR
| |
| |–CL_ABAP_STRUCTDESCR
| |–CL_ABAP_TABLEDESCR
|
|–CL_ABAP_OBJECTDESCR
|
|–CL_ABAP_CLASSDESCR
|–CL_ABAP_INTFDESCR
Exemplo de implementação de uma RTTI
*&---------------------------------------------------------------------*
*& Report Z_RTTI_VTF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_RTTI_VTF.
TYPES in_type TYPE i.
DATA: in_var TYPE in_type,
descr_ref TYPE ref to cl_abap_typedescr.
START-OF-SELECTION.
descr_ref = cl_abap_typedescr=>describe_by_data( in_var ).
WRITE: / 'Nome de tipo absoluto:', descr_ref->absolute_name.
WRITE: / 'Categoria de dado:', descr_ref->type_kind.
WRITE: / 'Tamanho:', descr_ref->length.
WRITE: / 'Decimais:', descr_ref->decimals.