Você está na página 1de 134

Academia SAP/ABAP R3

Academia ABAP

Aluno: __________________________________________________

Instrutor: Ronaldo Nogueira - rnogueira@bbko.com.br

by BBKO Consulting

Academia SAP/ABAP R3

ndice
CAPTULO 1 MYSAP ERP __________________________________________________ 3 CAPTULO 2 CONCEITO DE BANCO DE DADOS RELACIONAL _______________ 9 CAPTULO 3 DICIONRIO DE DADOS _____________________________________ 10 CAPTULO 4 ABAP OPEN SQL ____________________________________________ 36 CAPTULO 5 TELA DE SELEO __________________________________________ 47 CAPTULO 6 LISTAS _____________________________________________________ 54 CAPTULO 7 LISTAS SECUNDRIAS ______________________________________ 64 CAPTULO 8 MODULARIZAO __________________________________________ 73 CAPTULO 9 DATA TRANSFER____________________________________________ 80 CAPTULO 10 PROGRAMAO ON-LINE __________________________________ 95 APNDICE A PROGRAMAO ON-LINE __________________________________ 128 OS COMPONENTES PRINCIPAIS DE UM DIALOG PROGRAM (ON-LINE) __________________ SCREEN PAINTER - ABAP/4 _________________________________________________ COMUNICAO: TELA ABAP/4 MODULE POOL ________________________________ DEFININDO O LAYOUT (GRAPHICAL SCREEN PAINTER) _____________________________ VISUALIZAES DE LISTAS DE CAMPO (FIELD LIST VIEWS) _________________________ DEFININDO O CONTROLE DO FLUXO ____________________________________________ PROCESSANDO O MODULE POOL ____________________________________________ DEFININDO CAMPOS NO MODULE POOL ______________________________________ DEFININDO CHAMADAS (CDIGOS DE TRANSAO) _______________________________ CHECAGEM AUTOMTICA DE CAMPO DE ENTRADA ________________________________ CHECANDO CAMPO DE ENTRADA NO MODULE POOL COM DILOGO DE ERRO __________ CHECANDO GRUPO DE CAMPOS _______________________________________________ LENDO CDIGOS DE FUNO EM PROGRAMAS ___________________________________ SEQNCIA DINMICA DE TELA: OVERVIEW _____________________________________ AJUSTANDO A PRXIMA TELA DINAMICAMENTE _________________________________ MENU PAINTER - OVERVIEW _________________________________________________ DEFININDO A INTERFACE I ___________________________________________________ DEFININDO A INTERFACE II __________________________________________________ DEFINIO AUTOMTICA DE CONES PARA TECLAS DE FUNO ______________________ DEFININDO MENUS DE REA _________________________________________________ 128 128 128 128 130 130 130 131 131 131 132 132 133 133 133 133 133 134 134 134

by BBKO Consulting

Academia SAP/ABAP R3

Captulo 1 mySAP ERP

O que o mySAP ERP ? Funes do mySAP ERP . Arquitetura trs camadas. Landscape. Sistema de Transporte.

O que o mySAP ERP ?

O mySAP ERP um conjunto integrado de aplicativos para tratar o processamento de dados de grandes corporaes. Foi desenvolvido na Alemanha pela empresa SAP (Systems Applications and Products for data processingAplicativos e produtos de sistemas para processamento de dados).
3

by BBKO Consulting

Academia SAP/ABAP R3

Funes mySAP Business Suite

BASIS
4

Oferece uma soluo integrada de aplicativos empresariais. Todos os mdulos de aplicativos do mySAP ERP 2005 (ECC 6.0 Atual) so escritos em ABAP (Advanced Business Application Programing), que interpretado pelo Application Server que fica localizado na camada SAP NetWeaver, que por sua vez, so executadas no sistema Operacional.

(SAP NetWeaver como um sistema operacional para o mySAP ERP 2005 (ECC 6.0). Ele fica entre o cdigo ABAP e o sistema operacional.). Mdulos Localizados no MySAP ERP MM (Materials Management Gerenciamento de Materiais) SD (Sales and Distribution Vendas e Distribuio) FI (Financial Accounting Contabilidade Financeira) PP (Production Planning Planejamento da Produo) HR (Human Resources Recursos Humanos) WF (Workflow Fluxo de Trabalho) PS (Project System Sistema de Projeto) e outros.

by BBKO Consulting

Academia SAP/ABAP R3

Papis e Responsabilidades

Basis Responsvel pela instalao do ERP e configuraes do mesmo (ex. impressoras, links, administrao de usurios e etc.) ABAP Programador Funcionais Responsvel pela parametrizao e adequao dos processos de um determinado mdulo.

by BBKO Consulting

Academia SAP/ABAP R3

Arquitetura 3 camadas Cliente/Servidor

O Sistema R/3 baseado na arquitetura cliente/servidor com 3 camadas: Servidor de dados, servidor de aplicaes e servidor de apresentao. A arquitetura de 3 (trs) camadas faz o sistema facilmente escalvel. Para adicionar usurios, voc precisa instalar mais servidores de apresentao. Voc pode tambm aumentar a eficincia do todo o sistema adicionando mais servidores de aplicao associados aos seus work processes. Servidor de aplicativos consiste em um dispatcher e mltiplos processos de trabalho (work process). Todas as solicitaes provenientes de servidores de apresentao so dirigidas primeiro ao dispatcher. O dispatcher grava-as primeiro na camada do dispatcher. O dispatcher extrai as solicitaes da camada utilizando o algoritmo primeiro a entrar, primeiro a sair (FIFO). Cada solicitao ento alocada para o primeiro work process disponvel. Um work process trata uma solicitao por vez.
Tipo de processo D (Dialog) V (Update) B (Background) S (Spool) E (Enqueue) M (Message) G (Gateway) Tipo de solicitao de trabalho Solicitaes de dilogo. Solicitaes para atualizar dados no banco de dados. Trabalhos de segundo plano. Imprime solicitaes do spool. Solicitaes de bloqueio lgico. Roteia as msgs. entre os serv. de aplicativo dentro do sistema R/3. Afunila as mensagens dentro e fora do sistema R/3.

by BBKO Consulting

Academia SAP/ABAP R3

System Landscape
Sistema de Desenvolvimento Sistema de QA Sistema de Produo
PROD

DEV

QTST
Client Copy Client Client Transport

Client Copy

MAST

Transport

MAST

Client Copy

Client Copy

SBOX

TRAI

Client-indep. Customizing Repository Objects

Workbench Request

Client-indep. Customizing Repository Objects

Workbench Request

Client-indep. Customizing Repository Objects 6

by BBKO Consulting

Academia SAP/ABAP R3

Workbench Organizer e o Sistema de Transporte

O Workbench Organizer permite ao usurio desenvolver o software de maneira organizada. O Sistema de transporte prove a execuo do transporte. Os objetos de repositrio so conectados para o sistema de transporte pela classe de desenvolvimento e associaes com change requests. Depois que as requests foram liberadas no sistema de desenvolvimento, ela ento transportada para a rota pr determinada: sistema de qualidade ou para o sistema de produo.

by BBKO Consulting

Academia SAP/ABAP R3

Captulo 2 Conceito de Banco de Dados Relacional

Conceito de Banco de Dados Relacional

Conceito de Banco de Dados


Campo Registro Coluna Tabela Unicidade de Registro Chave Primaria (PK) e Chave Alternativa (AK) Relacionamento Chave Estrangeira (FK) ndice

by BBKO Consulting

Academia SAP/ABAP R3

Captulo 3 Dicionrio de Dados

Dicionrio de Dados

by BBKO Consulting

10

Academia SAP/ABAP R3

Dicionrio de Dados
Domnio Elemento de Dados Campos Registros Tabelas
Transparentes Interna

O Dicionrio Abap permite um gerenciamento central de todas as definies de dados usada no sistema R/3 No Dicionrio voc pode criar tipos definidos pelo usurio (data elements, estruturas e table types). Objetos de banco de dados, tais como tabelas e views de banco de dados, tambm podem ser definidas no Dicionrio ABAP e criada com estas definies no banco de dados. O Dicionrio ABAP tambm prov um nmero de servio que apiam o desenvolvimento de programas. Por exemplo, lock de tabelas, search help (F4) e ajuda de campo (F1 help) usados nos campos de uma tela.

by BBKO Consulting

11

Academia SAP/ABAP R3

Dicionrio de Dados - Tipos no Dicionrio ABAP

10

Dicionrio de Dados - Tipo de Dados mais utilizados


Tipo CHAR Descrio

String de caractere (mximo de 255 caracteres) DEC Valores decimais DATS Campo Date TIMS Campo Time INT1, INT2, INT4 Valores inteiros NUMC Campo de caractere que pode conter apenas numricos

11

by BBKO Consulting

12

Academia SAP/ABAP R3

Dicionrio de Dados - Tipos de Dados ABAP


Tipos de Dados

T1 TYPE I.

T2(5) TYPE P.

DATA D1 TYPE T1

DATA D3 TYPE T1 VALUE 123,

DATA D5 TYPE T2 VALUE 1.23

DATA D6 TYPE T2.

Grupo de Tipos
12

Data types: Apenas descrio do type No ocupa memria Caracteriza os atributos tcnicos de todos os data objects que possuem um type especificado Data Objects: uma concreta representao do type Cada data object tem um type especfico e ocupa espao em memria

by BBKO Consulting

13

Academia SAP/ABAP R3

Dicionrio de Dados - Objetos Bsico no Dicionrio


Tabela 1 .... Valor_compra Material
Campo

Tabela 2 ...
Uma tabela composta de campos

....

Campo Valor_venda Material

...

Elemento de Dados

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

MATNR

MATNR

Domnio MATNR

Uma definio de elemento de dados exige um domnio

Domnio MATNR

13

Os objetos bsicos do Dicionrio ABAP so: tabelas, data elements e domnios Domnio descreve os atributos tcnicos dos campos das tabelas (ex: tipo, tamanho do campo), enquanto os data elements contm a definio semntica (descrio curta)

by BBKO Consulting

14

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Domnio


Transao SE11

14

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

by BBKO Consulting

15

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Domnio


Transao SE11

15

Dicionrio de Dados - Criar Elemento de Dados


Transao SE11

16

by BBKO Consulting

16

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Elemento de Dados


Transao SE11

17

Dicionrio de Dados - Criar Elemento de Dados


Transao SE11

18

by BBKO Consulting

17

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Elemento de Dados


Transao SE11

19

Dicionrio de Dados - Tipos de Tabelas no R/3


Estruturas
- Uma estrutura (categoria estruturada) composta por componentes (campos). Os componentes so tipificados. - As estruturas so em particular utilizadas para definir os dados na interface de pools de mdulos e telas, assim como para atribuir o tipo aos parmetros de mdulos de funo.

Tabelas Transparentes
- Uma tabela transparente tem relacionamento um-para-um com uma tabela no banco de dados. - Ns criamos somente tabelas transparentes

23

by BBKO Consulting

18

Academia SAP/ABAP R3

Dicionrio 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 Dicionrio.

Tabelas de Cluster
- Uma tabela de Cluster tem um relacionamento de muitos-paraum com uma tabela no banco de dados. Para uma tabela no banco de dados, h muitas tabelas no Dicionrio. Muitas tabelas de cluster de cluster so armazenadas em uma nica tabela no banco de dados chamada de cluster de tabelas. Os clusters de tabela armazenam dados de vrias tabelas baseadas nos campos de chave primria que elas tm em comum.
24

Dicionrio de Dados - Criar Tabela Transparente


Transao SE11

21

by BBKO Consulting

19

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Pasta Caractersticas

22

Dicionrio de Dados - Criar Tabela Transparente


Pasta Entrega e Atualizao

27

by BBKO Consulting

20

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Pasta Campos

24

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 manuteno da tabela Z ou Y, checado se o material gravado nesta tabela, existe na tabela Mestre de Material (MARA)

by BBKO Consulting

21

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Pasta Entrs. Possveis/Verificaes

25

Dicionrio de Dados - Criar Tabela Transparente


Pasta Campos Moeda/Quant.

26

Para campos do tipo moeda (valores) e quantidade, necessrio definir tabela e campo de referncia.

by BBKO Consulting

22

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Check Table no Campo Material

27

Dicionrio de Dados - Criar Tabela Transparente


Check Table no Campo Material

28

by BBKO Consulting

23

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Check Table no Campo Material

29

Atribuir uma mensagem de erro para este check table. Neste caso foi criada uma classe de mensagem ZCURSO_00, com nmero de mensagem 001, atravs da Transao SE91

by BBKO Consulting

24

Academia SAP/ABAP R3

Dicionrio de Dados - Chaves Primrias e Estrangeira


Chave Primria

Chave Secundria / Alternativa

Chave Estrangira

34

Dicionrio de Dados - Chaves Primrias e Estrangeira

Tabela Mand

ZFUNC
Salario Area

CodFunc Cod Depto Nome

Campos Chaves Check Table Chave Primria Chave Estrangeira

Check Table Mand CodDepto

ZDEPTO
Fone Fax

Campos Chaves Chave Primria

31

by BBKO Consulting

25

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Configuraes Tcnicas

32

by BBKO Consulting

26

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Opes Tcnicas

33

Opes Tcnicas: Data Class Define a rea fsica 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 Modificaes na entrada da tabela so armazenadas, mas tambm tem que setar o parmetro rec/client (pode provocar gargalos no sistema (devido a esses adicionais acessos).

by BBKO Consulting

27

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela Transparente


Ativar Tabela

34

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 tambm os mesmos nomes e os tipos do campo no ABAP Dicitionary so convertidos para os tipos de dados correspondentes no sistema do banco de dados.

by BBKO Consulting

28

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Estrutura

35

Dicionrio de Dados - Criar Estrutura

36

by BBKO Consulting

29

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Estrutura


Pasta Componentes

37

Na criao da estrutura no precisa definir o mandante, pois armazena os dados somente em tempo de execuo.

Dicionrio de Dados - Criar Estrutura


Pasta Campos moeda/quantidade

38

by BBKO Consulting

30

Academia SAP/ABAP R3

Tabela Interna

43

Tabela Interna - Conceito

reas de memria chamadas Tabelas Internas, so utilizada para realizar alguns processamentos no ABAP. Nessas reas de memria so alocados dados que existem (ou existiro) apenas em tempo de execuo do programa, e que podem variar de uma execuo para outra ou ainda durante a mesma execuo.

44

by BBKO Consulting

31

Academia SAP/ABAP R3

Tabela Interna - Conceito

No dia-a-dia do programador as tabelas internas tm um papel fundamental, pois atravs delas que se manipula a maior parte dos dados de um programa. Alm disso, so de fcil manuseio, sendo sua declarao (de tipos, estrutura) e atribuio de contedo (valores) muito simples. possvel, por exemplo, declarar uma tabela interna com a mesma estrutura (tipos, campos, etc.) de uma tabela do banco de dados (fsico tabelas transparentes), e, atravs de um comando SELECT, copiar todo o contedo da tabela do banco de dados para a tabela interna.

45

Dicas - Tabela Interna - Conceito

As tabelas internas possuem uma rea de trabalho chamada Header (cabealho), que permite o acesso e uso mais flexvel dos registros da mesma. O comando LOOP, por exemplo, ao varrer/ler uma tabela interna registro a registro, envia o registro corrente para o Header, permitindo que o programador manipule esse registro de diversas maneiras. Exemplo: Imprim-los na tela(comando WRITE), utilizando seus campos para executar clculos, comparar valores, etc.
46

by BBKO Consulting

32

Academia SAP/ABAP R3

Dicas - Field String x Tabela Interna


Field String Cod Cliente Nome

Cidade

Rua

Bairro

Tabela Interna Cod Cliente Nome

Cidade

Rua

Bairro

47

by BBKO Consulting

33

Academia SAP/ABAP R3

Dicas - Field String e Tabela Interna


Declarando Tabelas Internas
* Declarao de Tipos TYPES : begin of type_clientes, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, addrnr TYPE kna1-addrnr, end of type_clientes.

* Declarao de Tabelas Internas Data : tg_clientes TYPE TABLE OF type_clientes.

49

Dicas - Tabela Interna

Operaes 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.

50

by BBKO Consulting

34

Academia SAP/ABAP R3

Dicas - Tabela Interna


Operaes 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 contedo da estrutura) 9. REFRESH tg_clientes.(Deleta todos os registros da tabela interna, porem o espao de memria ainda fica ocupada) 10.FREE tg_clientes. Deleta todos os registros da tabela interna, limpa a memria) 11. DESCRIBE TABLE tg_clientes LINES vg_linhas (carrega o nmero de registros da tabela interna na varivel vg_linhas)

51

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


-Grava o contedo 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 tenha a mesma estrutura. Soma os campos do tipo P,I e F)

APPEND <TAB>

COLLECT <TAB>

Cod Func 9944

Cod Depto HR

Salrio 1000,00

Cod Func 9944

Cod Depto HR

Salrio 1000,00

9944 9933 0100

HR INFO FINAN

1000,00 500,00 2000,00

9944 9933 0100

HR INFO FINAN

1000,00 500,00 2000,00

2000,00 52

by BBKO Consulting

35

Academia SAP/ABAP R3

Captulo 4 ABAP Open SQL

Open SQL

47

ABAP Open SQL - Acessando a

base de dados
SELECT INSERT DELETE UPDATE MODIFY

48

by BBKO Consulting

36

Academia SAP/ABAP R3

ABAP Open SQL Select Sintax

SELECT matnr INTO TABLE tg_mara FROM mara WHERE matnr = p_matnr.
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.

Campos Selecionados Destino dos dados (Tabela Interna) Origem dos dados (Tabela Transparente) Condio para a seleo dos dados

Ex. Declaraes para tabela interna

DATA tg_mara TYPE TABLE OF type_mara


55

by BBKO Consulting

37

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco de Dados

Programa ABAP Dicionrio ABAP

Open SQL

Banco de Dados

Relatrio

49

- Para ler os dados das tabelas do banco de dados, voc precisa utilizar o comando SELECT - O ABAP contm comandos similares ao do SQL padro, na qual voc pode acessar seu banco de dados. ABAP OPEN SQL tem as seguintes caractersticas: - Sintaxe corresponde sintaxe do SQL padro - O ABAP SQL um subconjunto do SQL padro - O ABAP SQL contm SAP short forms - As tabelas devem ser definidas no Repositrio ABAP e tem chave primria.

by BBKO Consulting

38

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco de Dados


Acesso de um registro SELECT SINGLE
Seleciona dados do cliente cdigo 10 Report ZSQL. Tables: KNA1 Data: vg_kunnr like kna1-kunnr, vg_name1 like kna1-name1, vg_addrnr like kna1-addrnr. SELECT SINGLE KUNNR Cdigo do cliente NAME1 Nome ADDRNR Rua e Nr. INTO (vg_kunnr, vg_name1, vg_addrnr) FROM kna1 Tabela transparente de clientes WHERE kunnr = 0000000010.

Para fazer SELECT SINGLE, voc precisa passar como parmetro na condio WHERE a chave completa da tabela transparente. Neste exemplo acima, os campos selecionados foram armazenados em variveis de memria, declarados no comando DATA

57

ABAP Open SQL - Acesso ao Banco de Dados


Processa em LOOP SELECT e ENDSELECT
* Seleciona os clientes de So Paulo SELECT * FROM kna1 Tabela de clientes WHERE 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 condio WHERE os dados so movidos para uma tabela interna.

58

by BBKO Consulting

39

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco de Dados


Move campos para tabela interna, no fica em LOOPING
* Seleciona documentos de venda dos clientes de So Paulo SELECT KNA1~KUNNR Cdigo do cliente KNA1~NAME1 Nome VBAK~VBELN Numero do documento de venda INTO TABLE tg_docvendas FROM kna1 Tabela de clientes INNER JOIN vbak ON vbak~kunnr = kna1~kunnr WHERE kna1~land1 = BR AND kna1~regio = SP.

INTO TABLE: L os registros da tabela e move para uma tabela interna. Sobrepe os registros existentes. APPENDING TABLE: no sobrepe os registros existentes, ele move para o fim da tabela interna.

59

ABAP Open SQL - Join entre Tabelas INNER JOIN


Tabela Mand SPRAS

MAKT
MATNR MAKTX
Check Table Mand

Check Table Campos Chaves Chave Estrangeira Chave Primria

MARA

MATNR

SELECT INTO FROM INNER

mara~matnr makt~maktx TABLE tg_materiais mara JOIN makt ON makt~matnr = mara~matnr AND makt~spras = sy-langu WHERE mara~matnr = p_matnr.

Campos Chaves Chave Primria

60

by BBKO Consulting

40

Academia SAP/ABAP R3

ABAP Open SQL - Join entre Tabelas FOR ALL ENTRIES


SELECT INTO FROM WHERE matnr TABLE tg_mara mara 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 seleo. Pois isso ir acarretar a seleo de todos os registros da tabela utilizada na clausula FROM.

61

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: Insert
TABLES ZTABELA ZTABELA-MATNR ZTABELA-CAMPO2 ZTABELA-CAMPO3 = 10'. = 002'. = INSERT'.

INSERT INTO ZTABELA VALUES ZTABELA.

53

by BBKO Consulting

41

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: Delete
TABLES ZTABELA. DELETE FROM ZTABELA WHERE MATNR = 10'.

54

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: Update
UPDATE ZTABELA SET CAMPO2 = '002 CAMPO3 = UPDATE' WHERE MATNR = 20'.

64

by BBKO Consulting

42

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco de Dados

Acesso: Modify
TABLES ZTABELA. ZTABELA-MATNR ZTABELA-CAMPO2 ZTABELA-CAMPO3 MODIFY ZTABELA. = 30'. = 002'. = MODIFY'.

Comando MODIFY: ou altera um registro com a chave j existente ou se no existe, adiciona um novo.

65

by BBKO Consulting

43

Academia SAP/ABAP R3

Tipos de Programas

66

Dicas - Tipos de Programas

Relatrios
- O programa consiste em duas telas, a primeira tela chamada de tela de seleo (selection screen) , nesta tela voc define os critrios do relatrio e filtros. A segunda tela a tela de sada, contm a lista.

Programas de Dilogo (Dialog / On-Line)


- O programa pode ter vrias telas, em cada tela voc pode ter dados de entrada, sada, botes, table control...

Includes

58

by BBKO Consulting

44

Academia SAP/ABAP R3

Dicas - Editor ABAP


Transao SE38, para Relatrios/Includes

59

-Os relatrios consistem em cinco componentes: - Cdigo Fonte - As Caractersticas - Os elementos de texto - A documentao - As variantes

by BBKO Consulting

45

Academia SAP/ABAP R3

Dicas - Declaraes Bsicas nos programas ABAP


Tables Define tabelas ou estruturas com o mesmo nome existente no Dicionrio de Dados. Types Definio de Tipos de Dados. Data - Define campos, varivel ou string de campo. Constants Define um campo/varivel com valor constante, ou seja, no 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.

69

by BBKO Consulting

46

Academia SAP/ABAP R3

Captulo 5 Tela de Seleo

Tela de Seleo

63

Tela de Seleo

Tela de Seleo Eventos da Tela de Seleo

62

by BBKO Consulting

47

Academia SAP/ABAP R3

Tela de Seleo - Exemplo de Parameters

63

by BBKO Consulting

48

Academia SAP/ABAP R3

Tela de Seleo - Exemplo de Select-options

64

-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.

by BBKO Consulting

49

Academia SAP/ABAP R3

Tela de Seleo - 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 ASC p_dat radiobutton group g1. " Tipo DAT parameters : p_pc p_unix

radiobutton group g3 default 'X', radiobutton group g3.

" Tipo PC " Tipo UNIX

SELECTION-SCREEN END OF BLOCK entre.

66

Tela de Seleo - Eventos da Tela de seleo

67

by BBKO Consulting

50

Academia SAP/ABAP R3

Tela de Seleo - Eventos em Bloco


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

Initialization. p_data = p_data 10.

Seta valores para a tela de seleo

Start-of-Selection. Write: p_data.

Incio do processamento dos dados

A seqncia dos eventos no cdigo fonte no tem efeito na sequencia na qual eles so chamados pelo ABAP Runtime System

68

Dicas

71

by BBKO Consulting

51

Academia SAP/ABAP R3

Dicas - Processando Strings

Example DATA letters(3) TYPE C. MOVE 'abc' TO letters. TRANSLATE letters TO UPPER CASE. letters now has the contents 'ABC'

Example DATA: letters(20) TYPE C VALUE 'abcabcabcXabc', change(15) TYPE C VALUE 'aXbaYBabZacZB'. TRANSLATE letters USING change. letters now contains 'XaZXaZXaZXXaZ'

70

Dicas - Processando Strings


Exemplo DATA 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.

71

by BBKO Consulting

52

Academia SAP/ABAP R3

Dicas LOOPs

DO WHILE LOOP

... ENDDO ... ENDWHILE ... ENDLOOP

SELECT ... ENDSELECT

72

by BBKO Consulting

53

Academia SAP/ABAP R3

Captulo 6 Listas

Listas

84

Listas

Formatao de Sada das Listas Definir o Formato das listas Armazenar Listas Imprimir Listas Controle de Nvel das Listas, utilizando tabela Interna

82

by BBKO Consulting

54

Academia SAP/ABAP R3

Listas - Formatao das Listas

Parmetros de Sada:
Write ... Format ... New-Page ...

Eventos
TOP-OF-PAGE. END-OF-PAGE.

Elementos de Texto
Text Symbols Heading Selection texts

System fields (tabela Syst)


83

by BBKO Consulting

55

Academia SAP/ABAP R3

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.

84

-WRITE: -Comando que gera sada de dados no relatrio. -Exemplo: WRITE 'Hello, here I am!'. -System fields (tabela SYST): -Alguns campos da tabela SYST so interessantes para uso em

reports: -SY-PAGNO: -Nmeros da pagina.


-SY-DATUM: -Data atual. -SY-UZEIT: -Hora atual. -SY-UNAME: -Usurio do login.

by BBKO Consulting

56

Academia SAP/ABAP R3

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.

85

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

by BBKO Consulting

57

Academia SAP/ABAP R3

Listas - Exemplo usando New Page


Com o parmetro New-Page, voc pode forar uma nova pgina. O contador de pgina ajustado automaticamente e o cabealho especfico exibido. Report Rel1. DATA: DATUM Type D, TIME TYPE T. * Nova pgina NEW_PAGE. Write: /5 Usurio(003), sy-uname, 80 text-001, sy-page. Pgina 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.
86

-NEW-PAGE: -Salta uma pagina do relatrio.

by BBKO Consulting

58

Academia SAP/ABAP R3

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


Voc pode usar o parmetro NO STANDARD PAGE HEADING no parmetro do REPORT para desabilitar a linha de cabealho do sistema. Se uma nova pgina iniciada o sistema chama o evento TOP-OF-PAGE. Report Rel1 NO STANDARD PAGE HEADING line-size 132 line-count 15. DATA: DATUM Type D, TIME TYPE T. * Nova pgina TOP-OF-PAGE. Write: /5 Usurio(003), sy-uname, 80 text-001, sy-pagno. PginaO END-OF-PAGE no ocorre quando a quebra de pgina END-OF-PAGE. ULINE. WRITE: /10, TEXT-001. FIM DE PGINA DATUM = SY-DATUM. TIME = SY-UZEIT. Format color col_normal. WRITE: 5 Data(001), 20 DATUM DD/MM/YYYY. Skip 2. Pula duas linhas Format color off. WRITE: /5 Hora (002), TIME using edit mask _ _:_ _:_ _ under datum.

foi chamada por um evento NEW -PAGE. O tamanho da Pgina deve ser determinado pelo parmetro do line-count Para chamar o bloco do processamento do END-OF-PAGE

87

-Eventos: -Eventos so identificados por uma palavra-chave de evento, ou seja, o

prprio nome do evento. Eles terminam onde o bloco do prximo evento comea. O prximo 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 relatrios so:
-INITIALIZATION: -Prprio para inicializar os campos da tela de seleo. E

executado antes da exibio da tela.


-START-OF-SELECTION: -Neste evento e colocada a lgica principal da montagem

do relatrio. E executado logo apos a tela de seleo.


-END-OF-SELECTION: -E executado apos o START-OF-SELECTION, antes da

apresentao da lista.

by BBKO Consulting

59

Academia SAP/ABAP R3

Listas - Armazenar Listas


Voc pode armazenar listas resultante de programa

88

by BBKO Consulting

60

Academia SAP/ABAP R3

Listas - Enviar diretamente p/ impressora


O parmetro NEW-PAGE PRINT ON envia a lista para o SAP spool database O parmetro NO DIALOG desabilita a exibio da tela de parmetros de impresso. Report rel3. NEW-PAGE PRINT ON NO DIALOG DESTINATION LPT1 IMMEDIATELY X. WRITE: / ....

89

Listas - Controle de Nvel: Tabela Interna


Ao processar tabelas internas com o comando LOOP, voc pode executar processamentos com nvel de controle, utilizando tais parmetros: 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.

91

by BBKO Consulting

61

Academia SAP/ABAP R3

Listas - Controle de Nvel: Tabela Interna


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

LOOP AT ITAB ... ... ... ... ENDAT. ENDAT. ENDAT. ENDAT.

FIRST. SORT TG_ITAB BY ORT01 NAME1 ADDRNR . AT AT NEW < campo> LOOP AT TG_ITAB INTO ST_ITAB. AT END OF < campo> AT NEW ORT01. AT LAST. WRITE: / ST_ITAB-ORT01. ENDLOOP 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.
92

Listas - Controle de Nvel: ON CHANGE


Para o comando ON CHANGE o campo da tabela interna no 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.
93

by BBKO Consulting

62

Academia SAP/ABAP R3

Dicas

96

Dicas - Comando Message


Message Ennn with <field1> <field2> <field3> <field4> (<message-class>) Tipo de mensagens: E Erro A Abend X Exit (termina com um short Dump) W Warning I Informao S - Sucesso

No parmetro REPORT pode-se acrescentar o parmetro MESSAGE-ID. Exemplo: REPORT ZSDR0010 NO STANDARD PAGE HEADING LINE-SIZE 132 LINE-COUNT 65 MESSAGE-ID ZSD.

94

by BBKO Consulting

63

Academia SAP/ABAP R3

Captulo 7 Listas Secundrias

Listas Secundrias

98

by BBKO Consulting

64

Academia SAP/ABAP R3

Listas Secundrias

96

-O ABAP runtime system : - Exibe a lista bsica. A varivel de sistema SY-LSIND = 0 (contador de lista) - Neste exemplo, se voc clicar duas vezes sobre uma linha da lista bsica, ser exibido detalhes desta linha, isso atravs do evento AT-LINE-SELECTION

by BBKO Consulting

65

Academia SAP/ABAP R3

Listas Secundrias - Como selecionar

97

Listas Secundrias - Exemplo do comando HIDE


HIDE <data object>
Line 1 2
1 2 3

Hide Area

Line

WA_ZFUNC-NUM_ID 0000000001 0000000002 0000000003

98

by BBKO Consulting

66

Academia SAP/ABAP R3

Listas Secundrias - Exemplo


SY-LSIND = 0

Duplo click na linha do relatrio, ou clicar no cone

SY-LSIND = 1 Traz dados da Lista Secundria

SY-LSIND = varivel de sistema de indica o ndice da lista corrente

99

by BBKO Consulting

67

Academia SAP/ABAP R3

Listas Secundrias - Exemplo

100

Listas Secundrias - Lista Secundria


com GUI STATUS

Lista Bsica

Lista Secundria

101

by BBKO Consulting

68

Academia SAP/ABAP R3

Listas Secundrias - GUI Title e GUI Status

102

Listas Secundrias - Menu Painter SE41

103

by BBKO Consulting

69

Academia SAP/ABAP R3

Listas Secundrias - Menu Painter

104

Listas Secundrias - Gui Status (exemplo: LIST)

105

by BBKO Consulting

70

Academia SAP/ABAP R3

Listas Secundrias - Barra de Menu

106

Listas Secundrias - Barra de


Ferramentas da Aplicao

107

by BBKO Consulting

71

Academia SAP/ABAP R3

Listas Secundrias - Menu Standard

108

Listas Secundrias - Lista Secundria 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. SELECT matnr ersda ernam FROM mara INTO TABLE tg_mara WHERE matnr in so_matnr. LOOP AT tg_mara INTO st_mara. WRITE: /'Material', t_mara-matnr, t_maraersda, t_mara-ernam. HIDE: tg_mara. ENDLOOP.

AT USER-COMMAND. CASE sy-ucomm. WHEN 'TEXTO'. SET pf-status 'LIST' excluding 'TEXTO'. DATA: tg_mara TYPE TABLE OF TYPE_MARA, SET titlebar 'LIST1'. st_mara TYPE TYPE_MARA, st_makt TUPE TYPE_MAKT. SELECT single matnr maktx INTO (st_makt-matnr,st_makt-maktx) select-options: so_matnr for mara-matnr. FROM makt **************************************** WHERE matnr = t_mara-matnr AND * Evento START-OF-SELECTION spras = 'P '. **************************************** start-of-selection. WRITE: 'Material lista secundria', set pf-status 'LIST'. st_makt-matnr, st_makt-maktx. set titlebar 'LIST'. ENDCASE.
110

by BBKO Consulting

72

Academia SAP/ABAP R3

Captulo 8 Modularizao

Modularizao

75

Modularizao
Sub-rotinas Grupo de Funes Funes

74

by BBKO Consulting

73

Academia SAP/ABAP R3

Modularizao - Subrotinas

Inicio do Programa

Perform carrega_tab Using Campo 1 Changing tab1

Form carrega_tab Using Campo 1 Changing tab1

....

75

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, aps a linha do comando PERFORM.

by BBKO Consulting

74

Academia SAP/ABAP R3

Modularizao - Chamando por valor e por referncia

76

Os parmetros podem ser enviados por referncia ou por valor: - Por referencia: o parmetro destino faz referencia ao endereo do parmetro origem. - Por valor: Quando a sub-rotina chamada, uma varivel local criada e o contedo copiado, existem dois tipos de chamadas por valor: - chamada por valor: passa apenas os contedos - chamada por valor e resultado: passa o contedo do campo e toda alterao efetuada no campo, na sub-rotina e passada de volta.

by BBKO Consulting

75

Academia SAP/ABAP R3

Modularizao - Grupo de Funo e Funo

77

Mdulo de funo so unidades modulares com a interface. A interface pode conter os seguintes elementos: Parmetros de Importao: so parmetros passados para o mdulo de funo. Em geral, estes so associados aos tipos do Dicionrio ABAP. Podem ser opcionais. Parmetros de Exportao: so passados do mdulo de funo para o programa chamador. Parmetros de exportao so sempre opcionais. Parmetros Modificveis: so passados para o mdulo de funo e podem ser alterados pela funo. Podem ser opcionais. Excees: So usados para interceptar erros. Se um erro aciona uma exceo na funo, esta funo pra. Voc pode associar nmeros a exceo no programa, na qual so verificados pelos valores do sy-subrc. Cada mdulo de funo pode conter dados locais e acessar dados globais, pertencentes ao grupo de funo.

by BBKO Consulting

76

Academia SAP/ABAP R3

Modularizao - Grupo de Funo e Funo


Grupo de Funes e Funes

78

- Um grupo de funo um programa ABAP do tipo F, na qual o programa criado exclusivamente para conter mdulos de funo. Os mdulos de funo podem ser chamados de qualquer programa ABAP.

by BBKO Consulting

77

Academia SAP/ABAP R3

Modularizao - Grupo de Funo e Funo

1. Criar o Grupo de funo

2. Associar o mdulo de funo ao Grupo

Crie grupo de funo por assunto, evite utilizar vrios mdulos de funo num mesmo grupo, pois se algum estiver codificando um mdulo, e voc quiser transportar a sua funo e eles pertencerem ao mesmo grupo, voc s vai conseguir transportar no momento que todos as funes deste grupo estiverem sem erro de sintaxe.

79

Modularizao - Exemplo de programa e funo

80

by BBKO Consulting

78

Academia SAP/ABAP R3

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 Relatrio ALV' it_fieldcat = tg_fieldcat[ ] TABLES fieldcat-col_pos = = t_outtab = Tabela de Dados fieldcat-key fieldcat-tabname = EXCEPTIONS fieldcat-fieldname fieldcat-seltext_l program_error =1 fieldcat-seltext_m OTHERS = 2. fieldcat-seltext_s

'01'. 'X'. 'T_ALV'. = 'COL_01'. = 'Material'. = 'Material'. = 'Material'. fieldcat-fix_column = 'X'. Append fieldcat.
119

by BBKO Consulting

79

Academia SAP/ABAP R3

Captulo 9 Data Transfer

Transferncia de Dados

114

Transferncia de Dados
Processando Arquivo Seqencial Call Transaction Batch Input

111

by BBKO Consulting

80

Academia SAP/ABAP R3

Transferncia 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. IF SY-SUBRC NE 0. EXIT. ENDIF. APPEND T_DATA_LOAD. ENDDO. ENDIF.

"l um reg. do arquivo

"fim de arquivo/arq. s/ registros "indica fim de arquivo

112

Transferncia de Dados - Binary Mode e Text Mode

113

by BBKO Consulting

81

Academia SAP/ABAP R3

Transferncia de Dados - Gerando arquivo seqencial -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'. .....
114

Transferncia de Dados - Acesso a arquivos externos


Entrada de dados - Inbound Acesso a arquivo externo via PC, utilizar a funo: call function GUI_UPLOAD' exporting filename = l_filename filetype = v_type tables data_tab = t_data_load exceptions conversion_error = 1 file_open_error = 2 file_read_error = 3 invalid_type = 4 no_batch = 5 unknown_error = 6 invalid_table_width = 7 gui_refuse_filetransfer = 8 customer_error = 9 others = 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 arquivo IF SY-SUBRC NE 0. "fim de arquivo/arq. s/ registros EXIT. "indica fim de arquivo ENDIF. APPEND T_DATA_LOAD. ENDDO.

115

by BBKO Consulting

82

Academia SAP/ABAP R3

Transferncia 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.

116

Transferncia de Dados - Acesso a arquivos externos


Sada de dados - Outbound
Acesso a arquivo externo via PC, utilizar a funo: CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = V_ARQSAIDA TABLES DATA_TAB = T_SAIDA EXCEPTIONS OTHERS = 8.

117

by BBKO Consulting

83

Academia SAP/ABAP R3

Transferncia 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>.

118

Transferncia de Dados - Transferindo Dados Externos


SAP ( Host )

Dados Externos

SAP INTERFACES

BANCO SAP

119

by BBKO Consulting

84

Academia SAP/ABAP R3

Transferencia de Dados - Transferindo Dados Externos


Arquivo Seqncial

READ DATASET
Programa de BATCH INPUT

Dicionrio ABAP/4

Estrutura BDCDATA
Tabela BDC INCLUDE STRUCTURE

CALL FUNCTION

FILA

120

Transferncia de Dados - Seqncia p/ Batch Input


ABRIR SESSO DE BATCH INPUT

INSERIR DADOS DA TRANSAO

FECHAR SESSO DE BATCH INPUT

121

by BBKO Consulting

85

Academia SAP/ABAP R3

Transferncia de Dados - Entrada e Sada de Dados


Atualizando dados
Update Z_CONTAS set fornecedor = X Where grupo = 1.

Update no deve ser utilizado para atualizar dados de tabelas Standard do SAP. Toda a atualizao deve ser feita atravs das transaes que garantam a integridade da base de dados. Esta atualizao feita atravs do comando Call Transaction.

Call Transaction
WA_BDCDATA-PROGRAM = 'SAPMS38M'. Informa o nome/numero da tela WA_BDCDATA-DYNPRO = '0100'. WA_BDCDATA-DYNBEGIN = 'X'. APPEND WA_BDCDATA TO BDCDATA. CLEAR WA_BDCDATA. WA_BDCDATA-FNAM = 'RS38M-PROGRAMM'. Preenche campos da tela WA_BDCDATA-FVAL = PROGRAM. APPEND WA_BDCDATA TO BDCDATA. ... * Chama a transao com os dados de tela e campos definidos CALL TRANSACTION 'SE38' USING BDCDATA MODE 'N' MESSAGES INTO ITAB.

122

Transferncia de Dados - Entrada e Sada de Dados


Para melhor organizar um programa que utiliza Call Transaction normalmente so criadas funes para preencher a tabela de dados da transao (BDCDATA).
**************************************************************** * Rotinas para criao 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.
123

by BBKO Consulting

86

Academia SAP/ABAP R3

Transferncia de Dados - Entrada e Sada de Dados


********************************************************************** * FORM CALL_TRANSACTION ********************************************************************** FORM CALL_TRANSACTION TABLES T_BDC_DATA USING W_TCODE. CALL TRANSACTION W_TCODE USING 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.


124

Transferncia de Dados - Entrada e Sada de Dados


SELECT SINGLE WHERE AND AND * FROM T100 SPRSL = 'P' ARBGB = T_MESS-MSGID 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.
125

by BBKO Consulting

87

Academia SAP/ABAP R3

Transferncia de Dados - Entrada e Sada de Dados


Exemplo de cdigo para chamada de funes criadas : ... PERFORM BDC_DYNPRO USING PERFORM BDC_FIELD USING PERFORM BDC_FIELD USING MATNR(01)'. Call Transaction a partir das

'SAPMM07I' 'BDC_OKCODE' 'BDC_CURSOR'

'0721'. '=BU'. Salvar 'ISEG-

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 opo Informaes Tcnicas. O nome do campo encontra-se em Denominao do campo para batch input. Alm dos campos de tela existem dois campos especiais : BDC_CURSOR : Para indica a posio do cursor BDC_OKCODE : Para indicar a operao a realizar aps o preenchimento da tela.
126

Transferncia de Dados - Entrada e Sada 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 atravs da transao SM35. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = NOMEPASTA USER = USER KEEP = KEEP HOLDDATE = HOLDDATE. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = T_BDCDATA.

CALL FUNCTION 'BDC_CLOSE_GROUP'.


127

by BBKO Consulting

88

Academia SAP/ABAP R3

Transferncia de Dados - Programa Inbound


Passos para criar programa Inbound
Executar a transao SHDB:
Juntamente com o Funcional executar a transao desejada e preencher os campos necessrios

Aps mapear os campos necessrios, definir o layout do arquivo .txt de entrada Criar a especificao tcnica Criar o programa de Inbound

Obs: Segue exemplo: transao MM02 (alterao de material) onde vamos apenas alterar a descrio dos materiais

128

Transferncia de Dados - Transao SHDB

129

by BBKO Consulting

89

Academia SAP/ABAP R3

Transferncia de Dados - Transao SHDB

130

Transferncia de Dados - Transao SHDB

131

by BBKO Consulting

90

Academia SAP/ABAP R3

Transferncia de Dados - Transao SHDB

132

Transferncia de Dados - Transao SHDB

133

by BBKO Consulting

91

Academia SAP/ABAP R3

Transferncia de Dados - Transao SHDB

134

Transferncia de Dados - Layout do arquivo de entrada


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

Campo
Cdigo do material Descrio do Material

Tipo
char 18 posies, alinhado a esquerda char 40 posies

135

by BBKO Consulting

92

Academia SAP/ABAP R3

Transferncia de Dados - Tela com parmetros de Batch Input

136

Transferncia de Dados - SM35Executar pasta de Batch Input

137

by BBKO Consulting

93

Academia SAP/ABAP R3

Transferncia de Dados - SM35

138

- Tem trs opes de executar a pasta: Processamento visvel (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 transao 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>

by BBKO Consulting

94

Academia SAP/ABAP R3

Captulo 10 Programao On-Line

Programao On-Line

143

by BBKO Consulting

95

Academia SAP/ABAP R3

Programao On-line - Module-pool


Partes de uma tela

Atributos Da Tela

Layout Da Tela

Atributos dos campos

Controle do Fluxo Process Before Output. Module Clear-ok_code.

Screen Number Short Description Screen type Next Screen ...

Screen Number Short Description Screen type Next Screen ...

Field Name Type Length ...

Controle do Fluxo Process After Input Module User_Command_0100

140

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 lgico - O Fluxo lgico 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 aps o usurio ter acionado algum boto ou disparado algum evento na tela anteriormente apresentada.

by BBKO Consulting

96

Academia SAP/ABAP R3

Programao On-line - Criao de um Dialog Program

Cdigo Cdigo do do Cliente Cliente

Nome Nome Endereo Endereo

141

- Dialog Program que mostrar dados do Cliente. - Neste exemplo, a primeira tela, o usurio entrar com cdigo do funcionrio. (chave da tabela), e na segunda tela, ser mostrado o contedo dos campos referentes tabela ao funcionrio.

by BBKO Consulting

97

Academia SAP/ABAP R3

Programao On-line Chamada dinmica da


prxima tela
Tela 100 Prxima tela 200 Tela 300 Prxima tela 400

PBO

PAI

PBO

PAI

Module ... Set Screen 300. Leave Screen. Endmodule.

Module ... Set Screen 0. Leave Screen. Endmodule.

O comando SET SCREEN <nnnn> sobrepe temporariamente o atributo prxima tela. Para executar a chamada a outra tela em um nico programa pode ser feito desta forma: LEAVE TO SCREEN < nnnn>

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

142

by BBKO Consulting

98

Academia SAP/ABAP R3

Programao On-line - Programa Lgico

143

Voc pode definir um campo OK_CODE como um campo da tela. Neste campo conter o cdigo de funo do boto selecionado na tela. Para evitar erros de campo OK_CODE no inicializado, voc deve criar um campo auxiliar que salva o contedo do OK_CODE e ento voc inicializa o campo OK_CODE e trabalha com o campo auxiliar.

by BBKO Consulting

99

Academia SAP/ABAP R3

Programao On-line - Dialog Program Seq Aes


Sequncia de Aes
PROCESS BEFORE OUTPUT. MODULE A. PROCESS AFTER INPUT. MODULE B.
Screen Painter

Action sequence
Execute module A Data transport from ABAP/4 to screen work area Send screen ENTER Data transport from screen to ABAP/4 work area Execute module B

144

- Quando todos os mdulos do PBO terminarem a execuo, os contedos dos campos na Work rea do ABAP so copiados para a Work rea da tela em nomes idnticos. - Antes do PAI ser processado, os contedos dos campos na Work rea da tela so copiados para a Work rea do ABAP em nomes idnticos.

by BBKO Consulting

100

Academia SAP/ABAP R3

Programao On-line - Atributos da tela


Modificaes Dinmicas em Telas

Change <-> Display

Change <-> Display

A B

A B

output field

input and output field

146

- Podem ser feitas mudanas temporrias em certos atributos de campos. Ex.: Fazer com que um campo com atributo de display somente, seja alterado para receber entrada de digitao etc. - Esta facilidade faz com que possam ser utilizadas as mesmas telas, somente com a alterao dos atributos dos seus campos, desta forma a quantidade de telas reduzida consideravelmente.

by BBKO Consulting

101

Academia SAP/ABAP R3

Programao On-line - Atributos da tela


Atributos modificbeis da tabela SCREEN
SCREEN-NAME SCREEN-GROUP1 SCREEN-GROUP2 SCREEN-GROUP3 SCREEN-GROUP4 SCREEN-REQUIRED SCREEN-INPUT SCREEN-OUTPUT SCREEN-INTENSIFIED SCREEN-INVISIBLE SCREEN-LENGTH SCREEN-ACTIVE SCREEN-DISPLAY_3D SCREEN-VALUE_HELP SCREEN-REQUEST

Field name Modification Modification Modification Modification group 1 group 2 group 3 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)

146

- Os campos da tela e seus respectivos atributos so 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 execuo 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, atravs de um Loop na tabela SCREEN. - As funes standard so automaticamente associadas.

by BBKO Consulting

102

Academia SAP/ABAP R3

Programao On-line - Atributos do campo na tela


Atributos do campo Grupos de Modificao

Field list: Modification groups Field name


SPFLI_ITAB-CONNID SPFLI_ITAB-CITYFROM SPFLI_ITAB-CITYTO ...

Screen Painter

Gr1 Gr2 Gr3 Gr4


SEL SEL SEL

...

147

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

by BBKO Consulting

103

Academia SAP/ABAP R3

Programao On-line - Modificao em telas


Modificaes Dinmicas em Telas - Programa
PROCESS BEFORE OUTPUT. . . . MODULE MODIFY_SCREEN. . . . MODULE MODIFY_SCREEN OUTPUT.
... ABAP/4 Screen Painter

LOOP AT SCREEN. IF SCREEN-GROUP1


SCREEN-INPUT = ENDIF. IF SCREEN-NAME SCREEN-ACTIVE ENDIF. MODIFY SCREEN.

= 'SEL'. 1. = ' SFLIGHT-CARRID = 0.

'.

ENDLOOP. ENDMODULE.

148

- O cdigo (programa) para alterar dinamicamente os atributos dos campos devem ser executados no evento PBO. - As mudanas devem ser feitas dentro de um Loop na tabela SCREEN, e somente desta forma.(No possvel o acesso via READ TABLE...). - As mudanas feitas so realmente ativadas aps o comando MODIFY SCREEN.

by BBKO Consulting

104

Academia SAP/ABAP R3

Programao On-line - Condio na chamada dos Modules


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

PROCESS AFTER INPUT. FIELD <campo> Module Verifica_Campo ON INPUT.

Module Verifica_Campo ... message E ... Endmodule.

- Dentro do bloco CHAIN, voc deve usar o ON CHAIN-INPUT, o module ento chamado se o contedo 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

Programao On-line - Condio na chamada dos Modules


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

PROCESS AFTER INPUT. FIELD <campo> Module Verifica_Campo ON INPUT.

Module Verifica_Campo ... message E ... Endmodule.

- Dentro do bloco CHAIN, voc deve usar o ON CHAIN-INPUT, o module ento chamado se o contedo 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

by BBKO Consulting

105

Academia SAP/ABAP R3

Programao On-line - Condio na chamada dos Modules


- Se adicionar o parmetro ON REQUEST no module, o module somente chamado se o usurio digitar um novo valor neste campo

PROCESS AFTER INPUT. FIELD <campo> Module Verifica_Campo ON REQUEST.

Module Verifica_Campo ... message E ... Endmodule.

- Dentro do bloco CHAIN, voc deve usar o ON CHAIN-REQUEST, o module ento chamado se o usurio alterou o contedo 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.

151

Programao On-line - Condio na chamada dos Modules


- O parmetro adicional AT EXIT-COMMAND, faz com que o module seja processado antes das verificaes automticas de entrada de dados.

PROCESS AFTER INPUT. Module exit AT EXIT-COMMAND.

Module EXIT Input. Case ok_code. when CANCEL. clear ok_code. leave to screen 0. when EXIT. leave program. Endcase. Endmodule.

152

by BBKO Consulting

106

Academia SAP/ABAP R3

Programao On-line - Criar Dialog Program SE80

153

- 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 posio do nome do programa dever ser sempre M (Module Pool). A quinta posio, no caso de programas customizveis dever ser Z ou Y, (como nos programas reports, iniciados obrigatoriamente com essas letras). Escolha a opo TOP Include, pois desta forma, ser criado o include que ser utilizado para a declarao 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 identificao dentro do programa. Exemplo: O nome do TOP Include para um programa Module Pool cujo nome SAPMZSD001 ser MZSD001TOP.

by BBKO Consulting

107

Academia SAP/ABAP R3

Programao On-line - Cria Dialog Program

154

-Nos atributos do programa, voc define o Ttulo, categoria e a aplicao. Categoria Module Pool e Aplicao BASE

by BBKO Consulting

108

Academia SAP/ABAP R3

Programao On-line - Criar tela em Dialog Program

155

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

by BBKO Consulting

109

Academia SAP/ABAP R3

Programao On-line - Criar tela em Dialog Program


1 - Digitar o numero da tela

156

by BBKO Consulting

110

Academia SAP/ABAP R3

Programao On-line - Criar tela Dialog Program

157

- Nos atributos da tela, digitar a descrio da tela. - Escolha a opo NORMAL, e especifique o nmero da prxima tela (se necessrio, no momento da execuo, o sistema desviar para o nmero da tela indicado nesse campo, caso esteja preenchido).

by BBKO Consulting

111

Academia SAP/ABAP R3

Programao On-line - Criar tela Dialog Program


Clica no cone

158

- Para desenhar telas, utilize o Screen Painter. - A interface do Screen Painter Grfico contm funes easy-to-use para definio de diversos elementos da tela (ex: campos de entrada/sada, labels, boxes, botes, etc). Voc escolhe cada elemento e os posiciona na tela utilizando o mouse. - Para deletar elementos da tela, necessrio selecionar cada elemento com o mouse (foco) e pressionar delete. - possvel tambm mover os elementos grficos pela tela, somente clicando e arrastando o mesmo. -Na tela acima para digitar a constante Cdigo do Funcionrio utilizamos o cone e digitamos esta literal no campo da barra de e

para digitar o campo varivel utilizamos o cone ferramentas.

by BBKO Consulting

112

Academia SAP/ABAP R3

Programao On-line - Exemplo: Criar tela 200

159

-Duplo click no campo varivel e ento aparece a janela de atributos do campo, no nome do campo, foi digitado o nome de uma tabela e campo, ento digita enter e aparece uma pergunta se este campo est associado ao Dicionrio. - No nosso exemplo este campo est associado ao dicionrio, atravs desta table ZFUNC01. - No esquecer de ativar a tela.

by BBKO Consulting

113

Academia SAP/ABAP R3

Programao On-line - Criar tela Declarar ariveis

160

- No processamento do dilogo, os dados so passados entre as telas e programas ABAP durante a execuo. O sistema efetua a comunicao automaticamente, mas necessrio que seja utilizado o nome idntico dos campos nas telas e no module pool. - Defina os dados globais no TOP include. Para que todas as telas possam enxerg-lo.

by BBKO Consulting

114

Academia SAP/ABAP R3

Programao On-line - Criar Tela Criar Modules

161

-Observe no exemplo acima que clicando na tela 100, aparece o fluxo lgico da tela 0100 (PBO e PAI). - Os modules esto comentados, caso utilize, tirar os comentrios e os modules sero criados em includes. - Durante o processo de criao dos mdulos PAI e/ou PBO, voc pode associ-los aos includes desejados ou deixar que o sistema automaticamente faa isto por voc. Neste caso os mdulos no PBO sero criados nos includes com o sufixo I01 (xxxxxI01), e os do PAI, nos includes com sufixo O01 (xxxxxO01). - Nos Flow Logics no so permitidos palavras reservadas (IF, PERFORM, WHILE etc) da mesma forma em que so permitidos nos programas. O Flow Logic, embora se parea muito com o programa (o editor o mesmo), no tem o mesmo comportamento. Ele usado basicamente para ordenar o processamento da tela, e para isso so criados os MODULES, que tm uma funo anloga 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 navegao pelo include. - Se no existirem includes, o sistema poder criar um (se voc permitir) ou poder incluir a sub-rotina no programa principal (o que alis, no recomendado).

by BBKO Consulting

115

Academia SAP/ABAP R3

-Tirar das linhas o comentrio e atribuir algum cdigo ao GUI status e ao GUI title, no exemplo acima foi atribudo o 0100.

Programao On-line - Criar Modules

162

Programao On-line - Criar Modules

163

by BBKO Consulting

116

Academia SAP/ABAP R3

Programao On-line - GUI Title e GUI Status

168

- Usa-se o Menu Painter para definir funes na tela em um status particular e associ-los a um apropriado menu, a saber: menu bar, standard toolbar e application toolbar. - Pode-se tambm definir um ttulo 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 funo estar ativa/inativa. - Cada alterao nos status (menus) deve ser seguida de uma re-gerao da tela completa. - Para associar um status e um ttulo a uma tela, isto deve ser feito no seu PBO, usando o comando SET PF-STATUS e SET TITLEBAR, respectivamente.

by BBKO Consulting

117

Academia SAP/ABAP R3

Programao On-line - Criao de GUI Status

165

Programao On-line - Criar GUI Status Barra de Menu

166

by BBKO Consulting

118

Academia SAP/ABAP R3

Programao On-line - Criar GUI Status Barra de Botes

167

-Voc pode criar botes associados aos Cdigos criados na Barra de Menu ou no. - Quando cria botes, voc pode associar a uma tecla de funo

by BBKO Consulting

119

Academia SAP/ABAP R3

Programao On-line - Criar GUI Title

168

-Voc pode usar at nove variveis no ttulo. Veja abaixo o Module chamando o titlebar CONS passando a varivel cdigo do funcionrio.

by BBKO Consulting

120

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico tela 100

169

Cdigo dos Modules, acima:

by BBKO Consulting

121

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico tela 100

169

Cdigo dos Modules, acima:

by BBKO Consulting

122

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico tela 200

170

-Segue

by BBKO Consulting

123

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico tela 200

170

-Segue

by BBKO Consulting

124

Academia SAP/ABAP R3

Programao On-line - Organizao do Programa

Sub-Rotinas PAI PBO Declaraes Globais

171

Criar transao para On-Line

172

by BBKO Consulting

125

Academia SAP/ABAP R3

Criar transao para On-Line

173

- Para executar programa tipo M (Module Pool) voc deve criar pelo menos uma transao.

by BBKO Consulting

126

Academia SAP/ABAP R3

Programao On-line - Transao ZFUNC01 tela 100

174

Programao On-line - Tela 200 Consulta

175

by BBKO Consulting

127

Academia SAP/ABAP R3

Apndice A Programao 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 lgico no module pool do programa ABAP/4 . Estruturas de dados so definidas no Dicionrio ABAP/4. Voc pode acessar esses estruturas do programa ABAP/4 e quando define campos de tela. O processador de dilogo controla o fluxo do seus programa dilogo.

Screen Painter - ABAP/4


Para criar uma tela, siga os seguintes passos: o Defina as caractersticas bsicas 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 lgico da tela (programa) Os componentes do programa ABAP/4 mais importantes so encontrados nos seguintes objetos: o Global data ou Estruturas do Dicionrio no programa include TOP (declaraes data) o Module PBO (Process Before Output Processos antes de Apresentar a Tela) o Module PAI (Process After Input Processos aps Entrada de Dados) o Sub-rotinas (se necessrio)

Comunicao: Tela ABAP/4 module Pool


O fluxo lgico da tela dividido em dois eventos para cada tela: o O evento PBO executado antes da tela ser apresentada. o O evento PAI executado aps o usurio pressionar ENTER. O sistema processa os mdulos de evento numa seqncia Em cada mdulo, o controle passa do processador de dilogo para o processador ABAP/4. Depois do processamento, o controle retornado para o processador de dilogo. Quando todos os mdulos do PBO forem processados, o contedo dos campos da rea de trabalho (work rea) ABAP/4 so copiados para os campos de mesmo nome da rea de trabalho (work rea) da tela. Antes do mdulo PAI processado. O contedo dos campos na rea de trabalho da tela (work rea) so 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 contm funes fceis de usar para definir os vrios elementos da tela (ex.: campos de entrada e sada, 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 ento escolhe Delete. Para mover elementos da tela, voc usa o mouse para arrastar o elemento para a posio desejada.

by BBKO Consulting

128

Academia SAP/ABAP R3
Note: Na verso 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.

by BBKO Consulting

129

Academia SAP/ABAP R3

Visualizaes de Listas de Campo (Field List Views)


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

H seis visualizaes de listas de campos para manuteno dos atributos dos campos da tela. Alternativamente, voc pode defini-los de uma das listas. Manuteno de atributos para um campo tambm possvel 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 documentao da palavra chave TABLES no ABAP/4. Exemplos so os seguintes: Tipo de dados do dicionrio ABAP/4 CHAR NUMC Tipo de dados no ABAP/4 C N

Definindo o controle do fluxo


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

Voc especifica a definio de seus Mdulos de comandos na lgica do fluxo. Se voc escolhe um mdulo com duplo clique, o sistema cria os comandos adequados MODULE ... ENDMODULE no programa include apropriado. Este conhecido como navegao adiantada. Se no existe o programa include, o sistema criar um se voc permitir. Ele tambm 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 contm uma adio OUTPUT, quando os comandos do mdulo for do mdulo PAI contm uma adio INPUT.

by BBKO Consulting

130

Academia SAP/ABAP R3

Definindo campos no MODULE POOL


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

OU GLOBAL DATA
DATA: ... .

No processamento de dilogo, o dado passado entre as telas e o processamento do programa ABAP/4. O sistema executa esta comunicao automaticamente, mas voc deve usar nomes idnticos 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 sees de dados globais ou estruturas do Dicionrio. Mesmo que, o programa include TOP est implicitamente no controle.

Definindo chamadas (Cdigos de Transao)


STMP Programs SAPMTALA Create Transactions Escolher Cdigo de Transao Tipo de Transao Continue Transaction code Transaction text Program Screen number TALA X Dialog transaction TALA Test SAPMTALA 100

Voc pode iniciar um programa de dilogo ABAP/4 (transao) com um especfico cdigo de transao. Tansaes customizadas devem comear com Z ou Y. O sistema cria suas especificaes na tabela TSTC (ao invs de criar uma transao na lista de objetos, voc pode dar manuteno na tabela voc mesmo)

Checagem automtica de campo de Entrada


Aps o usurio ter finalizado uma tela (ex. ter entrado dados e pressionado a tecla ENTER ou ter acionado alguma outra funo), mas antes dos mdulos do PAI serem processados, o processador de dilogo executa um nmero de checagens automticas. O primeiro destes s ser certificado so os campos requeridos na entrada de dados.

by BBKO Consulting

131

Academia SAP/ABAP R3
Uma chave estrangeira executada somente se um campo da tela se referir a um campo do Dicionrio 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 possvel a entrada de dados para um campo. Ex.: a chave de valores da tabela de checagem so apresentadas.

Checando campo de entrada no MODULE POOL com dilogo de erro


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

PROCESS AFTER INPUT. FIELD <screen field> MODULE <module>.

Se voc quer checar valores de entrada no MODULE POOL e iniciar um dilogo de erro de um resultado negativo, voc usa o comando FIELD com a adio MODULE. Isto significa que o relevante mdulo executado somente para o campo especificado no comando FIELD. Se o mdulo resulta numa mensagem de erro (E) ou warning (W), a tela reapresentada sem o processamento dos mdulos PBO. O texto da mensagem apresentado e somente o campo checado por este mdulo apresentado para entrada de dados novamente. Note que somente o comando FIELD responsvel por fazer a leitura do campo para entrada novamente. Se voc formular uma mensagem num mdulo sem chamar o mdulo no comando FIELD, a mensagem apresentada, mas o campo no 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 dilogo, 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 no somente faz a leitura para entrada de dados novamente. Qualquer um dos campos modificado durante o processamento do PAI somente se torna visveis no evento do erro se eles so tambm especificados no comando FIELD do referido CHAIN.

by BBKO Consulting

132

Academia SAP/ABAP R3

Lendo Cdigos de Funo em Programas


Cada boto deve ter um cdigo de funo Quando o usurio pressionar o boto, o mdulo PAI acionado. Quando o usurio chama uma funo (pelo significado do boto, menu de entrada ou tecla de funo), o cdigo de funo 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 cdigo de funo no module pool do ABAP/4, voc define um identificador nomeado Ok code. Este contm o cdigo da funo atual depois do campo ter sido transportado. Voc est recomendado a usar uma verso de backup do campo de okcode para evitar enviar uma tela que j tem um cdigo de funo.

Seqncia Dinmica de Tela: Overview


Voc pode modificar uma seqncia de tela dinamicamente por o Usando SET SCREEN para atualizar a prxima 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 aps esta chamada.

Ajustando a Prxima Tela Dinamicamente


O comando SET SCREEN nnnn altera temporariamente a prxima tela. A tela nnnn deve ter uma tela no mesmo module pool. A prxima 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 prxima tela num nico passo, voc pode usar o comando LEAVE TO SCREEN nnn.

Menu Painter - Overview


Voc usa o Menu Painter para definir funes na tela no stautus particular e determina-as para a barra de menus prpria. Para cada status, voc define que as funes de menu esto ativas ou inativas.

Definindo a Interface I
Numa request, o sistema prope valores padres para barra de menu e define a tecla de funo, 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 so adicionados automaticamente pelo sistema. Um nico menu contm at 15 entradas, incluindo as funes e suas descries, nomes de submenus e linhas separadoras. Voc poderia especificar tambm todas as funes que so ativadas num status como ativa na barra de menu.

by BBKO Consulting

133

Academia SAP/ABAP R3

Definindo a Interface II
Voc determina as funes ativas que um usurio provavelmente mais precisa no situao atual para a barra de botes. Antes de voc fazer isso, o cdigo de funo deve ser determinado para uma tecla de funo. Voc determina cdigos de funo para teclas de funo pelas entradas destas em Configuraes Recomendadas de Teclas de Funes ou Sees de Teclas de Funo Definidas Livremente . O sistema automaticamente define as teclas de funo no padro barra de ferramentas para teclas de funo especial.

Definio Automtica de cones para Teclas de Funo


Tecla de Funo Enter F11 F3 Shift+F3 F12 Ctrl+P Ctrl+F Ctrl+G Ctrl+Screen up Screen up Screen down Ctrl+Screen down F1 Significado Enter Salvar Voltar Sair (programa) Cancelar (tela) Imprimir Pesquisar Continuar Pesquisando Primeira Pgina Pgina Anterior Prxima Pgina ltima Pgina Help Icon (Smbolo) ticado Pasta Seta p/ a esquerda Seta p/ cima X Impressora Binculo Binculo + Pgina com seta dupla Pgina com seta p/ cima Pgina com seta p/ baixo Pgina com seta dupla Interrogao

O sistema define automaticamente cdigos de funo que voc define na barra de ferramentas padro para teclas de funo especial. Para descobrir quais definies aplicadas para as funes no status atual, clique no termo Barra de Ferramentas Padro.

Definindo Menus de rea


Quando for dar manuteno em Menus de rea (que so desenvolvimentos de objetos de classes), voc usa uma verso especial do Menu Painter. Aqui, voc define os cdigos de transao para programas dilogos chamados ao invs de especificar cdigos de funo. Esses cdigos de transao no tm tipos especiais de funo. Eles trabalham como CALL TRANSACTION.

by BBKO Consulting

134