Visual – Selection Screen, Select Options, Range of Values, Internal Table, Transparent Table, Validate – Abap

Publicado: 11 de março de 2014 em Abap

No post anterior aprendemos como montar telas gráficas dinamicamente, continuaremos criando uma tela gráfica de seleção mesclando tabelas internas e o banco de dados SAP, usando comandos OPEN SQL, para preencher as tabelas transparentes do Flight Model. Para quem não se lembra, o Flight Model é o principal exemplo do NetWeavear 7  e suas tabelas transparentes por default no mandante 001 não possui dados, por isto vamos inserir os dados manualmente, temos que ter cuidado para não esquecer de preencher as outras tabelas que fazem referencia (Foreign Key) a nossa tabela de voo, veja a imagem abaixo:

Fmodel

Flight Model:

https://desenvolvimentoaberto.wordpress.com/2014/02/20/netweaver-flight-model-introducao-ao-database-mini-sap/

Foreign Key

Uma chave externa ou estrangeira é um atributo ou uma combinação de atributos numa relação, cujos valores são necessários para equivaler à chave primária de uma relação. O conceito de Chave estrangeira em uso de banco de dados se refere ao tipo de relacionamento entre distintas tabelas de dados do banco de dados. Uma chave estrangeira é chamada quando há o relacionamento entre duas tabelas. Sempre em chave estrangeira vai haver relacionamentos entre tabelas, por exemplo, uma tabela que possui relação com a chave primaria de outra tabela.

Validação de Parâmetros

A validação de entrada da tela pode ser feita no evento da instrução:

AT SELECTION-SCREEN

Útil se quiser exigir a entrada de dados do usuário antes de processamento principal.

Usando AT SELECTION-SCREEN ON nome do campo:

  • Disparado se nome do campo foi submetido.
  • Se um erro ou aviso é emitido, o campo é realçado.

EM AT SELECTION-SCREEN ON RADIOBUTTON GROUP nome do grupo:

  • Se um erro ou aviso é emitido, o grupo é realçado.

Range of Values

Permite que o usuário selecione um intervalo de valores, criando o componente na tela já com botões e tabelas relacionadas.

Sintaxe:

SELECT-OPTIONS itabname FOR dataobject.

Exemplo:

Neste exemplo temos dois programas distintos o primeiro preenche os dados do Flight Model, preenchendo a tabela de voo e as tabelas que fazem relação e possuem uma chave estrangeira na tabela voo. O segundo é nossa tela de seleção que busca todos os voos de uma agencia de viagem, também como fazer a validação em um campo de parâmetros.

Abap – Programa #1

*&---------------------------------------------------------------------*
*& Report  ZDADOS
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Insere Dados manualmente no Flight Model
*&---------------------------------------------------------------------*

REPORT  ZDADOS.

* Define tabelas do Banco de dados
TABLES SCARR.
TABLES SGEOCITY.
TABLES SAIRPORT.
TABLES SPFLI.

* Apaga dados existentes
DELETE FROM SCARR.
DELETE FROM SGEOCITY.
DELETE FROM SAIRPORT.
DELETE FROM SPFLI.

* Cria MATRIZs de dados (rows)
DATA MATRIZ1 TYPE SCARR.
DATA MATRIZ2 TYPE SGEOCITY.
DATA MATRIZ3 TYPE SAIRPORT.
DATA MATRIZ4 TYPE SPFLI.

* Insere dados.

MATRIZ1-CARRID = '001'.
MATRIZ1-CARRNAME = 'DA Airlines'.
MATRIZ1-CURRCODE = 'REAL'.
MATRIZ1-MANDT = '001'.
MATRIZ1-URL  = 'https://desenvolvimentoaberto.wordpress.com'.

INSERT INTO SCARR VALUES MATRIZ1.

MATRIZ2-CITY = 'São Paulo'.
MATRIZ2-COUNTRY = 'Bra'.
MATRIZ2-LATITUDE = '23'.
MATRIZ2-LONGITUDE = '46'.
MATRIZ2-MANDT = '001'.

INSERT INTO SGEOCITY VALUES MATRIZ2.

MATRIZ2-CITY = 'Rio de Janeiro'.
MATRIZ2-COUNTRY = 'Bra'.
MATRIZ2-LATITUDE = '22'.
MATRIZ2-LONGITUDE = '43'.
MATRIZ2-MANDT = '001'.

INSERT INTO SGEOCITY VALUES MATRIZ2.

MATRIZ3-ID ='001'.
MATRIZ3-MANDT ='001'.
MATRIZ3-NAME = 'Aeroporto de Congonhas'.
MATRIZ3-TIME_ZONE = 'GMT-3'.

INSERT INTO SAIRPORT VALUES MATRIZ3.

MATRIZ3-ID ='002'.
MATRIZ3-MANDT ='001'.
MATRIZ3-NAME = 'Aeroporto Santos Dumont'.
MATRIZ3-TIME_ZONE = 'GMT-3'.

INSERT INTO SAIRPORT VALUES MATRIZ3.

MATRIZ4-AIRPFROM = '001'.
MATRIZ4-AIRPTO = '002'.
MATRIZ4-ARRTIME = '170000'.
MATRIZ4-CARRID = '001'.
MATRIZ4-CITYFROM = 'São Paulo'.
MATRIZ4-CITYTO = 'Rio de Janeiro'.
MATRIZ4-CONNID = '001'.
MATRIZ4-COUNTRYFR = 'Bra'.
MATRIZ4-COUNTRYTO = 'Bra'.
MATRIZ4-DEPTIME = '181500'.
MATRIZ4-DISTANCE = '500'.
MATRIZ4-DISTID = 'KM'.
MATRIZ4-FLTIME = '75'.
MATRIZ4-FLTYPE = 'D'.
MATRIZ4-MANDT = '001'.
MATRIZ4-PERIOD = '1'.

INSERT INTO SPFLI VALUES MATRIZ4.

* Exibe imagem
WRITE : / 'Dados inseridos'.

Abap – Programa #2

*&---------------------------------------------------------------------*
*& Report  ZVISUAL_D
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Selection Screen - Database
*&---------------------------------------------------------------------*

REPORT  ZVISUAL_D.

* Define internal Table
DATA str TYPE spfli.

* Monta tela
SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME
  TITLE titulo.

   SELECTION-SCREEN BEGIN OF LINE.

      SELECTION-SCREEN COMMENT 1(22) com.
      SELECT-OPTIONS userair FOR str-carrid.

   SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK bloco1.

SELECTION-SCREEN BEGIN OF BLOCK bloco2 WITH FRAME
  TITLE titulo1.

    SELECTION-SCREEN COMMENT 1(40) com1.
    PARAMETER valor TYPE string.

SELECTION-SCREEN END OF BLOCK bloco2.

* Carrega rotulos da tela
LOAD-OF-PROGRAM.

Titulo = 'Modelo de Voo (Flight Model - NetWeaver 7'.
titulo1 = 'Evento de validação'.
com = 'Selecione Linha Aerea'.
com1 = 'Experimente digitar a palavra: VALIDA'.

* Evento de validação
AT SELECTION-SCREEN ON valor.
  IF valor = 'VALIDA'.
    MESSAGE 'Você digitou uma palavra Invalida' TYPE 'W'.
  ENDIF.

* Inicia o Programa
START-OF-SELECTION.

* Seleciona os dados do banco de dados e coloca na tabela interna
SELECT carrid connid countryfr cityfrom cityto arrtime deptime distance distid  FROM spfli INTO
CORRESPONDING FIELDS OF str WHERE carrid IN userair.

WRITE: / str-carrid, str-connid, str-countryfr, str-cityfrom, str-cityto,
         str-arrtime, str-deptime, str-distance, str-distid.

ENDSELECT.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s