" Este programa Mostra como eh dahora trabalha com Orientação a Objeto,
" eh dificil mas eh dahora pegando o conceito vc consegue pelomenos entender
" os programas orientado a objeto que vc for dar manutenção, pq vc vê que o
" Código e mais estruturado e organizado
" Extra - Quem me deu aula de OO foi o Flavio Furlan do (abap101.com) e
" o Mauricio Cruz da (www.abapzombie.blog.br) portanto qualquer coisa vcs
" falem com eles rsrsrsrsrs e/ou comentem aqui.
*&---------------------------------------------------------------------*
*& Report ZMJ_PROG_OO.
*&
*&---------------------------------------------------------------------*
REPORT zmj_prog_oo.
" Tela de Seleção .....
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME.
PARAMETERS: s_c TYPE i OBLIGATORY .
SELECTION-SCREEN END OF BLOCK a.
" A 'Definition serve para declaração de tudo que será usado
*----------------------------------------------------------------------*
* CLASS c1 DEFINITION
*----------------------------------------------------------------------*
CLASS c1 DEFINITION.
" 'Public Section conterá atributos visiveis pra todos ( progs, functions, etc)
PUBLIC SECTION.
" Olhando bem com o method eh, faz vc lembra de algo ne, e claro parece
" uma função a ideia eh essa mesmo, contem os importing changing e exporting
METHODS: set IMPORTING value(set_value) TYPE i,
add,
get EXPORTING value(get_value) TYPE i.
" Caso ela vire uma 'SuperClass (classe Mãe) no 'Protected Section os atributos
" e metodos seram somente usados nas subclasses e nela mesma
PROTECTED SECTION.
" 'Private section conterá atributos visiveis somente dentro da classe.
PRIVATE SECTION.
DATA contador TYPE i .
ENDCLASS. "c1 DEFINITION
" A 'Implementation serve para mostrar o q tudo que foi declarado faz,
" dica - Toda vez que abrir uma classe ou metodo ja fecha pra visualizar
" melhor oq está Fazendo.
*----------------------------------------------------------------------*
* CLASS c1 IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
" 'Method que compara a variavel 'Contador com o variavel definida do 'Method
METHOD set.
contador = set_value.
ENDMETHOD. "set
" 'Method que adiciona +2 na variavel 'Contador
METHOD add.
ADD 2 TO contador.
ENDMETHOD. "add
" 'Method que compara variavel definida do 'Method com a varival 'Contador
METHOD get.
get_value = contador.
ENDMETHOD. "get
ENDCLASS. "c1 IMPLEMENTATION
" Daki pra baixo estaremos trabalhando com tudo que declaramos acima.
" Data cnt com referencia a classe criada dando assim acesso a tudo da classe.
DATA obj_1 TYPE REF TO c1.
DATA n TYPE i .
" Inicio da seleção ....
START-OF-SELECTION.
" Para estar trabalhando com ele ainda vc precisa cria-lo como objeto
CREATE OBJECT obj_1.
" Chama o 'Method set para o objeto 'obj_1 onde o valor exportado é a variável
" declarada como tipo inteiro (linha 75)
CALL METHOD obj_1->set
EXPORTING
set_value = n.
" Faz n vezes a chamada no 'Method add conforme imput na tela de seleção.
DO s_c TIMES.
CALL METHOD obj_1->add.
ENDDO.
" Chama o 'Method set para o objeto 'obj_1 onde o valor importado é a variável
CALL METHOD obj_1->get
IMPORTING
get_value = n.
" Mostra a variável pra 6 vê que funciona.
WRITE n.