Академический Документы
Профессиональный Документы
Культура Документы
DESENVOLVIMENTO
ABAP
1. INTRODUÇÃO..............................................................................................................................4
2. IDENTIFICAÇÃO DO OBJETO.................................................................................................5
2.1. HEADER....................................................................................................................................5
3. COMENTÁRIOS...........................................................................................................................7
3.1. PONTOS CHAVES..................................................................................................................7
3.2. SITUAÇÕES.............................................................................................................................8
3.3. FORMA......................................................................................................................................8
4. ORGANIZAÇÃO DOS CÓDIGOS FONTES..........................................................................14
4.1. HIERARQUIA DE DECLARAÇÕES...................................................................................14
4.2. IDENTAÇÃO, ALINHAMENTO E ESPAÇAMENTO........................................................15
5. NOMENCLATURA.....................................................................................................................17
5.1. VARIÁVEIS.............................................................................................................................18
5.2. IDENTIFICAÇÃO DA APLICAÇÃO.....................................................................................20
5.3. OBJETOS DE PROGRAMA................................................................................................21
5.3.1. PROGRAMA...........................................................................................................................21
5.3.2. VARIANTE..............................................................................................................................22
5.3.3. CAMPO GLOBAL..................................................................................................................22
5.3.4. EVENTO..................................................................................................................................23
5.3.5. SUB-PROGRAMA (Forms)..................................................................................................23
5.3.6. MACRO...................................................................................................................................24
5.3.7. TELA........................................................................................................................................24
5.3.8. STATUS GUI..........................................................................................................................24
5.3.9. TÍTULO GUI............................................................................................................................25
5.3.10. INCLUDE..............................................................................................................................25
5.3.12. MÓDULO DE DIÁLOGO...................................................................................................27
5.4. OBJETOS DO DICIONÁRIO................................................................................................27
5.5. OBJETOS DE GRUPO DE FUNÇÃO................................................................................29
5.6. OBJETOS PRIVADOS LOCAIS..........................................................................................30
5.7. OUTROS OBJETOS.............................................................................................................30
5.7.1. CLASSE DE DESENVOLVIMENTO OU PACOTE..........................................................31
5.7.2. BANCO DE DADOS LÓGICO.............................................................................................32
5.7.3. ID PARÂMETRO SET/GET.................................................................................................32
5.7.4. MENU DE ÁREA....................................................................................................................33
5.7.5. CLASSE DE MENSAGEM.............................................................................................33
5.7.6. NÚMERO DE MENSAGEM...........................................................................................34
5.7.7. AUTHORITY-CHECK.....................................................................................................34
5.7.8. PF-STATUS......................................................................................................................34
5.7.9. TITLEBAR.........................................................................................................................35
5.7.10. MEMORY-ID.....................................................................................................................35
5.7.11. BATCH INPUT (Pastas)....................................................................................................35
5.8. BUSINESS ENGINEERING.................................................................................................36
5.8.1. MODELO DE DADOS...........................................................................................................36
5.8.2. TIPO DE ENTIDADE.............................................................................................................37
5.8.3. CATEGORIA DE OBJETO BUSINESS.............................................................................37
6. LAY-OUT.....................................................................................................................................38
6.1. LAY-OUT DE TELA...............................................................................................................38
6.2. LAY-OUT DE SAIDA (RELATÓRIO)......................................................................................38
7. NORMAS DE PROGRAMAÇÃO.............................................................................................39
7.1. TABELAS INTERNAS...........................................................................................................39
7.2. PARÂMETROS DE SELEÇÃO............................................................................................39
7.3. DECLARAÇÃO DE VARIÁVEIS..........................................................................................41
Importante !
A Especificação Técnica;
A Classe de Desenvolvimento (Pacote nas versões mais novas do SAP);
A “Request”;
A “Task”.
2.1. HEADER
*---------------------------------------------------------------------------
* Programa : ZPSDR_001
* Cliente :
* Módulo :
* Transação:
* Descrição: Programa de conversão de dados para
* o cadastro de materiais
* Autor : Codificador01 Data: dd/mm/aaaa
*---------------------------------------------------------------------------
* Histórico de Alterações:
*---------------------------------------------------------------------------
* Data |Change # |Autor |Alteração
*---------------------------------------------------------------------------
* dd/mm/aaaa |C01K9016 |Codificador01 |Desenvolvimento Inicial
* dd/mm/aaaa |C01K9020 |Codificador02 |Descrição da Alteração
*---------------------------------------------------------------------------
Entenda-se por comentário, toda e qualquer string que não faça parte
da linguagem ABAP, mas que caracterize ou identifique elementos da mesma,
bem como toda descrição referente aos “Forms” e as soluções encontradas e
empregadas na construção da lógica de programação.
Sendo assim, consideram-se como pontos chaves a serem comentados
e monitorados pelo Controle da Qualidade:
3.2. SITUAÇÕES
3.3. FORMA
*-------------------------------------------------------------------------
* Tabelas do Dicionário de Dados
*-------------------------------------------------------------------------
TABLES: tabela. “ Breve descrição da tabela
*-------------------------------------------------------------------------
* Definição de Constantes
*-------------------------------------------------------------------------
CONSTANTS: c_texto type c value ‘X’ . “ Descrição da constante.
Observações:
*-------------------------------------------------------------------------
* Definição de Tabelas Internas
*-------------------------------------------------------------------------
DATA:
*-------------------------------------------------------------------------
* Definição de Estruturas
*-------------------------------------------------------------------------
DATA:
*-------------------------------------------------------------------------
* Definição de Variáveis
*-------------------------------------------------------------------------
DATA gn_var1 type n. “ Descrição da variável global
*-------------------------------------------------------------------------
* Definição de Controls
*-------------------------------------------------------------------------
CONTROLS: tb_email type tableview using screen 9000. “ Descrição breve
*-------------------------------------------------------------------------
* Definição de Macros
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
* Class Definition
*-------------------------------------------------------------------------
...
ENDCLASS.
*-------------------------------------------------------------------------
* Class Implementation
*-------------------------------------------------------------------------
...
ENDCLASS.
*-------------------------------------------------------------------------
* Definição da Tela de Seleções
*-------------------------------------------------------------------------
PARAMETERS p_param type c. “ Descrição do parâmetro
*-------------------------------------------------------------------------
* Evento: Start-of-Selection
*-------------------------------------------------------------------------
START-OF-SELECTION.
… (codificação).
<linha em branco>
*** Lê as linhas do arquivo de ICMS
READ DATASET pc_file INTO gs_record.
Todo form a ser criado pelo consultor deve possuir um cabeçalho padrão
conforme o exemplo abaixo:
*&---------------------------------------------------------------------*
*& Form ZF_FORM
*&---------------------------------------------------------------------*
* Coloque aqui uma descrição de forma simples,clara e objetiva
*----------------------------------------------------------------------*
* -->P_PARAM_1 Descrição do parâmetro 1. Ex.: Nr. documento vendas
* <--P_PARAM_2 Descrição do parâmetro 2. Ex.: Tipo do documento
* -->P_TABELA Descrição da tabela. Ex.: Itens do doc. vendas
*----------------------------------------------------------------------*
Hierarquia de declarações;
Identação, alinhamento e espaçamento.
Tables;
Constants;
Types;
Internal tables;
Field-Symbol;
Data;
Controls;
Macros;
Class Definition;
Class Implementation;
Parameters;
Selection screens;
Main program;
Events;
Espaçamento entre
linhas nos blocos de
comandos.
Objetos de Programa;
Objetos do Dicionário;
Objetos de Grupo de Função;
Objetos Privados Locais;
Business Engineering;
Outros Objetos.
Observe que alguns objetos são comuns entre os tipos citados acima e
sendo assim, as correspondentes nomenclaturas serão referenciadas apenas
uma vez. As declarações de variáveis recebem um tópico dedicado, visto que
sua aplicação na construção dos objetos deve seguir a mesma nomenclatura
independendo do tipo do mesmo.
Nos tópicos relacionados a seguir, serão apresentadas tabelas
ilustrativas quanto à nomenclatura a ser empregada na identificação dos
objetos.
Declaração de Constantes
Declaração de Tipos
Declaração de Variáveis
Declaração de Estruturas
Declaração de Field-Symbol
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
P Constante que identifica o objeto como sendo um programa.
MM Identificação do módulo funcional a qual o programa se destina.
Identifica o tipo de programa conforme a seqüência abaixo:
I – Interfaces
C – Conversão (Cargas Iniciais)
E – Enhancement (Aplicações do Cliente, exits)
X – Cross-Aplication (IDOC, ALE, Etc...)
X
R – Relatórios (report simples, ALV)
F – Formulários (SapScripts, Smartforms)
S – Estilo de Formulários (SapScripts, Smartforms)
K – Copia de Standard
w – WorkFlow (Amplianção de Tipo de Objeto – Subtipo)
String que identifica o objetivo do programa. Poderá ser uma
ID seqüência numérica para a identificação do objeto. Variando de
001 à 999.
5.3.2. VARIANTE
5.3.4. EVENTO
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
E Constante que identifica o objeto como sendo um evento
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
5.3.6. MACRO
5.3.7. TELA
5.3.10. INCLUDE
5.3.11. TRANSAÇÃO
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
T Constante que identifica o objeto como sendo uma transação
MM Identificação do módulo funcional a qual o programa se destina.
Seqüência numérica para a identificação do objeto. Variando de
ID 001 à 999. Essa seqüência deverá ser seguida
independentemente do módulo a qual se destina o objeto.
Subdivisão do objeto para uma mesma solução. Este item não é
Y obrigatório.
Exemplo: ZTFI001 e ZTFI001B.
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
Constante que identifica o objeto como sendo um módulo de
D
diálogo
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
Ex: ZDFI_AÇÃO_OBJETO => ZDFI_INICIALIZA_TELA
Onde:
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
WW Constante que identifica o objeto conforme a tabela anterior.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z_
padrão “standard” do R/3.
F Constante que identifica o objeto como módulo de função.
R Constante que identifica o objeto como grupo.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
O Constante que identifica o objeto como objeto privado local.
MM Identificação do módulo funcional a qual o programa se destina.
ID Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
MM Identificação do módulo funcional a qual o programa se destina.
ID Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
Y Constante que identifica o objeto como banco de dados lógico.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
O objeto ‘ID’ usado como parâmetro junto aos comandos ‘SET’ e ‘GET’
devera ser identificados pelo consultor através do formato ‘ZID_SS’. Onde:
CARÁTER DESCRIÇÃO
Z Fixo
ID Constante que identifica o objeto como um parâmetro ID.
SS Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ou composta. No caso de ser composta, dois ou mais conjuntos
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
H Constante que identifica o objeto como menu de área.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado corresponde a forma a ‘string’ que melhor identifique o
objeto, a dimensão e o conteúdo são livres, desde que respeitem
respectivamente o limite máximo e o bom senso. A ‘string’ poderá
ID
ser do tipo simples ou composta. No caso de ser composta, dois
ou mais conjuntos de caracteres, a concatenação entre os
conjuntos deverá ser feita através do sinal ‘underscore’ ( _ ).
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
L Constante que identifica o objeto como classe de mensagem
MM Identificação do módulo funcional a qual o programa se destina.
Seqüência numérica para a identificação do objeto. Variando de
ID
01 à 99.
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao padrão
Z
“standard” do R/3.
Seqüência numérica para a identificação do objeto. Variando de 001 à
NNN
999.
5.7.7. AUTHORITY-CHECK
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
XXX Nome do programa que utiliza o objeto.
5.7.8. PF-STATUS
5.7.9. TITLEBAR
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
Seqüência numérica para a identificação do objeto. Variando de
NNN
001 à 999.
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
B Constante que identifica o objeto como pasta de Batch Input.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado corresponde a forma a ‘string’ que melhor identifique o
objeto, a dimensão e o conteúdo são livres, desde que respeitem
respectivamente o limite máximo e o bom senso. A ‘string’ poderá
ID
ser do tipo simples ou composta. No caso de ser composta, dois
ou mais conjuntos de caracteres, a concatenação entre os
conjuntos deverá ser feita através do sinal ‘underscore’ ( _ ).
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
J Constante que identifica o objeto como modelo de dados.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
Q Constante que identifica o objeto como modelo de dados.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
CARÁTER DESCRIÇÃO
Constante que identifica o objeto como não pertencente ao
Z
padrão “standard” do R/3.
Constante que identifica o objeto como categoria de objeto
W
business.
MM Identificação do módulo funcional a qual o programa se destina.
Reservado a ‘string’ que melhor identifique o objeto, a dimensão e
o conteúdo são livres, desde que respeitem respectivamente o
limite máximo e o bom senso. A ‘string’ poderá ser do tipo simples
ID
ou composta. No caso de ser composta, dois ou mais conjuntos
de caracteres, a concatenação entre os conjuntos deverá ser feita
através do sinal ‘underscore’ ( _ ).
6. LAY-OUT
Forma incorreta:
SELECT matnr werks FROM marc WHERE werks = '5000' …
IF gh_vbfa-vbtyp_n = 'J' …
gf_custo = mbew-strps * '1.2' ...
Forma Correta:
SELECT matnr werks FROM marc WHERE werks = pc_werks.
IF gh_vbfa-vbtyp_n = pc_vbtyp
gf_custo = mbew-strps * pn_valor.
Blocos de código que são executados mais de uma vez devem ser
colocados numa subrotina (“form”). Tal procedimento deve ser adotado para
eliminar trechos de código redundante e para facilitar a depuração do
programa. Uma subrotina deve realizar apenas um processo. Se existir alguma
subrotina que realize mais de um processo, então deve-se dividi-la em
múltiplas subrotinas. O nome de uma subrotina deve ser mnemônico. A
subrotina que poderá ser usada em outros programas deverá ser colocada em
um módulo de função.
7.6. CÁLCULOS
gn_data1 = gn_data1 + 1
É melhor que
compute gn_data1 = gn_data1 + 1
ou
add 1 to gn_data1.
ENDLOOP.
ENDLOOP.
Sempre verificar se a tabela do FOR ALL ENTRIES não está vazia, pois
se for utilizado uma tabela interna vazia para realizar uma seleção de
dados será selecionado todos os registros da tabela informada no
FROM.
Sempre que possível ordenar a tabela interna pelos campos que serão
utilizados no complemento WITH KEY para poder, nestes casos será possível
utilizar o complemento BINARY SEARCH tornando a busca de registros mais
performática. Outro ponto importante é utilizar o complemento ASSIGNING
também por questões de performance. Vide um exemplo de utilização do
comando:
Exemplo:
*-------------------------------------------------------------------------
* Histórico das modificações referentes a notas OSS
*-------------------------------------------------------------------------
* Data |Autor |Nota |Descrição
*-------------------------------------------------------------------------
* 10/11/2007 |Fulano |008412 |Number of range:multiple copies
*-------------------------------------------------------------------------
Exemplo:
*-------------------------------------------------------------------------
* Início da Nota OSS: 008412
... “ <-- Alterado
...
... “ <-- Apagado
...
... “ <-- Inserido
* Fim da Nota OSS: 008412
*-------------------------------------------------------------------------