Boas práticas de programação com Object Calisthenics
SAP Inside Track Sao Paulo '09 - ABAP Objects Overview
1. SAP Inside Track
Sao Paulo ’09
ABAP Objects
Overview
Marcelo Ramos
SAP Netweaver Application Developer
SAP Mentor for 2009
SDN Blogger
SDN Blog & Forum Moderator
4. Introdução SAP Inside Track Sao Paulo ’09
Evolução do ABAP Objects
Principais recursos
Benefícios ao utilizar o ABAP Objects
Integração com outras Tecnologias
Uso de Conceitos em ABAP Objects
Conceitos Básicos de Construção em ABAP Objects
Conceitos Detalhados de Construção ABAP Objects
5. Evolução do ABAP Objects SAP Inside Track Sao Paulo ’09
ABAP Objects foi Introduzido no SAP Basis Realease 4.5
Classes
Interfaces
Events
ABAP Objects foi complementado no SAP Basis Realease 4.6
Inheritance
Compound Interfaces
Dynamic Invoke
Algumas funcionalidades foram incluídas no SAP Application Server Release 6.10 e 6.20
Friends
Objects Services
Algumas funcionalidades foram incluídas no SAP Application Server Release 6.40
Shared Objects
6. Principais Recursos SAP Inside Track Sao Paulo ’09
O Abap pode ser considerada uma linguagem orientada a objeto pelo fato de disponibilizar os
principais recursos OO, dentre eles:
Classes e Objetos
Encapsulamento
Herança
Interface
Evento
7. Os Benefícios ao Utilizar ABAP Objects SAP Inside Track Sao Paulo ’09
A implementação do modelo orientado a objetos do ABAP é baseada em modelos de Java e C++.
A implementação de elementos orientados a objeto no kernel da linguagem ABAP tem aumentado
consideravelmente os benefícios quando se trabalha com objetos ABAP.
Dentre os benefícios estão:
Reutilização de Código de Forma Simples
Clareza no Código devido ao Encapsulamento
Facilidade de Manutenção
Aplicações mais Seguras
Puro ABAP
Suporte a Programação Dinâmica
Aplicações Modernas (State-Of-The-Art)
8. Os Benefícios ao Utilizar ABAP Objects SAP Inside Track Sao Paulo ’09
Os Conceitos de Orientação a Objetos suportados pelo ABAP
são muito parecidos aos presentes na Linguagem JAVA
9. Os Benefícios ao Utilizar ABAP Objects SAP Inside Track Sao Paulo ’09
Os Conceitos de Orientação a Objetos suportados pelo ABAP
são muito parecidos aos presentes na Linguagem JAVA
ABAP Java
10. O Uso do ABAP Objects SAP Inside Track Sao Paulo ’09
Global Class
Global Class podem ser criadas e/ou visualizadas via ABAP Class Builder (SE24), Onde há uma
grande variedade de classes declaradas.
11. O Uso do ABAP Objects SAP Inside Track Sao Paulo ’09
Local Class
Local Class podem ser criadas e/ou visualizadas via SE38 ou SE80
12. O Uso do ABAP Objects SAP Inside Track Sao Paulo ’09
Web Dynpro for ABAP
Aplicações Web Dynpro for ABAP utilizam ABAP Objetcs e podem ser Criados ou Visualizados via Web
Dynpro Explorer (SE80)
13. O Uso do ABAP Objects SAP Inside Track Sao Paulo ’09
Business Application Page (BSP)
O ABAP Objects pode ser utilizado em Aplicações BSP através da Transação SE80
14. O Uso do ABAP Objects SAP Inside Track Sao Paulo ’09
Kernel-BAdI
BAdI’s são criadas e/ou implementadas utilizando o conceito de Orientação a Objects.
15. Conceitos Básicos de Construção em ABAP
SAP Inside Track Sao Paulo ’09
Objects
Class Definition
Class Implementation
Object Definition
Instance Creation
Object Components Access
16. Conceitos Básicos de Construção em ABAP
SAP Inside Track Sao Paulo ’09
Objects
Class Definition
Local onde são declarados os componentes da Classe, que podem ser:
Attributes
Methods
Events
Interfaces
17. Class Definition SAP Inside Track Sao Paulo ’09
Visibility Section
Cada um dos Componentes devem ser definidos em uma Sessão de visibilidade, que pode ser:
Public Section
Protected Section
Private
18. Class Definition SAP Inside Track Sao Paulo ’09
Visibility Section
Cada um dos Componentes devem ser definidos em uma Sessão de visibilidade, que pode ser:
Public Section
Protected Section
Private
Acessos Public Section Protected Section Private Section
Própria Classe √ √ √
Sub-Classe(Herdada) √ √ X
Classe Externas √ X X
24. Conceitos Básicos de Construção em ABAP
SAP Inside Track Sao Paulo ’09
Objects
Class Implementation
Local onde são implementados os métodos da classe, ou seja, onde é atribuída a funcionalidade do
método
25. Conceitos Básicos de Construção em ABAP
SAP Inside Track Sao Paulo ’09
Objects
Object Definition
A Definição de um objeto consiste em Declarar uma variável contendo uma referência na qual
é apontada para uma Classe.
Classe Local
Classe Global
26. Conceitos Básicos de Construção em ABAP SAP Inside Track Sao Paulo ’09
Objects
Instance Creation
Um Objeto após ser definido, ainda não está pronto para ser utilizado, antes, é necessário que este
Objeto seja Instanciado, que consiste em alocar em memória uma referência à classe informada no
momento da Definição do Objeto
Classe Local
Classe Global
27. Conceitos Básicos de Construção em ABAP
SAP Inside Track Sao Paulo ’09
Objects
Object Components Access
Os componentes definidos na classe podem ser acessados através de Objeto já Instanciado.
Para acessar um componente fora da classe em que foi definido é necessário utilizar o Object
Component Selector ( ->).
28. Conceitos Detalhado de Construção em
SAP Inside Track Sao Paulo ’09
ABAP Objects
Class Definition
Class Implementation
Object Definition
Instance Creation
Object Components Access
29. Conceitos Detalhado de Construção em
SAP Inside Track Sao Paulo ’09
ABAP Objects
Class Definition
A definição de uma classe pode ser feita de duas formas, Global e Local.
Uma classe declarada através do Class Builder( SE24 ) é chamada de Global Class e toda classe difinida
desta torna-se visível em todo o sistema, ou seja, esta classe pode ser acessada por qualquer programa
em todo o ambiente. Enquanto uma classe declarada de forma local torna-se acessível apenas no local
onde foi definida, podendo ser acessada apenas pelo próprio programa ou Classe Global na qual a
classe foi definida.
30. Class Definition SAP Inside Track Sao Paulo ’09
Sintaxe
CLASS class DEFINITION [INHERITING FROM superclass]
[PUBLIC]
[ABSTRACT]
[FINAL]
[DEFERRED [PUBLIC]]
[LOAD]
[[GLOBAL] FRIENDS <global_class1> <global_class2> ...
<global_ifac1> <global_ifac2> ...]]
[LOCAL FRIENDS <local_class1> <local_class2> ...
<local_ifac1> <local_ifac2> ...]
[CREATE {PUBLIC|PROTECTED|PRIVATE}]
[SHARED MEMORY ENABLED]
[FOR TESTING]
[PUBLIC SECTION.
[components]]
[PROTECTED SECTION.
[components]]
[PRIVATE SECTION.
[components]]
[ENDCLASS].
31. Class Definition SAP Inside Track Sao Paulo ’09
... INHERITING FROM <superclass>
Comando utilizado para indicar que a classe que está sendo definida é uma subclasse, ou seja, herdará
componentes públicos e protegidos de uma superclasse(Classe herdada).
Todas as classes dentro do ABAP Objects formam uma arvore hierárquica que tem como classe
principal (root), a classe OBJECT.
Uma superclasse é denominada GENERAL CLASS enquanto uma subclasse é chamada de SPECIALIZED
CLASS.
35. Class Definition SAP Inside Track Sao Paulo ’09
... ABSTRACT
Define a classe como uma abstrata, ou seja, não pode ser instanciada diretamente. O acesso à seus
atributos deve ser feito através de uma subclasse “não abstrata”.
Uma classe é obrigatoriamente ABSTRACT sempre que haver pelo menos um método ABSTRACT.
37. Class Definition SAP Inside Track Sao Paulo ’09
... FINAL
Define a classe como uma classe final, ou seja, neste caso, não se pode gerar uma subclasse.
Todos os métodos definidos em uma classe final são implicitamente definidos como final.
39. Class Definition SAP Inside Track Sao Paulo ’09
... DEFERRED
Comando utilizados para a publicação da classe. Isto é, torna a classe conhecida ao programa antes
mesmo de ser definida, desta forma é possível que sejam criadas referências à classe antes de sua
definição.
41. Class Definition SAP Inside Track Sao Paulo ’09
... [GLOBAL] FRIENDS
O comando FRIENDS torna as classes locais class1 e class2 / interfaces ifac1 e ifac2 unidas a uma classe
que se deseja compartilhar. Desta forma as classes/ interfaces unidas à classe compartilhada têm acesso
ilimitado aos componentes privados e protegidos da classe e ainda podem criar instâncias sem
problemas.
O comando GLOBAL FRIENDS torna as classes Globais class1 e class2 / interfaces ifac1 e ifac2 unidas a
uma classe global que se deseja compartilhar.
Este comando é gerado automaticamente ao definirmos uma lista de “FRIENDS”.
45. Class Definition SAP Inside Track Sao Paulo ’09
... CREATE {PUBLIC|PROTECTED|PRIVATE}
Especifica onde a classe pode ser instanciada, ou seja, onde o comando Create object pode ser
executado para gerar uma instância da classe.
46. Class Definition SAP Inside Track Sao Paulo ’09
... CREATE PUBLIC
A classe pode ser instanciada tanto em métodos da própria classe e de suas subclasses como em classes
externas.
É possível inserir qualquer adição CREATE PUBLIC | PRIVATE | PROTECTED para reescrever o
comando herdado.
48. Class Definition SAP Inside Track Sao Paulo ’09
... CREATE PROTECTED
A classe pode ser instanciada somente em métodos da própria classe ou de suas subclasses.
É possível inserir qualquer adição CREATE PUBLIC | PRIVATE | PROTECTED para reescrever o
comando herdado.
50. Class Definition SAP Inside Track Sao Paulo ’09
... CREATE PRIVATE
Indica que a classe somente pode ser instanciada por seus próprios métodos. Com isto esta classe não
pode ser instanciada como um componente herdado.
Não possível inserir qualquer adição CREATE PUBLIC | PRIVATE | PROTECTED para reescrever o
comando herdado. Também não é possível instanciar esta classe.
52. Class Definition SAP Inside Track Sao Paulo ’09
... SHARE MEMORY ENABLED
Comando introduzido no release 6.40. Indica a possibilidade de armazenar instâncias em shared memory
(área de memória presente no application server, na qual os programas ABAP têm acesso) e shared
memory objects (Área de memória na qual os objetos são armazenados através da adição AREA
HANDLE do comando CREATE OBJECT).
É possível inserir novos objetos à memória, alterar o objeto armazenado ou até mesmo apagá-lo.
56. Class Definition SAP Inside Track Sao Paulo ’09
Para que a classe gerada seja compartilhada em memória é necessário informar a área de memória na
qual os objetos da classe poderão ser alocados. Esta tarefa é realizada na transação SHMA, que é
utilizada para manipular áreas de memórias, permitindo o monitorar as atualizações realizadas na área,
volume alocado na área, limite de alocação, etc.
59. Class Definition SAP Inside Track Sao Paulo ’09
... FOR TESTING
Comando introduzido no release 6.40, For Testing define a classe como uma classe de teste, na qual
interage com a ferramenta ABAP Unit e é Utilizada para efetuar testes Unitários.
Classes de teste podem conter Tests Methods que são executados durante o teste do programa.
60. Class Definition SAP Inside Track Sao Paulo ’09
Este tipo de classe pode conter métodos especiais que implementam o Fixture (Repositório de dados
do teste) para o teste da classe. Estes métodos podem ser:
SETUP - Método de instância que pode ser executados antes de cada teste individual da classe.
TEARDOWN - Método de instância que pode ser executados depois de cada teste individual da
classe.
CLASS_SETUP - Método de estático que pode ser executados uma única vez antes de todos os
testes da classe.
CLASS_TEARDOWN - Método de estático que pode ser executados uma única vez depois de todos
os testes da classe.
66. Class Definition SAP Inside Track Sao Paulo ’09
Visibility Section
Acessos Public Section Protected Section Private Section
Própria Classe √ √ √
Sub-Classe(Herdada) √ √ X
Classe Externas √ X X
67. Class Definition SAP Inside Track Sao Paulo ’09
Visibility Section
Acessos Public Section Protected Section Private Section
Própria Classe √ √ √
Sub-Classe(Herdada) √ √ X
Classe Externas √ X X
68. Class Definition SAP Inside Track Sao Paulo ’09
Components
Como já citado anteriormente uma classe é composta por componentes que devem ser declarados
dentro das respectivas visibilidades; Public, Protected ou Private.
Atributos - Formado por declarações de TYPE-POOLS, TYPES, DATA, CLASS-DATA, CONSTANTS e
STATICS .
Métodos – Bloco de processamento na qual define as ações da classe.
Eventos – Tem como função executar métodos chamados de EVENT HANDLER.
Interfaces - Interfaces são construções independentes que complementa a seção publica de uma
classe.
69. Class Definition SAP Inside Track Sao Paulo ’09
Attributes
Os atributos de uma classe podem ser definidos com o auxílio de tipos de dados definidos
(Complete types) ou tipos genéricos (Generic types)
71. Class Definition SAP Inside Track Sao Paulo ’09
Os atributos de uma classe podem ser divididos em duas categorias:
Instance – Define componentes de instância, na qual terá uma área de memória para cada instância
da classe.
DATA <nome> [opções].
Static – Define componentes estáticos, não importando quantas instâncias a classe possui, uma única
área de memória é compartilhada por todos os componentes estáticos.
CLASS-DATA <nome> [opções].
CONSTANTS <nome> [opções].
STATICS <nome> [opções].
73. Class Definition SAP Inside Track Sao Paulo ’09
Methods
Um método se comporta de forma semelhante aos performs, são processados em bloco podendo ter
parâmetros de interface (I/O parâmetros). Dentro do bloco de processamento é possível declarar tipos
de dados, na qual será visível apenas dentro de bloco.
Ao contrário de forms, um método é declarado e implementado separadamente.
Os métodos podem ser classificados de varias formas:
General Methods e Functional Methods
General Methods e Functional Methods podem ser definidos como Instance Methods e Static Methods
Instance constructor e Static Constructor
74. Class Definition SAP Inside Track Sao Paulo ’09
General Methods
Permite um número indeterminido de parâmentros, tanto IMPORTING, ou CHANGING como
EXPORTING
Sintaxe
METHODS meth [ABSTRACT|FINAL]
[IMPORTING parameters [PREFERRED PARAMETER p]]
{[EXPORTING parameters]
[CHANGING parameters]
[{RAISING|EXCEPTIONS} exc1 exc2 ...].
75. Class Definition SAP Inside Track Sao Paulo ’09
Functional Methods
Permite um número indeterminado de parâmetros de Importação, e apenas um parâmetro de
exportação (RETURNING).
Sintaxe
METHODS meth [ABSTRACT|FINAL]
[IMPORTING parameters ]
RETURNING VALUE(r) typing
[{RAISING|EXCEPTIONS} exc1 exc2 ...].
76. Class Definition SAP Inside Track Sao Paulo ’09
... RETURNING
Define um parâmetro de retorno na qual deve ser passado por valor.
A chamada de um método contendo um parâmetro returning pode ser de diversas maneiras.
77. Class Definition SAP Inside Track Sao Paulo ’09
Via call method.
Como atribuição, onde a chamada do método é feita
por um comando de atribuição
Como operação, onde a chamada do método é feita
por um comando de operação. Dentre eles:
78. Class Definition SAP Inside Track Sao Paulo ’09
... ABSTRACT
Define um método como abstrato, desta forma o método não é implementado na própria classe, e sim
redefinido na subclasse utilizando o comando REDEFINITION.
Um método abstrato deve ser definido apenas em uma classe abstrata.
80. Class Definition SAP Inside Track Sao Paulo ’09
... FINAL
Define um método como final, desta forma o método deve ser implementado na própria classe e não é
permitida sua redefinição em subclasses.
Uma classe “não final” pode conter um ou mais métodos final, porém se uma classe é declarada como
final o método não pode ser declarado como abstract já que todos os métodos são implicitamente final.
82. Class Definition SAP Inside Track Sao Paulo ’09
... RAISING
Define uma lista de classes de exceção (class-based exceptions) que se tornaram visíveis sempre que um
erro ocorrer. O que torna mais dinâmico o tratamento de erros.
85. Class Definition SAP Inside Track Sao Paulo ’09
Instance Methods
Instance methods são definidos através do comando METHODS e acessíveis somente através de uma
instância da classe
O acesso a métodos de instância deve ser feito com o auxilio do “->“ denominado Object component
selector sempre após um objeto de referência da classe a ser instanciada.
87. Class Definition SAP Inside Track Sao Paulo ’09
Static Methods
Static Methods são definidos através do comando CLASS-METHODS e acessíveis mesmo sem uma
instância da classe
O acesso a métodos estáticos não depende de uma instância da classe, neste caso deve ser feito com o
auxilio do “=>“ denominado Class component selector
89. Class Definition SAP Inside Track Sao Paulo ’09
Constructor Method
ABAP Objects possui um método especial denominado Constructor. Especial porque se diferencia dos
outros pelo fato de ser executado automaticamente.
90. Class Definition SAP Inside Track Sao Paulo ’09
Instance Constructor
Um Construtor de Instância é executado automaticamente sempre que o objeto na qual o método faz
parte for instanciado.
O método deve ser definido com o nome construtor.
Cada classe pode ter um método construtor declarado explicitamente na seção publica de uma classe.
Caso não haja um método declarado, implicitamente o sistema chama o método construtor da classe pai
(superclasse), caso exista uma relação de herança.
Ao contrário de outros métodos, o construtor permite apenas parâmetros IMPORTING, além de
EXCEPTIONS e RAISING.
Um método construtor é implicitamente FINAL por isso não há a necessidade de utilização do
comando FINAL.
91. Class Definition SAP Inside Track Sao Paulo ’09
Instance Constructor
Não é possível chamar um método construtor utilizando o comando call method, exceto em caso onde
é definido um método construtor em uma subclasse, neste caso é necessário utilizar o super pseudo
reference ‘SUPER->’ da seguinte forma: call method super->constructor. Este assunto será
explicado com mais detalhes em herança.
Um método construtor não pode sofrer uma REDEFINIÇÃO com o auxilio de REDEFINITION. Isto
porque ao definir um método construtor na subclasse, implicitamente estamos redefinindo o método
construtor da classe superclasse.
Sintaxe
METHODS constructor [FINAL]
[IMPORTING parameters]
[{RAISING|EXCEPTIONS} exc1 exc2 ...].
94. Class Definition SAP Inside Track Sao Paulo ’09
Static Constructor
Da mesma forma que construtores de instância os construtores estáticos são executados
automaticamente, com uma diferença, construtores estáticos são executados uma única vez para cada
classe, antes da classe sofrer seu primeiro acesso. Isto porque, como explicado anteriormente, métodos
estáticos não dependem de instância.
Cada classe pode ter um método construtor declarado explicitamente na seção publica de uma classe.
Caso não haja um método declarado, implicitamente o sistema define o método construtor sem
qualquer conteúdo.
Da mesma forma que método estático, construtores estático podem acessar apenas componentes
estáticos.
Um método construtor estático não pode sofrer uma REDEFINIÇÃO. Ao instanciar um objeto,
automaticamente o sistema executa o método mais distante na hierarquia de classe.
Ao contrário dos métodos de Instância, o construtor Estático não permite qualquer parâmetro.
Sintaxe
CLASS-METHODS class-constructor.
97. Class Definition SAP Inside Track Sao Paulo ’09
Redefinition
A redefinição do método é feita através da subclasse, e somente é permitida para métodos de instância
não definidos como final, ou seja, um método de instância herdado da classe pai pode ser redefinido na
classe filha. Desta forma o mesmo método tem funcionalidade diferente para a superclasse e subclasse.
Sintaxe
METHODS meth [FINAL] REDEFINITION.
99. Class Definition SAP Inside Track Sao Paulo ’09
Events
Evento é um componente de uma classe que tem como função disparar o EVENT HANDLER, que por
sua vez tem a função de manipular o evento.
Para que seja executado, o evento precisa ser disparado por um método com o auxilio de RAISING
EVENT que funciona como um “gatilho”.
O EVENT HANDLER é executado após ser ativado através do comando SET HANDLER.
É possível executar uma série de métodos (event Handler) a partir de um único evento.
Eventos podem ser divididos em dois tipos , Instance Event e Static Event, que se diferenciam um
do outro pelo fato de Instance events somente poder ser ativados a partir de uma instância da classe,
enquanto Static event não depende de instância para ser utilizado.
Eventos podem ter apenas parâmetros de exportação, incluindo um o parâmetro SENDER que somente
é utilizado para os eventos de instância.
100. Class Definition SAP Inside Track Sao Paulo ’09
Definição do Evento
Definição e implementação do Event Handler
Associação do Evento como o Event Handler que é feita através do SET HANDLER
Chamada do evento através do Comando RAISE EVENT
101. Class Definition SAP Inside Track Sao Paulo ’09
Instance Events
Instance events somente poder ser ativados a partir de uma instância da própria classe.
Eventos podem ter apenas parâmetros de exportação, incluindo um o parâmetro SENDER que somente
é utilizado para os eventos de instancia. Este parâmetro é definido de forma implícita em todos os
eventos de instância, não sendo possível sua definição explicita. Ao disparar o event handler,
automaticamente o sistema define o SENDER com referência a classe definida no evento handler após o
comando FOR EVENT evt OF <ref_para_classe> durante a definição do event handler. Ou seja, é
atribuída ao SENDER a própria referência do objeto que executa o comando RAISE EVENT.
Sintaxe
EVENTS evt EXPORTING VALUE(p1) typing [OPTIONAL|{DEFAULT def1}]
VALUE(p2) typing [OPTIONAL|{DEFAULT def2}].
102. Class Definition SAP Inside Track Sao Paulo ’09
Instance Event Handler
Depois de disparados, os Eventos de Instância são manipulados através dos métodos manipuladores
denominados de instance Event Handler, ou seja, event handlers são executados quando um
evento é executado, podendo também ser executado através de CALL METHOD.
Sintaxe
METHODS meth [ABSTRACT|FINAL]
FOR EVENT evt OF {class|intf}
[IMPORTING p1 p2 ... [sender]].
103. Class Definition SAP Inside Track Sao Paulo ’09
Set Handler
SET HANDLER tem a função de gerenciar os registros de eventos de instância e seus respectivos
métodos manipuladores, isto é feito através de diversas tabelas de sistema. Cada registro de evento
corresponde a uma linha na tabela de sistema na qual tem a informação de evento e event handler. Cada
instance event handler pode manipular apenas um evento, porém cada evento pode ser manipulado por
vários instance event handlers.
Sintaxe
SET HANDLER handler1 handler2 ... FOR { oref | { ALL INSTANCES} } [ACTIVATION act].
104. Class Definition SAP Inside Track Sao Paulo ’09
Raise Event
Eventos são disparados através de métodos com o auxilio de RAISING EVENT que funcionam
como gatilhos. Isto é, ao executar o comando RAISE EVENT todos os event handlers registrados para o
evento com o auxilio de SET HANDLER são executados. A execução dos event handlers segue a
mesma ordem definida durante o registro do evento em set handler.
Sintaxe
RAISE EVENT evt EXPORTING p1 = a1
p2 = a2 ...
107. Class Definition SAP Inside Track Sao Paulo ’09
Static Events
Static Evento tem a mesma função de Instance event, porém não depende de nenhuma instância para ser
executado.
Sintaxe
CLASS-EVENTS evt EXPORTING VALUE(p1) typing [OPTIONAL|{DEFAULT def1}]
VALUE(p2) typing [OPTIONAL|{DEFAULT def2}].
108. Class Definition SAP Inside Track Sao Paulo ’09
Static Event Handler
Depois de disparados, os Eventos Estáticos são manipulados através dos métodos manipuladores
denominados de Static Event Handler, ou seja, event handlers são executados quando um evento é
executado, podendo também ser executado através de CALL METHOD.
Sintaxe
CLASS-METHODS meth
FOR EVENT evt OF {class|intf}
[IMPORTING p1 p2 ...[sender]].
109. Class Definition SAP Inside Track Sao Paulo ’09
Set Handler
SET HANDLER tem a função de gerenciar os registros de eventos Estáticos e seus respectivos métodos
manipuladores, isto é feito através de diversas tabelas de sistema. Cada registro de evento corresponde
a uma linha na tabela de sistema na qual tem a informação de evento e event handler. Cada Static event
handler pode manipular apenas um evento, porém cada evento pode ser manipulado por vários instance
event handlers.
Sintaxe
SET HANDLER handler1 handler2 ... [ACTIVATION act].
110. Class Definition SAP Inside Track Sao Paulo ’09
Raise Event
Eventos são disparados através de métodos com o auxilio de RAISING EVENT que funcionam
como gatilhos. Isto é, ao executar o comando RAISE EVENT todos os event handlers registrados para o
evento com o auxilio de SET HANDLER são executados.
A execução dos event handlers segue a mesma ordem definida durante o registro do evento em SET
HANDLER.
Sintaxe
RAISE EVENT evt EXPORTING p1 = a1
p2 = a2 ...
113. Class Definition SAP Inside Track Sao Paulo ’09
Interface
Interfaces são construções independentes que complementa a seção publica de uma classe.
A definição de uma Interface é similar à definição de uma classe que contém somente métodos
abstratos.
Ao contrário de uma classe, interfaces não possuem implementação. Isto porque a implementação é
feita na classe que utiliza a interface.
A implementação de uma interface em uma classe é feita após o comando PUBLIC SECTION e o acesso
aos componentes de uma interface deve ser feito com o auxilio de ‘~’, denominado interface component
selector, que deve ser utilizado da seguinte maneira: Interface~componente.
Sintaxe
INTERFACE ifac [PUBLIC]
[DEFERRED [PUBLIC]]
[LOAD].
[components]
ENDINTERFACE.