Linguagem Abap 161011002919
Linguagem Abap 161011002919
Linguagem Abap 161011002919
Parte 1 : Sap 50 .
Navegação Client - Permite unir operações, num único sistema, com independência das
informações. Usuário e senha.
Services System:
Table Setting : Criação de variantes p/campos muito usado, personalizar o SAPGUI, colocar
botões de radiobuttons.
System Kernel :
O R/3 trabalha com clientes (Software componentes) que provem serviços (services). Esses
componentes podem ser um processo (Work Process), um grupo de processos(aplication
server).
Camadas On-tier, two-tier e 3-tier(Presentation, aplicattion e database). O dispatcher
trabalha no sistema FIFO com as requests.
A função do dispatcher é conectar o presentation ao Banco de Dados, distribuir as transacoes
aos Work Processe organizar a comunicação. Já na comunicação com o banco de dados,
temos os programas abap, que são independentes.
MS.: Message server- Comunicação entre instancia.
GS. : Gateway service - Comunicação entre sistemas R/3 e legado.
WP : Work Process : D : Dialog = Presentation
Message Server : B : BackGround - Jobs
Gateway : V : Update = update do Banco de dados.
V2: Update2
S : Spool = Impressão.
E : Enqueue = Lock Banco de dados.
Objetos : EY ou EZ são para enqueue e D do banco de dado. Update no banco é assíncrono.
Os jobs de Background tem prioridade A, B, C.
Instance, central Instance.
Comunications :
RFC - Protocolo para chamar subrotinas. Pode Ter chamadas síncronas(Chama e espera o
retorno da função).
Assíncrona - paralelamente roda programas enquanto espera o retorno da função.
Transacional : Enfileira um grupo de funções e amarra em tasks, no fim chama essa task.
OLE : Comunicação com as aplicações office. Comando OLE -> ABAP com um RFC
SAPGUI PC.
R/3 server : R-Ole Sapserver RFC ou BAPIS.
Segurança :
Serviços SAP ;
Curso BC400
1- Telas de Seleção;
2- Telas;
3- Lista.
O gerenciamento feito por seleção. O usuário solicitante do sistemas, informa o que ele está
procurando.
O programa ABAP é executado em trechos.
1- O usuário executa o programa;
2- O programa enato é carregado;
3- Definição das variáveis - tela de filtro;
4- Acesso aos trechos;
5- Apresentação da lista.
Repositório :
Ferramentas ABAP :
Types e Data :
Compare Java.
As descrições do matchcode vem do data element, objeto do dicionário de dados, que tem a
documentação do objeto. O matchcode vem do data element.
A vantagem de declarar um tipo do dicionário é a característica semântica.
Tipos :
Definições :
Compute a = a * c ou a = a * c.
Move v1 to v2 ou v2 = v1:
Case ....
When.. when others..
Endcase.
If... Else
Endif.. elseif
Lembrar :
Select single para ler uma única linha, porem no where deve Ter todos os campos chaves.
Importante :
- Sempre quando o where tiver mais de uma clausula, usar o and ou or.
- Sempre depois do endselect testar o sy-subrc ou sy-dbint tem o numero de linhas lidas.
Se eu usar Select < > from < > into TABLE <it_tabela> não precisa do endselect.
Quando executo uma operação chamamos de anay fetc.
Posso ainda declarar vários elementos do dicionário de dados e usar ao INTO (G1,G2,G3).
Autorizações :
No user master record ficam armazenadas as autorizações.
AUTORITY CHECK - Verifica no user master record, nos profiles(que tem a finalidade de
dar autorização aos objetos). Testar sy-subrc = 0, tem autorização.
Na administração do user master record define-se quais doctos. O usuário pode acessar e
quais tipos de acessos ele tem (change, display).
Quando você checa a autorização, basta checar o objeto e o valor de acesso, 1-Create,
2-Change, 3 Display.
Importante : O autority-check retorno na sy-subrc o valor se o user tem autorização e ne 0 se
não tem autorização.
Os códigos mais freqüentes para o authority check são :
0 - Tem acesso
x - Não tem acesso
8 - Não tem acesso a todos os campos do objeto.
Views : São aplicações especificas de diferentes tabelas. Elas podem conter uma seleção de
campos de uma tabela grande ou campos de varias tabelas diferentes.
A View é definida no BD, sendo que este objeto é bom em performace.
Importante : Para achar em qual tabela types uma estrutura é usada, basta procurar em
Utilities - Where Used List.
Quando se declara um parameters do tipo data (sy-datum) , o sistema pega a data atual .
Somente se após o parameters eu declarar default sy-datum.
Para ele pegar a data somente.
Depois no initialization eu posso fazer um atualização nesta varial (data).
Ex. pa_date = pa_date - 7.
Start-Of-Selecetion - 1º. Evento para gerar a lista. Quando você pressiona o F8(execute).
Initialization : É um evento que você usa se precisar setar um numero de valores default. Ele é
chamado antes da tela de seleção.
Subrotinas :
Blocos de processamentos com uma interface definida:
FORM <nome da subrotina> using value <....> type .....
Changing <....> type<...>
Os valores desta variável changing são modificáveis na
subrotina.
ENDFORM.
Chamadas por referencia - Usa Variáveis direto o endereço de memória. Não faz uma copia
de parâmetro. É usado o mesmo pointer para o parâmetro formal (local) é o atual parâmetro.
Chamadas por valores : Na chamada da rotina os valores são copiados e só são retornados
para o atual parâmetros.
Se usar o Changing e no ENDFORM.
Importante : O numero de parâmetros local tem que ser igual ao do atual parâmetros.
AT-LINE-SELECTION. Event Block para criar uma lista de detalhes. (Duplo Click em uma
linha especifica, gravada pelo comando Hide após o write)
A lista básica é criada , pelo processo no start-of-selection. E a lista de detalhes se o sy-lsind >
0 no at-line-selection na lista.
Na lista (n -1) você vê o detalhe da (n -1).
Cada vez que se quer um detalhe de uma det. Lista o sy-lsind é incrementado.
Importante - Não esquecer do comando HIDE AREA (Hide :...).
As informações da Hide Área são para a construção da linha de detalhes.
Parameters :
Parametes : <nome> type ou like.
Você define o tipo e o sistema só acerta aquilo.
Deve se usar o WHERE no select para limitar exatamente o valor do parameters.
Select Options :
SELECT-OPTIONS : <NOME> FOR <DATA-OBJECT).
Gera uma it_tab com as colunas :
1- "Sign", se o valor ou intervalo deve ser incluídos ou excluídos.
2- Option - operadores
3- Low - menor valor
4- High - maior valor
Importante : No select a clausula WHERE deve ser Ex: where carrid in <NOME>.
É obrigatório ou o Parameters ou select -options. Pelo menos um.
A Select Screen começa no event block : At select screen que vem depois do
INITIALIZATION.
Se há algum erro o sistema volta para a selection screen, limpa o campo e mostra uma
mensagem do tipo status.
SCREEN DETAILS :
Dar um duplo click na linha que deve estar no AT LINE-SELECTION.
GRAFICAL SCREEN PAINTERS permite você definir o elementos da tela.
Para ver os atributos, basta clicar no campo e em <..?..>. Um campo deve ser obrigatório.
Posso ver os atributos também no Element List.
- No ABAP
ENDMODULE.
Next Screen
Set screen <NNN> no PAI serve para direcionar dinamicamente para a tela NNN.
COMPONENTES REUTILIZAVEIS :
FUNCTION MODULES :
Existem um function groupe que contem function modules e que podem ser chamados por
qualquer programa abap.
Nesse grupo contem :
1 - data object = podem ser vistos e alterados p/todos Function Modules.
2 - Subrotinas = Podem ser chamadas por todos Function Modules.
3 - Screens = Podem ser chamadas por todos Function Modules.
Os módulos de função são unidades modulares com interfaces e contém (pode):
Import Parameters = parâmetros passados - opcional.
Export Parameters = Parâmetros de retorno - são sempre opcional.
Changing Paramet.= Parâmetros que são passados e podem ser alterados.
Eles podem ser opcional e as mudanças só retornam ao programa após a função ser
executada. O exception : São usadas em erros, retornando o valor no sy-subrc.
Objetos de Dados podem ser locais ou globais e todas as subrotinas pode ser alteradas.
STANDARD BAPIS:
CALL FUNCTION :
Você deve incluir uma estrutura de um tipo de seu prog. Para RETURN.
LOGICAL DATABASE :
Você pode colocar exatamente 1 logical database por programa.
O LD lê logicamente dados DB, cada LD tem um estrutura contendo uma hierarquia que
serão lidas.
Os dados são lidos hierarquicamente e ele mesmo otimiza a performace, checa autorizações e
entrega a tela.
NODES <nós>,<nós2>. = Tables só que também define a selection screen.
É a estrutura hierárquica do logical database. Essa Estrutura é uma wa preenchida em tempo
de execução.
Aqui é definido um data object wa, e os detalhes da tela de seleção. Cada estrutura tem seu
detalhe.
Get <nós> - Event Block.
Get <nós> e Get <nós2> são chamados varias vezes de acordo com o logical DB na ordem são
executados.
START-OF-SELECTION.
GETs<nós>.
END-OF-SELECTION.
Get <nós> Late. Acabei de ler os vários registros do <nós>. Ou seja para verificar a quebra.
ATENÇÃO :
Campos data type curr e quan tem que ser referenciados por cuki e unit.
Na tabela por exemplo :
Currency cuky
Quantity unit
Techinal Setting :
Size Category : Um espaço padrão é criado e mais extents são criados. Para uso, ele deve ser
definido o Size-category.
Loggin : Para gravar modificações na profile que contém o parâmetros
Rec/client :
Rec/Client = ALL - Todos clients gravados.
Rec/Client = 000[..] os seguintes/
Rec/Client = OFF - Nenhum clients gravados.
BUFFER :
Genneric Buffering = Você deve Ter uma generic key e deve ser definida na escolha do
buffering.
Single Record - Usados para tabelas grandes com um único registro é freqüentemente
acessado.
Sincronização de Buffering :
Parâmetros rdisp/bureftime em segundos de 60 a 3600 sendo recomendados entre 60 e 240
segundos.
Existe uma tabela de sincronização.
Tabelas pouco escritas devem ser buffering e as muitos escritas não devem ser Bufferizadas.
FIXED VALUE.
O domain descreve o value range. Podem ser fixed values, usados para checagem e
matchcode(F4).
Value Table - para checagem em tabelas, mas é necessário definir a foreing key (chave
estrangeira).
Deve ser usado o mesmo domínio para consistir dados.
Sempre coloco na value table o campo que quero consistir. Exemplo : no campo departamento
da tabela de clientes quero consistir com a tabela de departamentos.
Foreing key Table é a tabela que será checada.
Check Table é onde vou consistir os dados.
É necessário Ter o mesmo domínio, Uma tabela não pode consistir ela mesma.
Cardinalidade : Descreve quantos dados check table serão associados aos foreing keys tables.
1- No key fields - não identificam a tabela key fields
2- Key Tables - Identificam a tabela.
3-Key fiedls of a text table. Identifica e tem campo chave a língua.
Ajustes :
- Deletar a tabela existente e criar uma nova.
- Inserir um campo.
- Conversão de tabelas.
- ALTER TABLE faz ajustes.
Para ajustar a tabela o DB cria uma OKMTAB, cria uma nova tabela e move corresponding
of nos dados. Mas deve-se verificar se houveram problemas de conversão nas transações =
SE11 ou SE14.
ESTRUTURAS APPEND :
Um tipo de include que permite você colocar campos a tabelas standard SAP. Quando uma
tabela é ativada os campos da estrutura append são criados fisicamente no DB e podem ser
usados no ABAP Program.
Essas estruturas são preservadas no upgrade de versão. Só podem ser a tabelas
transparentes(ZZ ou YY).
VIEWS :
São Aplicações especificas para juntar dados de varias tabelas.
As tabelas são juntadas através do produto entre elas, gerando uma tabela com dados das
duas tabelas.
Joing condition : Limitação do produto cartesiano, descrevendo como os registros de duas
tabelas serão relacionadas.
Projection - Escolha de alguns campos da tabela.
Selection condition : pode ser um campo (que esteja ou não na Views) que seja = a uma
determinada condição.
A Views é mais eficiente que select alinhado e pode ser usada para definir tipos de dados como
os outros tipos.
São criados fisicamente no DB durante a ativação.
O Status de manutenção define se ela pode ser somente lida ou se pode ser gravada. Porem se
tem mais de uma de uma tabela, só poderá ser lida .
O buffering é igual a da tabela, é análogo.
Você pode incluir tabelas inteiras na views, basta colocar na view field o caracter *, no campo
table o nome da tabela e no campo field name o caracter *.
Para incluir um include na view basta colocar um "-" no view field, no campo field table o
nome da include e no campo field nomes dos campos a serem incluídos.
JOIN CONDITION :
Inner Join : Você só pega os registros que tem a entrada em todas as tabelas incluídas na
views. Exemplo : Tabelas pedidos e itens dos pedidos, será listados somente os pedidos que
tiverem itens no pedido.
Outer Joing - Você pega todos os registros, inclusive os que não tem entradas nas tabelas.
Exemplo : Tabelas pedidos e itens dos pedidos, será listados todos os pedidos.
Database Views - implementam inner join e o maitenance views implementam a outer join.
SEARCH HELP : F4
1 - Valores Fixos
2- Chave Estrangeira (Foreing key) check table.
4- Data/Hora
O input help é definido no ABAP Dictionary. Um numero de requerimentos deve ser colocado
no screen fields.
O input help determina a value que pode ser usado na seleção.
O input help deve preparar uma dialog com o usuário.
O Search Help é usado para descrever um input help. A Interface do search help controla os
dados transferidos, define o contexto dando a serem usados.
Mecanismo disponíveis para search help ser acessado de uma tela é chamado de search help
attachmente.
Você pode testar o comportamento do search help.
Você pode definir parametros no search help usando campos do selection method (Com
exceção do client).
O tipo do parâmetro deve ser associado a um data element.
Os Searchs Helps podem ser associados a fields.
Ele possui parâmetros IMPORT e EXPORT.
Import = Parâmetros usados para copiar dados para o input help.
Export = Parâmetros de retorno de dados do input help.
Existem tres (3) mecanismos para attaching search help em campos:
1- Diretamente no campo da tabela, assim como definir uma foreing key.
2- Em uma check Table.
3- Associar a um data element.
Deve se definir EXPORT.
Associando um search help a um data element ou a uma check table ele poderá ser
reutilizável.
Search paths : permitem acesso a dados que não são chaves. Vários podem ser implementados
por campo.
1- LOAD-OF-PROGRAM.
2- INITIALIZATION.
3- AT SELECTION-SCREEN OUTPUT.
4- AT SELECTION-SCREEN INPUT. (PAI)
5- START-OF-SELECTION.
6- GET or GET LATE.
7- END-OF-SELECTION. Depois de processado o sistema mostra a linha básica.
8- AT LINE-SELECTION. Se foi clicado 2 vezes na lista.
AT USER-COMMAND. Se foi clicado em um icone PICK.
- TOP-OF-PAGE
- END-OF-PAGE
- TOP-OF-PAGE DURING LINE-SELECTION
- END-OF-PAGE DURING LINE-SELECTION.
MODULARIZAÇÃO :
Quando você chama uma unidade da modularização, o sistema carrega ele inteiro no
container do problema.
Modularizações:
Function Group : (F) Módulos de Funções = Objetos locais e telas de programas.
Data Object = É uma área de memória reservada para um data type (char..,..,data element).
Criando um data type do dicionário, cria-se um objeto global.
No programa os data types são locais .
Tem ABAP data types para serem usados como base para definir data type.
Os atributos técnicos de um elementary field é chamado elementary type.
A estrutura é chamada de componente.
A tabela tem line-type, access type, key definition e key type.
Tipos do Dicionário :
CURR , deve referenciar um CUKY, assim como UNIT referencia QUANT,
FLTP usado para cálculos precisos.
NUMC - tipo p/cep dígitos que não podem ser calculados.
Para cálculos de negocio, usar DEC ou QUANT.
Standard Table : Acesso aos dados usando index ou chave, com chave não unique, o sistema
busca na tabela toda cada vez que você acessa-a via chave.
HASHED-TABLE : Você pode acessar via chave única, eficiente no acesso freqüente a
tabelas grandes.
Tipos Numéricos :
Tipos alfanuméricos :
Obs. F = Usado para cálculos precisos, P- Usado para cálculos comuns, calculando com
precisão a ultima casa decimal, N Usado apenas para dígitos (ex.CEP) CN ou X - não é
definido staticamente e sim dinamicamente no programa.
Types.
Se um data type tem o mesmo nome de um tipo global e local o programa pega o local.
TYPES :
Servem para definir um tipo que depois será referenciado por um data type ou referenciado
num outro lugar depois da TYPE ou LIKE.
Structure Type :
Comando : Types Begin oF <.....>
End of.
Para definir componentes a uma linha da estrutura ou seja com todos seus componentes uso :
Types <nome> type line of <estrutura>,
Tabela Interna.
Types <IT-TBA> type ou like <Standard,sorted ou Hashed> table of <modelo> with standard
ou hashed ou sorted <uniq, non unique> key campos.
INITIALIZE nn - Usado para restringir o numero máximo de linhas para a memória, ele
aloca o produto de nn * o tamanho da linha. Num 2 passo ele aloca 12.
PARAMETERS : Define a tela de seleção e não se pode usar campos do tipo F, string e xtring.
COMANDO : PARAMETERS : <Nome campo> type <tipo> ,
<Nome campo> like <tipo>.
Text Simbols:
LOGICAL DATABASE :
São programas que podem ser atachados a seus programas executáveis, tomando nossos
programas mais simples.
NODES <NODES> - Cria e declara var em seu programa.
GET <node> - devolve registro a registro com write ao programa.
GET <node> late - é disparado depois de todos os gets do nó. Utilizado para quebra de
relatório.
FIELD SYMBOLS :
Quando eu associo o ponteiro a var basta eu preencher o ponteiro ou modifica-lo que estarei
mudando a var.
Ex. DESCRIBLE TABLE <IT_TAB> LINES = Retorna o numero de linhas numa tabela
interna.
STATEMENTS :
CALCULOS :
+ - * / **= POTENCIA
DIV - Divisão inteira.
MOD - Resto da Divisão inteira.
Para calculos decimais usar tipo DEC ou P.
1- Um campo pode não ser convertido pois não é interpretado como numero.
2- Um número ultrapassa o val de conversão.
3- Divisão por Zero.
4- Argumento invalido ex. LOG (-3).
Dados :
O sistema sempre associa a campos numéricos calculando o numero de dias desde 01.01.0001.
Expressões Lógicas :
EQ ou = Igual
NE ou <> Diferente
GT ou > maior que
GE ou >= Maior igual
LT ou < Menor que
LE ou <= Menor igual
BETWEEN Entre
IS INITIAL Valores Inicial
AND e
OR ou
NOT Negação.
ENTRE STRING :
CO Contem Somente
CN Não contem somente
CA Contem Algum
NA Não contem nenhum
CS Contem string
NS Não contem a string
CP Contem modelo
NP Não contem o modelo
Testes
IF < >.
ELSE < >.
ELSEIF < >.
ENDIF.
LOOPS :
ENDDO.
WHILE <>.
ENDWHILE.
ENDLOOP.
SELECT ...
ENDSELECT.
Message : Mostra a mensagem e todo o programa termina e as tabelas internas são deletadas.
CATCH :
ENDCATCH.
TABELAS INTERNAS :
Você pode copiar um conteúdo para a WA ou usar um assign como ponteiro, no caso de
tabela muito grande.
STANDARD TABLES :
SORT <ita.> [Ascending|Descending] [by <campo> [stable] Para as sort keys continuarem
constantes.
OBSERVAÇÃO :
1- O modify muda os dados correntes.
2- CLEAR limpa uma tabela toda s/header line.
3- No loop sy-tabix tem o index corrente. Ao final de loop, ele terá o valor que tinha antes do
loop ser iniciado.
SORT <itab> [Ascending|Descending] [by <campo> [stable] Para as sort keys continuarem
constantes.
ENDLOOP.
Ponteiros para a linha.
SUBROTINAS :
ENDFORM.
Os parâmetros tem uma seqüência e uma vez definidos não podem ser omitidos. Você pode
declarar dados locais e se eles tiverem os mesmos nome dos dados globais dentro da subrotina
eles são considerados locais.
Formal parameter - locais.
Actual parameter - Globais.
Passagem por valor Faz uma copia do actual parameter.
Passagem por referencia cria-se um porteiro para o campo parameter.
Se passar um valor do changing por referencia, ele mudará na hora, se por valor, só no
endform.
USING não altera valores.
Para dados grandes, o using é por referencia.
Deve se especificar o tipo no USING E CHANGING.
Tipos de estrutura e ponteiros devem ser especificados. para tabela interna deve ser genérico
usando user-defined.
Os Parâmetros são passados na seqüência da definição.
É interessante usar o PATTERN.
HEADER LINE :
Se eu colocar como tipo uma tabela com header line, ele interpreta apenas o header line, para
tanto eu devo usar o [ ], como uma tabela toda.
Na subrotina não há header line.
Parâmetros globais não são vistos na SUBROTINA.
FUNCTION MODULES :
Parâmetros IMPORT e CHANGING opcionais para os quais você associa default values.
EXCEPTION : que retorna na var sy-subrc.
Remote - enabled.
Execução assíncrona ou paralela(síncrona).
Updates.
Atributos :
Normal;
Remote BC415;
UPDATE BC414;
Parâmetros :
IMPORT - Parâmetros recebidos.
CHANGING - Parâmetros alterados e retornados.
EXPORT - Parâmetros enviados.
SRC Code :
Os blocos de comentários são atualizados. Pode se declarar seus tipos locais, chamar
subrotinas e outros módulos de função.
Exceptions :
DOCUMENTATION
Funcionalidades, Exemplos de chamadas, dicas e outros.
FUNCTION GROUPS :
Pode Ter telas, dados globais, módulos de função. Todos os módulos de função tem acesso as
variáveis globais.
Duas Técnicas :
1- Chamando o programa e encerrando.
2- Chamando o programa e depôs deste ser rodado, volta ao programa que chamou.
PROGRAMAS EXECUTAVEIS :
SAP MEMORY :
É uma memória p/todas external session de um login.
Usar SET PARAMETER ID '<campo> field <campo>.
GET PARAMETER ID '<campo>' .
<ittab> deve Ter a struct da bdcdata, com mensagem deve Ter a struct bdcmsgcoll.
Se a transação for OK o código dela estará nu sy-subrc.
TRANSAÇÃO = QSVI.
2- QUERYS :
Para definir uma query é necessário definir um user group e uma functional área a qual
definira quais tabelas e campos a query poderá se referir.
Uma functional área pode Ter varias user groups associados, assim como o user groups pode
estar associados a varias áreas funcionais.
A query sempre é criada para uma área funcional especifica, nela deve estar associada o
grupo de usuário que irá criar a query.
Um Usuário pode acessar todas as querys do seu grupo de usuários e pode copiar uma query
de um grupo de usuários distinto se a área funcional da query a ser copiada também está
associada a seu grupo.
Tipos de Querys:
Campos locais :
Querys Statistics :
1- Ordenar as colunas por ascending ou descending
2- Os campos numéricos são acumulativos.
3- Pode se definir até 9 estatistics individualmente.
4- Deve ser referenciar unidades de moeda e medida.
Ranked Querys :
São uma forma especial das estatísticas, porem tem apenas 1 campo numérico como
parâmetros de ordenação, que é o critério de rankeamento. O sistema só mostra um certo
número de registros.
Basis List
Campos fontes de dados Estrutura da lista
Informação sobre o elemento ativo Estrutura da lista, Ajuda.
LISTAS :
Com um comando WRITE o programa já gera um list buffer. No fim dos eventos a lista é
processada.
Pode Ter no máximo 60.000 linhas 1023 cararcters por linha. Tem um cabeçalho standard
com o nome do programa a esquerda e o numero da pagina a direita e na Segunda linha uma
quebra. Elas são mantidas no scrool .
Usando Report <Nome Programa> line-size 20 (Largura) line-count 12 (Altura), definimos o
numero de linhas globais para todas as listas. Dentro de um nível par mudar o número de
linhas, usamos o new-page line-count. Se quiser usar o default do programa, colocar 0.
O header pode ser definido na execução da lista, na edição e usando no STANDARD PAGE
HEADING, no REPORT e no evento TOP-OF-PAGE colocar o cabeçalho. Eles ficam na tela
durante o scrool.
Header que podem ser traduzidos. Editor Goto Text Elements Title/Headings
LISTSystemLISTLIST
No programa podem ser traduzidas depois./ NEW-PAGE WITH TITLE/ WITH HEADING/
TOP-OF-PAGE c/Text Element.
FORMAT :
COLOR <col...> [on/off] -cor
INTENSIFIED [on/off] - intensidade
INVERSE [on/off] - inverte com o back
HOTSPOT[on/off] - mão do mouse
INPUT [on/off] - campo de input
RESET - apaga todas.
INCLUDE <icon>.
WRITE <icon-eu> as ICON. Imprime um icone.
INCLUDE <SYMBOL>.
WRITE <F> as SYMBOL.
ULINE = SY-ULINE, gera uma linha horizontal.
Sy-VLINE Linha Vertical.
Line-top-right-corner as line. Linha de ponta.
SCROOL LEFT [PAGE} [TO COLUMN] [TO LAST PAGE].
New-Line-NO-SCROLLING
Text Symbol.
Funções Standard :
SELECTION SCREEN :
Para desenhar você tem que declarar nodes, parameters ou select-option, que geram a select
screen default.
Alem dela pode ser chamada :
SELECTION-SCREEN BEGIN OF SCREEN <n>
INITIALIZATION :
É Processado 1 vez e antes da linha de seleçao. Pode-se inicializar as variáveis com move x to
x.
As telas de seleção são geradas durante o evento AT SELECTION-SCREEN OUTPUT, que é
o PBO da select screen,
Já o evento AT-SELECTION-SCREEN corresponde ao PAI da tela de seleção, podendo se
fazer um check dos campos.
Pode ser usado com as extensões:
ON <CAMPO> Num determinado campo.
ON <BLOCK> Num Bloco.
Somente os campos chamados será feito a reentrada.
EXECUTE - Sy-subrc = 0.
CANCEL = sy-subrc = 4.
No programa você pode criar variants para todas as telas ou quando ele estiver rodando, cria-
se para a tela corrente. Nome 'SAP&XXX" pela SAP e "CUS&XXX"por clientes.
LOGICAL DATABASE :
Ele tem um comando interno "PUT" que força um GET que são processados em ordem
hierárquica. Os nodes podem conter até 14 caracteres e podem ser :
1- Tipos Tabelas : Tem que Ter o mesmo nome da tabela transparente.
2- Type Group (type C) mesmo nome do type group.
3- Dynamic - o run time cria a struc e decide o nome.
4- Nodes
START OF SELECTION
GET <NO> Le um No.
GET <NO> LATE - é disparado antes dos dados do proximo NO.
END OF SELECTION.
O Uso de Views.
É bom pela manutenção de dados, elas podem ser bufferizadas, e um único SELECT
É usado.
A desvantagem é que ela é pouco flexivel.
INNER JOIN
SELECT (campos da tab) into TABLE itab from Tba1 INNER JOIN Tba2 on.
LEF OUTER JOIN :
User Group - Tem que Ter nome e descrição e pode Ter vários usuários e varias áreas
funcionais associadas.
Autorizações da Query :Tem 2 mecanismos :
1- Associar = User group Usuários que estão associados podem ver a query, se não estiver
não podem ver a query.
2- Object S_QUERY. ACTVT = 2 Pode alterar a query + user group
ACTVT = 23 Pode fazer manutenção + user group
FUNCTIONAL AREA :
Criar um functional group com ID e descrição e marcar com "mais" na tabela (Primary data
set) .
Campos adicionais alias e código são feitos através do botão extras.
Colocar um parameters e depois checar Control Level.
END OF <ESTRUTURA>.
LOOP AT <ITAB>.
ENDLOOP. Retorna sy-subrc = 0 se pêlos menos 1 registro foi lido.
AT FIRST ....
Roda uma vez no primeiro registro.
ENDAT.
AT LAST ....
Roda uma vez no ultimo registro.
ENDAT.
AT NEW <CAMPO> ....
Roda quando o valor do <CAMPO> muda neste loop. (quebra)
ENDAT.
AT END OF <CAMPO>....
Roda quando o valor do campo muda no próximo registro. (quebra)
ENDAT.
SAVING :
Onde posso salvar.
1- No R/3 -app server - sap office.
2- No menu computer - local file
3- Na area R/3 p/listas - área menu. Pode ser mandada pelo email R/3.
PRINTING :
4 Modos :
1- Selection Screen
2- De dentro do programa
3- Com a lista gerada
4- Em background
BACKGROUND :
Definir um job e associar ao programa.
ALV_GRID_CONTROL
Custom CONTROLS através de objetos, você usa um container e joga a lista na tela. Existem
varias funções standard o ALV grid é uma ferramenta para gerar lista.
Para implementar deve-se criar uma tela, botão cancel, back, exit, campo OK_code e na tela
desenhar um container "C".
No programa declarar 2 objetos.
Cont - type ref to cl_gui_custom_container.
Alv - type ref to ALV_grid_.
Depois instanciar se ainda não foi instanciado, pois eles só podem ser instanciados 1 vez no
programa.
TELAS : BC410
Eventos
END OF SELECTION 1,M Depois da todos os dados serem input e antes as lista.
HIDE <áreas> para guardar áreas a serem usadas, para saber a chave dos detalhes.
CLEAR depois.
Status :
GUI STATUS é um menu bar ou standard toolbar ou aplication toolbar ou function keys.
O titulo pode Ter ate 20 caracteres. Title bar são também GUI STATUS e a variável de
sistema sy-title tem o titulo corrente.
Do ponto de vista técnico, um status é uma referencia para um menu bar, uma chave
associada e um application toolbar.
Uma função dentro de uma status pode estar ativa ou inativa.
Um application toolbar pode conter 35 pushbutton.
Um menu pode conter 15 entradas/ pode Ter até 6 menus.
Pode ser de 3 formas :
Online status, dialog box e context menu.
Listas Interativas :
Todos os functions code são capturados pelo AT USER-COMMAND, menos o PICK, que
corresponde ao AT LINE_SELECTION
Técnicas de Telas :
Quando se cria uma tela deve-se escolher o tipo, next screen e para chama-la basta clicar
screen.
Element List :
Tem uma lista de todos elementos da tela com 6 visões.
LAYOUT
Tem gráfico e alphanumeric, podendo usar campos.
Flow Logic:
Numero da tela sy-dynnr.
TEXT FIELD :
Um text field contem labels para outros elementos. Podem Ter textos, literais, icones. E não
pode ser iniciados com '-' ou "?" . Quando tem mais de uma palavra usar "-".
Atributos mutáveis em tempo de execução : BRIGHT e INVISIBLE.
Ele pode ficar invisível atrevas de SCREEN-INVISIBLE = 1 ou
SCREEN-ATIVE = 0.
LOOP AT SCREEN <nome>.
If screen-name = "textfield1".
Screen-ative = 0.
Modify screen.
ENDLOOP.
STATUS ICON:
Contem um ícone que será mostrado na tela.Tem atributos modificáveis : output/input,
intensified, visible.
Definir no ABAP um campo do TIPO icons-text, com o mesmo nome da tela e chamar a
função CREATE-ICON.
GROUP BOX :
Elementos que estão juntos. Como radio Button ou campos. É uma caixa. Se eu tiro os campos
que estão nele. Ele Some.
INPUT/OUTPUT FIELDS :
Input field é uma elemento retangular, usado para entrada de dados. Se este foi associado a
data-elements pode Ter F4, check, etc.
Output Field é um elemento retangular onde o sistema mostra dados.
Utilizar a tabela Screen para mudar atributos. Obs. LOOP AT SCREEN <>.
Os campos declarados na tela devem ser associados usando DATA ou tables.
Pode-se usar o SET ou GET parameters id. Usando o get no PBO e o SET no PAI para copiar
o conteudo da tela na SAP MEMORY.
Os ParametersID estão definidos na TPARA.
Os checks são feitos na seguinte ordem :
? campo requerido;
format Check
Fixed value
Foreing key check.
Mensagem.
ON INPUT - Se não tiver brancos ou zero entra no modulo, = Parecido com CHAIN.
INPUT HELP :
É feito através de uma lista drop-drown. Cria se uma lista drop-drown e associa a um campo
com search help ou uma tabela de valores fixos.
PUSHBUTTONS :
O pushbutton tem uma função particular quando ele é escolhido, o sistema chama o
programa e passa o function code.
Um campo no programa com o mesmo nome deve ser criado.
Na criação ele deve Ter um function code, pois seu retorno será para o OK-CODE.
Se chamar um botão que tem o tipo de função " ", o PAI é processado.
Se chamar um tipo "E" o sistema vai para AT USER COMMAND.
SUBSCREEN :
Uma area de subscreen é uma área reservada para outra screen em tempo de execução.
A subscreen pode ser usada em screen enhancements, tabstrip, modification e web
transaction.
TABSTRIP :
São usados para simplificar operações complexas. Se tem diferentes aplicações que formam
unidades lógicas.
Não deve ser usado :
1- Se precisar mudar o ambiente de tela.
2- Se os componentes tiverem uma certa ordem.
3- Se forem processados dinamicamente.
Ele consiste de paginas individuais, que tem uma área e um titulo. O titulo só terá uma linha.
Ele pode conter muitas paginas. Se não couber todos os títulos de uma vez, há um scrool e um
menu, que quando é clicado um pushbutton o menu aparece.
A tabela consiste de um titulo, uma área de subscreen e uma subscreen.
Do ponto de vista técnico, os títulos são como pushbutton.
Eles tem atributos especiais.
Para definir uma tabstrip control São necessários 3 Passos :
1- Definir uma área.
2- Definir um titulo e se necessário adicionar.
3- Associar uma subscreen área a cada pagina.
Para definir deve-se criar um objeto TABSTRIP no screen painter, colocar um nome é
essencial. No programa ABAP usar CONTROLS:meu_tabstrip type TABSTRIP.
Ele é definido pela estrutura CXTAB_TABSTRIP, com o campo ACTIVETAB contendo o
function code da pagina ativa.
O numero de pagina default é 2.
Ele pode Ter 2 tipos de function type, " " ou "P".
1- Se for " ", ele chama o PAI e o function code vai para o OK-CODE.
2- Se For "P", o usuário pode rolar entre as paginas sem chamar o PAI.
Deve se associar uma subsreen área para cada pagina. Quando ela é associada,
automaticamente ela entra no "Reference Object" para a tabtitle. Sendo assim se for usar a
mesma área para varias, basta colocar o nome no "Reference Object".
Nos scroolings locais deve ser associado subscreen diferentes e nos pushbutton(titles) deve Ter
o function type "P". O sistema quando o PAI é associado, chama todas as subscreen.
Se as tabpages dividem a mesma subscreen área, o programa vê o function code para
determinar qual tela será mostrada.
Dois Processos :
No PAI o programa determina qual tabpage precisa ser ativa.
No PBO, o programa mostra a tela correspondente.
O sistema somente checa os campos da subscreen atual.
No Pai você deve colocar o activtab da sua estrutura = 0 save_og e no PBO testar qual é o
active e chamar a tela correspondente.
Para colocar selection screen basta criar :
SELECTION-SCREEN BEGIN OF SCREEN a AS SUBSCREEN.
SELECTION-SCREEN END OF a.
TABLE CONTROL :
Uma área da tela que o sistema mostra os dados de uma forma tabular. Uma linha pode Ter
varias colunas.
Pode se mostrar ou entrar uma estrutura de dados usando a table control.
Muitas ações do table control são feitas no presentation server, porem o PAI é disparado
quando a ação é scroll vertical ou uma configuração salva pelo usuário.
Atributos :
Nome, posição inicial, static size.
O Special table control atributos são configurados pelo usuários. Os campos Step e loop da
estrutura syst.
É preciso definir a table área e os tables fields.
Do mesmo modo que a tabstrip, deve-se definir uma área no screen painter, e usar o controls
no ABAP. TYPE TABLEVIEW USING SCREEN "XXX".
O uso do REFRESH CONTROL <CTRL> FROM SCREEN <XXXX>, Reseta a table.
Para selecionar os campos, basta seleciona-los via dicionário. Ele ainda pode Ter uma coluna
de seleção, assim com um checkbox para transporte entre telas e programas.
Existem 2 tipos de atributos:
1- Gerais - Contem informações sobre table controls.
2- Column Atributos - São gravados numa tabela interna. Para cada coluna é mantido os
seus atributos na tela, mais os atributos da table control.
Modifica :
MOVE CORRESPONDING WA TO <ESTRUTURA>.
MODIFY ITAB FROM WA INDEX.
Context menu :
Menus de contexto que são definidos na criação de objetos na tela. São menus definidos no
menu painter ou menus dinâmicos e são associados a output fields. Não associar a box, table
controls e screen.
Para criar , no stats como context menus.
No menu pode Ter qualquer function code.
Deve ser criado uma subrotina.
FORM ON_CTMENU_<MEUMENU> USING MEUMENU TYPE REF TO CL_ctmenu.
CALL METHOD CL_CTMENULOAD GUI-STATUS
EXPORTING PROGRAM-SY-CPROG
STATUS =
MENU = MEUMENU.
ENDFORM.
Nos atributos do objeto é definido qual menu e nos atributos gerais qual a subrotina (Só a
parte do meu nome).
LIST SCREEN :
Basta criar módulos que contenham o comando WRITE.
Atenção não tem os EVENTOS :
LOAD-OF-PROGRAM, INITIALIZATION, START-OF-SELECTION, END-OF-
SELECTION.
Porem tem : AT-LINE-SELECTION, AT USER-COMMAND, TOP-OF-PAGE, END-OF-
PAGE, TOP-OF-PAGE-DURING-LINE-SELECTION.
OVERVIEW:
Os updates são feitos através de OPEN SQL(DML) ou Native SQL (DML ou DLL).
Cada vez que deseja se fazer um update no DB, o Open SQL converte isso em comandos
especifico do DB. Por isso independe do BANCO que se use os programas, usam o mesmo
comando.
É usado um buffer no aplication server para reduzir acessos ao DB e tornar mais rápidos o
DB.
Já o native SQL precisa ser especifico para cada DB.
Os comandos do OPEN SQL podem ser inumeros, usar like no where, para atualizar varios
ajustes da mascara, acessar registros, tabelas, etc.
O sy-subrc retorna sucesso ou falha na operação. O sy-dbcnt retorna o numero de registros
lidos.
O Open SQL não verifica autorizações. Isso deve ser feito separadamente.
Se eu quiser mudar dados em todos os clientes, não coloco o CLIENTSPECIFIED. Sem adição
dados no client coment com not valuated em todos os clientes.
Inserção de 1 linha.
INSERT INTO <ITAB> VALUE <WA?.
Dados podem ser inseridos na view, no entanto devem ser de uma única tabela e deve ser
criado no DB.
Retorna 0(zero) no sy-subrc se o dado foi incluido com sucesso e 4 se não foi.
INSERT <DBTAB> [CLIENTSPECIFIED].
Uso TABLES : DBTABLE.
Tabelas Internas :
Posso colocar de uma tabela interna :
INSERT <DBTABLE> FROM TABLE <itab>.
O sy-dbint contem o numero de linhas inseridas na tabela.
DELETE :
DELETE FROM <DBTABLE> WHERE CHAVES = .
Pode Ter wa ou TABLE <DBTABLE>.
Se eu não especificar a chave eu deleto vários registros.
DELETE <DBTAB> FROM TABLE <ITAB>.
DELETE <DBTAB> WHERE FIELD IN <ITAB>.
Rollback :
Mensagens A ou X disparam o rollback , E, W, I não disparam. Pode se disparar atraves do
comando ROLLBACKWORK.
SAP LUW :
Sap logical unit work . Trabalha com o principio de : todos ou nenhum passos são realizados.
DBLUW :
Data Base logical unit of work.
É coberto com todos os dialogs steps end by database commit e fechado pelo commit e
somente sessa hora os dados são gravados no DB.
É dado um commit implicito a cada vez que é chamado um WP(WORKPROCESS).
Varias Telas são agrupadas e um único DBLUW é chamado.
LOCKS NO DB :
Técnicas de Updates :
DIRETO :
Devem ser todos no final, no ultimo passo.
O estudado no ultimo capitulo. LOCKREAD-CHANGEDEQUEUE.
PERFORM <SUBROTINA> ON COMMIT.
Só executa quando tiver o comando commit work que executa uma única vez. Ai acaba o SAP
LUW, inicia o DBLUW que termina com um commit do banco.
Se eu clicar em cancel em algum momento, deve ser um rollback.
Essas subrotinas não trabalham com interface e sim com dados globais do programa.
UPDATE TECHIQUES :
Até agora que fez o update foi o programa. Se eu mandar 100 atualizações, meu programa
terá que esperar. Não tenho logs , e as dialogs que executam o processo.
Process :
Juntar updates em pacotes e mandar WP de updates.
O Programa joga as mudanças na log table em vez de no DB, que depois serão mandadas
juntas para o db.
Quando SAP LUW fecha o pacote avisa o programa que será feito um update, ai o sistema
manda os dados da log tables para o programa de updates, que fará o update fisico no DB
real.Se deu certo o WP de update deleta as entradas da logtables.
Se deu erro ele mantem a log table com um flag de erro.
A transação SM13 monitora updates.
Rdisp /vb_mail se manda email ?
Rdisp/ vb_mail_user_list pra quem.
TECHICAL IMPLEMENTATION :
Uso :
V1 e V2 :
Update module
.start imed
.start imed no restart
. restart delay podem sem manualmente udpate.
Fase 1 entradas.
Fase 2 Commit.
Fase 3 data base updates.
SUBMIT <PROG> and retain , retorna para quem chamou o programa original, na linha
abaixo.
External Session - Uma janela do R/3 pode ser até 6 external session.
Internal Session : cada external session pode Ter 9 internal session, que são dentro da external
session para cada programa.
Existe ABAP MEMORY para internal session e sap memory para todas as external session.
Chamando uma call transaction ou submit and return, cria uma nova internal session.
Quando o novo programa acaba, leave program, acaba a internal session.
Porem se eu uso o LEAVE TO TRANSACTION, ele esvazia a pilha e começa tudo de novo,
inclusive a ABAP memory.
O SUBMIT sozinho replace o programa que chamou pelo programa chamado.
No caso do call function, o grupo de funções é carregado dentro da internal session que
chamou. Grupos de funções são sempre carregados uma vez por internal session.
Se colocar no function call START NEW TASK <NOME> (nome que identifica a external
session). Esse metodo é assíncrono, porem as funções devem ser remote enable.
Transferencia de Dados :
1- Via Called program : Através de módulos de funções, selection screens. SUBMIT
<PROG> AND RETURN WITH <PARAMETER> <OPERATOR> <VALUE> WITH
<SEL.OPTIO> <OPERATOR> VALUE SIGN.
3- SAP MEMORY