sexta-feira, 25 de novembro de 2011

Orientação a Objeto no ABAP - SE24

  "  Hoje vou tentar passar pra vocês um pouco de orinteção a Objeto ( OO ),
" 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.

8 comentários:

  1. Muito bom o exemplo parabens!

    ResponderExcluir
  2. Cara, muito boa a explicação, ta de parabéns, me ajudou muito !

    ResponderExcluir
  3. Você criou a classe na SE24 e criou um report na SE38?

    ResponderExcluir
    Respostas
    1. Sim senhor, Criei a definição a e implementação da Classe ( coisa que é possivel fazer dentro do programa ) na SE24, e usei essas caracteristicas da classe no programa na SE38.

      Excluir
  4. Muito bom o tutorial, estou querendo largar mao de abap sequencial e começar usar somente abap oo.

    ResponderExcluir