curso sap abap

46

Click here to load reader

Upload: jaimegrodrigues

Post on 02-Dec-2014

232 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Curso Sap Abap

ABAP –MARCIO LEITE / FELIPE

Usuario: mleite abap00

Estrutura: campos de varias tabelas para ser utilizada em programas (não armazena dados)

/h – start modo debug

Criar tabela:

1- SE11 (DICIONARIO): 1. Cria domínio, cria categoria de dados e finalmente cria tabela

Page 2: Curso Sap Abap
Page 3: Curso Sap Abap
Page 4: Curso Sap Abap
Page 5: Curso Sap Abap

INTEGRIDADE: ABAP PODE PARA O SAP (ECC 6), SE ALTERAR DIRETAMENTE TABELAS STANDARD.

OVERVIEW, DICIONARIO DE DADOS, REPORT I, II E MODULE POOL (EX.CADASTRO DE CLIENTES).

SE38 – EDITOR ABAP

TRANSACOES DE CARGA: CAT ou LSMW

DATA COUNTER TYPE I. (INTEGER 8 BYTES) – P=COMPACTADO “COMENTARIO OU * COMENTARIO

WRITE DATA . (EXIBE DATA NA TELA)

CLEAR DATA. (MOVE ZEROS OU ESPACOS)

Page 6: Curso Sap Abap

SE38 – CRIA ABAPA

REPORT ZSAAA02A.TABLES: SBOOK. (DECLARACAO EM MEMORIA)SELECT * FROM SBOOK WHERE CARRID = ‘LH ’. .... IF SY-SUBRC NE 0. WRITE: / SBOOK-CARRID, SBOOK-CONNID, SBOOK-FLDATE…. (/ PULA UMA LINHA)ENDIF.END SELECT.IF SY-SUBRC NE 0. (TESTA RETORNO DO COMANDO) …END IF.

MAIOR TABELA DO SAP: BSEG – SEGMENTO CONTABIL

VARIAVEIS DE SISTEMA

SY-DATUM – DATASY-USEIT - HORASY-UNAME – USER IDSY-SUBRC – RETURN CODESY-REPID – PROGRAM NAMESY-LANGU – LOGON LANGUAGE

*&---------------------------------------------------------------------**& Report ZP_SD_RP_LISTA_CLIENTE_04*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT ZP_SD_RP_LISTA_CLIENTE_04.TABLES: kna1, zcliente_04.data: v_kunnr type kna1-kunnr, v_name1 type kna1-name1.select kunnr name1 from kna1 into (v_kunnr, v_name1) where kunnr > 0. move v_kunnr to zcliente_04-codcli. move v_name1 to zcliente_04-nomcli. insert zcliente_04. if sy-subrc ne 0. write:/ 'Ciente ja existe:',v_kunnr.

Page 7: Curso Sap Abap

endif.endselect.skip 2.write: 05 'Codigo', 23 'Nome'.SELECT * FROM zcliente_04. WRITE: / zcliente_04-Codcli, zcliente_04-nomcli.ENDSELECT.delete from zcliente_04 where codcli > 2.SELECT * FROM zcliente_04. WRITE: / zcliente_04-Codcli, zcliente_04-nomcli.ENDSELECT.

Ctrl > ou ctr <

Page 8: Curso Sap Abap

*&---------------------------------------------------------------------**& Report  ZP_SD_RP_LISTA_CLIENTE_04*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZP_SD_RP_LISTA_CLIENTE_04.TABLES:  kna1, zcliente_04.data: v_kunnr type kna1-kunnr, v_name1 type kna1-name1.*parameters:*    p_codcli like zcliente_04-codcli default 01. select-options:     p_codcli for zcliente_04-codcli default 01 to 1000.select kunnr  name1 from kna1 into (v_kunnr, v_name1) where kunnr in p_codcli.  move v_kunnr to zcliente_04-codcli.  move v_name1 to zcliente_04-nomcli.  insert zcliente_04.  if sy-subrc ne 0.    write:/ 'Cliente ja existe:',v_kunnr.  endif.endselect.skip 2.write: 05 'Codigo',       23 'Nome'.SELECT * FROM zcliente_04.  WRITE: / zcliente_04-Codcli, zcliente_04-nomcli.ENDSELECT.

*&---------------------------------------------------------------------**& Report  ZP_SD_RP_EXEMPLO_05*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZP_SD_RP_EXEMPLO_05.data: tb_cli type table of zcliente_04 with header line.data: wa_cli type zcliente_04.TABLES:  zcliente_04.parameters:

Page 9: Curso Sap Abap

    p_codcli type zcliente_04-codcli default 01.select * from zcliente_04  into table tb_cli  where codcli = p_codcli.read table tb_cli into wa_cli with key codcli = p_codcli. " index 7  WRITE: /001 wa_cli-codcli.

Page 10: Curso Sap Abap
Page 11: Curso Sap Abap

*&---------------------------------------------------------------------**& Report  ZP_SD_RP_LISTA_CLIENTE_04*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZP_SD_RP_LISTA_CLIENTE_04.TABLES:  kna1, zcliente_04.data: v_kunnr type kna1-kunnr, v_name1 type kna1-name1.*parameters:*    p_codcli like zcliente_04-codcli default 01. select-options:     s_codcli for zcliente_04-codcli default 01 to 1000.select kunnr  name1 from kna1 into (v_kunnr, v_name1) where kunnr in s_codcli.  move v_kunnr to zcliente_04-codcli.  move v_name1 to zcliente_04-nomcli.  insert zcliente_04.  if sy-subrc ne 0.    write:/ 'Cliente ja existe:',v_kunnr.  endif.endselect.skip 2.write: 05 'Codigo',       23 'Nome'.SELECT * FROM zcliente_04.  WRITE: / zcliente_04-Codcli, zcliente_04-nomcli.ENDSELECT.

********************************************************************************************** PROGRAMA QUE COPIA OS DADOS DA KNA1 ESCOLHIDOS NA TELA DE SELECAO E INSERE NA ZCLIENTE_11 *

TABLES: ZCLIENTE_11, KNA1.SELECT-OPTIONS: S_CODCLI FOR KNA1-KUNNR.PARAMETERS: P_DATCAD LIKE KNA1-ERDAT.

SELECT KUNNR NAME1 INTO (KNA1-KUNNR, KNA1-NAME1) FROM KNA1 WHERE KUNNR IN S_CODCLI AND ERDAT EQ P_DATCAD. ZCLIENTE_11-CODCLI = KNA1-KUNNR.

Page 12: Curso Sap Abap

ZCLIENTE_11-NOMCLI = KNA1-NAME1.. INSERT ZCLIENTE_11. IF SY-SUBRC NE 0. WRITE: / 'CLIENTE ',ZCLIENTE_11-CODCLI,' JÁ EXISTE'. ENDIF.ENDSELECT.

IF SY-SUBRC NE 0. WRITE: / 'CLIENTE NÃO ENCONTRADO PARA OS PARAMETROS INFORMADOS'.ELSE. SELECT * FROM ZCLIENTE_11. WRITE: / ZCLIENTE_11-CODCLI,ZCLIENTE_11-NOMCLI. ENDSELECT.ENDIF.

UTILIZANDO SY_TABIX

*&---------------------------------------------------------------------**& Report  ZRP04_03*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZRP04_03.data:  tb_00cli  type table of ztbsd_cliente_00 with header line.

data: begin of tb_kna1 occurs 0.data: kunnr type kna1-kunnr,      name1 type kna1-name1,      regio type kna1-regio,      stras type kna1-stras.data: end of tb_kna1.data: wa_kna1 like tb_kna1.

data: begin of tb_select occurs 0,      kunnr type kna1-kunnr,      end of tb_select.data: wa_select like tb_select.

Page 13: Curso Sap Abap

tables: ztbsd_cliente_00.

*Parâmetro de Telaparameters: p_tabix type sy-tabix.

* Seleção na Tabela ZTBSD_CLIENTE_00select * from ztbsd_cliente_00 into table tb_00cli.

if sy-subrc eq 0.

* Movimentar para tabela interna para ajusta tipo de dado  loop at tb_00cli.    move: tb_00cli-codcli to wa_select-kunnr.    append wa_select to tb_select.  endloop.

* Seleção Na KNA1  select kunnr         name1         regio         stras    from kna1    into table tb_kna1    for all entries in tb_select    where kunnr = tb_select-kunnr.

endif.

* Ordenação para Seleçãosort tb_select.

* Leitura com parâmetro de telaread table tb_select into wa_select                    index p_tabix.

* Verificação se Conseguiu Ler dadoif sy-subrc = 0.

* Leitura do dado correspondente na KNA1  read table tb_kna1 with key kunnr = wa_select-kunnr.

* Verificação se Conseguiu Ler dado  if sy-subrc = 0.* Impressão do dado em tela

Page 14: Curso Sap Abap

    write: /001 tb_kna1-name1,            036 tb_kna1-regio,            040 tb_kna1-stras,            060 tb_kna1-kunnr.  endif.endif.

* Leitura com parâmetro de telaread table tb_select into wa_select                    index p_tabix.

* Verificação se Conseguiu Ler dadoif sy-subrc = 0.

* Leitura do dado correspondente na KNA1  read table tb_kna1 with key kunnr = wa_select-kunnr.

* Verificação se Conseguiu Ler dado  if sy-subrc = 0.* Impressão do dado em tela    write: /001 tb_kna1-name1,            036 tb_kna1-regio,            040 tb_kna1-stras,            060 tb_kna1-kunnr.  endif.endif.

Page 15: Curso Sap Abap

UTILIZANDO SY_TABIX

*&---------------------------------------------------------------------**& Report  ZP_SD_RP_EXEMPLO_04*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZP_SD_RP_EXEMPLO_04.* data var01(3) type c. " char* data: var2 type datum.

*data: begin of tab_cli_1 occurs 0.*  data: codcli type zcliente_04-codcli.*  data: nomcli type zcliente_04-nomcli.*data: end of tab_cli_1.

data: tb_cli type table of zcliente_04.data: wa_cli type zcliente_04.

data: begin of tb_kna1 occurs 0.data: kunnr type kna1-kunnr,      land1 type kna1-land1,      name1 type kna1-name1.data: end of tb_kna1.data: wa_kna1 like tb_kna1.

data: begin of tb_select occurs 0,      kunnr type kna1-kunnr,      end of tb_select.data: wa_select like tb_select.

tables: zcliente_04.select-options: s_codcli for zcliente_04-codcli.select * from zcliente_04   into table tb_cli  where codcli in s_codcli.

if sy-subrc eq 0.  loop at tb_cli into wa_cli.    move: wa_cli-codcli to wa_select-kunnr.    append wa_select to tb_select.

Page 16: Curso Sap Abap

  endloop.

  select kunnr land1  name1 from kna1 into table tb_kna1    for all entries in tb_select where kunnr = tb_select-kunnr.endif.loop at tb_kna1 into wa_kna1.  write: /001 wa_kna1-kunnr,          012 wa_kna1-land1,          016 wa_kna1-name1.endloop.

Obs: A tabela select só foi criada para adequar os campos da zcliente_04 a kna1.

Command EffectAPPEND Appends the contents of the work area at the end of the internal tableCOLLECT Inserts the cumulative contents of the work area into the internal tableINSERT Inserts the contents of the work area into a particular table entryMODIFY Overwrites a particular table entry with the content of the work areaDELETE Deletes a specified entry from the internal tableLOOP AT Places the entries of an internal table in a work area one at a timeREAD TABLE Places a single internal table entry in a work areaSORT Sorts the internal tableCLEAR Deletes the work area or the internal tableREFRESH Deletes the internal table

FREE Releases space in memory previously occupied by table

Efeito de comandoAPPEND Anexa o conteúdo da área de trabalho no final databela internaCOLLECT Insere o conteúdo cumulativo da área de trabalhopara a tabela internaInserir Insere o conteúdo da área de trabalho em uma entrada detabela particularMODIFY Substitui uma entrada de tabela especial com o conteúdo da área de trabalhoDELETE Exclui uma entrada específica da tabela internaLOOP AT Places as entradas de uma tabela interna em uma área de trabalho um de cada vezLEIA Locais TABLE uma entrada única tabela interna em uma área de trabalho

Page 17: Curso Sap Abap

Classifica SORT a tabela internaExclui limpar a área de trabalho ou a tabela internaExclui REFRESH a tabela internaReleases espaço livre na memória anteriormente ocupado por tabela

UTILIZANDO MODIFY*&---------------------------------------------------------------------**& Report  ZRP04_04*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZRP04_04.* Declaração Tabelas / Workareasdata:  tb_00cli  type table of ztbsd_cliente_00 with header line,       wa_00cli  type ztbsd_cliente_00 .

*Parâmetro de Telaparameters: p_codcli type ztbsd_cliente_00-codcli,            p_name   type ztbsd_cliente_00-nomecli.

* Seleção na Tabela ZTBSD_CLIENTE_00select * from ztbsd_cliente_00 into table tb_00cli where codcli = p_codcli.

if tb_00cli[] is not initial. "sy-subrc eq 0.  read table tb_00cli into wa_00cli index 1.  wa_00cli-nomecli = p_name.

  modify tb_00cli index 1 from wa_00cli.  if sy-subrc = 0.    modify ztbsd_cliente_00 from table tb_00cli.    message 'Cliente atualizado' type 'S'.  endif.else.  message 'Cliente nao cadastrado' type 'I'.endif.*abend w= rodape e continua"

Page 18: Curso Sap Abap

* Impressão do dado em telawrite: /001 wa_00cli-codcli,        011 wa_00cli-nomecli.

[14:12:30] Sergio Brancalion: types:

I - Info : Press ENTER to continueW - Warning : Correction possibleE - Error : Correction requiredA - Abend :Transaction terminatedX - Exit : Transaction terminated with short dump MESSAGE_TYPE_XS - Success : Message on next screen See also MODULE .

UTILIZANDO DELETE

*&---------------------------------------------------------------------**& Report  ZRP04_04*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZRP04_04.* Declaração Tabelas / Workareasdata:  tb_00cli  type table of ztbsd_cliente_00 with header line,       wa_00cli  type ztbsd_cliente_00 .

*Parâmetro de Telaparameters: p_codcli type ztbsd_cliente_00-codcli.*            p_name   TYPE ztbsd_cliente_00-nomecli.

* Seleção na Tabela ZTBSD_CLIENTE_00select * from ztbsd_cliente_00

Page 19: Curso Sap Abap

 into table tb_00cli where codcli = p_codcli.

if tb_00cli[] is not initial.  read table tb_00cli into wa_00cli index 1.

  delete tb_00cli where codcli = wa_00cli-codcli.

  if sy-subrc = 0.    delete ztbsd_cliente_00 from wa_00cli.  endif.

* Impressão do dado em tela  write: /001 wa_00cli-codcli,          011 wa_00cli-nomecli.else.  message 'Cliente não cadastrado' type 'I'.  exit.

endif.

Page 20: Curso Sap Abap

CHECKBOX – RADIOBUTTON

*&---------------------------------------------------------------------**& Report  ZRP04_05*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZRP04_05.

selection-screen begin of block b1 with frame.parameters: r1 radiobutton group rad1 default 'X',            r2 radiobutton group rad1,            r3 radiobutton group rad1.selection-screen end of block b1.

Page 21: Curso Sap Abap

selection-screen begin of block b2 with frame.parameters: c4 as checkbox default 'X',            c5 as checkbox ,            c6 as checkbox .selection-screen end of block b2.

selection-screen begin of block b3 with frame.parameters: r4 radiobutton group rad2 default 'X',            r5 radiobutton group rad2,            r6 radiobutton group rad2.selection-screen end of block b3.

at selection-screen on radiobutton group rad1.  if r1 = 'X'.    message 'Este é um valor Standard' type 'W'.  endif.

at selection-screen on radiobutton group rad2.  if r4 = 'X'.    message 'Este é um valor Standard' type 'W'.  endif.

start-of-selection.

case 'X'.  when r1.    write: /001 'Marcado RadioButton R1'.    write: /001 r1.  when r2.    write: /001 'Marcado RadioButton R2'.    write: /001 r2.  when r3.    write: /001 'Marcado RadioButton R3'.    write: /001 r3.  when others.endcase.

*IF c4 = 'X'.*  WRITE: /001 'Marcado CHECKBOX C4'.*ENDIF.**IF c5 = 'X'.*  WRITE: /001 'Marcado CHECKBOX C5'.

Page 22: Curso Sap Abap

*ENDIF.**IF c6 = 'X'.*  WRITE: /001 'Marcado CHECKBOX C6'.*ENDIF.    write: /001 'Marcado RadioButton R2', r2.  when r3.    write: /001 'Marcado RadioButton R3', r3.  when others.endcase.

if c4 = 'X'.  write: /001 'Marcado CHECKBOX C4'.endif.

if c5 = 'X'.  write: /001 'Marcado CHECKBOX C5'.endif.

if c6 = 'X'.  write: /001 'Marcado CHECKBOX C6'.endif.

CHECKBOX – SELECT KNA

*&---------------------------------------------------------------------**& Report  ZRP04_05*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  zrp04_05.TABLES: kna1.SELECT-OPTIONS: s_codcli FOR kna1-kunnr.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.PARAMETERS: codigo AS CHECKBOX DEFAULT 'X',            nome AS CHECKBOX.SELECTION-SCREEN END OF BLOCK b2.TOP-OF-PAGE.    write: 01 'Codigo',  15 'Nome'.

Page 23: Curso Sap Abap

START-OF-SELECTION.SELECT kunnr name1  INTO (kna1-kunnr, kna1-name1)  FROM kna1 WHERE kunnr IN s_codcli.  IF sy-subrc NE 0.    WRITE: / 'CLIENTE ',kna1-kunnr,' NAO EXISTE'.    STOP.  ENDIF.  IF codigo = 'X' AND nome = 'X'.    WRITE: /001 kna1-kunnr.    WRITE: 015  kna1-name1.  elseIF codigo = 'X'.    WRITE: /001  kna1-kunnr.  elseIF nome = 'X'.    WRITE: /015 kna1-name1.  ENDIF.ENDSELECT.

**&---------------------------------------------------------------------**& Report  ZRP00_05*&*&---------------------------------------------------------------------*report  zrp00_05.tables: kna1.

data: begin of tb_kna1 occurs 0,        kunnr type kna1-kunnr,        name1 type kna1-name1,      end of tb_kna1.

*  Tela de Seleçãoselection-screen begin of block b1 with frame.select-options: s_kunnr for kna1-kunnr.selection-screen end of block b1.

selection-screen begin of block b2 with frame.parameters: p_cod as checkbox,            p_name as checkbox.selection-screen end of block b2.

select kunnr name1  from kna1  into table tb_kna1

Page 24: Curso Sap Abap

  where kunnr in s_kunnr.if sy-subrc eq 0.

  loop at tb_kna1.    if p_cod is not initial.      write: /001 tb_kna1-kunnr.      if p_name is not initial.        write: 011 tb_kna1-name1.      endif.    else.      if p_name is not initial.        write: /001 tb_kna1-name1.      endif.    endif.

  endloop.

endif.

DOUBLE CLICK

*&---------------------------------------------------------------------**& Report  ZRP04_06*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZRP04_06.

tables: kna1.

data: begin of tb_kna1 occurs 0,        kunnr type kna1-kunnr,        name1 type kna1-name1,      end of tb_kna1.

data: begin of tb_dados occurs 0,        kunnr type kna1-kunnr,        regio type kna1-regio,        stras type kna1-stras,      end of tb_dados.

Page 25: Curso Sap Abap

*  Tela de Seleçãoselection-screen begin of block b1 with frame.select-options: s_kunnr for kna1-kunnr.selection-screen end of block b1.

*selection-screen begin of block b2 with frame.*parameters: p_cod as checkbox,*            p_name as checkbox.*selection-screen end of block b2.

top-of-page.  write: /001 'Cód.Cli',          011 'Nome'.

at line-selection.  "duplo clique  read table tb_dados with key kunnr = tb_kna1-kunnr.  write: /001 tb_dados-regio,          004 tb_dados-stras.

at selection-screen.  select kunnr name1  from kna1  into table tb_kna1  where kunnr in s_kunnr.  if sy-subrc eq 0.

    select kunnr           regio           stras      from kna1      into table tb_dados      for all entries in tb_kna1      where kunnr eq tb_kna1-kunnr.  endif.

start-of-selection.

  loop at tb_kna1.    write: /001 tb_kna1-kunnr,            011 tb_kna1-name1.    hide: tb_kna1-kunnr. "identificar a linha  endloop.

Page 26: Curso Sap Abap

RELATORIO: RESUMO E DETALHADO

*&---------------------------------------------------------------------**& Report  ZRP04_07*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  zrp04_07.

DATA: tb_cli TYPE TABLE OF zcliente_04.DATA: wa_cli TYPE zcliente_04.

DATA: BEGIN OF tb_select OCCURS 0,      kunnr TYPE kna1-kunnr,      END OF tb_select.DATA: wa_select LIKE tb_select.

DATA: BEGIN OF tb_kna1 OCCURS 0.DATA: kunnr TYPE kna1-kunnr,      name1 TYPE kna1-name1,      land1 TYPE kna1-land1,      adrnr TYPE kna1-adrnr.DATA: END OF tb_kna1.DATA: wa_kna1 LIKE tb_kna1.

DATA: BEGIN OF tb_adrc OCCURS 0,      addrnumber type adrc-addrnumber,      city1 TYPE adrc-city1,      post_code1 TYPE adrc-post_code1,      street TYPE adrc-street,      house_num1 TYPE adrc-house_num1,      END OF tb_adrc.DATA: wa_adrc LIKE tb_adrc.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.PARAMETERS: rb_res RADIOBUTTON GROUP rad1 DEFAULT 'X',            rb_det RADIOBUTTON GROUP rad1.SELECTION-SCREEN END OF BLOCK b1.

TABLES: zcliente_04.select-options: s_codcli for zcliente_04-codcli.

Page 27: Curso Sap Abap

SELECT * FROM zcliente_04   INTO TABLE tb_cli  where codcli in s_codcli.

IF sy-subrc EQ 0.  LOOP AT tb_cli INTO wa_cli.    MOVE: wa_cli-codcli TO wa_select-kunnr.    APPEND wa_select TO tb_select.  ENDLOOP.

  SELECT kunnr name1 land1 adrnr    FROM kna1 INTO TABLE tb_kna1    FOR ALL ENTRIES IN tb_select WHERE kunnr = tb_select-kunnr.

  SELECT addrnumber city1 post_code1 street house_num1     FROM adrc INTO TABLE tb_adrc  FOR ALL ENTRIES IN tb_kna1 WHERE addrnumber = tb_kna1-adrnr.

ENDIF.

START-OF-SELECTION.

  CASE 'X'.    WHEN rb_res.         LOOP AT tb_kna1 INTO wa_kna1.              WRITE: /001 wa_kna1-kunnr,                      020 wa_kna1-name1,                      050 wa_kna1-land1.         ENDLOOP.    WHEN rb_det.

         LOOP AT tb_kna1 INTO wa_kna1.              WRITE: /001 wa_kna1-kunnr,                      020 wa_kna1-name1.              read table tb_adrc into wa_adrc              WITH KEY ADDRNUMBER = wa_kna1-adrnr.              WRITE:  040 wa_adrc-city1,                      055 wa_adrc-post_code1,                      070 wa_adrc-street,                      085 wa_adrc-house_num1.         ENDLOOP.    WHEN OTHERS.

  ENDCASE.

  TOP-OF-PAGE.

Page 28: Curso Sap Abap

  CASE 'X'.    WHEN rb_res.         write: /001 'Cód.Cli',                 020 'Nome',                 050 'Endereço'.    WHEN rb_det.         write: /001 'Cód.Cli',                 020 'Nome',                 040 'Cidade',                 055 'Cep',                 070 'Rua',                 085 'Nro'.    WHEN OTHERS.  ENDCASE.

RELATORIO: RESUMO E DETALHADO – DO FELIPE *&---------------------------------------------------------------------**& Report  ZRP00_07*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

report  zrp00_07 line-size 164.

* Declaraçõestables: ztbsd_cliente_00.

data: begin of tb_cli occurs 0,        codcli type ztbsd_cliente_00-codcli,      end of tb_cli.

data: begin of tb_sel occurs 0,        kunnr type kna1-kunnr,      end of tb_sel.

data: begin of tb_kna1 occurs 0,        kunnr type kna1-kunnr,        name1 type kna1-name1,        stras type kna1-stras,        adrnr type kna1-adrnr,      end of tb_kna1.

Page 29: Curso Sap Abap

data: begin of tb_adrc occurs 0,        addrnumber type adrc-addrnumber,        city1       type adrc-city1,        post_code1 type adrc-post_code1,        street     type adrc-street,        house_num1 type adrc-house_num1,      end of tb_adrc.

* Tela de Seleçãoselection-screen begin of block b1 with frame.select-options: s_codcli for ztbsd_cliente_00-codcli.selection-screen end of block b1.

selection-screen begin of block b2 with frame.parameters: rb_res radiobutton group rb1 default 'X',            rb_det radiobutton group rb1 .selection-screen end of block b2.

* Evento TOP-OF-PAGE para o cabeçalhotop-of-page.

  write: /001 'Cód.Cli.',          011 '|','Nome Cli.'.  case 'X'.    when rb_res.      write: 046 '|','Endereço'.    when rb_det.      write: 046 '|','Cidade',             081 '|','CEP',             092 '|','Rua',             153 '|','Número'.    when others.  endcase.  write:     164 '|'.

  uline.

* Evento AT SELECTION-SCREEN - Seleção dos dadosat selection-screen.*  Seleção da Tabela de Clientes Z*  select codcli    from ztbsd_cliente_00    into table tb_cli    where codcli in s_codcli.  if sy-subrc = 0.*    Ajuste para conversão do tipo de dado

Page 30: Curso Sap Abap

    loop at tb_cli.      move: tb_cli-codcli to tb_sel-kunnr.      append tb_sel.    endloop.

*    Seleção do tabela Mestre de Clientes    select kunnr           name1           stras           adrnr      from kna1      into table tb_kna1      for all entries in tb_sel      where kunnr = tb_sel-kunnr.    if sy-subrc = 0.      if rb_det = 'X'.*        Seleção tabela de Endereços        select addrnumber               city1               post_code1               street               house_num1          from adrc          into table tb_adrc          for all entries in tb_kna1          where addrnumber = tb_kna1-adrnr.      endif.    endif.  endif.

*Evento START-OF-SELECTION - Evento após a seleçãostart-of-selection.

  loop at tb_kna1.    write: /001 tb_kna1-kunnr,            011 '|',tb_kna1-name1.

    case 'X'.      when rb_res.*      Impressão dados com o RadioButton Rb_RES        write:  046 '|',tb_kna1-stras.      when rb_det.*      Impressão dados com o RadioButton Rb_DET        read table tb_adrc with key addrnumber = tb_kna1-adrnr.        if sy-subrc = 0.          write: 046 '|',tb_adrc-city1,

Page 31: Curso Sap Abap

                 081 '|',tb_adrc-post_code1,                 092 '|',tb_adrc-street,                 153 '|',tb_adrc-house_num1.        endif.

      when others.    endcase.    write:     164 '|'.

  endloop.

UTILIZANDO JOIN

*&---------------------------------------------------------------------**& Report  ZRP00_08*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

report  zrp00_08.

* Declaraçõestables: ztbsd_cliente_00.

data: begin of tb_cli occurs 0,        codcli type ztbsd_cliente_00-codcli,      end of tb_cli.

data: begin of tb_sel occurs 0,        kunnr type kna1-kunnr,      end of tb_sel.

data: begin of tb_dados occurs 0,        kunnr      type kna1-kunnr,        name1      type kna1-name1,        stras      type kna1-stras,        adrnr      type kna1-adrnr,        city1      type adrc-city1,        post_code1 type adrc-post_code1,        street     type adrc-street,        house_num1 type adrc-house_num1,      end of tb_dados.

Page 32: Curso Sap Abap

* Tela de Seleçãoselection-screen begin of block b1 with frame.select-options: s_codcli for ztbsd_cliente_00-codcli.selection-screen end of block b1.

selection-screen begin of block b2 with frame.parameters: rb_res radiobutton group rb1 default 'X',            rb_det radiobutton group rb1 .selection-screen end of block b2.

* Evento TOP-OF-PAGE para o cabeçalhotop-of-page.

  write: /001 'Cód.Cli.',          011 '|','Nome Cli.'.  case 'X'.    when rb_res.      write: 046 '|','Endereço'.    when rb_det.      write: 046 '|','Cidade',             081 '|','CEP',             092 '|','Rua',             153 '|','Número'.    when others.  endcase.  write:     164 '|'.

  uline.

* Evento AT SELECTION-SCREEN - Seleção dos dadosat selection-screen.*  Seleção da Tabela de Clientes Z*  select codcli    from ztbsd_cliente_00    into table tb_cli    where codcli in s_codcli.  if sy-subrc = 0.*    Ajuste para conversão do tipo de dado    loop at tb_cli.      move: tb_cli-codcli to tb_sel-kunnr.      append tb_sel.    endloop.

*    Seleção do tabela Mestre de Clientes

Page 33: Curso Sap Abap

    select kna1~kunnr           kna1~name1           kna1~stras           kna1~adrnr           adrc~city1           adrc~post_code1           adrc~street           adrc~house_num1      from kna1      inner join adrc      on kna1~adrnr = adrc~addrnumber      into table tb_dados      for all entries in tb_sel      where kna1~kunnr = tb_sel-kunnr.  endif.

*Evento START-OF-SELECTION - Evento após a seleçãostart-of-selection.

  loop at tb_dados.    write: /001 tb_dados-kunnr,            011 '|',tb_dados-name1.

    case 'X'.      when rb_res.*      Impressão dados com o RadioButton Rb_RES        write:  046 '|',tb_dados-stras.      when rb_det.*      Impressão dados com o RadioButton Rb_DET*        READ TABLE tb_adrc WITH KEY addrnumber = tb_kna1-adrnr.*        IF sy-subrc = 0.        write: 046 '|',tb_dados-city1,               081 '|',tb_dados-post_code1,               092 '|',tb_dados-street,               153 '|',tb_dados-house_num1.*        ENDIF.

      when others.    endcase.    write:     164 '|'.

  endloop.

Page 34: Curso Sap Abap

PESQUISA BINARIA*      Impressão dados com o RadioButton Rb_DET        sort tb_adrc by addrnumber.        read table tb_adrc with key addrnumber = tb_kna1-adrnr                           binary search.        if sy-subrc = 0.

*&---------------------------------------------------------------------**& Report  ZRP04_07*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  zrp04_07.

DATA: tb_cli TYPE TABLE OF zcliente_04.DATA: wa_cli TYPE zcliente_04.

DATA: BEGIN OF tb_select OCCURS 0,      kunnr TYPE kna1-kunnr,      END OF tb_select.DATA: wa_select LIKE tb_select.

DATA: BEGIN OF tb_kna1 OCCURS 0.DATA: kunnr TYPE kna1-kunnr,      name1 TYPE kna1-name1,      land1 TYPE kna1-land1,      adrnr TYPE kna1-adrnr.DATA: END OF tb_kna1.DATA: wa_kna1 LIKE tb_kna1.

DATA: BEGIN OF tb_adrc OCCURS 0,      addrnumber type adrc-addrnumber,      city1 TYPE adrc-city1,      post_code1 TYPE adrc-post_code1,      street TYPE adrc-street,      house_num1 TYPE adrc-house_num1,      END OF tb_adrc.DATA: wa_adrc LIKE tb_adrc.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.PARAMETERS: rb_res RADIOBUTTON GROUP rad1 DEFAULT 'X',

Page 35: Curso Sap Abap

            rb_det RADIOBUTTON GROUP rad1.SELECTION-SCREEN END OF BLOCK b1.

TABLES: zcliente_04.select-options: s_codcli for zcliente_04-codcli.

at selection-screen.SELECT * FROM zcliente_04   INTO TABLE tb_cli  where codcli in s_codcli.

IF sy-subrc EQ 0.  LOOP AT tb_cli INTO wa_cli.    MOVE: wa_cli-codcli TO wa_select-kunnr.    APPEND wa_select TO tb_select.  ENDLOOP.

  SELECT kunnr name1 land1 adrnr    FROM kna1 INTO TABLE tb_kna1    FOR ALL ENTRIES IN tb_select WHERE kunnr = tb_select-kunnr.

  SELECT addrnumber city1 post_code1 street house_num1     FROM adrc INTO TABLE tb_adrc  FOR ALL ENTRIES IN tb_kna1 WHERE addrnumber = tb_kna1-adrnr.

ENDIF.

START-OF-SELECTION.  sort tb_adrc by addrnumber.  CASE 'X'.    WHEN rb_res.         LOOP AT tb_kna1 INTO wa_kna1.              WRITE: /001 wa_kna1-kunnr,                      020 wa_kna1-name1,                      050 wa_kna1-land1.         ENDLOOP.    WHEN rb_det.

         LOOP AT tb_kna1 INTO wa_kna1.              WRITE: /001 wa_kna1-kunnr,                      020 wa_kna1-name1.              read table tb_adrc into wa_adrc              WITH KEY ADDRNUMBER = wa_kna1-adrnr binary search.              WRITE:  040 wa_adrc-city1,                      055 wa_adrc-post_code1,                      070 wa_adrc-street,

Page 36: Curso Sap Abap

                      085 wa_adrc-house_num1.         ENDLOOP.    WHEN OTHERS.

  ENDCASE.

  TOP-OF-PAGE.  CASE 'X'.    WHEN rb_res.         write: /001 'Cód.Cli',                 020 'Nome',                 050 'Endereço'.    WHEN rb_det.         write: /001 'Cód.Cli',                 020 'Nome',                 040 'Cidade',                 055 'Cep',                 070 'Rua',                 085 'Nro'.    WHEN OTHERS.  ENDCASE.

DUPLO CLICK.

*&---------------------------------------------------------------------**& Report  ZRP04_08*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  zrp04_08.

DATA: BEGIN OF tb_lfa1_ekko OCCURS 0,      lifnr TYPE lfa1-lifnr,      name1 TYPE lfa1-name1,      ebeln TYPE ekko-ebeln,      aedat TYPE ekko-aedat,      END OF tb_lfa1_ekko.DATA: wa_lfa1_ekko LIKE tb_lfa1_ekko.

DATA: BEGIN OF tb_ekpo OCCURS 0,

Page 37: Curso Sap Abap

      ebeln TYPE ekpo-ebeln,      ebelp TYPE ekpo-ebelp,      matnr TYPE ekpo-matnr,      txz01 TYPE ekpo-txz01,      END OF tb_ekpo.DATA: wa_ekpo LIKE tb_ekpo.

*  Tela de SeleçãoTABLES: lfa1.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr.SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN.  SELECT lfa1~lifnr lfa1~name1 ekko~ebeln ekko~aedat    FROM lfa1    INNER JOIN ekko    ON ekko~lifnr = lfa1~lifnr     INTO TABLE tb_lfa1_ekko    WHERE lfa1~lifnr IN s_lifnr.  IF sy-subrc EQ 0.    SELECT ebeln           ebelp           matnr           txz01      FROM ekpo      INTO TABLE tb_ekpo      FOR ALL ENTRIES IN tb_lfa1_ekko      WHERE ebeln EQ tb_lfa1_ekko-ebeln.  ENDIF.

START-OF-SELECTION.  write sy-uline(132). " limite a 132 posicoes  SORT tb_lfa1_ekko BY lifnr                       ebeln.  LOOP AT tb_lfa1_ekko.    WRITE: /001 tb_lfa1_ekko-lifnr,            015 tb_lfa1_ekko-name1,            045 tb_lfa1_ekko-ebeln,            060 tb_lfa1_ekko-aedat.    HIDE: tb_lfa1_ekko-ebeln. "identificar a linha  ENDLOOP.

AT LINE-SELECTION.  "duplo clique  WRITE: /001 'Pedido',           015 'Item',

Page 38: Curso Sap Abap

           025 'Material',           035 'Descrição'.  LOOP AT tb_ekpo INTO wa_ekpo where ebeln = tb_lfa1_ekko-ebeln.      WRITE: /001 wa_ekpo-ebeln,           015 wa_ekpo-ebelp,           025 wa_ekpo-matnr,           035 wa_ekpo-txz01.  ENDLOOP.

TOP-OF-PAGE.  WRITE: /001 'Fornecedor',          015 'Nome',          045 'Pedido',          060 'data'.

DUPLO CLICK – DO FELIPE*&---------------------------------------------------------------------**& Report  ZRP00_09*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  zrp00_09.

TABLES: lfa1.

DATA: BEGIN OF tb_cabec OCCURS 0,        lifnr TYPE lfa1-lifnr,        name1 TYPE lfa1-name1,        ebeln TYPE ekko-ebeln,        aedat TYPE ekko-aedat,      END OF tb_cabec,

      BEGIN OF tb_itens OCCURS 0,        ebeln TYPE ekpo-ebeln,        ebelp TYPE ekpo-ebelp,        matnr TYPE ekpo-matnr,        txz01 TYPE ekpo-txz01,      END OF tb_itens.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.SELECT-OPTIONS: s_forn FOR lfa1-lifnr.

Page 39: Curso Sap Abap

SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN.

  SELECT a~lifnr         a~name1         b~ebeln         b~aedat    INTO TABLE tb_cabec    FROM lfa1 AS a    INNER JOIN ekko AS b    ON a~lifnr = b~lifnr    WHERE a~lifnr IN s_forn.  IF sy-subrc EQ 0.    SELECT ebeln           ebelp           matnr           txz01      FROM ekpo      INTO TABLE tb_itens      FOR ALL ENTRIES IN tb_cabec      WHERE ebeln = tb_cabec-ebeln.  ENDIF.

START-OF-SELECTION.

  SORT tb_cabec BY lifnr.

  LOOP AT tb_cabec.    WRITE: /001 tb_cabec-lifnr,            012 tb_cabec-name1,            047 tb_cabec-ebeln,            058 tb_cabec-aedat.    HIDE: tb_cabec-ebeln,          tb_cabec-lifnr,          tb_cabec-name1.

  ENDLOOP.

AT LINE-SELECTION.  WRITE: /001 'Fornecedor:', tb_cabec-ebeln,         /001 'Nome:', tb_cabec-name1.

  SKIP.  WRITE: /001 'Pedido',

Page 40: Curso Sap Abap

          012 'Item',          018 'Material',          036 'Descr. Marteral'.

  SORT tb_itens BY ebeln ebelp.  LOOP AT tb_itens WHERE ebeln = tb_cabec-ebeln.

    WRITE: /001 tb_itens-ebeln,            012 tb_itens-ebelp,            018 tb_itens-matnr,            036 tb_itens-txz01.  ENDLOOP.

TOP-OF-PAGE.  WRITE: /001 'Fornecedor',          012 'Nome Fonr.',          047 'Pedido',          058 'Data'.

RELATORIO COM SOMATORIO