Open SQL consiste em um conjunto de instruções ABAP que executam operações no banco de dados do sistema central do R/3. Os resultados das operações e as mensagens de erro são independentes do sistema de base de dados em uso. O Open SQL fornece, assim, uma sintaxe e semântica uniforme para todos os sistemas de banco de dados suportados pela SAP. Programas ABAP que utilizam apenas instruções Open SQL funcionará em qualquer sistema R/3, independentemente do sistema de banco de dados em uso. Instruções Open SQL só podem trabalhar com tabelas de banco de dados que foram criados no Dicionário ABAP.
Open SQL: Definição
Insert
A instrução Open SQL serve para inserir dados em uma tabela de banco de dados. Ela permite que você insira uma ou mais linhas na tabela do banco de dados alvo. Você pode especificar o destino da tabela de banco de dados estática ou dinamicamente.
Mais informações: Insert
Select
É uma instrução Open SQL para leitura de dados a partir de uma ou várias tabelas de banco de dados em objetos de dados. A instrução SELECT lê um conjunto de resultados a partir das tabelas do banco de dados especificados na fonte, e atribui os dados do conjunto de resultados para os objetos de dados especificados no alvo. Você pode restringir o conjunto de resultados usando a adição WHERE.
Mais informações: Select
UPDATE
A instrução UPDATE permite a atualização dos valores das colunas selecionadas de linhas de uma tabela de banco de dados.
Mais informações: Update
DELETE FROM
Para excluir linhas de qualquer tabela use a instrução DELETE FROM. Você pode usar a chave da tabela para encontrar e apagar uma única linha, eliminar um conjunto de linhas que atendam a uma condição, ou encontrar e apagar entradas duplicadas. Se a tabela tem uma chave não-exclusiva e há entradas duplicadas, a primeira entrada é eliminada.
Mais informações: Delete
Exemplos:
Neste exemplo usamos duas tabelas do FLIGHT MODEL e inserimos e selecionamos dados aleatórios nas tabelas SCURX, SBUSPART, ressaltando que ainda não precisamos respeitar nenhuma chave estrangeira nas tabelas standards, mais tarde usaremos BAPIs para atualizar consistentemente estas tabelas.
Abap
*&---------------------------------------------------------------------* *& Report ZMOEDA *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Flight Model - Moeda - Select e Insert *&---------------------------------------------------------------------* REPORT ZMOEDA. * Define a Tabela TABLES SCURX. TABLES SBUSPART. * Cria as Arrays para os campos DATA matriz TYPE SCURX. DATA matriz2 TYPE SBUSPART. * Insere dados na tabela matriz-currkey = 1. matriz-currdec = 2. INSERT INTO SCURX VALUES matriz. matriz-currkey = 2. matriz-currdec = 2. INSERT INTO SCURX VALUES matriz. matriz-currkey = 3. matriz-currdec = 2. INSERT INTO SCURX VALUES matriz. * Seleciona dados da Tabela. WRITE : / 'Tabela de Moedas', / . SELECT * INTO matriz FROM SCURX. WRITE : / 'Chave da Moeda:', matriz-currkey, 'Decimais: ', matriz-currdec, /. ENDSELECT. * Insere dados na tabela SBUSPART matriz2-mandant = '001'. matriz2-buspartnum = 1. matriz2-contact = 'Desenvolvimento Aberto'. matriz2-contphono = '55 5555-55-55'. matriz2-buspatyp = '01'. INSERT INTO SBUSPART VALUES matriz2. matriz2-mandant = '001'. matriz2-buspartnum = 2. matriz2-contact = 'GNU - Open Source'. matriz2-contphono = '55 9999-99-99'. matriz2-buspatyp = '01'. INSERT INTO SBUSPART VALUES matriz2. matriz2-mandant = '001'. matriz2-buspartnum = 3. matriz2-contact = 'SAP AG - Airlines'. matriz2-contphono = '55 6666-66-66'. matriz2-buspatyp = '01'. INSERT INTO SBUSPART VALUES matriz2. * Seleciona dados da tabela SBUSPART WRITE : / 'Tabela de Linhas Aereas', / . SELECT * INTO matriz2 FROM SBUSPART. WRITE : / 'Mandante:', matriz2-mandant , / 'Numero do Parceiro:', matriz2-buspartnum, / 'Contato:', matriz2-contact, / 'Telefone:', matriz2-contphono, 'Parceiro de negocio:', matriz2-buspatyp, /. ENDSELECT. * Altera dados nas tabelas UPDATE SBUSPART SET contact = 'Sem Contato cadasrado' WHERE buspartnum = 3. WRITE : / 'Tabela de Linhas Aereas ALTERADA', / . SELECT * INTO matriz2 FROM SBUSPART. WRITE : / 'Mandante:', matriz2-mandant , / 'Numero do Parceiro:', matriz2-buspartnum, / 'Contato:', matriz2-contact, / 'Telefone:', matriz2-contphono, 'Parceiro de negocio:', matriz2-buspatyp, /. ENDSELECT. * Deleta dados da tabela DELETE FROM SBUSPART WHERE buspartnum = 3. WRITE : / 'Tabela de Linhas Aereas Deletada', / . SELECT * INTO matriz2 FROM SBUSPART. WRITE : / 'Mandante:', matriz2-mandant , / 'Numero do Parceiro:', matriz2-buspartnum, / 'Contato:', matriz2-contact, / 'Telefone:', matriz2-contphono, 'Parceiro de negocio:', matriz2-buspatyp, /. ENDSELECT.