" usando a transação se24, vou ser bem sincero mexo pouco com OO e me
" esforço bastante pra aprender pois eu acho que OO eh o futuro do SAP
" para um ABAP, mas existem alguns conceitos dentro disso que são um pouco
" complexos de aprender e ainda mais de explicar, portanto estarei fazendo
" uma classe desde o começo e tentando passar o maximo que conseguir pra vcs,
" não vou fala que é facil, mas se você for um ABAP a frase 'se esforçar um
" pouco mais' já é cotidiano nosso, gostaria que comentassem caso eu não
" contemple ou me equivoque em algo durante esse post.
" Primeiramente vamos entra na transação 'SE24' e vamos criar nossa primeira
" classe, no campo 'Classe' você informe 'ZCL_CAR', clique em 'CRIAR'
" aqui estaremos fazendo uma classe de carro.
" Crie conforme condições acima reparando no campo 'Geraç.Istancia' e no
" no flag 'Final'.
" Olha a cara do negocio,.. tenso rsrsrsr, hoje eu tentarei mostrar o básico
" de duas das abas que podemos considerar como principais que sãs as abas
" 'Atributos' e 'Metodos', primeiro vamos para o 'Atributos' que seriam como
" condições para aquela classe existir.. Exemplo : O que o carro precisa para
" ser chamado de carro, - motor, rodas, velocidade, marcha .... e assim vai,
" conforme imagem acima façam cada cada atributo com o mesmo tipo, visibilidade
" e tipo referencia, durante o uso dos métodos irei explicar melhor.
" Agora faremos os métodos da nossa classe que são como coisas que ( no
" nosso caso ) carros podem fazer, nosso carro só aumenta e diminui a
" velocidade, Mas conforme imagem acima a gente só aumenta a velicidade,
" rsrs. Resumido muito por cima Metodos funcionam como functions...
" Clicando duas vezes encima do metodo 'Aumenta_velo' iremos para o
" texto fonte daquele método, coloquem o código abaixo.
*&---------------------------------------------------------------------*
method AUMENTA_VELO.
" Usado me-> para informar que é um atributo da classe, pois cada método
" pode ter seu proprio atributo (parametro), irei dar um exemplo nos
" metodos abaixo.
add 2 to me->velocidade.
endmethod.
*&---------------------------------------------------------------------*
" Agora precisamos informar a marca do carro ( SET_MODELO ) que estamos
" criando, e isso será informado no programa portanto deveremos criar um
" parametro de entrada para esse método, primeiro clique duas vezes no método
" vá no menu 'Ir Para/ Definição método' e crie um parametro de 'Importing'
" conforme imagem abaixo.
" Depois de salvo repare que este parametro fica informado tipo num cabeçalho
" do metodo.
" Só colocar o código abaixo no código fonte do método 'SET_MODELO'.
*&---------------------------------------------------------------------*
method SET_MODELO.
" Agora espero que tenha ficado um pouco mais claro o uso da comando me->,
" no código abaixo eu to informando que o 'atributo' da classe está recebendo
" o valor do parametro do método.
me->modelo = modelo.
endmethod.
*&---------------------------------------------------------------------*
" Faça com o metodo 'SET_MARCA' o mesmo feito com o 'SET_MODELO', crie uma
" uma parametro para ela e o relacione com o atributo 'MARCA' da classe,
" codigo abaixo.
*&---------------------------------------------------------------------*
method SET_MARCA.
me->marca = marca.
endmethod.
*&---------------------------------------------------------------------*
" Criei um código simples para vcs debugarem pois o debug muda um pouco,
" mais tarde estarei fazendo um post sobre o 'debug' para OO e uma continuação
" sobre esta mesma classe para poder exibir e tratar dados.
REPORT zmj_oo2.
" Refenreciei um objeto a uma classe mas este objeto ainda não existe.
DATA: o_veiculo TYPE REF TO zcl_car.
BREAK-POINT.
" Agora o objeto tá criado, clique duas vezes neste objeto e vc verá seus
" atributos.
CREATE OBJECT o_veiculo.
" Metodo que informa a marca do carro.
CALL METHOD o_veiculo->set_marca
EXPORTING
marca = 'VW'.
BREAK-POINT.
" Faça três vezes ...
DO 3 TIMES.
" Metodo que adiciona +2 cada vez que executado.
CALL METHOD o_veiculo->aumenta_velo.
ENDDO.
BREAK-POINT.