domingo, 4 de março de 2012

Criando o 3° programa em ABAP

Neste post vamos dar um pouco de cores.

Conforme no primeiro post "Criando 1° programa em ABAP", entre na transação SE80, digite o nome do programa "ZCURSO3".




1)    Criar uma tabela com exibir os dados na tela

2)    Usar os campos: *Programa Teste

data: v_nome(20)       type c,
      v_sobrenome(20)  type c,
      v_onof(2)        type c.

3)    Usar a tabela

data: begin of i_tab occurs 10,
        depto(15)      type c,
        contador       like sy-tabix,
        nome(20)       type c,
        sobrenome(20)  type c,
        salario        type p decimals 2,
        nascimento     type d,
      end of i_tab.

Carregar uma tabela conforme modelo
v_nome           = 'Fulano'.
v_sobrenome      = 'de Tal'.

i_tab-nome       = 'KATIA'.
i_tab-sobrenome  = 'ALVES'.
i_tab-salario    = 10000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19690121'.
append i_tab.

i_tab-nome       = 'ELVISE'.
i_tab-sobrenome  = 'BRESCIANI'.
i_tab-salario    = 20000.
i_tab-depto      = 'informatica'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'CRISTIANE'.
i_tab-sobrenome  = 'CAETANO VELOZO'.
i_tab-salario    = 200000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'SERGIO'.
i_tab-sobrenome  = 'KRÜGER'.
i_tab-salario    = 50000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'ALTAMIR'.
i_tab-sobrenome  = 'NUNES JUNIOR'.
i_tab-salario    = 100000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'TARCISIO'.
i_tab-sobrenome  = 'MEIRA'.
i_tab-salario    = -200.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.


Efetuar um sort por DEPTO NOME SOBRENOME.
* para efeito de impressão
Setar o campo V_ONOF = 'nn'.

Fazer um loop e usar os recursos do comando
AT – usar

  at first.
    format color 6 intensified on.
    write: / 'altom '.
    format reset.
    skip.
  endat.

·         exemplo do cores e quebras

at new depto.
     sum.
     format color 4 intensified on.
     write: /001 'departamento:',015 i_tab-depto,090(1) space.
     skip.
     format reset.
  endat.

if v_onof = 'nn'.
    format color 2 intensified on.
    v_onof = 'ff'.
 else.
    format color 2 intensified off.
    v_onof = 'nn'.
 endif.

4)    Emitir listagem com os totais observem que a cada impressão vamos mudar o tipo de cor ou intensidade.


report zanj no standard page heading line-size 90
                                     line-count 60.

*------------------------------------------------------------*
* Programa Teste
*------------------------------------------------------------*

data: v_nome(20)       type c,
      v_sobrenome(20)  type c,
      v_onof(2)        type c.

data: begin of i_tab occurs 10,
        depto(15)      type c,
        contador       like sy-tabix,
        nome(20)       type c,
        sobrenome(20)  type c,
        salario        type p decimals 2,
        nascimento     type d,
      end of i_tab.

v_nome           = 'Fulano'.
v_sobrenome      = 'de Tal'.

i_tab-nome       = 'KATIA'.
i_tab-sobrenome  = 'ALVES'.
i_tab-salario    = 10000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19690121'.
append i_tab.

i_tab-nome       = 'ELVISE'.
i_tab-sobrenome  = 'BRESCIANI'.
i_tab-salario    = 20000.
i_tab-depto      = 'informatica'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'CRISTIANE'.
i_tab-sobrenome  = 'CAETANO VELOZO'.
i_tab-salario    = 200000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'SERGIO'.
i_tab-sobrenome  = 'KRÜGER'.
i_tab-salario    = 50000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'ALTAMIR'.
i_tab-sobrenome  = 'NUNES JUNIOR'.
i_tab-salario    = 100000.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

i_tab-nome       = 'TARCISIO'.
i_tab-sobrenome  = 'MEIRA'.
i_tab-salario    = -200.
i_tab-depto      = 'treinamento'.
i_tab-nascimento = '19001212'.
append i_tab.

clear i_tab.

sort i_tab by depto nome sobrenome.
v_onof = 'nn'.

loop at i_tab.
  at first.
    format color 6 intensified on.
    write: / 'Curso ABAP'.
    format reset.
    skip.
  endat.

  at new depto.
     sum.
     format color 4 intensified on.
     write: /001 'departamento:',015 i_tab-depto,090(1) space.
     skip.
     format reset.
  endat.

 if v_onof = 'nn'.
    format color 2 intensified on.
    v_onof = 'ff'.
 else.
    format color 2 intensified off.
    v_onof = 'nn'.
 endif.

  write: /001 i_tab-nascimento,  020 i_tab-nome,
          035 i_tab-sobrenome,   074 i_tab-salario.
  format reset.

  at end of depto.
  sum.

  write: /064 '-----------------------------',
         /064 'total:    ' color 3 intensified on,
          074 i_tab-salario color 3 intensified on,
         /064 '-----------------------------'.
  endat.

  at last.
  sum.

  write: /064 '-----------------------------',
         /064 'geral:    ' color 3 intensified on,
          074 i_tab-salario color 3 intensified on,
         /064 '-----------------------------'.
  endat.
endloop.

top-of-page.

write: 001 text-001, 070 text-002,
       /001 text-008.
format reset.
uline.


O resultado é:



Criando o 2° programa em ABAP

Seguindo o mesmo conceito do post anterior, SE80, nome do programa "ZCURSO2"...

Segue o código.



1)    Criar uma tabela com exibir os dados na tela

2)    Usar os campos: * Programa Teste

DATA: V_NOME(20)       TYPE C,
      V_SOBRENOME(20)  TYPE C.

3)    Usar a tabela

DATA: BEGIN OF I_TAB OCCURS 10,
        CONTADOR       LIKE SY-TABIX,
        NOME(20)       TYPE C,
        SOBRENOME(20)  TYPE C,
        SALARIO        TYPE P DECIMALS 2,
      END OF I_TAB.

4)    Carregar uma tabela com o campo de contador e imprimir os dados

v_nome          = 'Fulano'.
v_sobrenome     = 'de Tal'.

i_tab-nome      = 'KATIA'.
i_tab-sobrenome = 'ALVES'.
i_tab-salario   = 10000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'ELVISE'.
i_tab-sobrenome = 'BRESCIANI'.
i_tab-salario   = 20000.
i_tab-depto     = 'informatica'.
append i_tab.

i_tab-nome      = 'CRISTIANE'.
i_tab-sobrenome = 'CAETANO VELOZO'.
i_tab-salario   = 200000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'SERGIO'.
i_tab-sobrenome = 'KRÜGER'.
i_tab-salario   = 50000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'ALTAMIR'.
i_tab-sobrenome = 'NUNES JUNIOR'.
i_tab-salario   = 100000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'TARCISIO'.
i_tab-sobrenome = 'MEIRA'.
i_tab-salario   = -200.
i_tab-depto     = 'treinamento'.
append i_tab.

Efetuar um sort  por   DEPTO NOME SOBRENOME.
Fazer um loop e usar os recursos do comando
AT - usar
AT NEW DEPTO. Sumarizar os valores
AT END OF DEPTO.
AT LAST.

5)    Emitir listagem com os totais


REPORT ZCURSO2 NO STANDARD PAGE HEADING LINE-SIZE 90
                                     LINE-COUNT 60.

*-----------------------------------------------------------*
* Programa Teste
*-----------------------------------------------------------*
data: v_nome(20)       type c,
      v_sobrenome(20)  type c.

data: begin of i_tab occurs 10,
        depto(15)      type c,
        contador       like sy-tabix,
        nome(20)       type c,
        sobrenome(20)  type c,
        salario        type p decimals 2,
      end of i_tab.

v_nome          = 'Fulano'.
v_sobrenome     = 'de Tal'.

i_tab-nome      = 'KATIA'.
i_tab-sobrenome = 'ALVES'.
i_tab-salario   = 10000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'ELVISE'.
i_tab-sobrenome = 'BRESCIANI'.
i_tab-salario   = 20000.
i_tab-depto     = 'informatica'.
append i_tab.

i_tab-nome      = 'CRISTIANE'.
i_tab-sobrenome = 'CAETANO VELOZO'.
i_tab-salario   = 200000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'SERGIO'.
i_tab-sobrenome = 'KRÜGER'.
i_tab-salario   = 50000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'ALTAMIR'.
i_tab-sobrenome = 'NUNES JUNIOR'.
i_tab-salario   = 100000.
i_tab-depto     = 'treinamento'.
append i_tab.

i_tab-nome      = 'TARCISIO'.
i_tab-sobrenome = 'MEIRA'.
i_tab-salario   = -200.
i_tab-depto     = 'treinamento'.
append i_tab.

clear i_tab.

sort i_tab by depto nome sobrenome.

loop at i_tab.
  at new depto.
     sum.
     write: /001 'departamento:',015 i_tab-depto.
             skip.
  endat.

  write: /001 i_tab-depto,     020 i_tab-nome,
          035 i_tab-sobrenome, 074 i_tab-salario.
*  uline.

  at end of depto.
  sum.
  write: /064 '-----------------------------',
         /064 'total:', 074 i_tab-salario,
         /064 '-----------------------------'.
  endat.

  at last.
  sum.
  write: /064 '-----------------------------',
         /064 'geral:', 074 i_tab-salario,
         /064 '-----------------------------'.
  endat.
endloop.

top-of-page.
* write: 'programa teste - Curso2', 070 'página:', sy-pagno.
write: text-001, 070 text-002, sy-pagno.
uline.


Resultado é:


sábado, 3 de março de 2012

Criando o 1° programa em ABAP

Nos primeiros exemplos não vamos trabalhar com banco de dados e sim com dados estáticos.
No menu inicial digite SE80 e tecle Enter.


Digite o nome do programa "zcurso1", conforme a figura acima e tecle enter.


Clique em sim.


Desflega a opção Com include TOP e tecle enter.



Clique em gravar.


Clique em Objeto local.



Clicamos duas vezes em "ZCURSO1" conforme a imagem grifada acima.




Clique no botão 


Abaixo do código REPORT ZCURSO1                        .

Iniciaremos nosso código.





1)    Criar uma tabela com exibir os dados na tela

2)    Usar os campos: * Programa Teste

data: v_nome(20)       type c,
      v_sobrenome(20)  type c.

3)    Usar a tabela

data: begin of i_tab occurs 10,
        nome(20)       type c,
        sobrenome(20)  type c,
      end of i_tab.

4)    Carregar a tabela via append

v_nome          = 'Fulano'.
v_sobrenome     = 'de Tal'.

i_tab-nome      = 'KATIA'.
i_tab-sobrenome = 'ALVES'.
append i_tab.
i_tab-nome      = 'ELVISE'.
i_tab-sobrenome = 'BRESCIANI'.
append i_tab.
i_tab-nome      = 'CRISTIANE'.
i_tab-sobrenome = 'NAO SEI DO QUE'.
append i_tab.
i_tab-nome      = 'SERGIO'.
i_tab-sobrenome = 'KRÜGER'.
append i_tab.
i_tab-nome      = 'ALTAMIR'.
i_tab-sobrenome = 'NUNES JUNIOR'.
append i_tab.

5)    Emitir a listagem da tabela com sort por nome

6)    Abaixo o código inteiro.


data: v_nome(20)       type c,
      v_sobrenome(20)  type c.

data: begin of i_tab occurs 10,
        nome(20)       type c,
        sobrenome(20)  type c,
      end of i_tab.

v_nome          = 'Fulano'.
v_sobrenome     = 'de Tal'.

i_tab-nome      = 'KATIA'.
i_tab-sobrenome = 'ALVES'.
append i_tab.
i_tab-nome      = 'ELVISE'.
i_tab-sobrenome = 'BRESCIANI'.
append i_tab.
i_tab-nome      = 'CRISTIANE'.
i_tab-sobrenome = 'NAO SEI DO QUE'.
append i_tab.
i_tab-nome      = 'SERGIO'.
i_tab-sobrenome = 'KRÜGER'.
append i_tab.
i_tab-nome      = 'ALTAMIR'.
i_tab-sobrenome = 'NUNES JUNIOR'.
append i_tab.

sort i_tab by nome.

clear i_tab.

loop at i_tab.
* do 50 times.
* skip.
  write: sy-tabix, 020 i_tab-nome, 035 i_tab-sobrenome.
  uline.
*  if sy-index = 30.
*    new-page.
* endif.
* enddo.
endloop.

top-of-page.
* write: 'programa teste – Curso ABAP', 070 'página:', sy-pagno.
write: text-001, 070 text-002, sy-pagno.
uline.
write: 'contador', 020 'nome', 035 'sobrenome'.
uline.







Clicamos no botão checar
Salvar
Ativar



Tecle F8  e  resultado é:







Mini SAP



O Mini SAP 4.6D é um demo da SAP para você treinar ABAP e um pouco de Basis. Ele só possui as tabelas mais básicas de controle do sistema e vem com algumas tabelas de exemplo. O MiniSAP vem com dois CDs. O CD do Kernel contém os arquivos para o Kernel e o Frontend. O CD de dados contém o arquivos compactados do banco de dados SAP.
Clique para fazer Download deste arquivo.

Criando uma Tabela Z no SAP

Criar tabelas "Z" no SAP

Transação "SE11"


Digite o nome da tabela, neste caso "ZMODELO"
Clique em exibir para verificar se a tabela já existe.
Se não existir clique em criar.




Insira a descrição breve da tabela.
Marque a opção classe de entrega com a letra "A" ou selecione no matchcode.

Clique na aba Campos para inserir as colunas da tabela.

O primeiro campo, vamos definir como o id da tabela


Lógicamente o elemento de dados ZCOD não esta criado, vamos clicar duas vezes em cima dele para criar esse elemento.


Clique em sim.


Clique em Objeto local.


Agora precisa ciar um domínio para campo clicando duas vezes no ZCOD
Obs. ZCOD é o Elemento de dados que foi criado anteriormente.

Na aba Definição, vamos inserir o formato da categorial de dados, neste caso NUMC, Número de posições 19 e comprimento na saída 19.


Clicamos no botão checar
Salvar
Ativar


Clique em voltar .

Aba Denominações de Campo e digite o cabeçalho do campo, é o modo que ele será visualizado



Clicamos no botão checar
Salvar
Ativar

  
Clique em voltar Voltar.


Agora é necessário criar outros campos.

Para campos que contenha texto utilizamos "CHAR"
Datas "Dats"
Para valores com decimal "NUMC"


Após inserir todos os campos voltamos na tela inicial conforme imagem abaixo.


Clicamos no botão checar
Salvar
Ativar



Agora clique em "Configurações Técnicas".

Após preencher o campo Tipo de dados e categor. tamanho, clique em salvar.

Salvar
Clicamos no botão checar



Voltar

Clicamos no botão checar
Salvar
Ativar

Pronto tabela Z concluída.