academia abap

134
Academia – SAP/ABAP R3 © by BBKO Consulting 1 Academia ABAP Aluno: __________________________________________________ Instrutor: Ronaldo Nogueira - [email protected]

Upload: joao-fernando-nogueira-campos

Post on 30-Nov-2015

309 views

Category:

Documents


24 download

TRANSCRIPT

Academia – SAP/ABAP R3

© by BBKO Consulting 1

Academia ABAP

Aluno: __________________________________________________

Instrutor: Ronaldo Nogueira - [email protected]

Academia – SAP/ABAP R3

© by BBKO Consulting 2

Índice CAPÍTULO 1 – MYSAP ERP __________________________________________________ 3

CAPÍTULO 2 – CONCEITO DE BANCO DE DADOS RELACIONAL _______________ 9 CAPÍTULO 3 – DICIONÁRIO DE DADOS _____________________________________ 10

CAPÍTULO 4 – ABAP OPEN SQL ____________________________________________ 36 CAPÍTULO 5 – TELA DE SELEÇÃO __________________________________________ 47

CAPÍTULO 6 – LISTAS _____________________________________________________ 54 CAPÍTULO 7 – LISTAS SECUNDÁRIAS ______________________________________ 64

CAPÍTULO 8 – MODULARIZAÇÃO __________________________________________ 73 CAPÍTULO 9 – DATA TRANSFER____________________________________________ 80

CAPÍTULO 10 – PROGRAMAÇÃO ON-LINE __________________________________ 95 APÊNDICE A – PROGRAMAÇÃO ON-LINE __________________________________ 128

OS COMPONENTES PRINCIPAIS DE UM DIALOG PROGRAM (ON-LINE) __________________ 128 SCREEN PAINTER - ABAP/4 _________________________________________________ 128 COMUNICAÇÃO: TELA à ABAP/4 MODULE POOL ________________________________ 128 DEFININDO O LAYOUT (GRAPHICAL SCREEN PAINTER) _____________________________ 128 VISUALIZAÇÕES DE LISTAS DE CAMPO (FIELD LIST VIEWS) _________________________ 130 DEFININDO O CONTROLE DO FLUXO ____________________________________________ 130 PROCESSANDO O MODULE POOL ____________________________________________ 130 DEFININDO CAMPOS NO MODULE POOL ______________________________________ 131 DEFININDO CHAMADAS (CÓDIGOS DE TRANSAÇÃO) _______________________________ 131 CHECAGEM AUTOMÁTICA DE CAMPO DE ENTRADA ________________________________ 131 CHECANDO CAMPO DE ENTRADA NO MODULE POOL COM DIÁLOGO DE ERRO __________ 132 CHECANDO GRUPO DE CAMPOS _______________________________________________ 132 LENDO CÓDIGOS DE FUNÇÃO EM PROGRAMAS ___________________________________ 133 SEQÜÊNCIA DINÂMICA DE TELA: OVERVIEW _____________________________________ 133 AJUSTANDO A PRÓXIMA TELA DINAMICAMENTE _________________________________ 133 MENU PAINTER - OVERVIEW _________________________________________________ 133 DEFININDO A INTERFACE I ___________________________________________________ 133 DEFININDO A INTERFACE II __________________________________________________ 134 DEFINIÇÃO AUTOMÁTICA DE ÍCONES PARA TECLAS DE FUNÇÃO ______________________ 134 DEFININDO MENUS DE ÁREA _________________________________________________ 134

Academia – SAP/ABAP R3

© by BBKO Consulting 3

Capítulo 1 – mySAP ERP

2

• O que é o mySAP ERP ?• Funções do mySAP ERP .• Arquitetura três camadas.• Landscape.• Sistema de Transporte.

3

O que é o mySAP ERP ?

• O mySAP ERP é um conjunto integrado de aplicativos para tratar o processamento de dados de grandes corporações.

• Foi desenvolvido na Alemanha pela empresa SAP (Systems Applicationsand Products for data processing-Aplicativos e produtos de sistemas para processamento de dados).

Academia – SAP/ABAP R3

© by BBKO Consulting 4

4

Funções mySAP Business Suite

BASIS

Ø Oferece uma solução integrada de aplicativos empresariais. Ø Todos os módulos de aplicativos do mySAP ERP 2005 (ECC 6.0 Atual)

são escritos em ABAP (Advanced Business Application Programing), que é interpretado pelo Application Server que fica localizado na camada SAP NetWeaver, que por sua vez, são executadas no sistema Operacional.

(SAP NetWeaver – é como um sistema operacional para o mySAP ERP 2005 (ECC 6.0). Ele fica entre o código ABAP e o sistema operacional.). Módulos Localizados no MySAP ERP Ø MM (Materials Management – Gerenciamento de Materiais) Ø SD (Sales and Distribution – Vendas e Distribuição) Ø FI (Financial Accounting – Contabilidade Financeira) Ø PP (Production Planning – Planejamento da Produção) Ø HR (Human Resources – Recursos Humanos) Ø WF (Workflow – Fluxo de Trabalho) Ø PS (Project System – Sistema de Projeto) Ø e outros.

Academia – SAP/ABAP R3

© by BBKO Consulting 5

5

Papéis e Responsabilidades

Basis – Responsável pela instalação do ERP e configurações do mesmo (ex. impressoras, links, administração de usuários e etc.)

ABAP – Programador

Funcionais – Responsável pela parametrização e adequação dos processos deum determinado módulo.

Academia – SAP/ABAP R3

© by BBKO Consulting 6

5

Arquitetura 3 camadas Cliente/Servidor

Tipo de processo Tipo de solicitação de trabalho D (Dialog) Solicitações de diálogo. V (Update) Solicitações para atualizar dados no banco de dados. B (Background) Trabalhos de segundo plano. S (Spool) Imprime solicitações do spool. E (Enqueue) Solicitações de bloqueio lógico. M (Message) Roteia as msgs. entre os serv. de aplicativo dentro do sistema R/3. G (Gateway) Afunila as mensagens dentro e fora do sistema R/3.

O Sistema R/3 é baseado na arquitetura cliente/servidor com 3 camadas: Servidor de dados, servidor de aplicações e servidor de apresentação.

A arquitetura de 3 (três) camadas faz o sistema facilmente escalável. Para adicionar usuários, você precisa instalar mais servidores de apresentação. Você pode também aumentar a eficiência do todo o sistema adicionando mais servidores de aplicação associados aos seus work processes.

Servidor de aplicativos consiste em um dispatcher e múltiplos processos de trabalho (work process). Todas as solicitações provenientes de servidores de apresentação são dirigidas primeiro ao dispatcher. O dispatcher grava-as primeiro na camada do dispatcher. O dispatcher extrai as solicitações da camada utilizando o algoritmo primeiro a entrar, primeiro a sair (FIFO). Cada solicitação é então alocada para o primeiro work process disponível. Um work process trata uma solicitação por vez.

Academia – SAP/ABAP R3

© by BBKO Consulting 7

6

System Landscape

Client-indep.CustomizingRepository

Objects

Client-indep.CustomizingRepository

Objects

Client-indep.CustomizingRepository

ObjectsRequest

DEV

MAST

SBOX TRAI

MAST

QTSTPROD

ClientCopy

ClientCopy

ClientCopy

Client Copy

Client Transport

WorkbenchRequest

Workbench

ClientTransport

Sistema de Desenvolvimento Sistema de QA Sistema de Produção

Academia – SAP/ABAP R3

© by BBKO Consulting 8

7

Workbench Organizer e o Sistema de Transporte

O Workbench Organizer permite ao usuário desenvolver o software de maneira organizada.

O Sistema de transporte prove a execução do transporte. Os objetos de repositório são conectados para o sistema de transporte

pela classe de desenvolvimento e associações com change requests. Depois que as requests foram liberadas no sistema de desenvolvimento, ela é então transportada para a rota pré determinada: sistema de qualidade ou para o sistema de produção.

Academia – SAP/ABAP R3

© by BBKO Consulting 9

Capítulo 2 – Conceito de Banco de Dados Relacional

8

Conceito de Banco de Dados

Relacional

9

Conceito de Banco de Dados

• Campo• Registro• Coluna• Tabela• Unicidade de Registro – Chave Primaria (PK) e Chave

Alternativa (AK)• Relacionamento – Chave Estrangeira (FK)• Índice

Academia – SAP/ABAP R3

© by BBKO Consulting 10

Capítulo 3 – Dicionário de Dados

8

Dicionário de Dados

Academia – SAP/ABAP R3

© by BBKO Consulting 11

9

Dicionário de Dados

• Domínio• Elemento de Dados• Campos• Registros• Tabelas

– Transparentes– Interna

Ø O Dicionário Abap permite um gerenciamento central de todas as definições de dados usada no sistema R/3

Ø No Dicionário você pode criar tipos definidos pelo usuário (data elements,

estruturas e table types). Objetos de banco de dados, tais como tabelas e views de banco de dados, também podem ser definidas no Dicionário ABAP e criada com estas definições no banco de dados.

Ø O Dicionário ABAP também provê um número de serviço que apóiam o

desenvolvimento de programas. Por exemplo, lock de tabelas, search help (F4) e ajuda de campo (F1 help) usados nos campos de uma tela.

Academia – SAP/ABAP R3

© by BBKO Consulting 12

10

Dicionário de Dados - Tipos no Dicionário ABAP

11

Dicionário de Dados - Tipo de Dados mais utilizados

CHAR String de caractere (máximo de 255 caracteres)

DEC Valores decimais DATS Campo DateTIMS Campo TimeINT1, INT2, INT4 Valores inteirosNUMC Campo de caractere que pode

conter apenas numéricos

Tipo Descrição

Academia – SAP/ABAP R3

© by BBKO Consulting 13

12

Dicionário de Dados - Tipos de Dados ABAP

T1 TYPE I.

DATA D1 TYPE T1 DATA D3 TYPE T1VALUE 123, DATA D6 TYPE T2.DATA D5 TYPE T2

VALUE ‘1.23’

T2(5) TYPE P.

Grupo de Tipos

Tipos de Dados

Ø Data types: Ø Apenas descrição do ‘type’ Ø Não ocupa memória Ø Caracteriza os atributos técnicos de todos os data objects que possuem um type especificado

Ø Data Objects: Ø É uma concreta representação do type Ø Cada data object tem um type específico e ocupa espaço em memória

Academia – SAP/ABAP R3

© by BBKO Consulting 14

13

Dicionário de Dados - Objetos Básico no Dicionário

Tabela 1

.... Valor_compra ...

Tabela 2

.... Valor_venda ...

Elemento de DadosMATNR

Elemento de DadosMATNR

DomínioMATNR

Uma tabela écomposta de

campos

Para criar um Campo, você precisa de um Elemento de

Dados

Uma definição de elemento de dados exige um

domínio

CampoMaterial

CampoMaterial

DomínioMATNR

Ø Os objetos básicos do Dicionário ABAP são: tabelas, data elements e domínios

Ø Domínio descreve os atributos técnicos dos campos das tabelas (ex: tipo, tamanho do campo), enquanto os data elements contém a definição semântica (descrição curta)

Academia – SAP/ABAP R3

© by BBKO Consulting 15

14

Dicionário de Dados - Criar DomínioTransação SE11

Dica: ao criar a tabela e seus data elements, associar a mesma Change Request, para não dar problema durante o transporte de Desenvolvimento para QA

Academia – SAP/ABAP R3

© by BBKO Consulting 16

15

Dicionário de Dados - Criar DomínioTransação SE11

16

Dicionário de Dados - Criar Elemento de Dados

Transação SE11

Academia – SAP/ABAP R3

© by BBKO Consulting 17

17

Dicionário de Dados - Criar Elemento de Dados

Transação SE11

18

Dicionário de Dados - Criar Elemento de Dados

Transação SE11

Academia – SAP/ABAP R3

© by BBKO Consulting 18

19

Dicionário de Dados - Criar Elemento de Dados

Transação SE11

23

Dicionário de Dados - Tipos de Tabelas no R/3

• Estruturas- Uma estrutura (categoria estruturada) é composta por

componentes (campos). Os componentes são tipificados.- As estruturas são em particular utilizadas para definir os

dados na interface de pools de módulos e telas, assim como para atribuir o tipo aos parâmetros de módulos de função.

• Tabelas Transparentes- Uma tabela transparente tem relacionamento um-para-um com

uma tabela no banco de dados. - Nós criamos somente tabelas transparentes

Academia – SAP/ABAP R3

© by BBKO Consulting 19

24

Dicionário de Dados - Tipos de Tabelas no R/3

• Tabelas de Pool- Uma tabela de pool tem um relacionamento de muitos-para-um

com uma tabela no banco de dados. Para uma tabela no banco de dados, há muitas tabelas no Dicionário.

• Tabelas de Cluster- Uma tabela de Cluster tem um relacionamento de muitos-para-

um com uma tabela no banco de dados. Para uma tabela no banco de dados, há muitas tabelas no Dicionário. Muitas tabelas de cluster de cluster são armazenadas em uma única tabela no banco de dados chamada de cluster de tabelas. Os clusters de tabela armazenam dados de várias tabelas baseadas nos campos de chave primária que elas têm em comum.

21

Dicionário de Dados - Criar Tabela Transparente

Transação SE11

3

Academia – SAP/ABAP R3

© by BBKO Consulting 20

22

Dicionário de Dados - Criar Tabela Transparente

Pasta “Características”

27

Dicionário de Dados - Criar Tabela Transparente

Pasta “Entrega e Atualização”

Academia – SAP/ABAP R3

© by BBKO Consulting 21

24

Dicionário de Dados - Criar Tabela Transparente

Pasta “Campos”

O primeiro campo de uma tabela sempre deve ser o mandante;

Ø O campo Num_documento, utiliza o data element ‘ZNUM_DOCUMENTO’ Ø O Campo Usuario, utiliza o data element ‘UNAME’ Ø O Campo Data, utiliza o data element ‘DATUM’ Ø O Campo Material, utiliza o data element ‘MATNR’ Ø O Campo Valor, utiliza o data element ‘BWERT’ Ø O Campo Quantidade, utiliza o data element ‘BSTMG’ Ø O Campo Material possui check table, ou seja durante qualquer manutenção da tabela Z ou Y, é checado se o material gravado nesta tabela, existe na tabela Mestre de Material (MARA)

Academia – SAP/ABAP R3

© by BBKO Consulting 22

25

Dicionário de Dados - Criar Tabela Transparente

Pasta “Entrs. Possíveis/Verificações”

26

Dicionário de Dados - Criar Tabela Transparente

Pasta “Campos Moeda/Quant.”

Ø Para campos do tipo moeda (valores) e quantidade, é necessário definir tabela e campo de referência.

Academia – SAP/ABAP R3

© by BBKO Consulting 23

27

Dicionário de Dados - Criar Tabela Transparente

Check Table no Campo Material

28

Dicionário de Dados - Criar Tabela Transparente

Check Table no Campo Material

Academia – SAP/ABAP R3

© by BBKO Consulting 24

29

Dicionário de Dados - Criar Tabela Transparente

Check Table no Campo Material

- Atribuir uma mensagem de erro para este check table. - Neste caso foi criada uma classe de mensagem ZCURSO_00, com

número de mensagem 001, através da Transação SE91

Academia – SAP/ABAP R3

© by BBKO Consulting 25

34

Dicionário de Dados - Chaves -Primárias e Estrangeira

Chave Primária

Chave Secundária / Alternativa

Chave Estrangéira

31

Dicionário de Dados - Chaves – Primárias e Estrangeira

Tabela ZFUNCMand AreaSalarioNomeCod DeptoCodFunc

Check Table ZDEPTOMand CodDepto Fone Fax

Campos ChavesChave Primária

Check TableChave Estrangeira

Campos ChavesChave Primária

Academia – SAP/ABAP R3

© by BBKO Consulting 26

32

Dicionário de Dados - Criar Tabela Transparente

Configurações Técnicas

Academia – SAP/ABAP R3

© by BBKO Consulting 27

33

Dicionário de Dados - Criar Tabela Transparente

Opções Técnicas

Ø Opções Técnicas: Data Class – Define a área física do banco de dados, na qual a tabela deve

ser armazenada (no Oracle é o tablespace). Size category – Define o tamanho do armazenamento esperado para esta tabela no banco de dados. Buffering – define se e como a tabela deve ser ‘bufferizada’. Logging – Modificações na entrada da tabela são armazenadas, mas também tem que setar o parâmetro ‘rec/client’ (pode provocar ‘gargalos’ no sistema (devido a esses adicionais acessos).

Academia – SAP/ABAP R3

© by BBKO Consulting 28

34

Dicionário de Dados - Criar Tabela Transparente

Ativar Tabela

Ø Ao selecionar o ícone

ativar no ABAP Dicitionary, a tabela transparente é automaticamente criada no banco de dados. A tabela no banco de dados possui o mesmo nome da tabela no ABAP Dictionary. O campo tem também os mesmos nomes e os tipos do campo no ABAP Dicitionary são convertidos para os tipos de dados correspondentes no sistema do banco de dados.

Academia – SAP/ABAP R3

© by BBKO Consulting 29

35

Dicionário de Dados - Criar Estrutura

36

Dicionário de Dados - Criar Estrutura

Academia – SAP/ABAP R3

© by BBKO Consulting 30

37

Dicionário de Dados - Criar Estrutura

Pasta “Componentes”

38

Dicionário de Dados - Criar Estrutura

Pasta “Campos moeda/quantidade”

Na criação da estrutura não precisa definir o mandante, pois armazena os dados somente em tempo de execução.

Academia – SAP/ABAP R3

© by BBKO Consulting 31

43

Tabela Interna

44

Tabela Interna - Conceito

Áreas de memória chamadas “Tabelas Internas”, sãoutilizada para realizar alguns processamentos no ABAP.Nessas áreas de memória são alocados dados que existem(ou existirão) apenas em tempo de execução do programa,e que podem variar de uma execução para outra ou aindadurante a mesma execução.

Academia – SAP/ABAP R3

© by BBKO Consulting 32

45

Tabela Interna - Conceito

No dia-a-dia do programador as tabelas internas têm um papel fundamental, pois é através delas que se manipula amaior parte dos dados de um programa. Além disso, são defácil manuseio, sendo sua declaração (de tipos, estrutura) eatribuição de conteúdo (valores) muito simples. É possível,por exemplo, declarar uma tabela interna com a mesmaestrutura (tipos, campos, etc.) de uma tabela do banco dedados (físico – tabelas transparentes), e, através de umcomando “SELECT”, copiar todo o conteúdo da tabela dobanco de dados para a tabela interna.

46

Dicas - Tabela Interna - Conceito

As tabelas internas possuem uma área de trabalhochamada Header” (cabeçalho), que permite o acesso e usomais flexível dos registros da mesma. O comando “LOOP”,por exemplo, ao “varrer/ler” uma tabela interna registro aregistro, envia o registro corrente para o “Header”,permitindo que o programador manipule esse registro dediversas maneiras.

Exemplo: Imprimí-los na tela(comando WRITE), utilizandoseus campos para executar cálculos, comparar valores, etc.

Academia – SAP/ABAP R3

© by BBKO Consulting 33

47

Dicas - Field String x Tabela Interna

Field StringCod Cliente Nome Cidade Rua Bairro

Tabela InternaCod Cliente Nome Cidade Rua Bairro

Academia – SAP/ABAP R3

© by BBKO Consulting 34

49

Dicas - Field String e Tabela Interna

Declarando Tabelas Internas

* Declaração de TiposTYPES : begin of type_clientes,

kunnr TYPE kna1-kunnr,name1 TYPE kna1-name1, addrnr TYPE kna1-addrnr,

end of type_clientes.

* Declaração de Tabelas InternasData : tg_clientes TYPE TABLE OF type_clientes.

50

Dicas - Tabela Interna

Operações em tabelas internas:Exemplos: Utilizando a tabela interna T_CLIENTES:

1.READ TABLE TG_CLIENTES INTO ST_CLIENTES INDEX 2.READ TABLE TG_CLIENTES INTO ST_CLIENTES WITH KEY kunnr = v_codcli.

2.LOOP at tg_clientes INTO st_clientes . ... ENDLOOP.

3.ST_CLIENTES-name1 = ‘Phonecell telefonia celular’.MODIFY tg_clientes FROM st_clientes WHERE kunnr = vg_codcliente.

4.DELETE tg_clientes WHERE kunnr = vg_codcliente.

5.APPEND st_clientes TO tg_clientes.

Academia – SAP/ABAP R3

© by BBKO Consulting 35

51

Dicas - Tabela Interna

Operações em tabelas internas:Exemplos: Utilizando a tabela interna TG_CLIENTES:

6. COLLECT st_clientes INTO tg_clientes.

7. SORT tg_clientes BY kunnr name1 . (Ordena a tabela interna)

8. CLEAR st_clientes. (Limpa todo o conteúdo da estrutura)

9. REFRESH tg_clientes.(Deleta todos os registros da tabela interna, porem o espaço de memória ainda fica ocupada)

10.FREE tg_clientes. Deleta todos os registros da tabela interna, limpa a memória)

11. DESCRIBE TABLE tg_clientes LINES vg_linhas (carrega o número de registros da tabela interna na variável vg_linhas)

52

Dicas - Tabela Interna – APPEND <tab> X COLLECT <tab>

APPEND <TAB> COLLECT <TAB>

Cod Func SalárioCod Depto

9944 1000,00HR

9944 1000,00HR

9933 500,00INFO

0100 2000,00FINAN

Cod Func SalárioCod Depto

9944 1000,00HR

9944 1000,00HR

9933 500,00INFO

0100 2000,00FINAN

-Grava o conteúdo da estrutura no fim da tabela interna

Inclui a estrutura ou como uma nova entrada na tabela interna ou adiciona numa entrada já existente desde que tenhaa mesma estrutura. Soma os campos do

tipo P,I e F)

2000,00

Academia – SAP/ABAP R3

© by BBKO Consulting 36

Capítulo 4 – ABAP Open SQL

47

Open SQL

48

ABAP Open SQL - Acessando a base de dados

• SELECT• INSERT• DELETE• UPDATE• MODIFY

Academia – SAP/ABAP R3

© by BBKO Consulting 37

55

ABAP Open SQL – Select – Sintax

SELECT matnrINTO TABLE tg_maraFROM maraWHERE matnr = p_matnr.

Campos Selecionados

Destino dos dados (Tabela Interna)

Origem dos dados (Tabela Transparente)

Condição para a seleção dos dados

TYPES: BEGIN OF type_mara,matnr TYPE mara-matnr,

END OF type_mara.

TYPES: BEGIN OF type_mara,matnr TYPE mara-matnr,flag(1) TYPE c,

END OF type_mara.

DATA tg_mara TYPE TABLE OF type_mara

Ex. Declarações para tabela interna

Academia – SAP/ABAP R3

© by BBKO Consulting 38

49

ABAP Open SQL - Acesso ao Banco de Dados

DicionárioABAP Open SQL Banco de Dados

Relatório

Programa ABAP

- Para ler os dados das tabelas do banco de dados, você precisa utilizar o comando SELECT - O ABAP contém comandos similares ao do SQL padrão, na qual você pode acessar seu banco de dados. ABAP OPEN SQL tem as seguintes características:

- Sintaxe corresponde à sintaxe do SQL padrão - O ABAP SQL é um subconjunto do SQL padrão - O ABAP SQL contém SAP short forms

- As tabelas devem ser definidas no Repositório ABAP e tem chave primária.

Academia – SAP/ABAP R3

© by BBKO Consulting 39

57

ABAP Open SQL - Acesso ao Banco de Dados

Acesso de um registro – SELECT SINGLE•Seleciona dados do cliente código 10

Report ZSQL.Tables: KNA1

Data: vg_kunnr like kna1-kunnr,vg_name1 like kna1-name1,vg_addrnr like kna1-addrnr.

SELECT SINGLE KUNNR “Código do clienteNAME1 “NomeADDRNR “Rua e Nr.

INTO (vg_kunnr, vg_name1, vg_addrnr)FROM kna1 “Tabela transparente de

clientesWHERE kunnr = ‘0000000010’.

Para fazer SELECT SINGLE, você precisa passar como parâmetro na condição ‘WHERE’ a chave completa da tabela transparente.Neste exemplo acima, os campos selecionados foram armazenados em variáveis de memória, declarados no comando ‘DATA’

58

ABAP Open SQL - Acesso ao Banco de Dados

Processa em LOOP – SELECT e ENDSELECT* Seleciona os clientes de São Paulo

SELECT *

FROM kna1 “Tabela de clientesWHERE land1 = ‘BR’ AND

regio = ‘SP’.

MOVE-CORRESPONDING kna1 TO st_clientes.APPEND st_clientes TO tg_clientes.

ENDSELECT.

Acessa a tabela e a cada registro encontrado, atendendo a condição ‘WHERE’ os dados são movidos para uma tabela interna.

Academia – SAP/ABAP R3

© by BBKO Consulting 40

59

ABAP Open SQL - Acesso ao Banco de Dados

Move campos para tabela interna, não fica em LOOPING

INTO TABLE: Lê os registros da tabela e move para uma tabela interna. Sobrepõe os registros existentes.APPENDING TABLE: não sobrepõe os registros existentes, ele move para o fim da tabela interna.

* Seleciona documentos de venda dos clientes de São Paulo

SELECT KNA1~KUNNR “Código do clienteKNA1~NAME1 “NomeVBAK~VBELN “Numero do documento de venda

INTO TABLE tg_docvendasFROM kna1 “Tabela de clientesINNER JOIN vbak ON vbak~kunnr = kna1~kunnrWHERE kna1~land1 = ‘BR’ AND

kna1~regio = ‘SP’.

60

ABAP Open SQL - Join entre TabelasINNER JOIN

SELECT mara~matnr makt~maktxINTO TABLE tg_materiaisFROM mara

INNER JOIN makt ON makt~matnr = mara~matnr ANDmakt~spras = sy-langu

WHERE mara~matnr = p_matnr.

Tabela MAKTMand MAKTXMATNRSPRAS

Check Table MARAMand MATNR

Campos ChavesChave Primária

Check TableChave Estrangeira

Campos ChavesChave Primária

Academia – SAP/ABAP R3

© by BBKO Consulting 41

61

ABAP Open SQL - Join entre TabelasFOR ALL ENTRIES

SELECT matnr

INTO TABLE tg_mara

FROM mara

WHERE matnr = p_matnr.

IF sy-subrc = 0.SELECT matnr maktx

INTO TABLE tg_makt

FROM makt

FOR ALL ENTRIES IN tg_mara

WHERE matnr = tg_mara-matnr.

ENDIF.

Obs. A tabela interna utilizada no FOR ALL ENTRIES NUNCA deve

estar vazia no momento da seleção. Pois isso irá acarretar a seleção de

todos os registros da tabela utilizada na clausula FROM.

53

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: InsertTABLES ZTABELA

ZTABELA-MATNR = ‘10'. ZTABELA-CAMPO2 = ‘002'. ZTABELA-CAMPO3 = ‘INSERT'.

INSERT INTO ZTABELA VALUES ZTABELA.

Academia – SAP/ABAP R3

© by BBKO Consulting 42

54

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: DeleteTABLES ZTABELA.

DELETE FROM ZTABELAWHERE MATNR = ‘10'.

64

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: UpdateUPDATE ZTABELA

SET CAMPO2 = '002‘CAMPO3 = ‘UPDATE'

WHERE MATNR = ‘20'.

Academia – SAP/ABAP R3

© by BBKO Consulting 43

65

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: ModifyTABLES ZTABELA.

ZTABELA-MATNR = ‘30'. ZTABELA-CAMPO2 = ‘002'. ZTABELA-CAMPO3 = ‘MODIFY'.

MODIFY ZTABELA.

Comando MODIFY: ou altera um registro com a chave já existente ou se não existe, adiciona um novo.

Academia – SAP/ABAP R3

© by BBKO Consulting 44

66

Tipos de Programas

58

Dicas - Tipos de Programas

• Relatórios- O programa consiste em duas telas, a primeira tela é chamada

de tela de seleção (selection screen) , nesta tela você define os critérios do relatório e filtros. A segunda tela é a tela de saída, contém a lista.

• Programas de Diálogo (Dialog / On-Line)- O programa pode ter várias telas, em cada tela você pode ter

dados de entrada, saída, botões, table control...

• Includes

Academia – SAP/ABAP R3

© by BBKO Consulting 45

59

Dicas - Editor ABAP

Transação SE38, para Relatórios/Includes

-Os relatórios consistem em cinco componentes: - Código Fonte - As Características - Os elementos de texto - A documentação - As variantes

Academia – SAP/ABAP R3

© by BBKO Consulting 46

69

Dicas - Declarações “Básicas” nos programas ABAP

- Tables – Define tabelas ou estruturas com o mesmo nome existente no Dicionário de Dados.

- Types – Definição de Tipos de Dados.- Data - Define campos, variável ou string de campo.- Constants – Define um campo/variável com valor constante, ou seja, não

poderá ser alterado.

Exemplo:Report Zteste.Tables: Mara.

Types: type_campo2(2) type c,type_documento like bseg-ebeln.

Data: vg_campo1 type type_campo2 value ‘XX’,vg_campo2 type type_documento.

Constants c_X(1) type c value ‘X’.

Academia – SAP/ABAP R3

© by BBKO Consulting 47

Capítulo 5 – Tela de Seleção

63

Tela de Seleção

62

Tela de Seleção

• Tela de Seleção• Eventos da Tela de Seleção

Academia – SAP/ABAP R3

© by BBKO Consulting 48

63

Tela de Seleção - Exemplo de Parameters

Academia – SAP/ABAP R3

© by BBKO Consulting 49

64

Tela de Seleção - Exemplo de Select-options

-Internamente é gerada uma tabela interna so_func com 4 colunas: - SIGN ( I – Include / E – Exclude) - OPTION (EQ,NE,CP,NP,GE,LT,LE,GT, BT ) - LOW ( Intervalo – menor valor) - HIGH ( Intervalo – maior valor)

-Você pode inicializar os valores do select-option no evento initialization, por exemplo: INITIALIZATION. MOVE: 'I' TO SO_FUNC-SIGN, 'EQ' TO SO_FUNC-OPTION, ’1’ TO SO_FUNC-LOW. APPEND SO_FUNC.

Academia – SAP/ABAP R3

© by BBKO Consulting 50

66

Tela de Seleção - Selection-screen em blocos

SELECTION-SCREEN BEGIN OF BLOCK <block>... WITH FRAME... TITLE title

SELECTION-SCREEN END OF BLOCK <block>

SELECTION-SCREEN BEGIN OF BLOCK entre WITH FRAME TITLE text-001.parameters:* Nome do arquivo entrada

p_arqori like rlgrap-filename obligatory.parameters :

p_asc radiobutton group g1 default 'X', " Tipo ASCp_dat radiobutton group g1. " Tipo DAT

parameters :p_pc radiobutton group g3 default 'X', " Tipo PCp_unix radiobutton group g3. " Tipo UNIX

SELECTION-SCREEN END OF BLOCK entre.

67

Tela de Seleção - Eventos da Tela de seleção

Academia – SAP/ABAP R3

© by BBKO Consulting 51

68

Tela de Seleção - Eventos em Bloco

Parameters: p_data like sy-datum default sy-datum.

Initialization. “Seta valores para a tela de seleçãop_data = p_data – 10.

Start-of-Selection. “Início do processamento dos dadosWrite: p_data.

Report Z...

A seqüência dos eventos no código fonte não tem efeito na sequencia na qual eles são chamados pelo ABAP Runtime System

71

Dicas

Academia – SAP/ABAP R3

© by BBKO Consulting 52

70

Dicas - Processando Strings

ExampleDATA letters(3) TYPE C. MOVE 'abc' TO letters. TRANSLATE letters TO UPPER CASE.

letters now has the contents 'ABC'

ExampleDATA: letters(20) TYPE C VALUE 'abcabcabcXabc',

change(15) TYPE C VALUE 'aXbaYBabZacZB'. TRANSLATE letters USING change.

letters now contains 'XaZXaZXaZXXaZ'

71

Dicas - Processando Strings

ExemploDATA NAME (30).

NAME(10) = ' Dr.', NAME+10(10) = 'Michael', NAME+20(10) = 'Hofmann'.

CONDENSE NAME. WRITE NAME.

produces the output: Dr. Michael Hofmann

Exemplo:Alinha o material a direita e preenche com zeros a esquerda

SHIFT V_MATNR RIGHT DELETING TRAILING SPACE.

REPLACE ' ' WITH '0' INTO V_MATNR.

Academia – SAP/ABAP R3

© by BBKO Consulting 53

72

Dicas – LOOP´s

• DO ... ENDDO

• WHILE ... ENDWHILE

• LOOP ... ENDLOOP

• SELECT ... ENDSELECT

Academia – SAP/ABAP R3

© by BBKO Consulting 54

Capítulo 6 – Listas

84

Listas

82

Listas

• Formatação de Saída das Listas• Definir o Formato das listas• Armazenar Listas• Imprimir Listas• Controle de Nível das Listas, utilizando tabela Interna

Academia – SAP/ABAP R3

© by BBKO Consulting 55

83

Listas - Formatação das Listas

• Parâmetros de Saída:– Write ...– Format ...– New-Page ...

• Eventos– TOP-OF-PAGE.– END-OF-PAGE.

• Elementos de Texto– Text Symbols– Heading– Selection texts

• System fields (tabela Syst)

Academia – SAP/ABAP R3

© by BBKO Consulting 56

84

Listas - Exemplo dos comandos

Report Rel1.DATA: DATUM Type D,

TIME TYPE T.

DATUM = SY-DATUM.TIME = SY-UZEIT.

WRITE: 5 ‘Data’(001),20 DATUM DD/MM/YYYY.

WRITE: /5 ‘Hora’ (002),TIME using edit mask ‘_ _:_ _:_ _’under datum.

-WRITE: -Comando que gera saída de dados no relatório. -Exemplo: WRITE 'Hello, here I am!'.

-System fields (tabela SYST): -Alguns campos da tabela SYST são interessantes para uso em reports:

-SY-PAGNO: -Números da pagina.

-SY-DATUM: -Data atual.

-SY-UZEIT: -Hora atual.

-SY-UNAME: -Usuário do login.

Academia – SAP/ABAP R3

© by BBKO Consulting 57

85

Listas - Exemplo usando ‘Format’

Report Rel1.DATA: DATUM Type D,

TIME TYPE T.

DATUM = SY-DATUM.TIME = SY-UZEIT.

Format color col_normal.WRITE: 5 ‘Data’(001),

20 DATUM DD/MM/YYYY.Format color off.WRITE: /5 ‘Hora’ (002),

TIME using edit mask ‘_ _:_ _:_ _’under datum.

-FORMAT: -Através do FORMAT pode-se manipular o formato dos dados a serem apresentados com WRITE. Pode-se controlar a cor, intensidade, etc.

Academia – SAP/ABAP R3

© by BBKO Consulting 58

86

Listas - Exemplo usando ‘New Page’

Com o parâmetro New-Page, você pode forçar uma nova página. O contador de página é ajustado automaticamente e o cabeçalho específico é

exibido.

Report Rel1.DATA: DATUM Type D,

TIME TYPE T.

* Nova páginaNEW_PAGE.Write: /5 ’Usuário’(003), sy-uname,

80 text-001, sy-page. “Página

DATUM = SY-DATUM.TIME = SY-UZEIT.

Format color col_normal.WRITE: 5 ‘Data’(001),

20 DATUM DD/MM/YYYY.Format color off.WRITE: /5 ‘Hora’ (002),

TIME using edit mask ‘_ _:_ _:_ _’under datum.

-NEW-PAGE: -Salta uma pagina do relatório.

Academia – SAP/ABAP R3

© by BBKO Consulting 59

87

Listas - Top-of-page e End-of-page

Você pode usar o parâmetro NO STANDARD PAGE HEADING no parâmetro do REPORT para desabilitar a linha de cabeçalho do sistema.

Se uma nova página é iniciada o sistema chama o evento TOP-OF-PAGE.

Report Rel1 NO STANDARD PAGE HEADINGline-size 132line-count 15.

DATA: DATUM Type D,TIME TYPE T.

* Nova páginaTOP-OF-PAGE.Write: /5 ’Usuário’(003), sy-uname,

80 text-001, sy-pagno. “Página

END-OF-PAGE.ULINE.WRITE: /10, TEXT-001. “FIM DE PÁGINA

DATUM = SY-DATUM.TIME = SY-UZEIT.

Format color col_normal.WRITE: 5 ‘Data’(001),

20 DATUM DD/MM/YYYY.Skip 2. “Pula duas linhasFormat color off.WRITE: /5 ‘Hora’ (002),

TIME using edit mask ‘_ _:_ _:_ _’under datum.

O END-OF-PAGE não ocorre quando a quebra de páginafoi chamada por um evento NEW-PAGE. O tamanho daPágina deve ser determinado pelo parâmetro do line-countPara chamar o bloco do processamento do END-OF-PAGE

-Eventos: -Eventos são identificados por uma palavra-chave de evento, ou seja, o próprio nome do evento. Eles terminam onde o bloco do próximo evento começa. O próximo bloco deve ser uma outra palavra-chave de evento, ou algum outro bloco de processamento valido no contexto, como uma sub-rotina ou modulo de dialogo. Os principais eventos para processamento de relatórios são:

-INITIALIZATION: -Próprio para inicializar os campos da tela de seleção. E executado antes da exibição da tela.

-START-OF-SELECTION: -Neste evento e colocada a lógica principal da montagem do relatório. E executado logo apos a tela de seleção.

-END-OF-SELECTION: -E executado apos o START-OF-SELECTION, antes da apresentação da lista.

Academia – SAP/ABAP R3

© by BBKO Consulting 60

88

Listas - Armazenar Listas

• Você pode armazenar listas resultante de programa

Academia – SAP/ABAP R3

© by BBKO Consulting 61

89

Listas - Enviar diretamente p/ impressora

O parâmetro NEW-PAGE PRINT ON envia a lista para o SAP spool databaseO parâmetro NO DIALOG desabilita a exibição da tela de parâmetros de

impressão.

Report rel3.

NEW-PAGE PRINT ONNO DIALOGDESTINATION ‘LPT1’IMMEDIATELY ‘X’.

WRITE: / ....

91

Listas - Controle de Nível: Tabela Interna

• Ao processar tabelas internas com o comando LOOP, você pode executar processamentos com nível de controle, utilizando tais parâmetros:

- AT FIRST- AT NEW- AT END OF- AT LAST

Obs.: O campo da tabela interna utilizado nos comandos AT NEW e AT END OF tem que ser o primeiro campo da tabela interna e a mesma deve estar ordenada.

Academia – SAP/ABAP R3

© by BBKO Consulting 62

92

Listas - Controle de Nível: Tabela Interna

Report rel4.TABLES KNA1....DATA TG_ITAB TYPE TABLE OF TYPE_ITABE.

DATA ST_ITAB TYPE TYPE_ITABE....

SORT TG_ITAB BY ORT01 NAME1 ADDRNR .LOOP AT TG_ITAB INTO ST_ITAB.

AT NEW ORT01.WRITE: / ST_ITAB-ORT01.

ENDAT.AT END OF ORT01.

ULINE.WRITE: / ST_ITAB-ORT01.

ENDAT.ENDLOOP.

Obs.: O campo ORT01 neste exemplo tem que ser o primeiro campo da tabela interna

ITAB.

LOOP AT ITABAT FIRST. ... ENDAT. AT NEW < campo> ... ENDAT.AT END OF < campo> ... ENDAT.AT LAST. ... ENDAT.

ENDLOOP

93

Listas - Controle de Nível: ON CHANGE

Para o comando ON CHANGE o campo da tabela interna não precisa ser o primeiro.

TABLES T100. SELECT * FROM T100 WHERE SPRSL = SY-LANGU AND

MSGNR < '010' ORDER BY PRIMARY KEY.

ON CHANGE OF T100-ARBGB. ULINE. WRITE: / '***', T100-ARBGB, '***'.

ENDON. WRITE: / T100-MSGNR, T100-TEXT.

ENDSELECT.

Report rel4.TABLES KNA1....DATA TG_ITAB TYPE TABLE OF TYPE_ITAB.DATA ST_ITAB TYPE TYPE_ITAB....

SORT TG_ITAB BY ORT01 NAME1 ADDRNR .LOOP AT TG_ITAB INTO ST_ITAB.

ON CHANGE ST_ITAB-ORT01.WRITE: / ST_ITAB-ORT01.

ENDON.ENDLOOP.

Academia – SAP/ABAP R3

© by BBKO Consulting 63

96

Dicas

94

Dicas - Comando Message

Message Ennn with <field1> <field2> <field3> <field4> (<message-class>)

Tipo de mensagens:E – ErroA – AbendX – Exit (termina com um short Dump)W – WarningI – InformaçãoS - Sucesso

No parâmetro “REPORT” pode-se acrescentar o parâmetro “MESSAGE-ID”.Exemplo: REPORT ZSDR0010 NO STANDARD PAGE HEADING

LINE-SIZE 132LINE-COUNT 65MESSAGE-ID ZSD.

Academia – SAP/ABAP R3

© by BBKO Consulting 64

Capítulo 7 – Listas Secundárias

98

Listas Secundárias

Academia – SAP/ABAP R3

© by BBKO Consulting 65

96

Listas Secundárias

-O ABAP runtime system : - Exibe a lista básica. A variável de sistema SY-LSIND = 0 (contador de lista) - Neste exemplo, se você “clicar” duas vezes sobre uma linha da lista básica, será exibido detalhes desta linha, isso através do evento “AT-LINE-SELECTION”

Academia – SAP/ABAP R3

© by BBKO Consulting 66

97

Listas Secundárias - Como selecionar

98

Listas Secundárias - Exemplo do comando HIDE

HIDE <data object>

123

Line1

2

3

Line

Hide Area

WA_ZFUNC-NUM_ID

0000000001

0000000002

0000000003

Academia – SAP/ABAP R3

© by BBKO Consulting 67

99

Listas Secundárias - Exemplo

Duplo click na linha do relatório, ou clicar no ícone

Traz dados da Lista Secundária

SY-LSIND = 0

SY-LSIND = 1

SY-LSIND = variável de sistema de indica o índice da lista corrente

Academia – SAP/ABAP R3

© by BBKO Consulting 68

100

Listas Secundárias - Exemplo

101

Listas Secundárias - Lista Secundária com GUI STATUS

Lista Básica

Lista Secundária

Academia – SAP/ABAP R3

© by BBKO Consulting 69

102

Listas Secundárias - GUI Title e GUI Status

103

Listas Secundárias - Menu Painter –SE41

Academia – SAP/ABAP R3

© by BBKO Consulting 70

104

Listas Secundárias - Menu Painter

105

Listas Secundárias - Gui Status (exemplo: LIST)

Academia – SAP/ABAP R3

© by BBKO Consulting 71

106

Listas Secundárias - Barra de Menu

107

Listas Secundárias - Barra de Ferramentas da Aplicação

Academia – SAP/ABAP R3

© by BBKO Consulting 72

108

Listas Secundárias - Menu Standard

110

Listas Secundárias - Lista Secundária com GUI STATUS

REPORT ZTESTE_LISTA_SEC_II .TABLES: mara, makt.

TYPES: begin of type_mara,matnr like mara-matnr,ersda like mara-ersda,ernam like mara-ernam,

end of type_mara,begin of type_makt,

matnr like makt-matnr,maktx like makt-maktx,

end of type_makt.

DATA: tg_mara TYPE TABLE OF TYPE_MARA,st_mara TYPE TYPE_MARA,st_makt TUPE TYPE_MAKT.

select-options: so_matnr for mara-matnr.***************************************** Evento START-OF-SELECTION****************************************start-of-selection.set pf-status 'LIST'.set titlebar 'LIST'.

SELECT matnr ersda ernamFROM maraINTO TABLE tg_mara

WHERE matnr in so_matnr.LOOP AT tg_mara INTO st_mara.

WRITE: /'Material', t_mara-matnr, t_mara-ersda, t_mara-ernam.HIDE: tg_mara.

ENDLOOP.

AT USER-COMMAND.CASE sy-ucomm.WHEN 'TEXTO'.

SET pf-status 'LIST' excluding 'TEXTO'.SET titlebar 'LIST1'.SELECT single matnr maktx

INTO (st_makt-matnr,st_makt-maktx)FROM makt

WHERE matnr = t_mara-matnr ANDspras = 'P '.

WRITE: 'Material lista secundária', st_makt-matnr, st_makt-maktx.ENDCASE.

Academia – SAP/ABAP R3

© by BBKO Consulting 73

Capítulo 8 – Modularização

75

Modularização

74

Modularização

• Sub-rotinas• Grupo de Funções • Funções

Academia – SAP/ABAP R3

© by BBKO Consulting 74

75

Modularização - Subrotinas

Inicio do Programa

Perform carrega_tabUsing Campo 1Changing tab1

....

Form carrega_tabUsing Campo 1Changing tab1

Se no programa ABAP uma sub-rotina é chamada por um comando PERFORM, o sistema interrompe o processamento corrente para processar a sub-rotina. Quando a ultima linha da sub-rotina (ENDFORM), é executada, o sistema continua o processamento do programa, após a linha do comando ‘PERFORM’.

Academia – SAP/ABAP R3

© by BBKO Consulting 75

76

Modularização - Chamando por valor e por referência

Os parâmetros podem ser enviados por referência ou por valor: - Por referencia: o parâmetro destino faz referencia ao endereço do

parâmetro origem. - Por valor: Quando a sub-rotina é chamada, uma variável local é criada e o

conteúdo é copiado, existem dois tipos de chamadas por valor: - chamada por valor: passa apenas os conteúdos - chamada por valor e resultado: passa o conteúdo do campo e toda

alteração efetuada no campo, na sub-rotina e passada de volta.

Academia – SAP/ABAP R3

© by BBKO Consulting 76

77

Modularização - Grupo de Função e Função

Módulo de função são unidades modulares com a interface. A interface pode conter os seguintes elementos:

Parâmetros de Importação: são parâmetros passados para o módulo de função. Em geral, estes são associados aos tipos do Dicionário ABAP. Podem ser opcionais.

Parâmetros de Exportação: são passados do módulo de função para o programa chamador. Parâmetros de exportação são sempre opcionais.

Parâmetros Modificáveis: são passados para o módulo de função e podem ser alterados pela função. Podem ser opcionais.

Exceções: São usados para interceptar erros. Se um erro aciona uma exceção na função, esta função pára. Você pode associar números a exceção no programa, na qual são verificados pelos valores do sy-subrc.

Cada módulo de função pode conter dados locais e acessar dados globais, pertencentes ao grupo de função.

Academia – SAP/ABAP R3

© by BBKO Consulting 77

78

Modularização - Grupo de Função e Função

• Grupo de Funções e Funções

- Um grupo de função é um programa ABAP do tipo F, na qual o programa é criado exclusivamente para conter módulos de função. Os módulos de função podem ser chamados de qualquer programa ABAP.

Academia – SAP/ABAP R3

© by BBKO Consulting 78

79

Modularização - Grupo de Função e Função

Crie grupo de função por ‘assunto’, evite utilizar vários módulos de função num mesmo grupo, pois se alguém estiver codificando um módulo, e você quiser transportar a sua função e eles pertencerem ao mesmo grupo, você só vai conseguir transportar no momento que todos as funções deste grupo estiverem sem erro de sintaxe.

1. Criar o Grupo de função

2. Associar o módulo de função ao Grupo

80

Modularização - Exemplo de programa e função

Academia – SAP/ABAP R3

© by BBKO Consulting 79

119

ALV Grid Control

TYPE-POOLS: slis, kkblo.

DATA: tg_fieldcat TYPE TABLE OF slis_t_fieldcat_alv.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTING

i_callback_program = 'Nome_do_programa' i_grid_title = 'Teste Relatório ALV'it_fieldcat = tg_fieldcat[ ]

TABLESt_outtab = Tabela de Dados

EXCEPTIONSprogram_error = 1OTHERS = 2.

fieldcat-col_pos = '01'.fieldcat-key = 'X'.fieldcat-tabname = 'T_ALV'.fieldcat-fieldname = 'COL_01'.fieldcat-seltext_l = 'Material'.fieldcat-seltext_m = 'Material'.fieldcat-seltext_s = 'Material'.fieldcat-fix_column = 'X'.Append fieldcat.

Academia – SAP/ABAP R3

© by BBKO Consulting 80

Capítulo 9 – Data Transfer

114

Transferência de Dados

111

Transferência de Dados

• Processando Arquivo Seqüencial• Call Transaction• Batch Input

Academia – SAP/ABAP R3

© by BBKO Consulting 81

112

Transferência de Dados - Abrir e ler arquivo sequencial - Inbound

IF p_unix = 'X'.OPEN DATASET p_arqori FOR INPTU IN text MODE MESSAGE v_msg.

DO.READ DATASET P_ARQORI INTO T_DATA_LOAD. "lê um reg. do arquivo

IF SY-SUBRC NE 0. "fim de arquivo/arq. s/ registrosEXIT. "indica fim de arquivo

ENDIF.APPEND T_DATA_LOAD.

ENDDO.ENDIF.

113

Transferência de Dados - Binary Mode e Text Mode

Academia – SAP/ABAP R3

© by BBKO Consulting 82

114

Transferência de Dados - Gerando arquivo seqüencial -Outbound

IF P_UNIX EQ 'X'.

OPEN DATASET V_ARQSAIDA FOR OUTPUT IN TEXT MODE MESSAGE V_MSG.IF SY-SUBRC NE 0.MESSAGE E001(ZI) WITH V_ARQSAIDA V_MSG.

ENDIF.LOOP AT T_SAIDA.TRANSFER T_SAIDA TO V_ARQSAIDA.

ENDLOOP.

CLOSE DATASET V_ARQSAIDA.IF SY-SUBRC NE 0.MESSAGE E011(ZI) WITH V_ARQSAIDA.

ENDIF.ELSEIF P_PC EQ 'X'.

.....

115

Transferência de Dados - Acesso a arquivos externos

Entrada de dados - Inbound

Acesso a arquivo externo via PC, utilizar a função:call function ‘GUI_UPLOAD'

exportingfilename = l_filenamefiletype = v_type

tablesdata_tab = t_data_load

exceptionsconversion_error = 1file_open_error = 2file_read_error = 3invalid_type = 4no_batch = 5unknown_error = 6invalid_table_width = 7gui_refuse_filetransfer = 8customer_error = 9others = 10.

Acesso a arquivo externo via UNIX, utilizar os comandos:OPEN DATASET <arq> FOR INPUT IN TEXT MODE MESSAGE <msg>

DO.READ DATASET P_ARQORI INTO T_DATA_LOAD. "le um reg. do arquivoIF SY-SUBRC NE 0. "fim de arquivo/arq. s/ registros

EXIT. "indica fim de arquivoENDIF.APPEND T_DATA_LOAD.

ENDDO.

Academia – SAP/ABAP R3

© by BBKO Consulting 83

116

Transferência de Dados - Acesso a arquivos externos

Acesso a arquivo externo via UNIX, utilizar os comandos:

OPEN DATASET <arq> FOR INPUT IN TEXT MODE MESSAGE <msg>DO.

READ DATASET P_ARQORI INTO T_DATA_LOAD. "le um reg. do arquivo

IF SY-SUBRC NE 0. "fim de arquivo/arq. s/ registros

EXIT. "indica fim de arquivo

ENDIF.

APPEND T_DATA_LOAD.

ENDDO.

117

Transferência de Dados - Acesso a arquivos externos

Saída de dados - Outbound

Acesso a arquivo externo via PC, utilizar a função:

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = V_ARQSAIDA

TABLESDATA_TAB = T_SAIDA

EXCEPTIONS

OTHERS = 8.

Academia – SAP/ABAP R3

© by BBKO Consulting 84

118

Transferência de Dados - Acesso a arquivos externos

Acesso a arquivo externo via UNIX, utilizar os comandos:

CONCATENATE P_PATH 'arq' SY-DATUM SY-UZEIT+0(4) INTO <arq>.

OPEN DATASET <arq> FOR OUTPUT IN TEXT MODE MESSAGE <msg>

LOOP AT <tab_interna>.

TRANSFER <tab_interna> TO <arq>.ENDLOOP.

CLOSE DATASET <arq>.

119

Transferência de Dados - Transferindo Dados Externos

DadosExternos

SAPINTERFACES BANCO SAP

SAP ( Host )

Academia – SAP/ABAP R3

© by BBKO Consulting 85

120

Transferencia de Dados - Transferindo Dados Externos

ArquivoSeqüêncial

Programa de BATCH INPUT

TabelaBDC

READ DATASET

Estrutura BDCDATA

INCLUDE STRUCTURE

DicionárioABAP/4

FILA

CALL FUNCTION

121

Transferência de Dados - Seqüência p/ Batch Input

ABRIR SESSÃO DE BATCH INPUT

INSERIR DADOS DA TRANSAÇÃO

FECHAR SESSÃO DE BATCH INPUT

Academia – SAP/ABAP R3

© by BBKO Consulting 86

122

Transferência de Dados - Entrada e Saída de Dados

Atualizando dadosUpdate Z_CONTAS set fornecedor = ‘X’Where grupo = 1.

Update não deve ser utilizado para atualizar dados de tabelas Standard do SAP. Toda a atualização deve ser feita através das transações que garantam a integridade da base de dados. Esta atualização é feita através do comando CallTransaction.

Call TransactionWA_BDCDATA-PROGRAM = 'SAPMS38M'. “Informa o nome/numero da telaWA_BDCDATA-DYNPRO = '0100'. WA_BDCDATA-DYNBEGIN = 'X'. APPEND WA_BDCDATA TO BDCDATA.

CLEAR WA_BDCDATA. WA_BDCDATA-FNAM = 'RS38M-PROGRAMM'. “Preenche campos da telaWA_BDCDATA-FVAL = PROGRAM. APPEND WA_BDCDATA TO BDCDATA. ... * Chama a transação com os dados de tela e campos definidos

CALL TRANSACTION 'SE38' USING BDCDATA MODE 'N' MESSAGES INTO ITAB.

123

Transferência de Dados - Entrada e Saída de Dados

Para melhor organizar um programa que utiliza Call Transaction normalmente são criadas funções para preencher a tabela de dados da transação (BDCDATA).

***************************************************************** Rotinas para criação da t_bdc****************************************************************FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR T_BDC.T_BDC-PROGRAM = PROGRAM.T_BDC-DYNPRO = DYNPRO.T_BDC-DYNBEGIN = 'X'.APPEND T_BDC.

ENDFORM.

********************************************

FORM BDC_FIELD USING FNAM FVAL.IF FVAL <> ''.

CLEAR T_BDC.T_BDC-FNAM = FNAM.T_BDC-FVAL = FVAL.APPEND T_BDC.

ENDIF.ENDFORM.

Academia – SAP/ABAP R3

© by BBKO Consulting 87

124

Transferência de Dados - Entrada e Saída de Dados

*********************************************************************** FORM CALL_TRANSACTION**********************************************************************FORM CALL_TRANSACTION TABLES T_BDC_DATA USING W_TCODE.

CALL TRANSACTION W_TCODEUSING T_BDC_DATA MODE 'N' UPDATE 'S'MESSAGES INTO T_MESS.

IF SY-SUBRC NE 0.LOOP AT T_MESS.

PERFORM BDC_MESSAGE.WRITE: / W_MESS.

ENDLOOP.ENDIF.

CLEAR: T_MESS, T_BDC.REFRESH: T_MESS, T_BDC.

ENDFORM. " CALL_TRANSACTION

*********************************************************************** FORM BDC_MESSAGE**********************************************************************FORM BDC_MESSAGE.

CLEAR W_MESS.

125

Transferência de Dados - Entrada e Saída de Dados

SELECT SINGLE * FROM T100WHERE SPRSL = 'P'AND ARBGB = T_MESS-MSGIDAND MSGNR = T_MESS-MSGNR.

W_MESS = T100-TEXT.

STRAUX4 = T_MESS-MSGV1.REPLACE '&' WITH STRAUX4 INTO W_MESS.CONDENSE W_MESS.

STRAUX4 = T_MESS-MSGV2.REPLACE '&' WITH STRAUX4 INTO W_MESS.CONDENSE W_MESS.

STRAUX4 = T_MESS-MSGV3.REPLACE '&' WITH STRAUX4 INTO W_MESS.CONDENSE W_MESS.

STRAUX4 = T_MESS-MSGV4.REPLACE '&' WITH STRAUX4 INTO W_MESS.CONDENSE W_MESS.

ENDFORM.

Academia – SAP/ABAP R3

© by BBKO Consulting 88

126

Transferência de Dados - Entrada e Saída de Dados

Exemplo de código para chamada de Call Transaction a partir das funções criadas :

...PERFORM BDC_DYNPRO USING 'SAPMM07I' '0721'.PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'. “SalvarPERFORM BDC_FIELD USING 'BDC_CURSOR' 'ISEG-

MATNR(01)'.

PERFORM CALL_TRANSACTION TABLES T_BDC USING 'MI01'.

O nome do campo na tela pode ser verificado clicando-se F1 sobre o campo acessando a opção Informações Técnicas. O nome do campo encontra-se em Denominação do campo para batch input.

Além dos campos de tela existem dois campos especiais :

BDC_CURSOR : Para indica a posição do cursorBDC_OKCODE : Para indicar a operação a realizar após o

preenchimento da tela.

127

Transferência de Dados - Entrada e Saída de Dados

Batch Input

O programa cria uma pasta ou arquivo contendo os dados da tabela BDC_DATA (mesma utilizada no Call Transaction).

Esta será processada posteriormente através da transação SM35.

CALL FUNCTION 'BDC_OPEN_GROUP'EXPORTING CLIENT = SY-MANDT

GROUP = NOMEPASTAUSER = USERKEEP = KEEPHOLDDATE = HOLDDATE.

CALL FUNCTION 'BDC_INSERT'EXPORTING TCODE = TCODETABLES DYNPROTAB = T_BDCDATA.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

Academia – SAP/ABAP R3

© by BBKO Consulting 89

128

Transferência de Dados - Programa Inbound

• Passos para criar programa Inbound– Executar a transação SHDB:

• Juntamente com o Funcional executar a transação desejada e preencher os campos necessários

– Após mapear os campos necessários, definir o layout do arquivo .txt de entrada

– Criar a especificação técnica– Criar o programa de Inbound

Obs: Segue exemplo: transação MM02 (alteração de material) onde vamos apenas alterar a descrição dos materiais

129

Transferência de Dados - Transação SHDB

Academia – SAP/ABAP R3

© by BBKO Consulting 90

130

Transferência de Dados - Transação SHDB

131

Transferência de Dados - Transação SHDB

Academia – SAP/ABAP R3

© by BBKO Consulting 91

132

Transferência de Dados - Transação SHDB

133

Transferência de Dados - Transação SHDB

Academia – SAP/ABAP R3

© by BBKO Consulting 92

134

Transferência de Dados - Transação SHDB

135

Transferência de Dados - Layout do arquivo de entrada

Arquivo .txt de entrada (para este exemplo do SHDB, executado):

Seq Campo Tipo1 – Código do material – char 18 posições, alinhado a esquerda

2 – Descrição do Material – char 40 posições

Academia – SAP/ABAP R3

© by BBKO Consulting 93

136

Transferência de Dados - Tela com parâmetros de Batch Input

137

Transferência de Dados - SM35-Executar pasta de Batch Input

Academia – SAP/ABAP R3

© by BBKO Consulting 94

- Tem três opções de executar a pasta: Processamento visível (Foreground visualizando as telas), Oculto (background), Exibir só erros (quando ocorrer erro mostra a tela)

-Quando executa a pasta Batch Input em foreground, significa que está

rodando a transação com todos os dados mapeados no programa, preenchidos, apenas teclar < ENTER >.

- Caso queira cancelar o processamento em foreground do registro corrente, digitar no campo de comando < /n>.

- Caso queira cancelar o processamento em foreground, digitar no campo de comando < /bend>

138

Transferência de Dados - SM35

Academia – SAP/ABAP R3

© by BBKO Consulting 95

Capítulo 10 – Programação On-Line

143

Programação On-Line

Academia – SAP/ABAP R3

© by BBKO Consulting 96

140

Programação On-line - Module-pool

• Partes de uma tela

AtributosDa Tela

Screen NumberShort DescriptionScreen typeNext Screen...

LayoutDa Tela

Screen NumberShort DescriptionScreen typeNext Screen...

Atributos dos campos

Field NameTypeLength...

Controle do Fluxo

Process Before Output.Module Clear-ok_code.

Controle do Fluxo

Process After InputModule User_Command_0100

Os principais processos de criar uma tela: - Especificar as suas propriedades (Atributos da tela) - Especificar o layout (Editor Fullscreen) - Definir os atributos dos elementos da tela (Field List) - Programar o seu fluxo lógico - O Fluxo lógico é dividido em dois eventos para cada tela:

- O PROCESS BEFORE OUTPUT evento (PBO), é executado antes da tela ser apresentada.

- O PROCESS AFTER INPUT evento (PAI), é executado após o usuário ter acionado algum botão ou disparado algum evento na tela anteriormente apresentada.

Academia – SAP/ABAP R3

© by BBKO Consulting 97

141

Programação On-line - Criação de um Dialog Program

Código do ClienteCódigo do Cliente

Nome

Endereço

Nome

Endereço

- Dialog Program que mostrará dados do Cliente. - Neste exemplo, a primeira tela, o usuário entrará com código do funcionário. (chave da tabela), e na segunda tela, será mostrado o conteúdo dos campos referentes à tabela ao funcionário.

Academia – SAP/ABAP R3

© by BBKO Consulting 98

142

Programação On-line – Chamada dinâmica da próxima tela

Tela 100Próxima tela 200

Tela 300Próxima tela 400

PAI

Module ...Set Screen 300.Leave Screen.

Endmodule.

PBO

O comando SET SCREEN <nnnn> sobrepõe temporariamente o atributo ‘próxima tela’.Para executar a chamada a outra tela em um único programa pode ser feito desta forma: “LEAVE TO SCREEN < nnnn>”

PAI

Module ...Set Screen 0.Leave Screen.

Endmodule.

O comando SET SCREEN 0 e LEAVE Screen volta para a tela que chamou, no caso tela 300.

PBO

Academia – SAP/ABAP R3

© by BBKO Consulting 99

143

Programação On-line - Programa Lógico

Você pode definir um campo OK_CODE como um campo da tela. Neste campo conterá o código de função do botão selecionado na tela. Para evitar erros de campo OK_CODE não inicializado, você deve criar um campo auxiliar que salva o conteúdo do OK_CODE e então você inicializa o campo OK_CODE e ‘trabalha’ com o campo auxiliar.

Academia – SAP/ABAP R3

© by BBKO Consulting 100

144

Programação On-line - Dialog Program– Seq Ações

ã

Sequência de Ações

PROCESS BEFORE OUTPUT. MODULE A.

PROCESS AFTER INPUT. MODULE B.

ScreenPainter

Execute module AExecute module A

Execute module BExecute module B

Action sequence

Data transport fromData transport fromABAP/4 to screenABAP/4 to screenwork areawork area

Send screenSend screen

ENTERENTER

Data transport fromData transport fromscreen to ABAP/4screen to ABAP/4work areawork area

- Quando todos os módulos do PBO terminarem a execução, os conteúdos dos campos na Work Área do ABAP são copiados para a Work Área da tela em nomes idênticos. - Antes do PAI ser processado, os conteúdos dos campos na Work Área da tela são copiados para a Work Área do ABAP em nomes idênticos.

Academia – SAP/ABAP R3

© by BBKO Consulting 101

146

Programação On-line - Atributos da tela

ã

Modificações Dinâmicas em Telas

Change <-> Display

AB

Change <-> Display

AB

output field input andoutput field

- Podem ser feitas mudanças temporárias em certos atributos de campos. Ex.: Fazer com que um campo com atributo de display somente, seja alterado para receber entrada de digitação etc. - Esta facilidade faz com que possam ser utilizadas as mesmas telas, somente com a alteração dos atributos dos seus campos, desta forma a quantidade de telas é reduzida consideravelmente.

Academia – SAP/ABAP R3

© by BBKO Consulting 102

146

Programação On-line - Atributos da tela

ã

Atributos modificábeis da tabela SCREENSCREEN-NAME Field nameSCREEN-GROUP1SCREEN-GROUP2SCREEN-GROUP3SCREEN-GROUP4

SCREEN-REQUIRED

SCREEN-INPUT

SCREEN-OUTPUT

SCREEN-INTENSIFIED

SCREEN-INVISIBLE

SCREEN-LENGTH

SCREEN-ACTIVE

SCREEN-DISPLAY_3D

SCREEN-VALUE_HELP

SCREEN-REQUEST

Modification group 1Modification group 2Modification group 3Modification group 4

Required field

Input field

Output field

Highlighted field

Invisible field

Field length

Active field

3-dimensional field

Field with value help

Input exists (PAI only)

- Os campos da tela e seus respectivos atributos são armazenados automaticamente em uma tabela interna (do sistema) chamada SCREEN. - A tabela SCREEN é inicializada com os campos definidos no Caiem Pointer e tem seus campos reinicializados a cada execução do PBO. - Para determinar o campo que você deve alterar um ou mais atributos, você precisa ler o campo SCREEN-NAME e os campos SCREEN-GROUP1 até SCREEN-GROUP4, através de um Loop na tabela SCREEN. - As funções standard são automaticamente associadas.

Academia – SAP/ABAP R3

© by BBKO Consulting 103

147

Programação On-line - Atributos do campo na tela

ã

Atributos do campo – Grupos de Modificação

ScreenPainterField list: Modification groups

Field name Gr1 Gr2 Gr3 Gr4 ...

SPFLI_ITAB-CONNID SELSELSPFLI_ITAB-CITYFROM SELSELSPFLI_ITAB-CITYTO SELSEL. . .

- Você pode associar um campo a quatro diferentes grupos. Os nomes dos grupos podem ter até 3 caracteres e podem ser definidos livremente.

Academia – SAP/ABAP R3

© by BBKO Consulting 104

148

Programação On-line - Modificação em telas

ã

ScreenPainter

Modificações Dinâmicas em Telas - Programa

PROCESS BEFORE OUTPUT. . . . MODULE MODIFY_SCREEN. . . .

ABAP/4MODULE MODIFY_SCREEN OUTPUT. ...

LOOP AT SCREEN. IF SCREEN-GROUP1 = 'SEL'. SCREEN-INPUT = 1 . ENDIF. IF SCREEN-NAME = ' SFLIGHT-CARRID '. SCREEN-ACTIVE = 0 . ENDIF.

MODIFY SCREEN. ENDLOOP.ENDMODULE.

MODULE MODIFY_SCREEN OUTPUT. ...

LOOP AT SCREEN. IF SCREEN-GROUP1 = 'SEL'. SCREEN-INPUT = 1 . ENDIF. IF SCREEN-NAME = ' SFLIGHT-CARRID '. SCREEN-ACTIVE = 0 . ENDIF.

MODIFY SCREEN. ENDLOOP.ENDMODULE.

MODULE MODIFY_SCREEN OUTPUT. ...

LOOP AT SCREEN. IF SCREEN-GROUP1 = 'SEL'. SCREEN-INPUT = 1 . ENDIF. IF SCREEN-NAME = ' SFLIGHT-CARRID '. SCREEN-ACTIVE = 0 . ENDIF.

MODIFY SCREEN. ENDLOOP.ENDMODULE.

- O código (programa) para alterar dinamicamente os atributos dos campos devem ser executados no evento PBO. - As mudanças devem ser feitas dentro de um Loop na tabela SCREEN, e somente desta forma.(Não é possível o acesso via READ TABLE...). - As mudanças feitas são realmente ativadas após o comando MODIFY SCREEN.

Academia – SAP/ABAP R3

© by BBKO Consulting 105

150

Programação On-line - Condição na chamada dos Modules

Module Verifica_Campo...message E ...

Endmodule.

PROCESS AFTER INPUT.FIELD <campo>

Module Verifica_Campo ON INPUT.

- Se quiser que o module seja chamado somente se o conteúdo do campo foi alterado do seu valor inicial.

- Dentro do bloco CHAIN, você deve usar o ON CHAIN-INPUT, o module é então chamado se o conteúdo de uma das telas foi alterado do valor inicial.

PROCESS AFTER INPUT.CHAIN.

FIELD <campo1>,<campo2>... < campo n>

Module Verifica_Campo ON CHAIN-INPUT.ENDCHAIN.

Module Verifica_Campo...message E ...

Endmodule.

150

Programação On-line - Condição na chamada dos Modules

Module Verifica_Campo...message E ...

Endmodule.

PROCESS AFTER INPUT.FIELD <campo>

Module Verifica_Campo ON INPUT.

- Se quiser que o module seja chamado somente se o conteúdo do campo foi alterado do seu valor inicial.

- Dentro do bloco CHAIN, você deve usar o ON CHAIN-INPUT, o module é então chamado se o conteúdo de uma das telas foi alterado do valor inicial.

PROCESS AFTER INPUT.CHAIN.

FIELD <campo1>,<campo2>... < campo n>

Module Verifica_Campo ON CHAIN-INPUT.ENDCHAIN.

Module Verifica_Campo...message E ...

Endmodule.

Academia – SAP/ABAP R3

© by BBKO Consulting 106

151

Programação On-line - Condição na chamada dos Modules

Module Verifica_Campo...message E ...

Endmodule.

PROCESS AFTER INPUT.FIELD <campo>

Module Verifica_Campo ON REQUEST.

- Se adicionar o parâmetro ON REQUEST no module, o module somente é chamado se o usuário digitar um novo valor neste campo

- Dentro do bloco CHAIN, você deve usar o ON CHAIN-REQUEST, o module é então chamado se o usuário alterou o conteúdo de um dos campos dentro do bloco CHAIN.

PROCESS AFTER INPUT.CHAIN.

FIELD <campo1>,<campo2>... < campo n>

Module Verifica_Campo ON CHAIN-REQUEST.ENDCHAIN.

Module Verifica_Campo...message E ...

Endmodule.

152

Programação On-line - Condição na chamada dos Modules

Module EXIT Input.Case ok_code.

when ‘CANCEL’.clear ok_code.leave to screen 0.

when ‘EXIT’.leave program.

Endcase.Endmodule.

PROCESS AFTER INPUT.Module exit AT EXIT-COMMAND.

- O parâmetro adicional AT EXIT-COMMAND, faz com que o module seja processado antes das verificações automáticas de entrada de dados.

Academia – SAP/ABAP R3

© by BBKO Consulting 107

153

Programação On-line - Criar DialogProgram – SE80

- Crie o seu programa (ABAP Module Pool) no Development Workbench (SE80) seguindo a regra de nomenclatura abaixo:

O nome deverá iniciar com as letras SAP. A quarta posição do nome do programa deverá ser sempre M (Module

Pool). A quinta posição, no caso de programas customizáveis deverá ser Z ou Y,

(como nos programas reports, iniciados obrigatoriamente com essas letras). Escolha a opção TOP Include, pois desta forma, será criado o include que

será utilizado para a declaração dos dados globais. Se você utilizar os includes, o sistema automaticamente sugerirá os nomes

para eles, seguindo uma regra particular, de acordo com o nome do programa principal (module pool) e com um determinado sufixo, o qual facilitará a sua identificação dentro do programa.

Exemplo: O nome do TOP Include para um programa Module Pool cujo nome é SAPMZSD001 será MZSD001TOP.

Academia – SAP/ABAP R3

© by BBKO Consulting 108

154

Programação On-line - Cria DialogProgram

-Nos atributos do programa, você define o Título, categoria e a aplicação. Categoria é Module Pool e Aplicação é BASE

Academia – SAP/ABAP R3

© by BBKO Consulting 109

155

Programação On-line - Criar tela em Dialog Program

- Criar tela no Dialog Program: Posicionar o cursor no nome do programa e clicar o botão direto do mouse

Academia – SAP/ABAP R3

© by BBKO Consulting 110

156

Programação On-line - Criar tela em DialogProgram

1 - Digitar o numero da tela

Academia – SAP/ABAP R3

© by BBKO Consulting 111

157

Programação On-line - Criar tela DialogProgram

- Nos atributos da tela, digitar a descrição da tela. - Escolha a opção NORMAL, e especifique o número da próxima tela (se necessário, no momento da execução, o sistema desviará para o número da tela indicado nesse campo, caso esteja preenchido).

Academia – SAP/ABAP R3

© by BBKO Consulting 112

158

Programação On-line - Criar tela DialogProgram

Clica no ícone

- Para desenhar telas, utilize o Screen Painter. - A interface do Screen Painter Gráfico contém funções easy-to-use para definição de diversos elementos da tela (ex: campos de entrada/saída, labels, boxes, botões, etc). Você escolhe cada elemento e os posiciona na tela utilizando o mouse. - Para deletar elementos da tela, é necessário selecionar cada elemento com o mouse (foco) e pressionar delete. - É possível também mover os elementos gráficos pela tela, somente clicando e arrastando o mesmo. -Na tela acima para digitar a constante ‘Código do Funcionário’ utilizamos o ícone e digitamos esta literal no campo e para digitar o campo variável utilizamos o ícone da barra de ferramentas.

Academia – SAP/ABAP R3

© by BBKO Consulting 113

159

Programação On-line - Exemplo: Criar tela 200

-Duplo click no campo variável e então aparece a janela de atributos do campo, no nome do campo, foi digitado o nome de uma tabela e campo, então digita enter e aparece uma pergunta se este campo está associado ao Dicionário. - No nosso exemplo este campo está associado ao dicionário, através desta table ZFUNC01. - Não esquecer de ativar a tela.

Academia – SAP/ABAP R3

© by BBKO Consulting 114

160

Programação On-line - Criar tela –Declarar ariáveis

- No processamento do diálogo, os dados são passados entre as telas e programas ABAP durante a execução. O sistema efetua a comunicação automaticamente, mas é necessário que seja utilizado o nome idêntico dos campos nas telas e no module pool. - Defina os dados globais no TOP include. Para que todas as telas possam “enxergá-lo”.

Academia – SAP/ABAP R3

© by BBKO Consulting 115

161

Programação On-line - Criar Tela –Criar Modules

-Observe no exemplo acima que ‘clicando’ na tela 100, aparece o fluxo lógico da tela 0100 (PBO e PAI). - Os modules estão comentados, caso utilize, tirar os comentários e os modules serão criados em includes. - Durante o processo de criação dos módulos PAI e/ou PBO, você pode associá-los aos includes desejados ou deixar que o sistema automaticamente faça isto por você. Neste caso os módulos no PBO serão criados nos includes com o sufixo I01 (xxxxxI01), e os do PAI, nos includes com sufixo O01 (xxxxxO01). - Nos Flow Logics não são permitidos palavras reservadas (IF, PERFORM, WHILE etc) da mesma forma em que são permitidos nos programas. O Flow Logic, embora se pareça muito com o programa (o editor é o mesmo), não tem o mesmo comportamento. Ele é usado basicamente para ordenar o processamento da tela, e para isso são criados os MODULES, que têm uma função análoga à do PERFORM. - Para criarmos um MODULE, escreva o seu nome no flow logic no lugar desejado e efetue um double-click. O sistema criará uma sub-rotina iniciando com MODULE <nome> e terminando com ENDMODULE no include apropriado. Isto pode ser facilmente observado efetuando uma navegação pelo include. - Se não existirem includes, o sistema poderá criar um (se você permitir) ou poderá incluir a sub-rotina no programa principal (o que aliás, não é recomendado).

Academia – SAP/ABAP R3

© by BBKO Consulting 116

162

Programação On-line - Criar Modules

163

Programação On-line - Criar Modules

-Tirar das linhas o comentário e atribuir algum código ao GUI status e ao GUI title, no exemplo acima foi atribuído o ‘0100’.

Academia – SAP/ABAP R3

© by BBKO Consulting 117

168

Programação On-line - GUI Title e GUI Status

- Usa-se o Menu Painter para definir funções na tela em um status particular e associá-los a um apropriado menu, a saber: menu bar, standard toolbar e application toolbar. - Pode-se também definir um título para a tela. - Em geral, define-se um menu bar para cada dialog program e associa-se esse menu bar a um status. Para todos os status, define-se qual função estará ativa/inativa. - Cada alteração nos status (menus) deve ser seguida de uma re-geração da tela completa. - Para associar um status e um título a uma tela, isto deve ser feito no seu PBO, usando o comando SET PF-STATUS e SET TITLEBAR, respectivamente.

Academia – SAP/ABAP R3

© by BBKO Consulting 118

165

Programação On-line - Criação de GUI Status

166

Programação On-line - Criar GUI Status –Barra de Menu

Academia – SAP/ABAP R3

© by BBKO Consulting 119

167

Programação On-line - Criar GUI Status –Barra de Botões

-Você pode criar botões associados aos ‘Códigos’ criados na Barra de Menu ou não. - Quando cria botões, você pode associar a uma tecla de função

Academia – SAP/ABAP R3

© by BBKO Consulting 120

168

Programação On-line - Criar GUI Title

-Você pode usar até nove variáveis no título. Veja abaixo o Module chamando o titlebar ‘CONS’ passando a variável código do funcionário.

Academia – SAP/ABAP R3

© by BBKO Consulting 121

169

Programação On-line - Fluxo Lógico –tela 100

Código dos Modules, acima:

Academia – SAP/ABAP R3

© by BBKO Consulting 122

169

Programação On-line - Fluxo Lógico –tela 100

Código dos Modules, acima:

Academia – SAP/ABAP R3

© by BBKO Consulting 123

170

Programação On-line - Fluxo Lógico –tela 200

-Segue

Academia – SAP/ABAP R3

© by BBKO Consulting 124

170

Programação On-line - Fluxo Lógico –tela 200

-Segue

Academia – SAP/ABAP R3

© by BBKO Consulting 125

171

Programação On-line - Organização do Programa

Sub-Rotinas

PAI

PBO

Declarações Globais

172

Criar transação para On-Line

Academia – SAP/ABAP R3

© by BBKO Consulting 126

173

Criar transação para On-Line

- Para executar programa tipo ‘M’ (Module Pool) você deve criar pelo menos uma transação.

Academia – SAP/ABAP R3

© by BBKO Consulting 127

174

Programação On-line - Transação – ZFUNC01 – tela 100

175

Programação On-line - Tela 200 -Consulta

Academia – SAP/ABAP R3

© by BBKO Consulting 128

Apêndice A – Programação On-Line Os Componentes Principais de um Dialog Program (On-line)

· Você usa o Screen Paiter e o Menu Painter para criar e desenhar telas modelas e programas de telas.

· Você define o processamento lógico no module pool do programa ABAP/4 . · Estruturas de dados são definidas no Dicionário ABAP/4. Você pode acessar esses estruturas do

programa ABAP/4 e quando define campos de tela. · O processador de diálogo controla o fluxo do seus programa diálogo.

Screen Painter - ABAP/4

· Para criar uma tela, siga os seguintes passos: o Defina as características básicas da tela (screen atributes) o Projete um layout de tela (in full screen editor) o Defina os atributos dos campos (field list) o Escreva o fluxo lógico da tela (programa)

· Os componentes do programa ABAP/4 mais importantes são encontrados nos seguintes objetos: o Global data ou Estruturas do Dicionário no programa include TOP (declarações data) o Module PBO (Process Before Output – Processos antes de Apresentar a Tela) o Module PAI (Process After Input – Processos após Entrada de Dados) o Sub-rotinas (se necessário)

Comunicação: Tela à ABAP/4 module Pool

· O fluxo lógico da tela é dividido em dois eventos para cada tela: o O evento PBO é executado antes da tela ser apresentada. o O evento PAI é executado após o usuário pressionar ENTER.

· O sistema processa os módulos de evento numa seqüência · Em cada módulo, o controle passa do processador de diálogo para o processador ABAP/4. Depois

do processamento, o controle é retornado para o processador de diálogo. · Quando todos os módulos do PBO forem processados, o conteúdo dos campos da área de

trabalho (work área) ABAP/4 são copiados para os campos de mesmo nome da área de trabalho (work área) da tela.

· Antes do módulo PAI é processado. O conteúdo dos campos na área de trabalho da tela (work área) são copiados para campos de mesmo nome na área de trabalho (work área) ABAP/4.

Definindo o Layout (Graphical Screen Painter)

· Para projetar telas, você usa o Screen Painter. · A interface do Graphical Screen Painter contém funções fáceis de usar para definir os vários

elementos da tela (ex.: campos de entrada e saída, campos textos, caixas, etc.). Você escolhe cada elemento da tela e posiciona na tela usando o mouse.

· Para deletar elementos da tela, você seleciona o elemento com o mouse e então escolhe Delete. · Para mover elementos da tela, você usa o mouse para arrastar o elemento para a posição

desejada.

Academia – SAP/ABAP R3

© by BBKO Consulting 129

Note: Na versão 3.0, a Graphical Screen Painter é suportada pelo Windows NT, Windows 9x e UNIX. Se você está usando outro sistema operacional, você usa a Alphanumeric Screen Painter.

Academia – SAP/ABAP R3

© by BBKO Consulting 130

Visualizações de Listas de Campo (Field List Views)

ü Field types ü Texts/templates ü General attributes ü Display attributes ü Modification groups ü Matchcode/reference

· Há seis visualizações de listas de campos para manutenção dos atributos dos campos da tela.

Alternativamente, você pode defini-los de uma das listas. Manutenção de atributos para um campo também é possível no fullscreen editor.

· Você pode descobrir o correspondente do tipo de dado externo para o tipo de dado interno (ex.: tipos de dados ABAP/4) pela referida documentação da palavra chave TABLES no ABAP/4. Exemplos são os seguintes:

Tipo de dados do dicionário ABAP/4 Tipo de dados no ABAP/4 CHAR C NUMC N

Definindo o controle do fluxo

PORCESS BEFORE OUTPUT. MODULE INITIALIZE. PROCESS AFTER INPUT. MODULE READ_SPFLI.

· Você especifica a definição de seus Módulos de comandos na lógica do fluxo. · Se você escolhe um módulo com duplo clique, o sistema cria os comandos adequados MODULE

... ENDMODULE no programa include apropriado. Este é conhecido como navegação adiantada. · Se não existe o programa include, o sistema criará um se você permitir. Ele também insere um

comando INCLUDE no programa principal.

Processando o MODULE POOL

MODULE INITIALIZE OUTPUT. CLEAR SPFLI. ENDMODULE.

MODULE READ_SPFLI INPUT. SELECT SINGLE * FROM SPFLI WHERE CARRID = SPFLI-CARRID AND CONNID = SPFLI-CONNID. . . . ENDMODULE.

· Os comandos do ABAP/4 do MODULE para PBO contém uma adição OUTPUT, quando os

comandos do módulo for do módulo PAI contém uma adição INPUT.

Academia – SAP/ABAP R3

© by BBKO Consulting 131

Definindo campos no MODULE POOL

Top include MTALATOP PROGRAM SAPMTALA. TABLES: SPFLI. DATA: ... .

OU GLOBAL DATA

DATA: ... .

· No processamento de diálogo, o dado é passado entre as telas e o processamento do programa ABAP/4. O sistema executa esta comunicação automaticamente, mas você deve usar nomes idênticos nas telas e no MODULE POOL.

· Defina os campos relevantes como dados globais no programa include TOP. Para fazer isso, você processa o programa include como um todo ou relacionando seções de dados globais ou estruturas do Dicionário. Mesmo que, o programa include TOP está implicitamente no controle.

Definindo chamadas (Códigos de Transação)

STMP Programs SAPMTALA Create Transactions Escolher Código de Transação TALA Tipo de Transação X Dialog transaction Continue Transaction code TALA Transaction text Test Program SAPMTALA Screen number 100

· Você pode iniciar um programa de diálogo ABAP/4 (transação) com um específico código de transação.

· Tansações customizadas devem começar com Z ou Y. · O sistema cria suas especificações na tabela TSTC (ao invés de criar uma transação na lista de

objetos, você pode dar manutenção na tabela você mesmo)

Checagem automática de campo de Entrada

· Após o usuário ter finalizado uma tela (ex. ter entrado dados e pressionado a tecla ENTER ou ter acionado alguma outra função), mas antes dos módulos do PAI serem processados, o processador de diálogo executa um número de checagens automáticas.

· O primeiro destes s ser certificado são os campos requeridos na entrada de dados.

Academia – SAP/ABAP R3

© by BBKO Consulting 132

· Uma chave estrangeira é executada somente se um campo da tela se referir a um campo do Dicionário pela qual a checagem da tabela tem de estar definida e o atributo apropriado tem de estar selecionado.

· Em algum momento, a funcionalidade F4 é ativada. Isso significa que é possível a entrada de dados para um campo. Ex.: a chave de valores da tabela de checagem – são apresentadas.

Checando campo de entrada no MODULE POOL com diálogo de erro PROCESS AFTER INPUT. FIELD <screen field> MODULE <module>.

MODULE module INPUT. . . . MESSAGE E... . ENDMODULE.

· Se você quer checar valores de entrada no MODULE POOL e iniciar um diálogo de erro de um

resultado negativo, você usa o comando FIELD com a adição MODULE. Isto significa que o relevante módulo é executado somente para o campo especificado no comando FIELD.

· Se o módulo resulta numa mensagem de erro (E) ou warning (W), a tela é reapresentada sem o processamento dos módulos PBO. O texto da mensagem é apresentado e somente o campo checado por este módulo é apresentado para entrada de dados novamente.

· Note que somente o comando FIELD é responsável por fazer a leitura do campo para entrada novamente. Se você formular uma mensagem num módulo sem chamar o módulo no comando FIELD, a mensagem é apresentada, mas o campo não é lido para entrada de dados novamente.

Checando Grupo de Campos PROCESS AFTER INPUT. CHAIN. FIELD: screen field1, screen field2, ... screen fieldn. MODULE module. ENDCHAIN. MODULE module INPUT. ... MESSAGE E ... . ENDMODULE.

· Se você quer checar muitos campos para entrada de dados novamente no evento de um erro de diálogo, você deve especificar todos no comando FIELD e concatenar estes junto com o comando MODULE para checagem no CHAIN.

· Um campo pode ser usado em diferentes CHAINs. · Note que o comando FIELD não somente faz a leitura para entrada de dados novamente.

Qualquer um dos campos modificado durante o processamento do PAI somente se torna visíveis no evento do erro se eles são também especificados no comando FIELD do referido CHAIN.

Academia – SAP/ABAP R3

© by BBKO Consulting 133

Lendo Códigos de Função em Programas

· Cada botão deve ter um código de função · Quando o usuário pressionar o botão, o módulo PAI é acionado. · Quando o usuário chama uma função (pelo significado do botão, menu de entrada ou tecla de

função), o código de função aparece no campo que você entra no na lista de campo que os atributos pré-definidos de tamanho 4 e formato OK. Isto é conhecido como campo de OK code.

· Poder reagir a um código de função no module pool do ABAP/4, você define um identificador nomeado Ok code. Este contém o código da função atual depois do campo ter sido transportado.

· Você está recomendado a usar uma versão de backup do campo de okcode para evitar enviar uma tela que já tem um código de função.

Seqüência Dinâmica de Tela: Overview

· Você pode modificar uma seqüência de tela dinamicamente por o Usando SET SCREEN para atualizar a próxima tela temporariamente o Usando CALL SCREEN para inserir um processamento de uma ou mais telas antes da tela

atual. O processamento da tela atual continua com os comandos após esta chamada.

Ajustando a Próxima Tela Dinamicamente

· O comando SET SCREEN nnnn altera temporariamente a próxima tela. · A tela nnnn deve ter uma tela no mesmo module pool. · A próxima tela é processada depois da tela atual, a menos que você termine a tela atual com o

comando LEAVE SCREEN. · Se você quer encerrar a tela atual e ir diretamente para a próxima tela num único passo, você

pode usar o comando LEAVE TO SCREEN nnn.

Menu Painter - Overview

· Você usa o Menu Painter para definir funções na tela no stautus particular e determina-as para a barra de menus própria. Para cada status, você define que as funções de menu estão ativas ou inativas.

Definindo a Interface I

· Numa request, o sistema propõe valores padrões para barra de menu e define a tecla de função, mas você pode modificar isso.

· Barras de menu podem conter até oito menus. Você pode definir até seis destes, mas os menus System e Help são adicionados automaticamente pelo sistema.

· Um único menu contém até 15 entradas, incluindo as funções e suas descrições, nomes de sub-menus e linhas separadoras.

· Você poderia especificar também todas as funções que são ativadas num status como ativa na barra de menu.

Academia – SAP/ABAP R3

© by BBKO Consulting 134

Definindo a Interface II

· Você determina as funções ativas que um usuário provavelmente mais precisa no situação atual para a barra de botões. Antes de você fazer isso, o código de função deve ser determinado para uma tecla de função.

· Você determina códigos de função para teclas de função pelas entradas destas em “Configurações Recomendadas de Teclas de Funções” ou “Seções de Teclas de Função Definidas Livremente” .

· O sistema automaticamente define as teclas de função no padrão barra de ferramentas para teclas de função especial.

Definição Automática de Ícones para Teclas de Função

Tecla de Função Significado Icon (Símbolo) Enter Enter “ticado” F11 Salvar Pasta F3 Voltar Seta p/ a esquerda

Shift+F3 Sair (programa) Seta p/ cima F12 Cancelar (tela) “X”

Ctrl+P Imprimir Impressora Ctrl+F Pesquisar Binóculo Ctrl+G Continuar Pesquisando Binóculo “+”

Ctrl+Screen up Primeira Página Página com seta dupla Screen up Página Anterior Página com seta p/ cima

Screen down Próxima Página Página com seta p/ baixo Ctrl+Screen down Última Página Página com seta dupla

F1 Help Interrogação

· O sistema define automaticamente códigos de função que você define na barra de ferramentas padrão para teclas de função especial.

· Para descobrir quais definições aplicadas para as funções no status atual, clique no termo “Barra de Ferramentas Padrão”.

Definindo Menus de Área

· Quando for dar manutenção em Menus de Área (que são desenvolvimentos de objetos de classes), você usa uma versão especial do Menu Painter. Aqui, você define os códigos de transação para programas diálogos chamados ao invés de especificar códigos de função.

· Esses códigos de transação não têm tipos especiais de função. Eles trabalham como CALL TRANSACTION.