Escolar Documentos
Profissional Documentos
Cultura Documentos
Usaremos campos de duas tabelas diferentes, porm no utilizaremos o 'inner join' mas sim 'FOR ALL ENTRIES', para isso precisaremos de duas estruturas de SELECT.
Usurio entrar com dado de uma tabela para pesquisa, no entanto o dado a ser informado no resultado est em outra tabela. TABELAS: MARA MAKT WHERE MARA-MTART = 'DIEN'. MARA-MATNR = MAKT-MATNR ->IMPRIMIR MAKT-MAKTX =============================================== =============================================== ======== *&---------------------------------------------------------------------* *& Report ZR0012_2 * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* * Academia ABAP * *----------------------------------------------------------------------* * Programa: Programa 12 * * Autor: Gabriel e Ana * * Data: 15.05.2007 * * Objetivo: Construir o 12 Programa de ABAP *----------------------------------------------------------------------* REPORT zr0012_2. "OBS: AO INVZ DE CRIARMOS UMA MESMA ESTRUTURA COM CAMPOS DAS DUAS TABELAS A SEREM USADAS COMO FIZEMOS NO EXERCCIO ANTERIOR COM INNER JOIN AQUI CRIAREMOS DOIS TIPOS, UM PARA CADA TABELA.
types: begin of y_mara, "Estrutura para a Tabela MARA. matnr type mara-matnr, "MATNR NOSSA CHAVE. Liga uma Tabela a outra. mtart type mara-mtart, end of y_mara. TYPES: BEGIN OF y_makt, "Estrutura para a Tabela MAKT. matnr TYPE makt-matnr, "MATNR NOSSA CHAVE. Liga uma Tabela a outra. maktx TYPE makt-maktx, END OF y_makt. DATA: w_mara TYPE y_mara, "Workareas w_makt TYPE y_makt. DATA: t_mara TYPE TABLE OF y_mara, "Tabelas t_makt TYPE TABLE OF y_makt. SELECT matnr mtart "Selecionar campos matnr (CHAVE) e mtart INTO TABLE t_mara "Jogar na tabela criada t_mara (tabela para a MARA). FROM mara "Retirando contedo da tabela MARA. WHERE mtart = 'DIEN'. "Onde Campo mtart seja igual a 'DIEN'. IF sy-subrc = 0. "Se algo for encontrado entraremos no segundo SELECT. SELECT matnr maktx "Selecionaremos ento os campos matnr (CHAVE) e maktx. INTO TABLE t_makt "Jogaremos na tabela T_makt (tabela criada para MAKT) FROM makt "Retirando contedo da tabela MAKT. FOR ALL ENTRIES IN t_mara "MUITO IMPORTANTE: Para todas as entradas contidas na tabela anterior, T_MARA (onde dados do 1o Select foram inputados!). WHERE matnr = t_mara-matnr. "Onde campo matnr (chave) da tabela em questo nesse select seja igual ao campo matnr da tabela T_mara (select anterior), Isso restringe nossa pesquisa da seguinte maneira: Sero inputados na tabela t_makt todos os dados selecionados neste select e tambm no select anterior cujo Numero de Material (MATNR - CHAVE) seja igual, ou seja, inpute na tabela t_makt os campos matnr e maktx para todas as entradas que foram inputadas na tabela t_mara, condicionando ao numero de material, campo pertencente as duas tabelas. LOOP AT t_makt INTO w_makt. WRITE: / w_makt-maktx. ENDLOOP. ENDIF.