Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
ABAP
SAP R/3
MÓDULO ABAP
ENHANCEMENTS
AND
MODIFICATIONS
TREINAMENTO
Níveis de Modificação
Incrementando a Funcionalidade
- Antes de modificar, sempre verifique se as suas necessidades não podem ser feitas através da
Customização ou do conceito de Enhancement.
Programas Enhancement
- Ao contrário dos Field-Exits, o programador precisa criar projetos para User-Exits, Menu-Exits e
Screen-Exits.
- User-Exit:
- Menu-Exit:
- Screen-Exit:
- Você pode criar APPENDS e CI Includes nas tabelas e estruturas com uma nova estrutura sem Ter
que propriamente modificá-la.
- Você NÃO precisa criar projetos para os APPENDS ao contrário dos CI Includes.
- Um usuário deve registar a mudança no SAP no caso de mudar algum objeto do repositório de
objetos do SAP. Porém há algumas exceções como matchcodes, índices de tabelas, ajustes de
buffer, objetos customizados, patches e objetos que são baseados em modificação automática( Na
Customização). Se o mesmo usuário modificar novamente o mesmo objeto mais tarde, não será
necessário um novo registro de modificação.
- Quais são os benefícios de registrar as modificações no SSCR ( SAP Software Change Registration
)?
- Todos os objetos modificados são guardados na SAP. Baseado nesta informação, a SAP
pode rapidamente localizar e remover as causas do problema.
- Operações Dependentes
- A necessidade de registar irá também evitar modificações inadequadas. Isto promove uma
operação dependente do sistema.
- Simplificação de Upgrades
- Se mudar um objeto do repositório standard do SAP, será requerido uma change request, como se
você estivesse criando um objeto próprio. A única diferença é que será gravada como uma task de
reparo.
- Uma vez que o desenvolvimento estiver completo, o programador libera a task. Os objetos e seus
bloqueios de edição são transferidos da task para a request.
- Uma vez completado todo o processo de modificação, deverá então ser liberada a change request.
Assim todas os bloqueios de edição serão liberados.
- Change Requests podem ser locais ou transportáveis. Ela será automaticamente definida como um
dos dois tipos dependendo da classe à ela definida (Temporária ou Qualquer outra).
Versões
- Quando uma change request é liberada, uma versão completa com todos os objetos contidos na
change request é escrita no banco de versões.
- Se mais tarde for editada novamente, é criada uma cópia completa da versão e comparando as
diferenças, se houver é criado uma versão como backward delta. Isso é feito apenas uma única vez,
pois o SAP não desenvolve versões de objetos específicos, mas sim das requests. Ou seja, cada
request é uma nova versão, independente dos objetos amarrados a ela.
- As modificações feitas no dicionário de Dados é feita durante a change. Outros objetos são
ajustados após a liberação da change.
- No caso do dicionário este ajuste pode ser feito através da transação SPDD, nos outros casos é feita
através da transação SPAU.
- Determinação de objetos que podem ser modificados enquanto o sistema está funcionando;
- Porém os ajustes de modificação na versão 3.0 não podem ser feitos automaticamente.
- Existe uma comparação de versões que podem ser feitos durante ou após o upgrade para o ajuste
de modificações.
- Durante este ajuste de modificação, o número de objetos SAP que você mudou no sistema é
determinado primeiramente.
- Assim sendo esta comparação permite a você achar as diferenças e colocá-las na nova versão do
SAP.
Regras de Modificação
Evitando os Ajustes
- Evite modificar os objetos standard do SAP, não tendo que ajustar estas modificações mais tarde.
- Utilize-se das possibilidades de mudança que o SAP lhe permite sem ter que alterar objetos
standard como field-exits, user-exits ... e appends nas tabelas.
- Para evitar de aplicar correções manualmente, utilize-se dos serviços de correções da SAP como
Hot packages.
- Estruturas APPEND permite a você acrescentar campos em uma tabela sem propriamente
modificá-la .
- Estes APPENDs são amarrados a uma tabela em específico e podem ser mais de um para uma
mesma tabela. Quando ativar esta tabela, o sistema amarra a ela todas as estruturas de APPEND
desde que estejam ativadas.
- Estas estruturas APPEND diferem das sub-estruturas, pois primeiramente no caso de sub-estruturas
se usa um INCLUDE e depois com sub-estruturas uma tabela é modificada, o que não ocorre com
o APPEND.
- No ABAP, você pode usar os APPENDS da mesma forma que qualquer outra estrutura.
Estruturas APPEND
- Você cria uma estrutura APPEND dentro de um range de nomes. Isto protege contra ser sobre
escrita durante um upgrade ou uma nova versão. Durante o upgrade ou nova versão, as tabelas
standards do sistema são recolocadas, sendo assim no momento da ativação os campos que estão
protegidos na estrutura APPEND são gerados juntamente com os standards.
- Na release 3.0, a seqüência de campos no dicionário de dados do SAP, pode diferir do banco de
dados. Portanto NÃO é necessário uma conversão quando se coloca uma estrutura APPEND em
uma tabela ou campos em uma estrutura APPEND já existente.
- Aplicações Enhancement permitem ao cliente incrementar uma função da aplicação. Essas saídas
são pré planejadas pela SAP e consistem de vários componentes.
- Estas aplicações estão sempre inativas quando o software é instalado, elas precisam ser
completadas e ativadas pelo usuário.
- Como cliente, você não precisa Ter profundos conhecimentos de como implementar um função
em uma aplicação SAP.
- Um upgrade não requer ajustes, pois estes desenvolvimentos são tratados como novos pelo
SAP.
- Usando uma função de gerenciamento ( transação SMOD ), os programadores da SAP podem criar
funções de enhancements para programas, menus e telas.
- Como cliente, você pode obter uma visão geral dos enhancements existentes através de um
catálogo e combinar os enhancements desejados em um projeto. Isto pode ser feito através da
transação CMOD.
Projetos de Enhancement
Procedimentos SAP
- Isto permite a você como cliente implementar o enhancement com um mínimo de análise do
programa e suas telas na medida do possível.
Procedimentos do Cliente
- Quando terminar de editar as funções, deve-se ATIVAR o projeto criado, ativando assim todos os
componentes.
Clique em Criar
para Começar o
Projeto
- Primeiramente crie um Projeto através da transação CMOD, você deve designar um nome para este
projeto. É recomendado que você utilize uma convenção própria em relação ao nome. Geralmente
consiste do nome ou transação da aplicação envolvida. Este nome faz com que o projeto se torne
único no sistema.
- Em seguida navegue para os atributos e coloque uma descrição breve para o projeto. Os outros
atributos são colocados automaticamente pelo sistema.
Selecionar e Clicar
p/ Escolher
- Ainda usando a transação CMOD, você deve definir quais os componentes (Enhancements) serão
utilizados no seu projeto. Entre com os nome dos Enhancements fornecidos pela SAP.
- Se necessário existe uma função de procura que permite a você ter uma visão geral dos
enhancements da SAP. Você pode inclusive selecionar desta tela os que lhe interessar.
Editando os Componentes
SE37 - Editor de Funções
- Dependendo do tipo do componente ( função, menu ou tela ), navegue até o editor de função (
SE37), ou para o Menu Painter (SE43) para criar o código do menu ou para o Screen Painter
(SE51).
- Ao ativar um projeto de enhancement você está ativando todos os componentes a ele amarrados.
Após a ativação deste projeto, ele passa ao status de ativo.
- Durante a ativação os componentes que pertencem ao projeto serão regerados, no caso dos
programas no momento em que forem executados.
Transportando Projetos
- Para transportar um projeto de enhancements você deve designar ao seu projeto, assim como
também para os seus componentes editados, uma ou mais TASKS dentro de uma change request.
Visão Geral
- Este tipo de enhancement lhe permite, como cliente, implementar um lógica adicional a um
programa standard. Porém que define o momento em que o programa irá passar pela função de
enhancement e com quais dados você poderá trabalhar são os programadores da SAP.
- Você poderá codificar as funções, e se preciso as telas, os elementos de texto e seus próprios
includes para o grupo de função.
- Após você ativar um projeto que possui esta função como componentes do mesmo, o código
adicionado passará a ser processado durante a transação. Antes disso, a função não possui nenhum
efeito
- Prefixo: EXIT
- A instrução CALL CUSTOMER-FUNCTION não terá efeito enquanto o projeto não for ativado.
Se em um programa existirem várias chamadas para o mesmo componente, todas serão ativadas ao
mesmo tempo.
Clicar 2 vezes para Criar o include e por sua vez poder editá-lo.
- Para este tipo de enhancement, o modo mais rápido é entrar no programa da transação e procurar
por CALL CUSTOMER, clicar 2 vezes e criar o programa include que terá o código adicional.
- Não mude qualquer parâmetro de interface do Módulo de Função, apenas utilize-se do programa
include ( Função ) que será criada por você ).
- Um grupo de função do tipo X é criado pelos programadores da SAP, cujo conteúdo se divide em
includes do que começam com LX e com ZX. Como cliente, você consegue apenas customizar os
includes que começam com ZX.
- Não se pode adicionar módulos de função a este grupo de função que não seja os próprios criados
no momento do enhancement.
Visão Geral
- Menu-Exits permitem a você anexar o seu próprio processo de ação para um determinado código
de função. Para isto a aplicação do SAP reserva alguns entradas nas interfaces GUI. Como cliente,
você pode definir o texto para o botão do menu mais tarde inclusive.
- Uma vez que você ativa um Menu-Exit, eles se tornam visíveis durante a aplicação. Quando o
menu é selecionado, é disparado o Menu que foi criado e designado àquele botão.
- Para implementar um Menu-Exit, a aplicação SAP precisa lhe fornecer um código de função
adicional na Interface GUI que comece com o sinal de mais (+).
- Estes códigos de função estão inativos a princípio e só aparecem quando este componente é
amarrado a um projeto que esteja ativado.
- Para Trocar o Texto do Menu, vá para a tela dos componentes e Clique em Edit Componentes com
o cursor posicionado corretamente.
- Você pode usar a transação SE43 para criar áreas de menu, de onde você poderá disparar um novo
menu para aquela função ou pela transação SE93, você poderá dispara diretamente uma aplicação
através do botão escolhido.
- No caso de haver um Menu-Exit que esteja ligado a um User-Exit, basta editá-los separadamente e
colocar ambos no projeto para poder ativá-los.
- Esta subtela é chamada durante o processo lógico da tela principal com o comando CALL
CUSTOMER-SUBSCREEN. O nome da área não deve estar entre aspas, entretanto o nome do
programa e tela que serão chamados deverão estar entre aspas. O Número da tela pode estar em
uma variável , este deve ter quatro posições.
- Esta chamada será ignorada enquanto este componente não estiver associado a um projeto ativo.
- Como cliente você criará as subtelas dentro dos grupos de função do tipo X.
- Uma subtela é inclusa em uma área definida pelo programador da aplicação em cada ponto do
processamento lógico da tela com o comando CALL CUSTOMER-SUBSCREEN < area >
INCLUDING < function group > durante o evento PBO. Neste ponto o evento PBO da subtela é
disparado.
- O evento PAI da subtela é processado quando no processo lógico é encontrado o comando CALL
CUSTOMER-SUBSCREEN <area>.
- Os dados globais de um module pool (programa de diálogos) não são reconhecidos pela função do
tipo X que é responsável pela subtela, sendo assim o transporte precisa ser explícito.
- Para isso, você tem que usar a interface dos módulos que estão no mesmo grupo de função para
passar os dados para a tela.
- Neste caso, agora quem não reconhece os dados da subtela é o programa de diálogos, sendo assim
também se usa as interfaces para receber os dados da subtela de volta para o programa.
- Para isso usa-se um módulo que será executado no PAI da tela, este fará o trabalho de receber as
informações da tela através dos parâmetros.
Editando Subtelas
- Como cliente, você terá que criar a subtela que trabalhará com os dados na área da sub-tela. Para
isso só deverá usar a tela de componentes do projeto e pressionar editar.
- Não mude nenhuma das interfaces GUI ou tente adicionar módulos na função do tipo X no qual a
subtela está incluída.
- SET SCREEN
- SET PF-STATUS
Visão Geral
- Você pode implementar um field exits para cada campo de tela. Isto faz com que o processo da tela
seja amarrado com um módulo de função durante o processo PAI.
- Field Exits são uma espécie de LINK entre os campos da tela e módulos de função, amarrados
através de um elemento de dados. Estas amarrações podem ser locais ou globais:
- Globais : Neste caso o field-exit não se limita a uma específica tela, mas sim a todas que
possuírem este elemento de dados como característica.. A partir daí, você poderá bloquear
ou trocar o valor de determinados campos em todo o SAP.
- Locais: Neste caso o field-exit se limita a uma tela específica de uma programa específico.
Se você definir um field-exit dessa maneira, somente naquele momento em que o programa
na tela especificada estiver sendo usado, é que o field-exit entrará em ação. Estas
amarrações podem ser numeradas para vários programa/telas, podendo tratar
diferentemente cada caso.
- Prefixo: FIELD_EXIT_
- Sufixo(opicional): 0 à 9, A à Z
Criando um Field-Exit ( 1 )
- Sempre que for criar um FIELD-EXIT, primeiramente você deverá verificar qual é o elemento de
dados do campo que sofrerá a ação da função do FIELD-EXIT. Com este elemento de dados, você
poderá então criar a função que conterá a codificação que você julgar necessária.
- Na tela em que você for especificar o Grupo de Funções, você poderá escolher em usar um Grupo
de Funções que já exista em que você ache que possa juntar com a função em questão, ou
simplesmente criar um Grupo de Funções novo.
- Ao criar um Grupo de Funções novo, o SAP criará um programa principal que conterá os seguintes
includes, primeiramente o GLOBAL, onde você colocará as variáveis, definições de tabela
transparente, tabelas internas, etc que poderão ser usadas por qualquer programa/função que faça
parte deste mesmo Grupo de Funções, e em seguida todos os includes que são respectivamente
cada um uma função.
- No caso dos FIELD-EXITS, estes não possuem valor algum desde que o parâmetro do sistema
chamado /abap/fieldexit não esteja com valor YES, pois o valor padrão é NO. No caso de mudar
este parâmetro, a máquina deverá ser reinicializada e este parâmetro deve ser especificado para
cada Application Server, no caso de mais de um.
Criando um Field-Exit ( 2 )
- COMMUNICATION RECEIVE
- PERFORM externo.