Você está na página 1de 38

Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.

com/category/abap/

Desenvolvimento Código Aberto

Programação Eficiente – Simplicidade e Objetividade – do iniciante para o avançado


fique atualizado via rss

Arquivo da categoria ‘Abap’

SAP – Native SQL – Cursor – Open – Fetch – Close – Abap

Publicado: 27 de junho de 2014 em Abap


0
A linguagem de banco de dados SQL permite que você retorne um resultado de dados completo de uma única vez, mas as vezes precisamos manipular este resultado em tempo de
execução, uma linha de cada vez, deste modo podemos utilizar um recurso chamado Cursor para realizar este procedimento.

Basicamente todos os bancos de dados possuem este recurso, entretanto cada um deles possui também suas peculiaridades e funcionalidades diferenciadas, mas no geral funcionam da
seguinte maneira: a instrução DECLARE CURSOR define os atributos de um cursor do servidor SQL, como o seu comportamento de rolagem e a consulta usada para construir o
conjunto de resultados no qual o cursor funciona. A instrução OPEN popula o conjunto de resultados e FETCH retorna uma linha do conjunto de resultados. A instrução CLOSE libera
o conjunto de resultados atual associado ao cursor. A declaração DEALLOCATE libera os recursos usados pelo cursor.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/cursor-maxdb-1-programa.jpg)
Native SQL – Cursor

O Native SQL possui uma sintaxe simplificada apesar de nos permitir uma conexão direta sem utilizar o dicionário de dados ABAP. No banco de dados, geralmente um cursor é criado
dentro de uma Stored Procedure, mas algumas linguagens de programação possuem instruções para cria-los utilizando a sintaxe da própria língua, em ABAP esta sintaxe é bem
parecida com a sintaxe utilizada pelo Open SQL.

1 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

Sintaxe:

OPEN <cursor name> FOR <statement>


FETCH NEXT <cursor name> INTO <target(s)>.
CLOSE <cursor name>

Exemplo:

Neste exemplo criamos uma cursor SQL direto sem utilizar uma procedure.

Abap

2 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 *&---------------------------------------------------------------------*
2 *& Report ZCURSOR
3
4 *&
5 *&---------------------------------------------------------------------*
6 *& Desenvolvimento Aberto
7 *& Native SQL - Open Cursor
8
*&---------------------------------------------------------------------*
9
10
11 REPORT ZCURSOR.
12
13 * Cria parametro de pesquisa
14
15 DATA : parametro1 TYPE spfli-carrid VALUE 'AZ'.
16 DATA : parametro2 TYPE spfli-carrid VALUE 'LH'.
17
18 * Cria variáveis do cursor
19 DATA: BEGIN OF cur,
20 variavel1 TYPE spfli-CONNID,
21
22 variavel2 TYPE spfli-CITYFROM,
23 variavel3 TYPE spfli-CITYTO,
24 variavel4 TYPE spfli-DISTANCE,
25
variavel5 TYPE spfli-DISTID,
26
27 END OF cur.
28
29
* Declara e Abre um cursor
30
31 * -------------------------
32 *
33 * Atente-se que estamos utilizando o SAP MaxDB para este exemplo.
34 * O Native SQL possui sua própria sintaxe e não utiliza
35
36 * a sintaxe do banco de dados, neste caso a sintaxe para o banco seria:
37 *
38 * --SAP MaxDB ANSI 92 SQL
39 *
40 * DECLARE db1 CURSOR FOR
41
42 * SELECT * FROM TABELA
43 * WHERE X = 1
44 *
45 * Em vez disto, utiliza o comando NATIVE SQL:
46
* OPEN nome do cursor FOR clausula sql
47
48 * este comando declara e abre um cursor no banco de dados.
49
50 EXEC SQL.

3 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

51 OPEN db1 FOR


52 SELECT CONNID, CITYFROM, CITYTO, DISTANCE, DISTID
53
54 FROM spfli
55 WHERE
56 MANDT = '200' AND
57
CARRID = :parametro1
58
59 UNION
60 SELECT CONNID, CITYFROM, CITYTO, DISTANCE, DISTID
61 FROM spfli
62
63 WHERE
64 MANDT = '200' AND
65 CARRID = :parametro2
66
67
68 ENDEXEC.
69
70 * Executa Fetch e alimenta as variáveis do cursor
71
DO.
72
EXEC SQL.
73
FETCH NEXT db1 INTO :cur-variavel1, :cur-variavel2, :cur-variavel3, :cur-variavel4, :cur-variavel5
ENDEXEC.

IF sy-subrc <> 0.
EXIT.
ELSE.
WRITE : / cur-variavel1, cur-variavel2, cur-variavel3, cur-variavel4, cur-variavel5.
ENDIF.
ENDDO.

* Fecha o cursor
EXEC SQL.
CLOSE db1
ENDEXEC.

SAP – Native SQL – Stored Procedure – Parameters IN and OUT – Abap

4 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

Publicado: 25 de junho de 2014 em Abap


0
Stored Procedures são procedimentos de código SQL armazenados no banco de dados, as stored procedures são mais rápidas do que o código tradicional, o que significa que elas estão
se tornando cada vez mais populares. Com código da aplicação se mudando dos programas externos para o motor de banco de dados, Os DBAs precisam entender os requisitos de
memória relacionados para procedimentos armazenados e saber como gerenciar estes procedimentos para o ideal desempenho do banco de dados. Isto muda de banco para banco, cada
um deles possui suas recomendações de melhores praticas para atingir um melhor desempenho.

Uma palavra sobre o Dicionário de Dados SAP

Como sabemos Native SQL nos permite utilizar código SQL direto, ignorando a camada de banco de dados do SAP R/3, isto significa que o Native SQL é o método mais rápido para
manipular grande quantidade de dados em ABAP, apesar do desenvolvedor estar sozinho nesta empreitada e não poder utilizar nenhum recurso do dicionário ABAP, incluindo os
tipos de campos compatíveis entre banco e linguagem de programação, manipulação automática do campo MANDT do cliente, escrita SQL única para qualquer banco de dados (Open
SQL) entre outras facilidades.

Apesar dos contras este conceito nos permite utilizar Stored Procedures como métodos para extrair ou manipular dados utilizando o ABAP, podendo até exercer a mesma função do
RFC em termos de manuseio de dados entre diferentes servidores e aplicações não R/3.

Por exemplo algumas tabelas contendo dados massivos como o caso da tabela de notas fiscais ou lançamentos contábeis entre outras que necessitam de algum tipo de auditoria de
algum sistema não R/3 que pretende importar os dados do sistema R/3, podem obter método de extração da própria empresa detentora do sistema R/3 utilizando procedures obtendo a
melhor performance possível na extração e importação de dados aplicando técnicas de Bulk dos bancos de dados(importação em massa) ao invés de utilizar as próprias funções de RFC
disponíveis pela SAP, cujo criam um set de dados na memoria e necessitam de um looping para extrair linha a linha da tabela alocada por um sistema não R/3.

SAP MaxDB SQL Studio

Utilizaremos neste post o banco de dados MaxDB da própria SAP, mas escreveremos as Stored Procedures para os bancos de dados Oracle, IBM DB2 e Microsoft SQL Server.

Este tipo de técnica necessita que o desenvolvedor tenha um conhecimento avançado do banco de dados a ser utilizado e do próprio banco de dados SAP, suas tabelas e seus conceitos
por traz do dicionário de dados.

1- Entre no SAP MaxDB e utilize o script SQL completo encontrado abaixo.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/native-stored-1-sql.jpg)
SQL Studio

2 – Crie um programa no SAP e utilize o código correspondente.

5 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/native-stored-2-programa.jpg)
Stored Procedure – Abap

Exemplo:

Neste exemplo criamos uma tabela que não está declarada no dicionário de dados ABAP e criamos uma Stored Procedure com parâmetros de entrada e saída, e a utilizamos como um
método para extrair dados diretamente em um programa ABAP.

SAP MaxDB

6 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 -- Cria tabela no schema SAPNSP


2 CREATE TABLE SAPNSP.ZFUNCIONARIO
3 (
4 ID_FUNCIONARIO INT,
5
6 NOME VARCHAR (30),
7 SOBRENOME VARCHAR(70),
8 CARGO VARCHAR(30),
9
SALARIO DECIMAL(9,2)
10
11 )
12
13 -- Insere dados na tabela
14 Insert into SAPNSP.ZFUNCIONARIO values (1,'Steve','Gates','Programador',2550.56)
15 Insert into SAPNSP.ZFUNCIONARIO values (2,'Bill','Jobs','Diretor',5143.71)
16
17
18 -- Visualiza dados
19 select * from SAPNSP.ZFUNCIONARIO
20
21 -- Cria Stored Procedure
22
23 CREATE DBPROC SAPNSP.ZFUNCIONARIOS (
24 IN PID_FUNCIONARIO INT,
25 OUT PNOME VARCHAR (30),
26 OUT PSOBRENOME VARCHAR(70),
27
28 OUT PCARGO VARCHAR(30),
29 OUT PSALARIO FLOAT )
30
31 AS
32
33 SELECT NOME, SOBRENOME, CARGO, SALARIO
INTO :PNOME, :PSOBRENOME, :PCARGO, :PSALARIO
FROM SAPNSP.ZFUNCIONARIO
WHERE ID_FUNCIONARIO = :PID_FUNCIONARIO;

-- Testa Stored Procedure


CALL SAPNSP.ZFUNCIONARIOS (1, :PNOME , :PSOBRENOME , :PCARGO , :PSALARIO)

Oracle

7 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 create or replace PROCEDURE SAPNSP.ZFUNCIONARIOS


2 - Cria parametros
3 (pid_funcionario IN FUNCIONARIOS.ID_FUNCIONARIO%TYPE,
4 p_nome OUT FUNCIONARIOS.NOME%TYPE,
5
6 p_sobrenome OUT FUNCIONARIOS.SOBRENOME%TYPE,
7 p_cargo OUT FUNCIONARIOS.CARGO%TYPE,
8 p_salario OUT FUNCIONARIOS.SALARIO%TYPE
9
)
10
11 AS
12 BEGIN
13 -- Insere dados da query dentro dos parametros de saida
14 SELECT NOME, SOBRENOME, CARGO, SALARIO
15 INTO p_nome, p_sobrenome, p_cargo, p_salario
16
17 FROM SAPNSP.ZFUNCIONARIO
WHERE ID_FUNCIONARIO = pid_funcionario;

END;

DB2

1 -- Cria procedure
2 CREATE PROCEDURE SAPNSP.ZFUNCIONARIOS
3 ( IN pid_funcionario INTEGER,
4
5 OUT p_nome VARCHAR(30),
6 OUT p_sobrenome VARCHAR(70),
7 OUT p_cargo VARCHAR(30),
8
OUT p_salario DECIMAL(9,2)
9
10 )
11
12 P1: BEGIN
13
14
15 SELECT NOME, SOBRENOME, CARGO, SALARIO
16 INTO p_nome, p_sobrenome, p_cargo, p_salario
17 FROM SAPNSP.ZFUNCIONARIO
WHERE ID_FUNCIONARIO = pid_funcionario;

END P1

MSSQL

8 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 CREATE PROCEDURE SAPNSP.ZFUNCIONARIOS


2 @pfuncionario INT,
3 @pnome NVarchar(30) OUTPUT,
4
5 @psobrenome NVarchar(70) OUTPUT,
6 @pcargo NVarchar(30) OUTPUT,
7 @psalario Decimal(9,2) OUTPUT
8
AS
9
BEGIN
10
SELECT @pnome = Nome,
11
12 @psobrenome = Sobrenome,
13 @pcargo = Cargo,
14 @psalario = Salario
15
FROM SAPNSP.ZFUNCIONARIO
WHERE ID_Funcionario = @pfuncionario
END

Abap

9 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 *&---------------------------------------------------------------------*
2 *& Report ZSTOREDPROCEDURE
3
4 *&
5 *&---------------------------------------------------------------------*
6 *& Desenvolvimento Aberto
7 *& Native SQL - Stored Procedures - Abap
8
*&---------------------------------------------------------------------*
9
10
11 REPORT ZSTOREDPROCEDURE.
12
13 * Declara parametros de saida para a procedure
14
15 DATA : pnome TYPE c LENGTH 30,
16 psobrenome TYPE c LENGTH 70,
17 pcargo TYPE c LENGTH 30,
18 psalario TYPE f.
19
20
21 * Declara parametro de entrada para a procedure
22 PARAMETERS id_func TYPE i.
23
24
* Executa Native SQL utilizando os parametros
25
26 EXEC SQL.
27
28 EXECUTE PROCEDURE SAPNSP.ZFUNCIONARIOS (IN :id_func, OUT :PNOME , OUT :PSOBRENOME , OUT :PCARGO , OUT :PSALARIO)
29
30
31 ENDEXEC.
32
33 * Exibe resultado dos parâmetros
34 WRITE: / 'Dados Retornados direto do banco SAP MaxDB' Color 5.
35
36
skip 2.

WRITE: / 'Código:' Color 1, id_func,


/ 'Nome:' Color 1, pnome,
/ 'Sobrenome:' Color 1, psobrenome,
/ 'Cargo:' Color 1, pcargo,
/ 'Salário:' Color 1, psalario .

10 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

SAP – Database – Native SQL – Abap

Publicado: 24 de junho de 2014 em Abap


0
Instruções Native SQL permitem utilizar comandos SQL específicos de um banco de dados em um programa ABAP. Isso significa que você pode usar instruções de banco de dados que
não são administradas pelo dicionário ABAP, e, portanto, programas criados com instruções SQL nativas não podem ser transportados para qualquer plataforma pois utilizam por
exemplo PL/SQL para o banco de dados Oracle ou Transact-SQL para o Microsoft SQL Server e assim por diante.

Instruções SQL nativas permitem uma maior flexibilidade de dados em um programa ABAP por não ter restrições e permitem que você utilize quase todos os recursos da linguagem de
cada banco de dados, pois instruções SQL nativas ignoram a interface de banco de dados do R/3. Não há registro de tabelas de log, e não há sincronização com o buffer do banco de
dados no servidor de aplicativos. Por esta razão, você deve, sempre que possível, usar o Open SQL para alterar as tabelas de banco de dados declaradas no dicionário ABAP. Em
particular, as tabelas declaradas no dicionário ABAP que contêm longas colunas com os tipos LCHR ou LAW e só devem ser abordadas usando o Open SQL, já que as colunas contêm,
informação extra e de comprimento específico do banco de dados. O SQL nativo não tem essa informação, e pode, produzir resultados incorretos. Além disso, o SQL nativo não
suporta manuseio automático de cliente. Em vez disso, você deve tratar campos do cliente como qualquer outro.

O Native SQL permite que você execute Stored Procedures, cursores e outros tipos de procedimentos comuns do banco de dados, mas existe algumas ressalvas, o SQL nativo funciona
sem os dados administrativos sobre as tabelas armazenadas no dicionário ABAP. Consequentemente, não pode realizar todas as verificações de consistência como o Open SQL. Isto
coloca um maior grau de responsabilidade sobre os desenvolvedores de aplicativos em como trabalhar com campos ABAP corretamente. Você deve sempre garantir que o tipo de dado
ABAP e o tipo da coluna de banco de dados são idênticos.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/native-sql-select.jpg)
Native SQL

Em sua sintaxe, o Native SQL deve começar com uma instrução EXEC SQL e terminar com ENDEXEC, a instrução também permite que você utilize uma instrução FORM…PERFORM
que é executada automaticamente.

Exemplo:

Neste exemplo escrevemos uma simples instrução SQL nativa que utiliza parâmetros para executar uma instrução SQL para o banco de dados SAP MaxDB.

Abap

11 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 *&---------------------------------------------------------------------*
2 *& Report ZNATIVESQL
3
4 *&
5 *&---------------------------------------------------------------------*
6 *& Desenvolvimento Aberto
7 *& Abap - Native SQL
8
*&---------------------------------------------------------------------*
9
10
11 REPORT ZNATIVESQL.
12
13 * Cria tabela interna
14
15 DATA: BEGIN OF itabela,
16 connid TYPE spfli-connid,
17 cityfrom TYPE spfli-cityfrom,
18 airpfrom TYPE spfli-airpfrom,
19
20 cityto TYPE spfli-cityto,
21 airpto TYPE spfli-airpto,
22 deptime TYPE spfli-deptime,
23
24 arrtime TYPE spfli-arrtime,
25 END OF itabela.
26
27
* Cria parametro de pesquisa
28
29 DATA parametro TYPE spfli-carrid VALUE 'AZ'.
30
31 * Executa Native SQL utilizando um procedimento FORM
32 EXEC SQL PERFORMING dados.
33 SELECT connid, cityfrom, airpfrom, cityto, airpto, deptime, arrtime
34
35 INTO :itabela
36 FROM spfli
37 WHERE carrid = :parametro
38
39 ENDEXEC.
40
41 * Pula duas linhas
42 SKIP 2.
43
* Retorna a quantidade de linhas afetadas
WRITE: / 'A instrução SQL retornou', SY-DBCNT, ' linhas de dados.'.

* Cria procedimento
FORM dados.
WRITE: / itabela-connid, itabela-cityfrom, itabela-airpfrom,

12 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

itabela-cityto, itabela-airpto, itabela-deptime, itabela-arrtime.


ENDFORM.

SAP – BAdis – Business add-ins – Abap

Publicado: 10 de junho de 2014 em Abap


0
BAdis são melhorias para a versão padrão do sistema. Elas podem ser inseridas no sistema SAP para acomodar as necessidades específicas dos utilizadores e serem incluídas no
fornecimento Standard. Algumas indústrias específicas muitas vezes exigem funções especiais, a SAP permite que você crie estas funções pré-definidas em seu software utilizando os
Business Add-ins.

Para criar uma BAdi siga os seguintes passos:

1. Entre na transação SE18.


2. Crie um novo Enhancement Spot chamado: ZDA_BADI_SPOT.
3. No ícone criar BAdi, crie uma BAdi de nome ZDA_BADI.
4. Desmarque a opção Multiple Use de sua BAdi:

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/badi-1-criar.jpg)
ZDA_BADI

5. Salve sua BAdi e expanda seu conteúdo.


6. Clique em interface e insira uma nova interface de nome ZAD_BADI_INTERFACE.
7. Na aba métodos crie um novo método de instancia chamado GET_DADOS e insira uma descrição de sua escolha:

13 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/badi-2-metodos.jpg)
Método

8. Crie os Parâmetros para sua Interface de acordo com a figura abaixo:

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/badi-3-parametros.jpg)
Parâmetros

9. Salve e Ative a sua BAdi.


10. De volta a tela principal da transação SE18, em modo de alteração cheque a opção CALL FALLBACK IF NO IMPLEMENTATION IS EXECUTED, insira o nome da classe como
ZDA_CLASSE e salve:

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/badi-4-classe.jpg)
Classe

11. Você será levado ao Class Builder e verá que sua classe herdou os métodos da interface criada logo acima, dê um duplo clique no método e preencha seu código com o método
descrito logo abaixo.
12. Salve e ative sua classe.
13. Na transação SE38 crie um programa chamado Z_PROG_BADI e utilize o código abaixo para testar sua BAdi.

14 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

Exemplo:

Neste exemplo criamos uma BAdi e a utilizamos em um programa Abap.

Obs: BAdis não devem ser confundidas com BAPIs, existe um post de exemplo de uma BAPI neste site que possui quase a mesma funcionalidade deste exemplo, e modificando a
instrução SELECT deste método podemos deixar as funcionalidades idênticas, entretanto BAdis e BAPIs são utilizadas para propósitos diferentes em um sistema SAP.

Abap

Método da classe – ZDA_CLASSE

1 method ZDA_BADI_INTERFACE~GET_DADOS.
2
3 Select * From SFLIGHT
4
5 INTO TABLE TFLIGHT
6 WHERE carrid EQ carrid AND
7 connid EQ connid AND
8
fldate EQ fldate.
9

endmethod.

Programa – Z_PROG_BADI

15 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 *&---------------------------------------------------------------------*
2 *& Report Z_PROG_BADI
3
4 *&
5 *&---------------------------------------------------------------------*
6 *& Desenvolvimento Aberto
7 *& BAdis - Business Add Ins
8
*&---------------------------------------------------------------------*
9
10
11 REPORT Z_PROG_BADI.
12
13 * Exemplo de entrada de dados na tabela SFLIGHT
14
15 * airlineid = 'LH'
16 * connectionid = '0401'
17 * flightdate = '07.03.2014'
18
19
20 * Cria parametros
21 PARAMETERS:
22 empresa TYPE scarr-carrid, " Airline code
23
24 conexao TYPE sflight-connid, " Connection number
25 data TYPE sflight-fldate. " Flight date
26
27
* Declara variaveis
28
29 DATA:
30 t_flight TYPE STANDARD TABLE OF sflight,
31 dados LIKE LINE OF t_flight,
32 badi_flight TYPE REF TO zda_badi.
33
34 * Incia seleção
35 START-OF-SELECTION.
36
37
38 * Acessa objeto Badi
39 GET BADI badi_flight.
40
41
42 * Chama BADI
43 CALL BADI badi_flight->get_dados
44 EXPORTING
45
carrid = empresa
46
47 connid = conexao
48 fldate = data
49 RECEIVING
50

16 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

51 tflight = t_flight.
52
* Imprime dados
LOOP AT t_flight INTO dados.
WRITE:
/ dados-carrid,
dados-connid,
dados-fldate,
dados-price,
dados-PLANETYPE,
dados-CURRENCY.
ENDLOOP.

SAP – BAPI – Business Application Programming Interface – Abap

Publicado: 8 de junho de 2014 em Abap


0
BAPI é uma interface definida com precisão para fornecer acesso a processos e dados em sistemas de aplicação de negócios, tais como o SAP R/3. Uma BAPI é similar a uma API de
programação comum entretanto é direcionada a negócios, é manipulada no sistema SAP através do FUNCTION BUILDER e pode ser utilizada em programas SAP ou não SAP através
de acesso remoto chamado RFC.

Requisitos

Utilizaremos um exemplo do NetWeaver 7 do modelo de dados chamado Fligth Model, para isto você precisa criar um cliente de desenvolvimento DEV de numero 200, transportar as
configurações dos cliente padrão 001 para este cliente e carregar os dados de exemplo do Flight Model contidos no ambiente 000, para seu ambiente de desenvolvimento você
encontra um walkthrough de como realizar estes dois procedimentos em nossa categoria ABAP.

BAPI

A BABI de exemplo será a BAPI_FLIGHT_GETDETAIL, que exibe todos os detalhes de um voo contido na tabela SFLIGHT. Você pode visualizar o código fonte desta BABI utilizando
o function Builder na transação SE37.

17 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/06/babi-1-Ġuilder.jpg)
BAPI

Exemplo:

Este programa exibe os dados de voo através de uma interface de aplicação de negócios utilizada em um sistema SAP.

Abap

18 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

1 *&---------------------------------------------------------------------*
2 *& Report ZVOOS
3
4 *&
5 *&---------------------------------------------------------------------*
6 *& Desenvolvimento Aberto
7 *& BAPI_FLIGHT_GETDETAIL
8
*&---------------------------------------------------------------------*
9
10
11 REPORT ZVOOS.
12
13 * Exemplo de entrada de dados na tabela SFLIGHT
14
15 * airlineid = 'LH'
16 * connectionid = '0401'
17 * flightdate = '07.03.2014'
18
19
20 * Declara variaveis
21 DATA : dados TYPE bapisfldat,
22 dados_info TYPE bapisfladd,
23
24 dados_availability TYPE bapisflava,
25 dados_it_ret TYPE STANDARD TABLE OF bapiret2.
26
27
* Declara parametros
28
29 PARAMETERS : empresa TYPE sflight-carrid,
30 conexao TYPE sflight-connid,
31 data TYPE sflight-fldate.
32
33
34 * Chama BAPI
35 CALL FUNCTION 'BAPI_FLIGHT_GETDETAIL'
36 EXPORTING
37 airlineid = empresa
38
39 connectionid = conexao
40 flightdate = data
41 IMPORTING
42
flight_data = dados
43
44 additional_info = dados_info
45 availibility = dados_availability
46 TABLES
47
48 return = dados_it_ret.
49
50 * Imprime Resultado dos campos

19 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

51 write : / 'Flight Data: ',


52 / dados-AIRLINEID,
53 / dados-AIRLINE,
54
55 / dados-CONNECTID,
/ dados-FLIGHTDATE,
/ dados-AIRPORTFR,
/ dados-CITYFROM,
/ dados-AIRPORTTO,
/ dados-CITYTO,
/ dados-DEPTIME,
/ dados-ARRTIME,
/ dados-ARRDATE,
/ dados-PRICE,
/ dados-CURR,
/ dados-CURR_ISO.

SAP – NetWeaver 7 – Transport – Change Request – DEV 200 to QAS 300 – Mini-SAP

Publicado: 26 de maio de 2014 em Abap


0
Assim que um desenvolvimento é terminado você pode transporta-lo para um ambiente de qualidade para que seja realizado um teste unitário em seu programa afim de identificar
possíveis erros. A seguir veremos como efetuar este procedimento no NetWeaver 7 (Mini-SAP) passo a passo.

1 – Primeiro você precisa criar um cliente de qualidade de numero 300 e depois efetuar uma cópia do cliente 001 para este cliente, você encontra um walkthrough para realizar este
procedimento na categoria Abap.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-1-mandante.jpg)
QAS – 300

20 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

2 – No ambiente de desenvolvimento DEV (200) crie uma nova Change Request utilizando a transação SE10.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-2-cria-request.jpg)
Trasport Organizer

3 – Para criar uma nova Request clique em novo e escolha o tipo de Request que você necessita.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-3-workbench-request.jpg)
WorkBench Request

4 – Preencha a descrição e as propriedades da nova Request.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-4-propriedades-request.jpg)
Propriedades

5 – Clique em Salvar para criar a nova Request.

21 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-5-request-ok.jpg)
Nova Change Request

6 – Entre no Abap Development WorkBench usando a transação SE80, escolha o objeto Package e escolha o nome ZDA-00001 e clique em pesquisar, quando questionado, escolha criar
nova Package.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-6-pacote.jpg)
Abap – Nova Package

7 – Preencha as propriedades da nova Package como na figura abaixo:

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-7-pacote-config.jpg)
Propriedades – Package

8 – Associe a nova Package a Request que acabamos de criar.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-8-pacote-request.jpg)
Package –> Change Request

9 – Ainda no Abap WorkBench crie um novo programa chamado ZDEVTOQAS e o inclua em nossa nova Package.

22 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-9-programa.jpg)
Programa –> Package

10 – No editor, escreva o código fonte encontrado logo abaixo.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-10-codigo-fonte.jpg)
Programa ZDEVTOQAS

11 – Após compilar, ativar e testar o programa, entre na transação SE03 para conferir se esta tudo OK com nossa Change Request.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-11-procura-request.jpg)
Transport Organizer Tools

12 – Clique em Find Request e busque pela sua Request para ver seu conteúdo.

23 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-12-request-pronta.jpg)
Change Request OK

13 – Selecione sua Request e clique no ícone de transporte chamado Release Directly.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-13-request-released.jpg)
Release – Request

14 – Efetue Logoff do cliente de desenvolvimento 200 e efetue um Login no cliente de qualidade 300, entre na transação SCC1, e selecione o cliente de desenvolvimento e a Request que
pretende transportar.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-14-request-transporte.jpg)
Selecionar Request

15 – Clique no botão Start Immediately para iniciar o transporte ou você pode optar por executar este procedimento em background.

24 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-15-request-selecao.jpg)
Iniciar Imediatamente

16 - Após o termino do transporte clique em sair e você recebera um relatório com o contendo o resumo de seu transporte.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/qas-16-request-transporte-ok.jpg)
Transporte Concluído com Sucesso

Obs:

Programas são Client-Independent e não é necessário transportar programas dentro de um mesmo servidor de aplicação, normalmente se transporta programas para outros servidores
como o QAS e o PRD.

Na imagem abaixo segue uma pesquisa executada em cima do banco de dados NSP do NetWeaver 7, onde podemos ver que a tabela responsável pelo diretório de programas não
possui o campo chave MANDT.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/sap-system-name.jpg)
Cross-Client – Table -Diretório de Programas

Exemplo:

Programa básico para ser transportado do ambiente de desenvolvimento para o ambiente de qualidade.

25 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

Abap

1 *&---------------------------------------------------------------------*
2 *& Report ZDEVTOQAS
3
4 *&
5 *&---------------------------------------------------------------------*
6 *& Desenvolvimento Aberto
7 *& Desenvolimento para Qualidade
8
*&---------------------------------------------------------------------*
9
10
11 REPORT ZDEVTOQAS.

Write : / 'Este programa será transportado para o client QAS-300'.

SAP – NetWeaver 7 – Copy Clients- 001 (Default) to 200 (Dev) – Mini-SAP

Publicado: 25 de maio de 2014 em Abap


0
O Cliente 001 é criado na instalação do sistema SAP e é um modelo neutro para que você possa criar outros clientes à partir dele. Após criar um novo cliente na transação SCC4, você
pode transportar uma copia do cliente 001 para que seja a base do cliente de desenvolvimento numero 200.

Copiando Clientes

1 - Efetue o login no cliente de desenvolvimento 200, usando o usuário SAP* e a senha pass, entre na transação SCCL, escolha o perfil SAP_ALL, escolha o cliente fonte a ser copiado,
escolha o cliente 001 para os itens Source Client e Source Client User Master:

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/copy-cliente-001.jpg)
Source Client

2 – Você pode optar por rodar o procedimento imediatamente ou rodar em um processo de background, escolha Start Immediately, uma janela de confirmação irá lhe mostrar o resumo
das opções escolhidas, clique em continuar.

26 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/copy-cliente-001-verificacao.jpg)
Resumo

3 – IMPORTANTE – Após a cópia o sistema irá abrir automaticamente uma ferramenta para conversão de nomes lógicos de sistema para tabelas Cross-Clients, por enquanto nós ainda
não configuramos estes nomes no Mini SAP, clique em cancelar para sair desta ferramenta.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/copy-cliente-001-2-ferramenta.jpg)
Logical Name Tools

4 – Logo após você cancelar a ferramenta o sistema irá lhe retornar o relatório do resultado da cópia de clientes.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/copy-cliente-001-2-sucesso.jpg)
Client Copy Successfully

27 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

5 – Use o Tcode /nex para sair do sistema e efetue um login no cliente 200 já com o usuário BCUSER e está apto a desenvolver programas neste ambiente.

Obs: Neste procedimento todas as tabelas serão sobrescritas, todos os dados serão perdidos, após este procedimento você pode rodar novamente o programa de copia de dados do
Flight Model do post anterior para transportar os dados do cliente 000 para o cliente 200.

IMPORTANTE:

Na configuração padrão do NetWeaver 7 você pode executar procedimentos cross-client apenas em um sistema SAP e transportar esta tabela para todos os outros sistemas SAP.
Alternativamente, você pode definir os sistemas lógicos para cada sistema SAP , para que os procedimentos sejam efetuados em cada um dos diferentes sistemas.

Logical System: hĴps://help.sap.com/saphelp_nw04/helpdata/en/78/217dc151ce11d189570000e829Ġbd/content.htm (hĴps://help.sap.com/saphelp_nw04/helpdata/en/78


/217dc151ce11d189570000e829Ġbd/content.htm)

SAP – NetWeaver 7 – Importando Dados do Flight Model para o Cliente de Desenvolvimento – Mini-SAP

Publicado: 25 de maio de 2014 em Abap


0
Após criar o cliente 200 para desenvolvimento e copiar o cliente base 001, você precisa importar os dados do Flight Model para pode utilizar em seus programas o modelo de dados
contidos no NetWeaver 7.

Importando Dados para o Cliente 200

1 – Efetue o Login no cliente 200 com o usuário BCUSER.

2 - Na transação se38 chame o programa SAPBC_DATA_GENERATOR, compile, ative e execute.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/flight-model-1-programa.jpg)
SAPBC_DATA_GENERATOR

3 – Clique no botão de radio na opção STANDARD DATA RECORD e clique no botão executar.

28 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/flight-model-2-opcoes.jpg)
Programa

4 - Após o termino da execução do programa, abra a transação SE16 e pesquise pela tabela SFLIGHT.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/flight-model-3-dados.jpg)
Data Browser

Obs: Para uma visão geral do Flight Model clique aqui (hĴps://desenvolvimentoaberto.wordpress.com/2014/02/20/netweaver-flight-model-introducao-ao-database-mini-sap/).

SAP – NetWeaver 7 – Clients – Cliente de Desenvolvimento e Customização – Mini-SAP

Publicado: 25 de maio de 2014 em Abap


0
Após instalar o Mini SAP você pode criar seus objetos e programas no mandante 001, porem o mandante 001 também é um mandante de sistema apesar de possuir um flag do tipo C na
tabela de mandantes que permite desenvolvimento e customização, a SAP recomenda que você utilize este mandante apenas para criar uma cópia neutra para outros mandantes.

De acordo com as melhores praticas de configuração da SAP você precisa criar dois novos clientes para desenvolvimento e customização, em um ambiente de desenvolvimento que
são o CUST e o SANDBOX e dois clientes de qualidade para o ambiente de QAS, o QTST e o TRNG que são os ambientes de teste e integração e treinamento.

29 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

Ambiente de desenvolvimento – DEV

CUST- Desenvolvimento – Mandante – 200

Cliente de desenvolvimento e customização todas as alterações feitas para objetos específicos do cliente são automaticamente gravadas e armazenadas em solicitações de
desenvolvimento neste cliente. Você só pode executar personalização cliente-independent neste cliente. Você deve manter manualmente os dados mestres e de transações para testes.
Você também pode usar o cliente para desenvolver programas.

Somente use os programas de teste no cliente de garantia de qualidade (300) para evitar configurações de personalização prejudiciais.

SAND – SandBox – Mandante – 210

Não é permitido personalização ou desenvolvimento do trabalho neste cliente. Utilize este cliente para testar funções sem correr o riscos de alterações de dados. O administrador do
sistema atualiza o cliente regularmente usando uma cópia do cliente 200.

Ambiente de Qualidade – QAS

QTST - Qualidade – Mandante – 300

Nenhuma personalização ou desenvolvimento de trabalho é feito neste cliente. Este é o cliente de teste primário para testar unidades individuais de trabalho de desenvolvimento e
testes de qualidade antes da fase de pré-produção.

Cliente 300 é mantido up-to-date, copiando os pedidos criados de customização e desenvolvimento do cliente 200. Normalmente, quando cada unidade de trabalho de personalização é
concluída, resulta em um pedido que deve ser copiado. O personalizador deve testar as novas funções em um “teste de unidade”. Às etapas do projeto, por exemplo, imediatamente
antes da fase de pré-produção, você deve executar testes de qualidade de maior escala com os usuários em sua empresa.

TRNG – Treinamento – Mandante – 310

Este cliente é usado para treinar os usuários finais. Ele contém dados mestre e de transação para que o treinamento seja o mais realista possível. Você deve manter os dados
manualmente, conforme necessário para o treinamento. Nem o trabalho de desenvolvimento e nem personalização independente do cliente é permitido neste ambiente.

Perfil

Os perfis do SAP ficam gravados no seguinte endereço: C:\usr\sap\NSP\SYS\profile

Criando o Cliente 200 – Mini SAP

1 – Para criar um novo cliente entre na transação SCC4, clique em Display/Change, clique em OK, no aviso de tabelas Cross-Client(tabelas que não possuem o campo MANDT, apesar
desta possuir, é tabela pai dos mandantes para o sistema) e clique em New Entry, inclua um novo cliente com a opção Client Role: Customizing e salve.

30 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/mandante-1-novo.jpg)
Parâmetros do Novo Cliente

2 – Você deve obter um novo cliente como na figura abaixo, quando você criar um novo cliente nenhum usuário do sistema esta apto a se conectar neste cliente, para isto precisamos
mudar algumas configurações:

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/mandante-2-visualizacao.jpg)
Cliente 200 – DEV (CUST)

3 – IMPORTANTE: -para se conectar no novo mandante você precisar inserir ou modificar o parâmetro de login para que habilite o usuário SAP* a se conectar ao cliente 200. Entre na
transação RZ10 para efetuar esta modificação nos parâmetros do perfil SAP.

31 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/mandante-3-importado.jpg)
Perfil SAP – Start, Default e Instância

4 - Caso seu perfil não apareça automaticamente no botão de busca do campo Profile, use o botão Import para importar seu perfil DEFAUT e o seu perfil de instancia para que você
possa modifica-los.

Após o perfil DEFAULT importado, selecione o botão de radio, Extended Maintenance e clique em Change, na tela de parâmetros clique no botão Parameters e preencha o campo
Parameter name com: login/no_automatic_user_sapstar e o campo Parameter Val com o valor 0.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/mandante-4-inserir-parametro.jpg)
Parâmetros

5 – Clique no botão copiar e em seguida no botão voltar, e quando questionado escolha ativar o perfil DEFAULT.

32 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/mandante-5-login.jpg)
Perfil

6 – Reinicie o servidor SAP.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/02/gui2.jpg)
Servidor SAP

7 – Agora você esta apto a se conectar no cliente de desenvolvimento 200, para isto utilize o usuário SAP* e a senha “pass“.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/mandante-7-login.jpg)
Login – Cliente 200

33 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

Problemas Com o Perfil

Normalmente a instalação e configuração do SAP é feita por um consultor especializado chamado BASIS, no caso do Mini-SAP instalado em uma estação de trabalho para estudos,
talvez você não tenha todas as permissões requeridas no sistema operacional para manipular os perfis do sistema SAP e isto pode gerar alguns erros, e os mais comuns são:

Ao tentar Ativar o perfil:

unknown error activating profile.

Ao checar o perfil:

j2ee/dbname changes not permiĴed.

Se receber uma destas mensagens de erro você não poderá se conectar ao novo cliente.

Causa

Você não possui os diretos necessário no sistema operacional para manipular a alteração do perfil.

Solução

1. Após executar a modificação ou a inserção do parâmetro: login/no_automatic_user_sapstar


2. Entre na pasta C:\usr\sap\NSP\SYS\profile
3. Abra o arquivo chamado DEFAULT.PFL.
4. Verifique se o parâmetro acima pode ser gravado no final do arquivo
5. caso contrario insira a linha: login/no_automatic_user_sapstar = 0
6. Reinicie o servidor e conecte ao cliente 200 com o usuário SAP* e a senha pass.

Exemplo:

Arquivo DEFAULT.PFL

1 SAPDBHOST = Estacao01
2 j2ee/dbtype = sap
3 j2ee/dbname = NSP
4 j2ee/dbhost = Estacao01
5 SAPSYSTEMNAME = NSP
6 SAPGLOBALHOST = Estacao01
7 system/type = ABAP
8 #-----------------------------------------------------------------------
9 # SAP Message Server for ABAP
10
11 #-----------------------------------------------------------------------
12 rdisp/mshost = Estacao01
13 rdisp/msserv = 0
14 rdisp/msserv_internal = 3900
15 login/system_client = 001
login/no_automatic_user_sapstar = 0

34 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

SAP – Database – NSP- Entendendo os Mandantes (System Clients) – Campo MANDT

Publicado: 23 de maio de 2014 em Abap, Sql


0
O SAP R/3 possui um conceito de clientes definidos por diferentes cenários dentro de um sistema SAP, cada cliente possui um proposito exclusivo e por padrão alguns destes clientes
são configurados durante a instalação do R/3, é possível que um implementador configure seus próprios clientes a partir da configuração padrão.

Basicamente todos os objetos e dados que pertencem a um cliente estão contidos dentro do banco de dados do SAP, entre as milhares de tabelas do sistema, estão todas as configurações
necessárias para que o sistema funcione corretamente e é onde também estão as configurações customizadas de cada implementação, incluindo tabelas, dados, programas, funções,
classes entre outros.

NetWeaver 7

O NetWeaver 7 roda sobre o banco de dados da SAP chamado NSP, e por padrão possui os esquemas DOMAIN, SAPNSP, SUPERDBA, SYSINFO, possui índices, Stored Procedures,
Sinônimos, mas não possui Triggers, é comum sistemas de grande porte não utilizarem Triggers estas são consideradas armadilhas por muitos DBAs, por gerar erros desnecessários e
minimizar a velocidade do sistema já que normalmente tratam registro a registro até os procedimentos de dados em massa, mesmo as IDEs de programação SQL de hoje mudaram a
localização do node de Triggers em sua interface, pois antes costumavam ficar junto com as tabelas e eram facilmente esquecidas na hora da programação as tornando muitas
vezes invalidas.

Cliente 000

O cliente 000 é o cliente SAP standard, que quando uma nova versão é instalada, SAP atualiza automaticamente: os conteúdos e estruturas de tabelas, os programas, as telas, os
formulários, a ajuda on-line e outros objetos e dados do sistema SAP. Este cliente sempre tem o status atual padrão e você pode transferir as configurações padrão do cliente 000 para
um outro cliente. O cliente 000 não é um cliente de trabalho e sim de configuração inicial do sistema.

Por padrão os dados de exemplo do NetWeaver 7 e este conjunto de tabelas e dados é chamado Flight Model estão armazenados dentro do cliente 000 e precisa ser transportado para
um cliente por exemplo de DEV ou SANDBOX para poder ser utilizados corretamente. Neste post não vamos importar os dados definitivamente, o objetivo é entender como funciona o
armazenamento de dados dentro de um cliente.

Para informação adicional sobre os clientes do sistema SAP clique aqui (hĴp://help.sap.com/saphelp_46c/helpdata/pt/2e/d9456b94f911d283d40000e829Ġbd/content.htm?frameset=/pt/2e
/d9530294f911d283d40000e829Ġbd/frameset.htm&current_toc=/pt/2e/d95eeb94f911d283d40000e829Ġbd/plain.htm&node_id=5).

Mandante

O mandante é o nível máximo da hierarquia no sistema SAP, as especificações feitas, ou os dados entrados neste nível são válidos para todas as empresas e para todas as outras
estruturas organizacionais. Portanto, é necessário fazer essas especificações, ou entrar com esses dados somente uma vez. Isto assegura a consistência dos dados.

Os usuários devem entrar com uma chave de mandante quando fazem o logon no sistema SAP. Isto define o mandante em que eles pretendem trabalhar. Todas as entradas feitas são
salvas por mandante. Processamento e analise de dados são também executados por mandante. Um mandante contem a unidade comercial, organizacional e tecnicamente auto-contida
em um sistema SAP. Os mandantes têm os seus próprios registros mestre e conjuntos de tabelas. A definição de unidade organizacional mandante é obrigatória.

Na pratica o mandante é um campo chave existente em quase todas as tabelas do banco de dados do sistema SAP. Existem transações que contem programas que manipulam
configurações entre clientes, este programas visam manter consistência de configuração e dados de todo o sistema SAP, quando se manipula requisitos de transportes de um cliente para

35 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

o outro.

Workaround Para Transportar Dados

Você NUNCA deve executar este tipo de procedimento em um sistema SAP a não ser que esteja utilizando uma cópia de estudos. É possível fazer o transporte diretamente no banco de
dados usando simples instruções SQL, mas para isso você deve conhecer a modelagem de dados principalmente no que se refere as chaves estrangeiras.

A seguir vamos mostrar como funciona realmente o conceito de mandantes e como os dados são passados de um cliente para o outro.

1- Primeiro você precisa de um acesso de DBA e uma ferramenta de SQL do banco de dados utilizado pelo seu sistema SAP, em nosso caso estamos usando o SAP MaxDB e o SQL
Studio. Vamos efetuar um comando básico na tabela de exemplo do Flight Model do NetWeaver 7, chamada SCARR e poderemos ver que os dados estão contidos apenas no mandante
padrão que é o cliente 000.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/cliente-sap-scarr-1.jpg)
Dados – Mandante 000

2 – No dicionário de dados na transação SE11, podemos ver a estrutura da tabela SCARR, a mesma que esta aberta no Studio SQL, porem no sistema R/3 estamos logados no mandante
001 e como podemos ver na tabela acima não existe dados para o campo MANDT para o cliente 001.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/cliente-sap-scarr-2-dicionario.jpg)
SCARR – Estrutura

3 – Quando tentamos verificar o conteúdo da tabela SCARR sobre o mandante 001 o sistema acusa corretamente que não existe dados.

36 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/cliente-sap-scarr-3-dados.jpg)
SCARR – Dados – 001

4 – Para transportar os dados para o mandante 001 basta utilizar uma instrução SQL básica contendo um comando INSERT…SELECT com um alias no campo mandante, visto que é
preciso respeitar a ordem da proteção referencial do banco de dados sobre as chaves estrangeiras contidas na tabela, esta tabela por ser uma tabela pai não possui uma chave estrangeira
atrelada a ela.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/cliente-sap-scarr-4-update.jpg)
Transporte – Insert…Select

5 – Após as rows serem duplicadas com sucesso você pode verificar usando uma instrução Select.

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/cliente-sap-scarr-5-seleciona.jpg)
Dados Transportados

6 – Agora você pode verificar o conteúdo da tabela SCARR dentro do mandante 001 no qual estávamos logados e os dados serão encontrados.

37 de 38 02/07/2014 17:38
Abap | Desenvolvimento Código Aberto https://desenvolvimentoaberto.wordpress.com/category/abap/

(hĴps://desenvolvimentoaberto.files.wordpress.com/2014/05/cliente-sap-scarr-6-dados.jpg)
Mandante 001 – Dados

OBS: Existem ferramentas especificas para transporte entre os clientes, este método pode ser utilizado somente a nível de estudo, em um ambiente empresarial você esta sujeito aos
termos de garantia do sistema SAP.

Blog no WordPress.com. | O tema Greyzed.


Seguir

Seguir “Desenvolvimento Código Aberto”

Tecnologia WordPress.com

38 de 38 02/07/2014 17:38

Você também pode gostar