1 of 224

TREINAMENTO ABAP

Título del documento

1

|

2 of 224

ÍNDICE

  • Curso Básico
  • Data Dictionary
  • Transportes
  • Report
  • Performance
  • BDC Session
  • On Line
  • Sapscript
  • Smartform

Título del documento

2

|

3 of 224

CURSO BÁSICO �INSTÂNCIA

Instalação típica composta de 3 ambientes

Cada ambiente composto de 1 banco de dados,

1 instância central,

n servidores de aplicação e

m servidores de

apresentação

Arquitetura 3 camadas

Título del documento

3

|

4 of 224

CURSO BÁSICO�MANDANTES E OBJETOS DO REPOSITÓRIO

Visão das aplicações por mandante (em cada ambiente)

Mandt

Chave

Valor

100

A

1

100

B

2

100

C

3

200

A

2

200

B

3

200

D

4

300

C

2

Tabela dependente de mandante

=

Primeira chave é o mandante

Título del documento

4

|

5 of 224

CURSO BÁSICO�ORDENS DE TRANSPORTE

Dois tipos principais:

  • Configuração (customizing): dados, usualmente dependente de mandante
  • Repositório (workbench): levam conteúdo independente de mandante (objetos do repositório), mas podem levar dados, inclusive os dependente de mandante.

  • Ordem aberta
  • Ordem fechada

Ordem

Mandt

Chave

Valor

100

A

1

100

C

3

Título del documento

5

|

6 of 224

CURSO BÁSICO�TRANSAÇÕES

Chamadas aos programas

SE80 🡪 transação central de desenvolvimento

SE38 🡪 abre o editor ABAP/4

SE37 🡪 criação de funções

SE16 🡪 permite a visualização do conteúdo de tabelas do SAP

SE11 🡪 permite a visualização da arquitetura de uma tabela/estrutura do SAP e criação de demais objetos do dicionário

SE43 🡪 criação de menus

SE93 🡪 criação de transações

SE71 🡪 criação e manutenção de formulários SAPscripts

CMOD 🡪 criação de projetos Enhancements (Field Exits, User Exits, ...)

Principais transações para desenvolvedores:

Título del documento

6

|

7 of 224

CURSO BÁSICO�PADRÕES DE NOMENCLATURA

Nota SAP 16466

Maioria dos objetos: Y* e Z*

Exemplo de exceção: funções Y_* ou Z_*

Título del documento

7

|

8 of 224

CURSO BÁSICO�BARRA DE BOTÕES

Barra de botões da primeira tela SE38

Verificar: verifica a sintaxe e consistência do código.

Ativar: ativa o programa, além de efetuar a verificação de sintaxe e consistência do código.

Executar: executa o programa (opção válida apenas para programas do tipo executável).

Lista de utilizações: verifica onde existem chamadas do programa.

Análise do ambiente: avalia os componentes do programa e lista um relatório no final que permite a navegação nestes componentes.

Ajuda online: exibe ajuda online da documentação do SAP.

Eliminar: elimina programas.

Copiar: efetua cópia de programas.

Renomear: renomeia programas.

: Depuração: executa programa em modo de depuração (opção válida apenas para programas do tipo executável).

: Executar c/ variante: executa programa com variante de seleção já carregada em tela (opção válida apenas para programas do tipo executável).

: Variantes: permite o gerenciamento das variantes de seleção.

Título del documento

8

|

9 of 224

Barra de botões do editor ABAP

Objeto anterior: permite a navegação ao objeto anterior.

Objeto seguinte: permite a navegação ao objeto seguinte (caso tenha ocorrido retorno no editor).

Exibir/Modificar: permite exibir ou modificar o programa.

Ativo/Inativo: permite navegar entre as versões ativa e inativa do programa.

Outro objeto: permite navegar entre outros objetos.

Ampliar: permite utilizar pontos de ampliação disponíveis no programa.

Verificar: verifica a sintaxe e consistência do código.

Ativar: ativa o programa, além de efetuar a verificação de sintaxe e consistência do código.

Executar: executa o programa (opção válida apenas para programas do tipo executável).

Lista de utilizações: verifica onde existem chamadas do programa.

CURSO BÁSICO�BARRA DE BOTÕES

Título del documento

9

|

10 of 224

CURSO BÁSICO�BARRA DE BOTÕES

Barra de botões do editor ABAP (continuação)

Exibir lista de objetos: exibe lista de projetos ligados ao programa (includes, tabelas, telas, variáveis, tabelas internas, etc).

Exibir janela de navegação: exibe pilha de navegação de objetos.

Ajuda online: exibe ajuda online da documentação do SAP.

Definir/eliminar ponto parada sessão: permite definir um ponto de parada para depuração para a sessão ativa.

Definir/eliminar ponto parada externo: permite definir um ponto de parada para depuração para uma chamada externa (RFC, por exemplo).

Modelo: permite incluir modelos de chamadas funções, mensagens, classes, etc.

Pretty Printer: efetua identação e efetua conversões de maiúsculas e minúsculas de acordo com a configuração do editor.

Título del documento

10

|

11 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 1

REPORT ZEXEMP_01.��WRITE: '111111'.�WRITE: '222222',�       '333333'.�WRITE: /'111111'.�WRITE: 15 '333333'.�WRITE: / text-001.�ULINE.�ULINE 8(6).�SKIP.�SKIP 2.�WRITE : 8 sy-langu.�WRITE : / sy-datum UNDER sy-langu.

Variáveis de ambiente: estrutura SYST

Título del documento

11

|

12 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 2

REPORT ZEXEMP_02.��TOP-OF-PAGE.

WRITE: 'EXEMPLO 2 - CURSO ABAP/4',

80 'Page',

SY-PAGNO.

Título del documento

12

|

13 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 3

REPORT ZEXEMP_03.��FORMAT COLOR COL_HEADING.

WRITE : 'FUNDO AZUL'.

Título del documento

13

|

14 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 4

REPORT ZEXEMP_04.��DATA: nome(20) TYPE c,

rg TYPE i,

data TYPE bkpf-budat,

hora(8) VALUE '14:05:45'.

MOVE 'Solution Center' TO nome.

COMPUTE rg = 42159818 + 1.

data = '19970530'. "aaaammdd

Título del documento

14

|

15 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 5

REPORT ZEXEMP_05.��PARAMETER: P_NOME1(15) TYPE C OBLIGATORY,

P_NOME2(15) TYPE C DEFAULT 'Abap Factory' LOWER CASE,

P_BOTAO1 RADIOBUTTON GROUP G1,

P_BOTAO2 RADIOBUTTON GROUP G1.

SELECT-OPTIONS: s_data FOR sy-datum.

Título del documento

15

|

16 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Título del documento

16

|

17 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 6

REPORT ZEXEMP_06.��DATA: ti_t005h TYPE TABLE OF t005h,

wa_t005h TYPE t005h.

SELECT *

FROM t005h

INTO TABLE ti_t005h

WHERE land1 = p_pais

AND spras = sy-langu

ORDER BY cityc.

Título del documento

17

|

18 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 7

REPORT ZEXEMP_07.�� LOOP AT tg_t005h INTO wa_t005h.

ON CHANGE OF wa_t005h-land1.

IF v_var1 = 0.

NEW-PAGE.

ENDIF.

FORMAT COLOR OFF.

WRITE 'COUNTRY CITY'.

CLEAR v_var1.

ENDON.

(…)

ENDLOOP.

Título del documento

18

|

19 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 8

REPORT ZEXEMP_08.�� CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = v_arquivo

write_field_separator = 'X'

TABLES

data_tab = ti_spfli

EXCEPTIONS

file_write_error = 1

no_batch = 2

OTHERS = 22.

Título del documento

19

|

20 of 224

CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP

Exemplo 9

REPORT ZEXEMP_09.�� CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = vg_arquivo

TABLES

data_tab = tg_spfli

EXCEPTIONS

file_open_error = 1

file_read_error = 2

OTHERS = 17.

Título del documento

20

|

21 of 224

CURSO BÁSICO�EDITOR ABAP

Upload/Download de códigos

Todo código ABAP é aberto!

Título del documento

21

|

22 of 224

CURSO BÁSICO�EXERCÍCIO I

Desenvolver o programa ZEXER01_## conforme print:

Variáveis de sistema utilizadas:

SY-DATUM

SY-UZEIT

 

IMPORTANTE

Ao salvar, indicar o pacote TRN e salvar.�O SAP pedirá uma request, clique em e digite a seguinte descrição:

Academia de Talentos Grupo 01 – Aluno ##

Anotar o número da change request para ser utilizado durante todo este curso

Título del documento

22

|

23 of 224

CURSO BÁSICO�EXERCÍCIO II

Desenvolver o programa ZEXER02_## que resulte o cabeçalho seguinte:

Variáveis de sistema utilizadas:

SY-UNAME

SY-DATUM

Título del documento

23

|

24 of 224

CURSO BÁSICO�EXERCÍCIO III

Desenvolver o programa ZEXER03_## que simule uma calculadora com 4 operações ( +, -, /, * ) e dois campos obrigatórios para entrada de números (decimais). Layout:

Título del documento

24

|

25 of 224

CURSO BÁSICO�CRIANDO TRANSAÇÕES

Transação SE93

Título del documento

25

|

26 of 224

CURSO BÁSICO�CRIANDO TRANSAÇÕES

Transação SE93

Atributos da transação

Título del documento

26

|

27 of 224

CURSO BÁSICO�CRIANDO TRANSAÇÕES

Transação SE93

Atributos da transação

Título del documento

27

|

28 of 224

DATA DICTIONARY�MODELO RELACIONAL

Modelo Entidade – Relacionamento

  • Entidade: agrupamento de objetos do mesmo tipo

Clientes, fornecedores, banco, moedas

  • Atributo: qualificador de uma entidade

Nome, RG, número da agência, código internacional

  • Domínio: conjunto de valores permissíveis a um atributo

Texto até 40 caracteres, quatro números, meses

  • Relacionamento: associação entre duas entidades

Conta de um cliente, conta de uma agência

Título del documento

28

|

29 of 224

DATA DICTIONARY�MODELO RELACIONAL

Cardinalidades

  • Um-para-um: uma ocorrência da Entidade A está relacionada com apenas uma ocorrência da Entidade B

Pessoa 🡪 RG e Pessoa 🡪 Mãe

  • Um-para-N: uma ocorrência da Entidade A está relacionada com uma ou várias ocorrências da Entidade B

Pessoa 🡪 Telefone e Pessoa 🡪 Nacionalidade

  • N-para-N: várias ocorrências da Entidade A estão relacionadas com várias ocorrências da Entidade B

Pessoa 🡪 Chefe e Autor 🡪 Livro

Título del documento

29

|

30 of 224

DATA DICTIONARY�MODELO RELACIONAL

Formas Normais

Evitar as redundâncias, ajudando a estabelecer as entidades.

As três primeiras são:

1ª FN: Não ter elementos multivalorados

2ª FN: Em chaves primárias compostas, nenhum campo depende só de parte da chave

3ª FN: Não deve haver dependências entre atributos

Título del documento

30

|

31 of 224

DATA DICTIONARY�BANCO DE DADOS RELACIONAL

Implementação física do modelo relacional

  • Entidades 🡪 Tabelas (linhas x colunas)
  • Atributos 🡪 Colunas
  • Ocorrências 🡪 Linhas (registros)

  • Chave = conjunto de atributos que garantes a unicidade das ocorrências

Toda tabela deve ter pelo menos um campo chave, que será denominado “chave primária”

  • Chave estrangeira = atributo que é chave primária de outra tabela

Título del documento

31

|

32 of 224

DATA DICTIONARY�BANCO DE DADOS RELACIONAL

SQL - Structured Query Language

DDL: Data Definition Language – Comandos específicos para definição de objetos do banco de dados.

Ambiente SAP 🡪 pelo dicionário de dados (SE11)

 

DML: Data Manipulation Language - Comandos específicos para tratamento dos dados armazenados nos objetos do banco

ABAP define “Open SQL”

Título del documento

32

|

33 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS

Transação SE11

Título del documento

33

|

34 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA

Estrutura de uma tabela

Título del documento

34

|

35 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA

Entradas possíveis e verificações

Título del documento

35

|

36 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA

Opções técnicas

Título del documento

36

|

37 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA

Categoria de ampliação

No menu: Suplementos 🡪 Categoria de ampliação...

Título del documento

37

|

38 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA

Índices

O índice para chave primária é obrigatório e criado automaticamente

<tabela>~0

Título del documento

38

|

39 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - VISÃO

Tabelas e condições de join

A visão é criada no banco de dados

Título del documento

39

|

40 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - VISÃO

Campos da visão

Título del documento

40

|

41 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - ELEMENTO

Categoria de dados

Título del documento

41

|

42 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - ELEMENTO

Características adicionais

Título del documento

42

|

43 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - ELEMENTO

Denominação do campo

Título del documento

43

|

44 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - DOMÍNIO

Definição e rotina de conversão

Título del documento

44

|

45 of 224

DATA DICTIONARY�DICIONÁRIO DE DADOS - DOMÍNIO

Intervalo de valores

Título del documento

45

|

46 of 224

DATA DICTIONARY�EXEMPLOS

Criação de uma tabela

Título del documento

46

|

47 of 224

DATA DICTIONARY�EXEMPLOS

Criação de uma tabela

Título del documento

47

|

48 of 224

DATA DICTIONARY�EXEMPLOS

Criação de uma tabela

Título del documento

48

|

49 of 224

DATA DICTIONARY�EXEMPLOS

Criação do diálogo de manutenção

Título del documento

49

|

50 of 224

DATA DICTIONARY�EXEMPLOS

Criação do diálogo de manutenção

Título del documento

50

|

51 of 224

DATA DICTIONARY�EXEMPLOS

Criação da transação para o diálogo de manutenção

Título del documento

51

|

52 of 224

DATA DICTIONARY�EXEMPLOS

Criação da transação para o diálogo de manutenção

Título del documento

52

|

53 of 224

DATA DICTIONARY�AJUDA DE PESQUISA

Criando ajuda de pesquisa

Título del documento

53

|

54 of 224

DATA DICTIONARY�AJUDA DE PESQUISA

Definindo a fonte e características

Título del documento

54

|

55 of 224

DATA DICTIONARY�AJUDA DE PESQUISA

Utilizando a ajuda de pesquisa (F4)

Título del documento

55

|

56 of 224

DATA DICTIONARY�EXERCÍCIO 1

Criar uma ESTRUTURA com as seguintes características:

 

Nome: ZESTRUT_##

Descrição: Estrutura de preenchimento do layout

Field Name Key Data Element Type Length Short Text

MANDT x MANDT CLNT 3 Client

BELNR x BELNR D CHAR 10 Acc. Doc Num

TXT50 TXT50_SKAT CHAR 50 G/L acct long txt

Título del documento

56

|

57 of 224

DATA DICTIONARY�EXERCÍCIO 2

Criar uma tabela com as seguintes características:

Nome: ZTBL_##

Descrição: Tabela para manutenção via transação SM30

Field name Data elem. Type Length Short text _

MANDT MANDT CLNT 3 Mandante

HKONT HKONT CHAR 10 Conta do Razão

BELNR BELNR_D CHAR 10 Nº documento contábil

GJAHR GJAHR NUMC 4 Exercício

BKTXT BKTXT CHAR 25 Texto de cabeçalho de doc.

BLART BLART CHAR 2 Tipo de documento

BLDAT BLDAT DATS 8 Data no documento

Criar um diálogo de manutenção com as seguintes características:

Function Group: ZCURSOFG##

Utilizar a transação SM30 para manutenção desta tabela.

Título del documento

57

|

58 of 224

DATA DICTIONARY �COMANDO SELECT

Detalhando o comando de leitura de dados

1-) SELECT * FROM dbtab.

....

ENDSELECT.

if SY-SUBRC <> …

1a-)…WHERE Condition

1b-)…ORDER BY f1…fn

…ORDER BY PRIMARY KEY

1c-)…UP TO n ROWS

Título del documento

58

|

59 of 224

DATA DICTIONARY �COMANDO SELECT

Detalhando o comando de leitura de dados

2-) SELECT * FROM dbtab INTO TABLE itab.

2a-) …WHERE

2b-) …ORDER BY

2c-) …UP TO n ROWS

3-) SELECT * FROM dbtab APPENDING TABLE itab.

3a-) …WHERE

3b-) …ORDER BY

3c-) …UP TO n ROWS

4-) SELECT SINGLE * FROM dbtab INTO wa WHERE f1 = g1 AND …

Título del documento

59

|

60 of 224

DATA DICTIONARY �COMANDO SELECT

Detalhando o comando de leitura de dados

5-) SELECT * FROM dbtab APPENDING CORRESPONDING FIELDS OF TABLE itab.

5a-) SELECT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab.

6-) SELECT * FROM dtab � FOR ALL ENTRIES IN itab where…

Nota: verificar se a tabela não está vazia, caso em que todos registros serão selecionados

IF NOT ( itab[] IS INITIAL ).

SELECT * FROM dtab FOR ALL ENTRIES in itab

where campo = itab-campo

ENDIF.

Título del documento

60

|

61 of 224

DATA DICTIONARY �COMANDO SELECT

Considerações sobre os vários tipos de SELECTs

1 - SELECT * FROM …<tabela>

2 - SELECT * FROM <tabela> WHERE <campo> EQ <var>

3 - SELECT * FROM <table> WHERE <table field> BETWEEN <field1> and <field2>.

4 - SELECT * FROM <table> WHERE <table field> LIKE ….’_R%’.

5 - SELECT * FROM <table> WHERE <table field> IN (var1,var2).

6 - SELECT * FROM <table> WHERE <table field> IN <internal table>.

Título del documento

61

|

62 of 224

DATA DICTIONARY �COMANDO SELECT

Considerações sobre os vários tipos de SELECTs

7 - SELECT * FROM <table> ORDER BY <field1> <field2> … PRIMARY KEY.

8 - SELECT * FROM <table> BYPASSING BUFFER.

(Usado para ler diretamente da tabela original, e não do buffer).

9 - SELECT * FROM <table> APPENDING TABLE <internal table>. 

10 - SELECT …FROM <table> INTO TABLE <INTERNAL TABLE>.

Título del documento

62

|

63 of 224

DATA DICTIONARY �COMANDO SELECT

Considerações sobre os vários tipos de SELECTs

11 - SELECT …. INTO CORRESPONDING FIELDS OF TABLE <itab>.

12 - SELECT ….. APPENDING CORRESPONDING FIELDS OF TABLE <itab>.

13 - SELECT SINGLE * FROM SPFLI WHERE …..<campo>….. EQ … <conteúdo>

14 - SELECT <a1> <a2> … INTO (<f1>, <f2>, … ) FROM ….<tabela> WHERE …… .

Título del documento

63

|

64 of 224

DATA DICTIONARY �COMANDO SELECT

Considerações sobre os vários tipos de SELECTs

15 - SELECT MAX(campo)

MIN(campo)

AVG(campo)

COUNT(*)

FROM <table> INTO (…..,……,…..,….)

WHERE ………… .

AVG e SUM: somente para campos numéricos.

Não se usa endselect.

Título del documento

64

|

65 of 224

DATA DICTIONARY �COMANDO SELECT

Considerações sobre os vários tipos de SELECTs

16 - SELECT * FROM SFLIGHT WHERE PRICE IN ITAB.

 

17 - SELECT * FROM (<table>) INTO <work area>.

Exemplo:

data: begin of WA,

line(100),

end of WA.

Parameters: tabname(10) default ‘SPFLI’.

Select * from (tabname) into WA

Write / WA .

Endselect.

Título del documento

65

|

66 of 224

DATA DICTIONARY �COMANDO SELECT

Considerações sobre os vários tipos de SELECTs

18- SELECT * FROM <table> FOR ALL ENTRIES IN <internal table> WHERE

campo1 = <conteúdo> and

campo2 = <conteúdo>

19 - SELECT MIN( price ) max (price ) INTO (minimum, maximum) FROM sflight WHERE ...

19a - SELECT carrid MIN( price ) max (price ) � INTO TABLE itab FROM sflight WHERE …

GROUP BY carrid.

Título del documento

66

|

67 of 224

EXERCÍCIOS EXTRAS�EXERCÍCIO IV

Desenvolver o programa ZEXER04_## que possua as seguintes características:

Parâmetros: SPFLI-CITYFROM e SPFLI-CITYTO com valores default

Opções: Informações e Reserva

Validações: buscar dados dos vôos que correspondam aos parâmetros informados; exibir a aeronave utilizada e o preço da passagem apenas quando for uma operação de reserva.

Campos para seleção:

SPFLI-CARRID

SPFLI-CITYFROM

SPFLI-CITYTO

SPFLI-FLTIME

SPFLI-ARRTIME

SPFLI-DEPTIME

SFLIGHT-FLDATE

SFLIGHT-PLANETYPE

SFLIGHT-PRICE

Título del documento

67

|

68 of 224

EXERCÍCIOS EXTRAS �EXERCÍCIO IV

Título del documento

68

|

69 of 224

EXERCÍCIOS EXTRAS �EXERCÍCIO V

Desenvolver o programa ZEXER05_## que a partir de um arquivo texto contendo o tipo de aeronave, seja capaz de criar um novo arquivo com o tipo de aeronave e o nome da companhia aérea.

Exibição de mensagem tanto no caso de sucesso na criação do arquivo final como no caso da ocorrência de algum erro.

Campos utilizados: SFLIGHT-CARRID e SFLIGHT-PLANETYPE

Arquivo de entrada:

    • Tipo de aeronave (1 linha por tipo)

Arquivo de saída:

    • Tipo de aeronave
    • ; (separador fixo)
    • Companhia aérea

Título del documento

69

|

70 of 224

EXERCÍCIOS EXTRAS �EXERCÍCIO V

Título del documento

70

|

71 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Principais tipos de ordens de transporte

Transações SE09 ou SE10

Título del documento

71

|

72 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Telas iniciais SE09 ou SE10

Título del documento

72

|

73 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Localizando as ordens já criadas

Título del documento

73

|

74 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Lista das ordens de transporte

Título del documento

74

|

75 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Históricos: ação e transporte

Ir para 🡪

Log de ação

Log de transporte

Título del documento

75

|

76 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Características das ordens de transporte

Título del documento

76

|

77 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Lista de objetos das ordens/tarefas

Título del documento

77

|

78 of 224

TRANSPORTE�ORDENS DE TRANSPORTE

Documentação da ordem de transporte

Título del documento

78

|

79 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Conceito: Programação estruturada baseada em eventos

Não é apenas destinada a relatórios, podemos construir programas de atualização de dados com esta técnica.

Podemos acrescentar elementos adicionais (botões, menus, títulos e telas adicionais)

Tela de seleção Exibição Detalhes de uma linha

Tela 1000

Título del documento

79

|

80 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Processo geral de programação de relatórios

Nome e Descrição do Programa

Montagem e Impressão do Relatório ou outra lógica

Montagem da Tela de parâmetros do usuário

Declaração de Variáveis

Título del documento

80

|

81 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Modelo de um programa (template)

Nome do Programa e Descrição (cabeçalho)

Declaração de dados (variáveis, constantes e tabelas internas)

Parâmetros de entrada da tela do usuário

No. de linhas e colunas classe de mensagem

Seção das Sub-rotinas  (forms)

Lógica da tela de seleção

Ao comando do usuário (caso haja algum botão)

Seleção e Impressão de Dados ou outra lóg. (performs)

Cabeçalho e Rodapé  

Título del documento

81

|

82 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Descrição do modelo (comandos utilizados)

  • Nome do Programa e Descrição (cabeçalho):

Nome do Programa

Data

Última atualização

Descrição

Histórico de Modificações

 

  • Report: No. de Linhas, Colunas e Classe de Mensagem:

No Standard Page Heading

Line-Size

Line-Count

Message - ID

Comentários

(padrão cliente)

Título del documento

82

|

83 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Descrição do modelo (comandos utilizados)

  • Declaração de Dados:

Include ZZIHEADR

Tabelas

Constantes e Variáveis

Tabelas Internas

 

  • Parâmetros de Entrada:

Select-Option

Parameters

Selection-screen

 

  • Lógica da Tela de Seleção (eventos):

Initialization

At Selection-Screen

Título del documento

83

|

84 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Descrição do modelo (comandos utilizados)

  • Seleção e Impressão de Dados:

Start-of-Selection

  •  Ao Comando do Usuário:

At User-Command

At Line Selection 

  • Cabeçalho e Rodapé

Top-of-page

End-of-page

 

  • Seção das Sub-rotinas

Forms Section

Título del documento

84

|

85 of 224

RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”

Programas exemplos

  • ZEXEMP_10a - Navegação em telas – drill down
  • ZEXEMP_10b – Acrescentando títulos e status. Respondendo a comandos do usuário.

Título del documento

85

|

86 of 224

RELATÓRIOS�EXERCÍCIOS

Exercício 1

Desenvolver um programa ZEXER_REP_01_## que mostre as conexões (tabela SPFLI) para a seleção do usuário realizada com os seguintes campos:

  • SPFLI-CARRID e SPFLI-CONNID

A primeira tela deve mostrar: ID da empresa, Conexão, Origem e Destino.

O usuário pode selecionar qualquer linha com conexão, para obter as datas de vôos para a conexão selecionada (tabela SFLIGHT).

Opcional: na primeira tela, realizar uma quebra a cada companhia aérea, indicando o total de conexões encontradas.

Dica: dentro do loop utilize “AT END OF carrid.” ... “ENDAT”

Título del documento

86

|

87 of 224

RELATÓRIOS�EXERCÍCIOS

Exercício 1

Título del documento

87

|

88 of 224

RELATÓRIOS�EXERCÍCIOS

Exercício 2

Desenvolver um programa ZEXER_REP_02_##, relatório de reservas, que imprima os campos abaixo:

Nome de uma companhia aérea (SCARR-CARRNAME)

Código da conexão de vôo individual (SPFLI-CONNID)

Duração do vôo (SPFLI- FLTIME)

Data do vôo (SFLIGHT-FLDATE)

Preço do vôo (SFLIGHT-PRICE)

Nº de marcação (SBOOK-BOOKID)

Nome do passageiro (SCUSTOM- NAME)

Classe vôo (SBOOK-CLASS)

Nome da agência de viagens (STRAVELAG- NAME)

Data marcação (SBOOK- ORDER_DATE)

A tela de seleção deve conter as chaves das tabelas consultadas. (companhia aérea deve ser obrigatória)

Título del documento

88

|

89 of 224

RELATÓRIOS�EXERCÍCIOS

Exercício 2

Título del documento

89

|

90 of 224

PERFORMANCE�EXERCÍCIOS

Exercício 3

Copiar o programa ZEXER_REP_01_## com o nome ZEXER_REP_03_##.

Acrescentar título (TITLE BAR) e status na primeira tela. Incluir botões para ordenação da lista, de forma crescente e decrescente.

Você pode inserir os comandos do status “PRINCIPAL” do programa exemplo ZEXEMP_10B

(Suplemento 🡪Ajustar Modelo)

Título del documento

90

|

91 of 224

PERFORMANCE�TÓPICOS

  • Pensando em performance
  • Acesso ao banco de dados
  • Manipulação dos dados
  • Caso particular de migrações

Título del documento

91

|

92 of 224

PERFORMANCE�REGRAS E EXCEÇÕES

Ao tratarmos de performance em programas estaremos continuamente tratando de regras e exceções

  • Porque tanta exceções: o número de componentes envolvidos e a contínua mudança trazem uma complexidade que não deve ser desprezada
  • Apenas três regras são absolutas:

Pensar

Pesquisar

Testar

Título del documento

92

|

93 of 224

PERFORMANCE�O QUE É PERFORMANCE?

O conceito de performance está diretamente ligado ao conceito de tempo requerido para realizar determinada tarefa em determinadas condições.

Mais rápido = mais performático

Indiretamente, uma vez que trabalhamos com recursos limitados, valores como menor consumo de memória e menor utilização de processamento também estão associados a melhor performance, uma vez que é a performance total que nos interessa, e esta ocorrerá em ambiente com disputa pelos recursos limitados

Mais econômico = mais performático

Estes dois requisitos podem resultar em decisões conflitantes. Não é raro desenvolvedores negligenciarem demasiadamente o segundo requisito.

Título del documento

93

|

94 of 224

PERFORMANCE�SEMPRE MELHORAR A PERFORMANCE?

Boa performance é apenas uma das dimensões de qualidade de um desenvolvimento.

Outras dimensões podem ser conflitantes com a otimização da performance:

  • Manutenabilidade
  • Finalidade
  • Usabilidade
  • Robustez
  • Consistência
  • Confiabilidade

A solução de compromisso entre estas dimensões determina o ponto adequado para a otimização da performance do desenvolvimento.

Levar em conta o uso do desenvolvimento e o ganho real com a melhoria de performance para o negócio.

Título del documento

94

|

95 of 224

ACESSO AO BANCO DE DADOS�HIERARQUIA DE ACESSO

SELECT campos FROM tabela(s) WHERE condições

Título del documento

95

|

96 of 224

ARQUITETURA SAP�ARQUITETURA CLIENTE SERVIDOR

O banco é único

Comunicação Banco x Aplicação

Limitação nos servidores de aplicação

Rede e estações

Título del documento

96

|

97 of 224

ACESSO AO BANCO DE DADOS�COMO OCORRE O ACESSO

Quando um programa realiza uma requisição de dado, o seguinte caminho é seguido (simplificado):

  1. O servidor de aplicação determina se o dado está no buffer local e pode ser lido (tabelas buferizadas).
  2. O servidor do banco de dados verifica se a consulta tem uma estratégia já definida (cache de estratégias SQL). Realiza a consulta com a estratégia encontrada.
  3. O otimizador determina a melhor estratégia de consulta, levando em conta as estatísticas disponíveis.
  4. Caches de dados do banco de dados são considerados para as consultas.
  5. Acesso aos dados em arquivos do banco de dado com a melhor estratégia (leitura completa ou via índice)

Título del documento

97

|

98 of 224

ACESSO AO BANCO DE DADOS�BUFERIZAÇÃO DE TABELAS

Nem todas tabelas permitem buferização.

As regras negócio devem permitir acesso a dados obsoletos sem impactos ( sincronização da ordem de 1 a 2 minutos ).

Dados que sofrem muitas mudanças ( + 1% dos acessos for de atualização ) podem degradar a performance do ambiente se as tabelas forem buferizadas. Tipicamente recomendada para dados de configuração e para alguns dados mestres.

Diferentes tipos de buferização e regras em que o servidor pula o bufer e força a leitura no banco devem ser consideradas.

Título del documento

98

|

99 of 224

ACESSO AO BANCO DE DADOS�OTIMIZADOR DO BANCO DE DADOS

O otimizador define a estratégia de acesso e guarda esta estratégia em um cache para utilização futura.

As estratégias consideradas:

Em uma única tabela:

  • Leitura completa (full scan)
  • Leitura direta por índice (index unique scan)
  • Leitura com apoio de índices (index range scan)

Em várias tabelas:

  • Seqüência de acesso entre as tabelas (Join)

A escolha é definida pelo custo estimado (quantidade de acessos e dados transferidos), baseado nas estatísticas disponíveis.

Título del documento

99

|

100 of 224

ACESSO AO BANCO DE DADOS�REDAÇÃO DAS CONSULTAS

A ordem que as tabelas aparecem em uma consulta com "join", a ordem dos campos consultados e a ordem dos campos na cláusula "where" não afetam a estratégia do otimizador, que é preparado para procurar a melhor opção da ordem de consulta.

Porém, expressões iguais permitem evitar o acionamento do otimizador e ganhar este tempo de análise.

Recomenda-se utilizar a ordem que os elementos aparecem no banco de dados como padronização das expressões de acesso ao banco.

A utilização de HINTS também evita a utilização do otimizador, mas neste caso, podendo fazer uma consulta por uma estratégia pior. Evite usar, a menos que for necessário.

Título del documento

100

|

101 of 224

ACESSO AO BANCO DE DADOS�ÍNDICES

Os índices são tabelas auxiliares, organizadas como um estrutura "árvore", cujos registros estão ordenados segundo os campos do índice.

Principais cuidados:

  • Não criar índices demasiados para tabelas com muita atualização, pois os índices degradam estas operações.
  • Criar índices disjuntos (campos distintos) e bem seletivos.
  • Levar em conta a semântica do campo.
  • Campo MANDT não é necessário (foi no passado)

Título del documento

101

|

102 of 224

ACESSO AO BANCO DE DADOS�RECOMENDAÇÕES GERAIS

  • Diminua os valores possíveis (WHERE)

  • Mantenha o custo da pesquisa pequeno. Atenção à estratégia de acesso: índices podem ter grande impacto nas leituras, porém degradam as atualizações

  • Diminua a quantidade de dados transferida entre o banco de dados e o servidor de aplicação

  • Diminua o número de acessos ao banco de dados

Título del documento

102

|

103 of 224

MANIPULAÇÃO DOS DADOS�TABELAS INTERNAS

Enorme mito: sempre é melhor trazer os dados e manipulá-los internamente no programa

Levar em contra o consumo de memória e o tempo na manipulação de grandes volumes de dados. (particularmente se uma seleção menor for possível)

Considerar a otimização dos programas também na manipulação interna dos dados.

Título del documento

103

|

104 of 224

MANIPULAÇÃO DOS DADOS�RECOMENDAÇÕES GERAIS

  • Escolha o tipo adequado de tabela interna, utilize SORTED e HASHED se necessário
  • Utilize “binary search” em tabelas standard grandes
  • Libere a memória de tabelas internas após o uso (REFRESH)
  • Ordene tabelas internas apenas pelos campos necessários
  • Transfira apenas os campos necessários
  • Utilize ponteiros para manipular grandes tabelas
  • Evite conversões desnecessárias, indique os valores no formato das variáveis

Título del documento

104

|

105 of 224

PERFORMANCE�PODE SER DEMAIS?

Cuidado com o excesso de otimização!

A análise e otimização de performance é importantíssima e falhas podem impactar a utilização do sistema, porém sempre considere as demais dimensões da qualidade

Ganhos de otimização encontram-se na escala de segundos, minutos e até mesmo horas, para programas longos

Capacidade de manutenção encontra-se na escala de horas, dias e até mesmo meses

Nosso foco é atender o negócio, não ter apenas os programas mais performáticos!

Título del documento

105

|

106 of 224

PERFORMANCE�MIGRAÇÃO DE DADOS

Tipos de programas de carga

  • Direct input
  • BAPI
  • iDoc
  • Call transaction
  • Pasta batch input

Estes métodos podem ser utilizados via transação LSMW ou diretamente a partir de programação

Melhor�performance

Título del documento

106

|

107 of 224

PERFORMANCE�TRANSAÇÕES ANALISADAS

ST05 – Performance analysis

DB05 – Análise de tabelas relativamente a campos indexados

SAT – Run time analysis (antiga SE30)

Comando GET RUN TIME na análise de performance de comandos

Título del documento

107

|

108 of 224

PERFORMANCE�READ TABLE

READ TABLE <ITAB>

[INTO <WA>]

[WITH KEY <CAMPO> = <VALOR>]

[INDEX n]

[BINARY SEARCH]

[TRANSPORTING NO FIELDS]

Título del documento

108

|

109 of 224

PERFORMANCE�EXERCÍCIOS

Exercício 1

Criar o programa ZEXER_PER_01_##

Objetivo: comparar a performance dos comandos READ TABLE e READ TABLE BINARY SEARCH.

Para a tarefa criar uma tabela interna de números inteiros.

O programa deve preencher esta tabela com n números inteiros, seqüenciais (1, 2, 3... ), onde n é informado por parâmetro do usuário.

O programa deve fazer a busca do número m informado também por parâmetro, utilizando as duas opções de busca.

Comparar os tempos obtidos utilizando o comando GET RUN TIME FIELD

Título del documento

109

|

110 of 224

BDC SESSION�CONCEITOS INICIAIS

  • O que são sessões BDC

Batch Data Communication

Uso da transação SM35

Uso da transação SHDB

  • Relação com Call transaction

Título del documento

110

|

111 of 224

BDC SESSION�TABELA BDC

A tabela BDC é uma tabela interna com estrutura BDCDATA.

Campo

Tipo

Descrição

program

Char(40)

Nome do programa da transação

dynpro

Numc(4)

Número da tela da transação

dynbegin

Char(1)

Indicador de uma nova tela

fnam

Char(132)

Nome do campo da tela

fval

Char(132)

Valor a ser colocado no campo

Esta tabela deve ser enviada para a Sessão Batch Input ou a instrução call transaction

Como obter as informações nas telas SAP

Título del documento

111

|

112 of 224

BDC SESSION�PREENCHENDO A TABELA BDC

REPORT zxxxxxxx.��DATABEGIN OF tbdc OCCURS 100.�        INCLUDE STRUCTURE bdcdata.�DATAEND OF tbdc.��* Início do programa principal��MOVE ‘sapmf02k’    TO tbdc-program.�MOVE ‘0100’        TO tbdc-dynpro.�MOVE ‘x’           TO tbdc-dynbegin.�APPEND tbdc.��MOVE ‘rf02k-lifnr’ TO tbdc-fnam.�MOVE ‘0010010’     TO tbdc-fval.�APPEND tbdc.��MOVE ‘rf02k-ekorg’ TO tbdc-fnam.�MOVE ‘cntl’        TO tbdc-fval.�APPEND tbdc.

Título del documento

112

|

113 of 224

BDC SESSION�TRANSAÇÃO SHDB

Título del documento

113

|

114 of 224

BDC SESSION�TRANSAÇÃO SHDB

Título del documento

114

|

115 of 224

BDC SESSION�TRANSAÇÃO SHDB

Título del documento

115

|

116 of 224

BDC SESSION�TRANSAÇÃO SHDB

Título del documento

116

|

117 of 224

BDC SESSION�UTILIZANDO A TABELA BDC

Processando como pasta batch input

Uso da transação SM35

Funções para criação da pasta:

BDC_OPEN_GROUP

Abre a sessão de BDC e necessita ser chamada antes de qualquer processamento.

 

BDC_INSERT

Chamada para cada transação no processamento Batch.

 

BDC_CLOSE_GROUP

Chamada após todo processamento para que a pasta de processamento Batch seja criada.

Título del documento

117

|

118 of 224

BDC SESSION�CRIANDO A PASTA BATCH INPUT

Função BDC_OPEN_GROUP

 

Os seguintes parâmetros são passados para a função:

 

CLIENT - Mandante do SAP que será processada a sessão

GROUP - Nome para a pasta de Batch input (não precisa ser único)

HOLDDATE - Suspende o processamento da pasta de Batch input até a data especificada

KEEP - Mantém a pasta de Batch Input após o processamento

USER - Nome de usuário que executará o Batch Input.

Título del documento

118

|

119 of 224

BDC SESSION�CRIANDO A PASTA BATCH INPUT

Função BDC_INSERT

 

Os seguintes parâmetros são passados para a função:

 

TCODE - Código da transação na qual será executada a tabela BDC

DYNPROTAB - Nome da tabela interna utilizada para gerar a pasta de Batch (tabela BDC)

Função BDC_CLOSE_GROUP

 

  • Não existem parâmetros a serem passados para esta função.
  • Pasta é criada

Título del documento

119

|

120 of 224

BDC SESSION�SM35

Título del documento

120

|

121 of 224

BDC SESSION�UTILIZANDO A TABELA BDC

Instrução CALL TRANSACTION

CALL TRANSACTION <trans> [USING <bdctab> MODE <mode> MESSAGE <t_msg>].

 

Onde: <bdctab> - TYPE TABLE OF bdcdata

<t_msg> - TYPE TABLE OF bdcmsgcoll

Os modos para executar este comando são:

A Mostra todas as telas

E Mostra apenas telas com erros

N Não mostra as telas

P Em background e depurável (break-point)

Além do SY-SUBRC, na tabela t_msg teremos todas as mensagens de retorno da transação (sucesso, alertas e erros)

Título del documento

121

|

122 of 224

BDC SESSION�EXERCÍCIO

Exercício

Criar um programa ZEXER_BATCH_## que recebe um arquivo de entrada com uma única coluna de valores. O programa deve ler o arquivo e executar a transação FB01 para cada linha. Imprimir as mensagens de retorno da transação na tela.

BLDAT = sy-datum no formato dd.mm.aaaa

BUDAT = sy-datum no formato dd.mm.aaaa

WRBTR = valor do arquivo

ZFBDT = sy-datum no formato dd.mm.aaaa

VALUT = sy-datum no formato dd.mm.aaaa

Demais campos passar valor do SHDB entre aspas simples

Título del documento

122

|

123 of 224

BDC SESSION�EXERCÍCIO

Exercício – SHDB FB01 (EXER_BATCH)

SAPMF05A 0100 X

BDC_CURSOR RF05A-NEWKO

BDC_OKCODE /00

BKPF-BLDAT 05.04.2013

BKPF-BLART AB

BKPF-BUKRS 0005

BKPF-BUDAT 05.04.2013

BKPF-WAERS EUR

FS006-DOCID *

RF05A-NEWBS 31

RF05A-NEWKO 100

BDC_SUBSCR SAPMF05A 1300APPL_SUB_T

BDC_SUBSCR SAPLSEXM 0200APPL_SUB

SAPMF05A 0302 X

BDC_CURSOR RF05A-NEWKO

BDC_OKCODE /00

BSEG-WRBTR 100

BSEG-MWSKZ V1

BSEG-ZFBDT 05.04.2013

RF05A-NEWBS 40

RF05A-NEWKO 10900050

SAPMF05A 0300 X

BDC_CURSOR BSEG-WRBTR

BDC_OKCODE =BU

BSEG-WRBTR 100

BSEG-MWSKZ V1

BSEG-VALUT 05.04.2013

BDC_SUBSCR SAPLKACB 0001BLOCK

DKACB-FMORE X

SAPLKACB 0002 X

BDC_CURSOR COBL-GSBER

BDC_OKCODE =ENTE

BDC_SUBSCR SAPLKACB 9999BLOCK1

Título del documento

123

|

124 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Online ou Dialog programming: processamento de telas, que alterna com o processamento de uma listagem.

O processamento é transferido entre estes dois processadores alternadamente.

Título del documento

124

|

125 of 224

ON LINE�PROGRAMAÇÃO ON LINE

PAI – Process After Input

Tela

PBO – Process Before Output

Exibição (campos)

A execução de cada tela é dividida em dois eventos:

  • PBO – execução antes da exibição
  • PAI – execução após a exibição

Título del documento

125

|

126 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Programa Principal

Screen 1

Screen 2

Screen 3

GUI-01

GUI-02

Módulos PBO tela 1

Módulos PAI tela 1

Módulos PBO tela 2

Módulos PAI tela 2

Módulos PBO tela 3

Módulos PAI tela 3

Título del documento

126

|

127 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Programa principal

Estrutura de um programa

Include TOP

Include Módulos PAI

Include Subrotinas (Forms)

Include Módulos PBO

A estruturação de programas on line em includes não é obrigatória, porém facilita a organização do código e é incentivada pelo editor.

Título del documento

127

|

128 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Processo geral de programação on line

TOP

Telas

Módulos

Forms

Nome e Descrição do Programa e declaração das variáveis

Programação da lógica (encapsulada em subrotinas)

Definição dos módulos PBO e PAI

Definição das telas e campos

Título del documento

128

|

129 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

129

|

130 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

130

|

131 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

131

|

132 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

132

|

133 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

133

|

134 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

134

|

135 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

135

|

136 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

136

|

137 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

137

|

138 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

138

|

139 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

139

|

140 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

140

|

141 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

141

|

142 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

142

|

143 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

143

|

144 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

144

|

145 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

145

|

146 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

146

|

147 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

147

|

148 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

148

|

149 of 224

ON LINE�PROGRAMAÇÃO ON LINE

Exemplo de Programa Online

Título del documento

149

|

150 of 224

ON LINE�EXERCÍCIO 1

Criar o programa online ZEXER_ON_01_## para dar manutenção na tabela criada no módulo de dicionário de dados ZTBL_##.

Opções de criar, exibir e alterar dados.

Registro não deve existir para ser criado, e registro deve existir para alterar ou exibir.

Na exibição, deixar os campos fechados utilizando o comando abaixo:

    LOOP AT SCREEN.�      IF screen-group1 = 'G1'.�        CLEAR screen-input.�        MODIFY SCREEN.�      ENDIF.�    ENDLOOP.

Título del documento

150

|

151 of 224

ON LINE�EXERCÍCIO 1

Título del documento

151

|

152 of 224

ON LINE�EXERCÍCIO 2

Criar um programa online para simular uma calculadora no SAP, com o nome ZEXER_ON_02##.

Título del documento

152

|

153 of 224

ON LINE�USO DE TABLESTRIP

Para incluir o tablestrip na tela, utilizar o assistente.

Título del documento

153

|

154 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

154

|

155 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

155

|

156 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

156

|

157 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

157

|

158 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

158

|

159 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

159

|

160 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

160

|

161 of 224

ON LINE�USO DE TABLESTRIP

Título del documento

161

|

162 of 224

ON LINE�TABLE CONTROL

Table control é um componente que permite a exibição e manipulação de dados de tabelas internas de forma muito amigável pelo usuário, com exibição semelhante a uma planilha.

A visualização é realizada em várias linhas simultaneamente e, quando corretamente codificado, pode contar com paginação e seleção das linhas para posterior ação.

As table controls são declaradas como controles nos programas e seus dados associados a tabelas internas do programa.

Considere utilizar o assistente para a criação de table controls.

Título del documento

162

|

163 of 224

ON LINE�TABLE CONTROL

Título del documento

163

|

164 of 224

ON LINE�TABLE CONTROL

Título del documento

164

|

165 of 224

ON LINE�TABLE CONTROL

Título del documento

165

|

166 of 224

ON LINE�TABLE CONTROL

Título del documento

166

|

167 of 224

ON LINE�TABLE CONTROL

Título del documento

167

|

168 of 224

ON LINE�TABLE CONTROL

Título del documento

168

|

169 of 224

ON LINE�TABLE CONTROL

Título del documento

169

|

170 of 224

ON LINE�TABLE CONTROL

Título del documento

170

|

171 of 224

ON LINE�TABLE CONTROL

Título del documento

171

|

172 of 224

ON LINE�TABLE CONTROL

Título del documento

172

|

173 of 224

ON LINE�EXERCÍCIO 3

Criar o report ZEXER_ON_03_##, com um parâmetro obrigatório com o código da empresa aérea (CARRID) e um intervalo de valores, não obrigatório da data do vôo (SFLIGHT-FLDATE).

A primeira tela de resultados deve mostrar os seguintes valores:

  • SCARR-CARRID - Denominação breve
  • SCARR-CARRNAME – Nome da companhia

Em uma tabela:

  • SPFLI-CONNID – Conexão
  • CITYFROM – Origem
  • CITYTO – Destino
  • Total de vôos no intervalo de datas (pode ser zero)

Título del documento

173

|

174 of 224

O usuário apenas poderá selecionar linhas com quantidade de vôos maior que zero, caso em que uma segunda tela de detalhes mostra a lista dos vôos disponíveis para a conexão selecionada, com os seguintes campos:

  • SPFLI-CARRID – Denominação breve
  • SPFLI-CONNID – Conexão

Em uma tabela:

  • SFLIGHT-FLDATE
  • SFLIGHT-PRICE
  • SFLIGHT-CURRENCY

Nota: o programa deve mostrar mensagem de erro se a empresa indicada não tem conexões cadastradas, deixando o campo aberto para outra empresa.

ON LINE�EXERCÍCIO 3

Título del documento

174

|

175 of 224

SAPSCRIPT�FORMULÁRIOS SAPSCRIPT

Conceitos iniciais

O Sapscript é a forma original de criar formulários com precisão dentro do SAP. Os formulários são gravados em separado em repositório acessível pela transação SE71.

Os formulários Sapscript são utilizados em vários pontos do SAP, gerados por programas. Estes programas recebem o nome de “programa de povoamento”.

Lógica de negócio

Formatação

Programa de povoamento

(abap)

Formulário Sapscript

Dados

Título del documento

175

|

176 of 224

SAPSCRIPT�PROGRAMA DE POVOAMENTO

Programa ABAP

Um programa de povoamento deve seguir a seguinte estrutura:

 

      • Abertura de um formulário
      • Inicialização de um formulário
      • Seleção dos dados do formulário
      • Impressão dos dados nas janelas do formulário
      • Finalização do formulário
      • Fechamento do formulário

Título del documento

176

|

177 of 224

SAPSCRIPT�PROGRAMA DE POVOAMENTO

Abertura de formulário

call function 'OPEN_FORM'

exporting

DEVICE = 'PRINTER'

* DIALOG = 'X'

FORM = (Nome do Formulário)

LANGUAGE = (Idioma do Formulário)

OPTIONS = ITCPO

exceptions

canceled = 1

device = 2

form = 3

options = 4

unclosed = 5

others = 6.

A estrutura ITCPO define parâmetros de impressão: nº cópias, Impressora, saída imediata, etc.

Título del documento

177

|

178 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Inicialização de formulário

call function 'START_FORM'

exporting

FORM = ' '

LANGUAGE = ' '

exceptions

form = 1

format = 2

unended = 3

unopened = 4

unused = 5

others = 6.

Não é obrigatório para o primeiro formulário, pois o comando de abertura inicializa automaticamente. Necessário quando utilizamos mais de um formulário (a partir do segundo)

Título del documento

178

|

179 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Impressão dos dados

Os dados são enviados em estruturas

A janela MAIN tem comportamento diferente das demais janelas.

call function 'WRITE_FORM'

exporting

ELEMENT = ' '

WINDOW = 'MAIN'

exceptions

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

others = 7.

Título del documento

179

|

180 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Finalização de formulário

Finaliza os formulários inicializados

CALL FUNCTION 'END_FORM'.

* IMPORTING

* RESULT =

* EXCEPTIONS

* UNOPENED = 1

* BAD_PAGEFORMAT_FOR_PRINT = 2

* OTHERS = 3

Título del documento

180

|

181 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Fechando o formulário

Fecha os formulários abertos

CALL FUNCTION 'CLOSE_FORM'.

* IMPORTING

* RESULT =

* RDI_RESULT =

* TABLES

* OTFDATA =

* EXCEPTIONS

* UNOPENED = 1

* BAD_PAGEFORMAT_FOR_PRINT = 2

* SEND_ERROR = 3

* OTHERS = 4

Título del documento

181

|

182 of 224

SAPSCRIPT� FORMULÁRIO

Transação SE71

  • Criar novos formulários (definir o idioma do formulário)

  • Copiar de outros formulários no mandante, com ou sem mudança de idioma

  • Traduzir formulários

  • Copiar de outros mandantes

A SAP disponibiliza muitos formulários para serem copiados e alterados (p.ex.: cartas, comunicados, boletos, cheques)

Título del documento

182

|

183 of 224

SAPSCRIPT� FORMULÁRIO

Tipos de janelas

Janelas MAIN

Janela principal e a única obrigatória.

Podemos ter mais de uma janela MAIN

Preenchimento seqüencial das janelas�(forçado com /: NEXT-WINDOW)

Título del documento

183

|

184 of 224

SAPSCRIPT� FORMULÁRIO

Tipos de janelas

Janelas VAR

Dados podem mudar, durante o preenchimento do formulário

Janelas CONST

Dados permanecem constantes após o primeiro preenchimento.

Título del documento

184

|

185 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

185

|

186 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

186

|

187 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

187

|

188 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

188

|

189 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

189

|

190 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

190

|

191 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Utilização: similar a HTML: <B>Texto</>

Título del documento

191

|

192 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

192

|

193 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

193

|

194 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

194

|

195 of 224

SAPSCRIPT� FORMULÁRIO

Comandos dentro do formulário

Os comandos são indicados por /:

IF..ELSE..ENDIF

CASE..WHEN

DEFINE

PERFORM..USING..CHANGING

BOX..FRAME

INCLUDE

Exemplo:

/: INCLUDE name OBJECT object ID id LANGUAGE spras

Título del documento

195

|

196 of 224

SAPSCRIPT� FORMULÁRIO

Tabuladores

Definidos nos parágrafos, com posicionamento em caracteres(CH), centímetros (CM) ou milímetros (MM)

IL Linha de item

Atributos standard

Espacej.linhas 1.00 LN

Alinhamento Alinh.esq.

Tabuladores

6.00 CH Alinh.à esquerda

25.00 CH Alinh.à esquerda

54.00 CH Alinh.à esquerda

73.00 CH Alinh.à esquerda

Uso:

IL &EKPO-EBELP&,,&EKPO-EMATN&,,&EKPO-TXZ01&

Título del documento

196

|

197 of 224

SAPSCRIPT� PROGRAMA DE POVOAMENTO

Exemplo SAPSCRIPT – SE71

Título del documento

197

|

198 of 224

SAPSCRIPT�EXERCÍCIO

Criar programa de povoamento ZEXERC_SS_## com parâmetro de entrada CARRID e um formulário Sapscript ZEXERSS_## para imprimir os vôos (SFLIGHT) para a companhia selecionada.

Exemplo de saída:

DADOS DE VÔO DA COMPANHIA LH

_______________________________

Relatório de Vôos

Companhia Vôo Data

LH 0400 28.02.1995

LH 0454 17.11.1995

LH 9981 21.12.2002

Título del documento

198

|

199 of 224

SMARTFORMS�O QUE É?

  • ‘Nova’ tecnologia para substituir o Sapscript

  • Transação SMARTFORMS

  • Impressão através de função gerada

  • A função contém todo o processamento do formulário

  • O nome da função é gerado dinamicamente por ambiente

  • Existe outra função para encontrar o nome função do formulário no ambiente

Função do formulário

Formulário Smartform

Dados

Recuperar o nome dinamicamente

Título del documento

199

|

200 of 224

SMARTFORMS�BENEFÍCIOS

  • Ambiente gráfico para desenvolvimento

  • Maior flexibilidade no desenvolvimento e manutenção

  • O programa de impressão, basicamente, só seleciona os dados

  • Alterações no layout do formulário não requerem alterar o programa, exceto nos casos em que se altere a quantidade ou tipo de dados

  • É independente de mandante.

Título del documento

200

|

201 of 224

SMARTFORMS�SAP SMARTFORMS – 1ª TELA

Na transação SMARTFORMS é possível criar:

Formulário: é a interface de saída dos dados, onde é criado o layout do formulário.

Estilo: é um conjunto de parágrafos e formatos de caracteres que serão associados ao formulário.

Módulo de texto: serve para se armazenar textos padrões que podem ser utilizados em mais de um formulário.

Título del documento

201

|

202 of 224

SMARTFORMS�SMARTFORM BUILDER

Quadro de Manutenção

Form Painter

Menu de navegação

Título del documento

202

|

203 of 224

SMARTFORMS�SMARTFORM BUILDER

Menu de navegação: Exibe os nós contidos no formulário, e permite incluir novos nós, alterar posição no formulário, eliminar, etc.

Quadro de manutenção: Exibe as propriedades do nó selecionado no menu de navegação.

Form Painter: Exibe e permite manipular as janelas e alguns outros objetos(nós) do formulário em formato gráfico.

Título del documento

203

|

204 of 224

SMARTFORMS�FUNÇÕES DE EXECUÇÃO

Função para obter o nome da função do formulário:

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'�    EXPORTING�      FORMNAME           = 'ZEXEMPLO_00'�    IMPORTING�      FM_NAME            = V_SMART�    EXCEPTIONS�      NO_FORM            = 1�      NO_FUNCTION_MODULE = 2�      OTHERS             = 3.

Título del documento

204

|

205 of 224

SMARTFORMS�FUNÇÕES DE EXECUÇÃO

Função do formulário. Onde V_SMART indica o nome da função do formulário (chamada dinâmica).

 CALL FUNCTION V_SMART�    TABLES�      T_SPFLI                    = T_SPFLI�      T_SFLIGHT                  = T_SFLIGHT�      T_SCARR                    = T_SCARR�      T_SAPLANE                  = T_SAPLANE�   EXCEPTIONS�     FORMATTING_ERROR           = 1�     INTERNAL_ERROR             = 2�     SEND_ERROR                 = 3�     USER_CANCELED              = 4�     OTHERS                     = 5.

Título del documento

205

|

206 of 224

SMARTFORMS�EXEMPLO

Título del documento

206

|

207 of 224

SMARTFORMS�EXEMPLO

Título del documento

207

|

208 of 224

SMARTFORMS�EXEMPLO

Título del documento

208

|

209 of 224

SMARTFORMS�EXEMPLO

Título del documento

209

|

210 of 224

SMARTFORMS�EXEMPLO

Título del documento

210

|

211 of 224

SMARTFORMS�EXEMPLO

Título del documento

211

|

212 of 224

SMARTFORMS�EXEMPLO

Título del documento

212

|

213 of 224

SMARTFORMS�EXEMPLO

Título del documento

213

|

214 of 224

SMARTFORMS�EXEMPLO

Título del documento

214

|

215 of 224

SMARTFORMS�EXEMPLO

Opções de saída: definir linha e coluna

Título del documento

215

|

216 of 224

SMARTFORMS�EXEMPLO

Título del documento

216

|

217 of 224

SMARTFORMS�EXEMPLO

Título del documento

217

|

218 of 224

SMARTFORMS�EXEMPLO

Título del documento

218

|

219 of 224

SMARTFORMS�EXEMPLO

Título del documento

219

|

220 of 224

SMARTFORMS�EXEMPLO

Título del documento

220

|

221 of 224

SMARTFORMS�EXEMPLO

Título del documento

221

|

222 of 224

SMARTFORMS�EXEMPLO

Título del documento

222

|

223 of 224

SMARTFORMS�EXEMPLO

Título del documento

223

|

224 of 224

SMARTFORMS�ATIVIDADE

Desenvolver um programa que selecione a companhia aérea e exiba os vôos e datas desta companhia num Smartform. (mesmo layout do Sapscript criado)

Opcional: incluir imagem no cabeçalho conforme exemplo abaixo

Título del documento

224

|