Escolar Documentos
Profissional Documentos
Cultura Documentos
Criando Uma Tabela Z Com Elementos de Dados e
Criando Uma Tabela Z Com Elementos de Dados e
Sumario: Este artigo tem como finalidade exemplificar o Maximo o entendimento e criao de uma tabela z. Este artigo voltado a abap iniciantes e abap que algum tempo no faz a criao de tabelas.
Sobre o Autor: Uderson Luis Fermino, formado em Cincias da Computao pela Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participao em grandes projetos envolvendo estas tecnologias. consultor ABAP com experincias em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE, HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM, NETWEAVER (JCO, BSP, WebDynpro). Email: Uderson@gmail.com
1. Criando uma tabela Z com Elementos de Dados e Domnios. Primeiro passo entrar na transao, SE11, atravs ta tela inicial.
No campo indicado coloque o nome da tabela existente, ou o nome a ser criado, neste caso, o nome que ser colocado, ser um nome, de uma tabela, que necessita,ser criada, colando o nome desta de ZFUNCIONARIO.
Clique em exibir, para verificar se existe este tabela, no sistema, e verifique a barra de status.
Caso a mensagem seja que j exista, troque para outro nome, exemplo: ZFUNCIONARIO1, caso a mensagem seja que no exista, e pede para verificar o nome, clique em Criar.
Descrio breve: Descrio que ser referencia de sua tabela, coloque textos relativos as informaes que a tabela ir armazenar. Aba Entrega e atualizao: Como os dados iro ser manipulados. Classe de entrega: tipo de dados a se manipulados, geralmente escolhido o tipo A. Data browser/atualizao viso da tabela: como as exi
Aps definir a manipulao dos dados da tabela, devemos criar os campos desta tabela, seguiremos a seguinte tabela: Matricula Nome DataNascimento RG CPF
Descrio Campo Matricula Nome DataNascimento RG CPF Tipo de dado Int Char(30) Date Char(15) Char(15) Elemento de Dado ZMATF ZNOMEF ZDATNASF ZRGF ZCPFF
Na seta VERMELHA, so os campos para insero de CAMPO da tabela, na seta AZUL, ser a insero cs elementos de dados. No SAP, no possvel colocar tipos de dados primitivos diretamente na tabela, necessrio criar Elementos de Dados que fazem referencias para estes tipos, primeiramente, varemos a insero do campo MATRICULA, e o elemento de dado ZMATF. Observao: Matricula o campo chave primaria, observe que ao lado do CAMPO a a Chave primaria, marque est opo com um clique.
Aps a insero destes, de um enter, e veja que os campos Categoria, Comprimento, Casa e Descrio, esto em branco, isso quer dizer que o elemento de dado ZMATF, no existe, para que estes campos sejam preenchidos necessrio, criar este elemento de dados, para criar, basta dar 2 cliques em cima dele ZMATF. Ao clicar aparecer a seguinte mensagem:
Clique em sim. Aps ir aparecer a seguinte tela, pedindo para especificar, em qual pacote o requeste deseja salvar este elemento de dados, escolha Salvar Local.
Novamente a mensagem dizendo que o elemento de dado, no existe, e se deseja cliar. Novamente escolha SIM
A seguinte tela, ser apresentada: Descrio breve: Descrio que ser referencia de sue elemento de dado, coloque textos relativos as informaes que o elemento de dado se refere. Categoria de dados: No sap um tipo primitivo vinculado ao um domnio, um domnio um tipo de dado com determinadas caractersticas.
Preencha a descrio relativo ao elemento de dado atual, no exemplo o elemento de dado ZMATF o Cdigo da matrcula do Funcionrio, est pode ser uma boa descrio para este elemento de dados. No campos Categoria Elementar Domnio escolheremos o tipo de domnio que o elemento de dado ter, ser usando um Domnio referente ao tipo primitivo NUMC, porem um numc puro tem 5 casa decimais e no nosso exemplo queremos um ZNUMC de 19 casa decimais, para isso devemos criar este domino de dado chamado de ZNUMC19. Aps insersir zNUMC19 no campo, basta dar dois clique, e seremos levado a seguinte mensagem:
Clique em SIM, est mensagem somente para salvar as ultimas alteraes, para no ficar apresentando est mensagem sempre quando tiver que criar uma novo elemento basta cliecar no boto salvar:
Aps salvar, ser apresentada a mensagem dizendo se deseja cria este objeto realmente, escolha SIM
Descrio breve: Descrio que ser referencia de seu domnio, coloque textos relativos as informaes que a tabela ir armazenar. Categoria deDados: tipo de dado primitivo do SAP. Caractersticas de Sadas: Tamanho do domnio e do tipo de dados que vocs est criando. Aps o preenchimento dos campos relativamente igual acima, ser necessrio seguir estas trs retinas: SALVAR, CHECAR e ATIVAR. Para que um objeto seja enxergado em qualquer lugar dentro do SAP, necessrio Ativar este elemento, para ativado necessrio Salvar as alteraes, e Checar se no existe erros. Aps, verificar ests rotinas devemos Ativar o objeto. Para realizar estas rotinas segue o menu:
Ou
Ao ativar ser mostrado a seguinte janela, que apenas uma confirmao, basta clicar em ok e segui.
Sempre observe a barra de status. Aps ativar a barra de status est assim:
Ponto o Domnio j est criado. Devemos continuar a criar o elemento de dado. Clique na aba DENOMIN CAMPO
Nesta tela dever ser colocado os textos do elemento de dado definidos, por tamanho, Onde BREVE, somente as inicias da descrio, MDIO, duas ou trs Silabas de cada para lavra da descrio, Logo, a descrio inteira, fincado para o exemplo:
Pronto, o elemento de dado j est pronto, basta seguir as rotinas descritas no Domnio.
Siga os passo anteriores para criar os elementos de dados relativos a cada campo, de acordo a tabela que foi criada l no inicio do texto, vale observar que pode acontecer que j exista elementos de dados dom os nomes que se ir usar, caso o domnios do mesmo seja equivalente ao que requisitado no necessrio criar um novo basta usar este que j est criado, e vise-verso, para o domnio, geralmente domnios dos tipos:
Aps todos os elementos de dados criados e inseridos dever a tabela ficar assim:
Agora necessrio definir o tamanho de dados que a tabela dever suporta, para isso clique em Configuraes Tcnicas.
Escolha os seguinte dados nesta tela, e depois salve e volta para anterior
Criando um programa para manipular est tabela. Os programas dentro do SAP so chamados de REPORTS. Para criar um REPORT necessrio utilizar a transao SE38.
Caso a mensagem seja que j exista este programa, coloque outro nome, mais no se squeca de marcar, pois usaremos, no exemplo o nome ZFUNCIONARIO.
Clique em CRIAR caso a mensagem de seja que no exista. A tela seguinte a parecer: Titulo: Titulo referente a programa, coloque texto relativo ao programa. Tipo: Tipo de programa que ser feito escolha o tipo Programa Executvel, pois ser um programa que dever ser executado. Status: status do tipo do programa, no nosso exemplo Programa Teste. Aplicao: tipo da aplicao, modulo, lembrando que o SAP um ERP, que tem diversos tipos de mdulos, exemplos so: Financeiros, Compras etc.
Observe que o program est INATIVO, e que comea apenas com as Instruo de Inicio, REPORT ZFUNCIONARIO.
No problema que o nome da tabela seja igual ao do programa, pois as instrues so diferentes uma refere ao programa REPORT e a outra a TABLES. 2 Passo: criar uma interface para coletar os dados do usuario. Criaremos um frame na tela, usando os comandos
SELECTION-SCREEN BEGIN OF BLOCK bl001 WITH FRAME. ....Botes ....Radios Buttons ....Caixa de textos ....etc. SELECTION-SCREEN END OF BLOCK bl001.
Criaremos as caixas de textos, para coletar as informaes, o comando PARAMETER, o comando para criar caixas de textos em abap. Sisntaxe PARAMETER: nome_do_objeto_caixa_de_texto PARAMETER: nome_do_objeto_caixa_de_texto TYPE LIKE tipo_de_dado. elemento_de_dado.
Para declarar a caixa de texto, devemos declara o tipo de dado que est receber e o tamanho, exemplo, para declara uma cada de texto que recebe tipos de dados do tipo char de 20 necessrio usar a sintaxe: PARAMETER: p_char(20) TYPE c.
Em abap recomendado usar caixas de textos com elementos de dados, referentes aos campos da tabela que ir coletar ou inserir dados, para que os mesmo so venham dar erro de incompatibilidade de dados. A sintaxe para o nosso exemplo, usando os tipos de dados j construdos para a tabela ZFUNCIONARIO ficar assim:
PARAMETER: P_MATRI LIKE ZFUNCIONARIO-MATRICULA OBLIGATORY. PARAMETER: P_NOME LIKE ZFUNCIONARIO-NOME OBLIGATORY. PARAMETER: P_DATNA LIKE ZFUNCIONARIO-DATANASCIMENTO OBLIGATORY. PARAMETER: P_RG LIKE ZFUNCIONARIO-RG OBLIGATORY. PARAMETER: P_CPF LIKE ZFUNCIONARIO-CPF OBLIGATORY.
Observe que os objetos P_Alguma_Coisa, fazem referencia ao nome dos campos da tabela e no aos elementos de dados, isso porque os nomes dos campos j fazem referencias aos elementos de dados, no sendo necessrio fazer ligao direta ao elementos de dados.
O comando OBLIGATORY server para deixar o campo obrigatrio, onde ser necessrio preencher o campo de qualquer forma. um bom padro usar o P_ para facilitar a legibilidade do componente, facilitando identificar no decorrer do programa qual componente . No cdigo ficar:
A tela est:
Conhecendo o ambiente: Cadastro de Cliente: Titulo que foi inserido na criao do programa P_Alguma_Coisa: Ttulos dos componentes PARAMETER. Caixas_de_Inserso: Componentes gerado atravs do comando PARAMETER.
Observer que P_Alguma_Coisa, esto com ttulos difcil entender o que se refere a Caixas_de_Inserso. Ento iremos criar ttulos relativos as Caixas_de_Inserso. Volte ao cdigo.
Observe que os P_Alguma_Coisa esto com um ponto de interrogao, por isso que apareceu o prprio nome do componete na tela de apresentao. Troque os ?..., pelo texto que dever aparecer. No exemplo ser trocados por
Aps seguir os passos, e voltar a tela de cdigo, clique Direto, o tecle F8 para ver as mudanas. Veja:
O que fizemos a te agora foi a tela de, para coletar as informaes agora, iremos criar a lgica do programa. Volte ao cdigo.
Em baixo da declarao de tabela, ser criada uma tabela interna que ter a mesma estrutura da tabela ZFUNCIONARIO, uma tabela interna serve para auxiliar no desenvolvimento, insero e remoo de dados sem precisar trabalhar diretamente na tabela real, a tabela interna uma copia dos da estrutura da tabela real, pr ela armazenada em memria em tempo de execuo, a grande vantagem de no trabalhar diretamente na tabela, que o servidor onde os dados esto no fica sobrecarregado. Para declara uma tabela interna a sintaxe pode-se encontrar diversa sintaxe, usaremos a seguinte sintaxe: DATA: BEGIN OF t_nome_da_tabela OCCURS 0, campo referencia(TYPE/LIKE) TIPO_PRIMITIVO/TABELA-CAMPO, . . END OF t_nome_da_tabela.
DATA: BEGIN OF T_ZFUNCIONARIO OCCURS 0, MATRICULA LIKE ZFUNCIONARIO-MATRICULA, NOME LIKE ZFUNCIONARIO-NOME, DATANASCIMENTO LIKE ZFUNCIONARIO-DATANASCIMENTO, RG LIKE ZFUNCIONARIO-RG, CPF LIKE ZFUNCIONARIO-CPF, END OF T_ZFUNCIONARIO. O nome da tabela interna T_ZFUNCIONARIO, que faz referencias as campos da tabela ZFUNCIONARIO, est duas tabelas agora so idntica, o que defere as duas, que T_ZFUNCIONARIO usada em tempo de execuo e armazenada em memria. No cdigo dever ficar assim:
Agora que a tabela interna j est declarada, a interface, pronta para receber dados, iremos, criar a lgica de transferir os dados inseridos nas CAIXA_DE_INSERO, para a tabela interna, lembrando que os campos devem ser respeitados de acordo cada tipo. O cdigo dever ser inserido abaixo do comando: SELECTION-SCREEN END OF BLOCK bl001, ficando assim:
T_ZFUNCIONARIO-MATRICULA T_ZFUNCIONARIO-NOME T_ZFUNCIONARIO-DATANASCIMENTO T_ZFUNCIONARIO-RG T_ZFUNCIONARIO-CPF = = = = = P_MATRI. P_NOME. P_DATNA. P_RG . P_CPF.
Onde estamos colocando dentro de cada campo da tabela interna, os campos relativos pos cada PARAMETER (CAIXA_DE_INSERO) corresponde aos campos da tabela internas respeitando os tipos de dados. No Cdigo dever estar desta forma:
Para que os dados sejam inseridos dentro da tabela necessrio usar o comanndo APPEND. Sua sintaxe ; APEEND nome_da_tabela.
A tabela interna j est preenchida, agora iremos passa os dados da tabela interna para a tabela real, usaremos o comando MOVE, para mover os dados da tabela interna, para a tabela real. Sintaxe do comando MOVE: MOVE valor1 TO valor2.
Onde valor1 e valor2 podem ser trocados por variveis ou campos de tabelas. No exemplo o comando ficar:
Aps mover os dados para a tabela real, usaremos o comando INSERT, para inserir realmente dentro da tabela.
Aps usar o comando INSERT necessrio dar um COMIT, para que os dados sejam transportados, para a tabela real que est no servidor. A sintaxe do comando COMIT : COMMIT WORK. Antes de dar um COMIT necessrio verificar se o comando INSERT teve sucesso, a varivel, que guarda cdigos de retornos, de comando sucedidos ou no a varivel SY-SUBRC
Onde SY-SUBRC = 0 porque o comando INSER teve sucesso, podendo dar o comit, na tabela.
TABLES: ZFUNCIONARIO. DATA: BEGIN OF T_ZFUNCIONARIO OCCURS 0, MATRICULA LIKE ZFUNCIONARIO-MATRICULA, NOME LIKE ZFUNCIONARIO-NOME, DATANASCIMENTO LIKE ZFUNCIONARIO-DATANASCIMENTO, RG LIKE ZFUNCIONARIO-RG, CPF LIKE ZFUNCIONARIO-CPF, END OF T_ZFUNCIONARIO. SELECTION-SCREEN BEGIN OF BLOCK bl001 WITH FRAME. PARAMETER: P_MATRI LIKE ZFUNCIONARIO-MATRICULA OBLIGATORY. PARAMETER: P_NOME LIKE ZFUNCIONARIO-NOME OBLIGATORY. PARAMETER: P_DATNA LIKE ZFUNCIONARIO-DATANASCIMENTO OBLIGATORY. PARAMETER: P_RG LIKE ZFUNCIONARIO-RG OBLIGATORY. PARAMETER: P_CPF LIKE ZFUNCIONARIO-CPF OBLIGATORY. SELECTION-SCREEN END OF BLOCK bl001. T_ZFUNCIONARIO-MATRICULA T_ZFUNCIONARIO-NOME T_ZFUNCIONARIO-DATANASCIMENTO T_ZFUNCIONARIO-RG T_ZFUNCIONARIO-CPF APPEND T_ZFUNCIONARIO. = = = = = P_MATRI. P_NOME. P_DATNA. P_RG . P_CPF. TO TO TO TO TO ZFUNCIONARIO-MATRICULA, ZFUNCIONARIO-NOME, ZFUNCIONARIO-DATANASCIMENTO, ZFUNCIONARIO-RG, ZFUNCIONARIO-CPF.
MOVE: T_ZFUNCIONARIO-MATRICULA T_ZFUNCIONARIO-NOME T_ZFUNCIONARIO-DATANASCIMENTO T_ZFUNCIONARIO-RG T_ZFUNCIONARIO-CPF INSERT ZFUNCIONARIO. IF SY-SUBRC = '0'. COMMIT WORK. ENDIF.
Aps preencher clique em EXECULTAR ou tecle F8. No cone com a seta AZUL. necessrio preencher a DATA DE NASCIMENTO, de acordo o exemplo com os pontos, para no dar nenhum problema.
Aps executar, no aparecer nada, ser deixado est implementao de uma mensagem de retorno dizendo se teve sucesso ou no, para exerccios. Verificando os dados inseridos. Entre na transao SE16. Nome da tabela: coloque o nome da tabela ZFUNCIONARIO na caixa de insero.
Exerccios. Colocar uma mensagem de Erro ou Sucesso caso os dados foi inserido ou no na tabela, o comando para gerar menssagems pode ser:
MESSAGE I368(00) WITH 'mensagem'.
Manuteno de tabelas: A manuteno de tabelas uma transao de populao de dados de uma determinada tabela, para popular uma tabela, no necessrio criar um programa report ou module pool ou qualquer outro tipo de programa ABAP, basta apena criar uma manuteno de tabela. Aps ter criado a tabela, cliente no menu Utilitario >> Gerador de atualizao de tabela.
Para entender:
Aps ter escolhida Grupo de Funo, de o nome para o grupo de funo: ZGRUPO, e Clique em exibir.
A mensagem que dever aparecer, que ainda no existe este objeto e se deseja criar um novo (caso j exista este objeto troque o nome), escolha sim.
Voltando na manuteno:::
Aps ter criado a tabela, cliente no menu Utilitario >> Gerador de atualizao de tabela.
Aps ter o grupo de funo j criado basta preencher os campos : Grupo de autorizao : Sem Grupo de Autorizao Grupo de funo: ZGRUPO, ou o nome do grupo criado
O terceiro passo preencher o numero das telas, est transao faz isto automtico basta clicar em: Procurar nmeros de tela (SHIFT + F7)
Lembre-se de : SALVAR, CHECAR e ATIVAR, antes de sai da tabela Para entrar na Manuteno de tabela, entre na transao sm30:
Coloque o nome da tabela que a qual ser feita a manuteno e clique em exibir:
Ser apresentada a tabela, neste caso est tabela j possui valores, mais poderia acontecer que a tabela no contenha dados.
Seguindo o exemplo observe que o campo MT FUNC (Matricula do Funcionrio), encontra-se sozinho, pois este campo a chave primaria desta tabela.
Para o usurio final no legal deixar ele popular a tabela atravs da transao sm30, para isso deve-se criar uma transao para a populao de dados desta tabela. Para criar uma transao basta entrar na transao standard SE93.
Entre com o nome da transao: ZTRASNFUNC E clique em exibir. Observe o status, para saber se ainda no existe est transao.
Caso exista uma transao com este nome troque o nome para outro, seno clique em exibir:
Preencha uma descrio para a transao Escolha a opo Transao com parmetro Clique em Criar
Na transao SE93, entre com a descrio da transao Texto da Transao Na transao, preencha com o cdigo da transao SM30, pois est a transao que manipula os dados, para que entre diretamente na tela de manuteno de dados da tabela, ative o campo Ignorar a primeira tela, para ir diretamente a tabela, deixe a opo Transao Professional User, habilitada, marque todas as opes de GUI,(HTML, Java, Windows). A parte que se deve tomar muito cuidado em Valores Propostos, pois e neste campo que ser feito a ligao da transao SM30 para a tabela ZFUNCIONARIO (ou qualquer outra tabela), preencha conforme a figura.
A transao para a manuteno de tabelas j est pronta, entre com o cdigo da transao e automaticamente ser apresentada a tela de manuteno de tabela da tabela descrita (ZFUNCIONARIO). ZTRASNFUNC
Resposta do exercico:
*&---------------------------------------------------------------------* *& Report ZFUNCIONARIO * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZFUNCIONARIO.
IF SY-SUBRC = '0'. COMMIT WORK. MESSAGE I368(00) WITH 'DADOS SALVOS COM SUCESSO'. ELSE. ROLLBACK WORK. MESSAGE I368(00) WITH 'ERRO AO SALVAR DADOS'. ENDIF.
Usando WRITE e SELECT. A transao se16, pode ser simulada dentro do exemplo, para fazer est simulao necessrio, utilizar dois comando WRITE e SELECT. Write: este comando escreve dados em formato relatrio, pode-se passas como argumento para este comando qualquer tipo de dado, pois todos sero convertidos em formato char, e sero impressos em um relatrio, dentro do SAP.
WRITE: / valor, onde / , faz pular uma linha. DATA: v_valor type i value 2. WRITE O valor , v_valor. , Utilizando o write com um valor char e uma varialvel do tipo i. E assim por diante o write. SELECT: select uma intruo do SQL (Structure Query Languagem), que faz a seleo de dados de uma ou mais tabelas de um banco de dado, este comando pode ser combinado, com diversos outros comando das instrues SQL, no exemplo usaremos a seguinte sintaxe: SELECT campos FROM tabela_real INTO TABLE tabela_interna. Onde: Campos = os campos da tabela real que construmos. Tabela_real = tabela ZFUNCIONARIO. Tabela_interna = tabela Interna usada dentro do cdigo Exemplo: SELECT matricula nome datanascimento rg cpf FROM zfuncionario INTO TABLE t_funcionario. Observao: Na sintaxe do select tem o comando INTO TABLE, que um comando exclusivo do dicionrio de dados OPEN SQL da linguagem ABAP, este comando faz com que os dados selecionados da tabela real sejam transferidos a uma tabela interna que tenha a mesma ESTRUTURA e ORDEM dos campos selecionados. A tabela interna t_funcionario tem a mesma ordem e estrutura dos campos matricula nome datanascimento rg cpf. No cdigo do exemplo ficar:
REPORT ZFUNCIONARIO.
SELECTION-SCREEN BEGIN OF BLOCK bl001 WITH FRAME. PARAMETER: P_MATRI LIKE ZFUNCIONARIO-MATRICULA OBLIGATORY. PARAMETER: P_NOME LIKE ZFUNCIONARIO-NOME OBLIGATORY. PARAMETER: P_DATNA LIKE ZFUNCIONARIO-DATANASCIMENTO OBLIGATORY. PARAMETER: P_RG LIKE ZFUNCIONARIO-RG OBLIGATORY. PARAMETER: P_CPF LIKE ZFUNCIONARIO-CPF OBLIGATORY. SELECTION-SCREEN END OF BLOCK bl001. T_ZFUNCIONARIO-MATRICULA T_ZFUNCIONARIO-NOME T_ZFUNCIONARIO-DATANASCIMENTO T_ZFUNCIONARIO-RG T_ZFUNCIONARIO-CPF APPEND T_ZFUNCIONARIO. = = = = = P_MATRI. P_NOME. P_DATNA. P_RG . P_CPF. TO TO TO TO TO ZFUNCIONARIO-MATRICULA, ZFUNCIONARIO-NOME, ZFUNCIONARIO-DATANASCIMENTO, ZFUNCIONARIO-RG, ZFUNCIONARIO-CPF.
IF SY-SUBRC = '0'. COMMIT WORK. MESSAGE I368(00) WITH 'DADOS SALVOS COM SUCESSO'. ELSE. ROLLBACK WORK. MESSAGE I368(00) WITH 'ERRO AO SALVAR DADOS'. ENDIF. CLEAR: T_ZFUNCIONARIO, T_ZFUNCIONARIO[]. SELECT MATRICULA NOME DATANASCIMENTO RG CPF FROM ZFUNCIONARIO INTO TABLE T_ZFUNCIONARIO.
Observe que tem um novo comando antes do SELECT, que CLEAR, o comando, clear, faz a limpeza da tabela e da headerline, como a tabela e a headerline estava com dados, pois antes deste comando tnhamos usado a tabela interna t_funcionario para coletar as informaes dos campos de insero. Para preench-las novamente necessrio fazer a limpeza, para que no fique com sugeira de dados, em memria.
No comando SELECT estamos selecionando os campos MATRICULA NOME DATANASCIMENTO RG CPF da tabela ZFUNCIONARIO, e estamos inseridos dos dados correspondentes dentro da tabela interna T_ZFUNCIONARIO. Exemplificando:
00012 00013
19900220 19500114
4455778899 5566221100
2233556644 2233889977
RG CPF
Tabela interna T_ZFUNCIONARIO. Agora a tabela interna T_ZFUNCIONARIO, no est mais vazia, pois o comando select preencheu a tabela, observe que a tabela interna tem a mesma estrutura que a tabela real, no necessrio seguir est ordem, porem o que tem que ser seguido ordem dos campo no select ser idntico a estrutura da tabela interna.
MATRICULA NOME DATANASCIMENTO RG CPF
00012 00013
19900220 19500114
4455778899 5566221100
2233556644 2233889977
Supondo que ao invs de termos a tabela interna idntica com a estrutura da tabela real, temos a estrutura seguinte da tabela interna, os campos no esto na mesma ordem e no esta com todos os campos. Tabela interna T_ZFUNCIONARIO.
RG MATRICULA DATANASCIMENTO CPF
O select para preencher est tabela interna seria: SELECT RG MATRICULA DATANASCIMENTO CPF FROM ZFUNCIONARIO INTO TABLE T_ZFUNCIONARIO.
Ao execultar o programa ser necessario criar um novo registro, pois est o inicio do programa e aps inserir um novo registro, ser impresso todos os registros. Dever aparecer uma relatorio parecido com est:
Para ficar melho usaremos os comandos ULINE e o caracter |. ULINE, Cria uma linha Horizontal, e | uma linha Vertical
LOOP AT T_ZFUNCIONARIO. WRITE: / '|', T_ZFUNCIONARIO-MATRICULA, '|', T_ZFUNCIONARIO-NOME, '|', T_ZFUNCIONARIO-DATANASCIMENTO, '|', T_ZFUNCIONARIO-RG, '|', T_ZFUNCIONARIO-CPF, '|'. ULINE. ENDLOOP.
Ao execultar o programa ser necessario criar um novo registro, pois est o inicio do programa e aps inserir um novo registro, ser impresso todos os registros. Dever aparecer uma relatorio parecido com est:
Cdigo Final.
*&---------------------------------------------------------------------* *& Report ZFUNCIONARIO * *& *
TABLES: ZFUNCIONARIO. BREAK-POINT. DATA: BEGIN OF T_ZFUNCIONARIO OCCURS 0, MATRICULA LIKE ZFUNCIONARIO-MATRICULA, NOME LIKE ZFUNCIONARIO-NOME, DATANASCIMENTO LIKE ZFUNCIONARIO-DATANASCIMENTO, RG LIKE ZFUNCIONARIO-RG, CPF LIKE ZFUNCIONARIO-CPF, END OF T_ZFUNCIONARIO. SELECTION-SCREEN BEGIN OF BLOCK bl001 WITH FRAME. PARAMETER: P_MATRI LIKE ZFUNCIONARIO-MATRICULA OBLIGATORY. PARAMETER: P_NOME LIKE ZFUNCIONARIO-NOME OBLIGATORY. PARAMETER: P_DATNA LIKE ZFUNCIONARIO-DATANASCIMENTO OBLIGATORY. PARAMETER: P_RG LIKE ZFUNCIONARIO-RG OBLIGATORY. PARAMETER: P_CPF LIKE ZFUNCIONARIO-CPF OBLIGATORY. SELECTION-SCREEN END OF BLOCK bl001. T_ZFUNCIONARIO-MATRICULA T_ZFUNCIONARIO-NOME T_ZFUNCIONARIO-DATANASCIMENTO T_ZFUNCIONARIO-RG T_ZFUNCIONARIO-CPF APPEND T_ZFUNCIONARIO. = = = = = P_MATRI. P_NOME. P_DATNA. P_RG . P_CPF. TO TO TO TO TO ZFUNCIONARIO-MATRICULA, ZFUNCIONARIO-NOME, ZFUNCIONARIO-DATANASCIMENTO, ZFUNCIONARIO-RG, ZFUNCIONARIO-CPF.
IF SY-SUBRC = '0'. COMMIT WORK. MESSAGE I368(00) WITH 'DADOS SALVOS COM SUCESSO'. ELSE. ROLLBACK WORK. MESSAGE I368(00) WITH 'ERRO AO SALVAR DADOS'. ENDIF. CLEAR: T_ZFUNCIONARIO, T_ZFUNCIONARIO[]. SELECT MATRICULA NOME DATANASCIMENTO RG CPF FROM ZFUNCIONARIO INTO TABLE T_ZFUNCIONARIO. LOOP AT T_ZFUNCIONARIO. WRITE: / '|', '|', '|', '|', '|', T_ZFUNCIONARIO-MATRICULA, T_ZFUNCIONARIO-NOME, T_ZFUNCIONARIO-DATANASCIMENTO, T_ZFUNCIONARIO-RG, T_ZFUNCIONARIO-CPF, '|'.
ULINE.
Est tabela armazena o cdigo da transao e os parmetros da manuteno aqueles que so inseridos na transao SE93. Para encontrar a manuteno de uma tabela basta fazer um filtro relativo a uma tabela ou qualquer tabela. Exemplo pratico, encontrar a transao que faz a manuteno da tabela ZFUNCIONARIO. Entre na transao SE16 (pode-se qualquer forma de se filtrar um determinado dado), usaremos esta transao para exemplificar:
Execute