Você está na página 1de 7

*======================================================================*

* Open Mind IT
*
* Programa : Z_TESTE_BRUNO_EX01
*
* Funo : Exibio de Relatrio de Vos com Horrios - Write.
*
* Analista : <Fulano de Tal>
*
* Autor
: Bruno Santos
*
* Data
: 26.05.2014
*
*======================================================================*
* Log de Modificaes:
*
*======================================================================*
* Data
|Descrio
|Autor
*
*
|
|
*
*======================================================================*
REPORT z_teste_bruno_ex01 LINE-SIZE 133 . "LINE-SIZE - Indica o nmero mximo de col
unas do tela
*======================================================================*
* CONSTANTES
*======================================================================*
TABLES: sflight, spfli.
*======================================================================*
* CONSTANTES
*======================================================================*
CONSTANTS: c_x TYPE c VALUE 'X'.
*======================================================================*
* VARIANTES GLOBAIS
*======================================================================*
DATA: vg_campo(50) TYPE c.
*======================================================================*
* ESTRUTURAS
*======================================================================*
TYPES:
"Estrutura de Vo
BEGIN OF y_sflight,
carrid
TYPE sflight-carrid,
connid
TYPE sflight-connid,
fldate
TYPE sflight-fldate,
END OF y_sflight,
"Estrutura de Horrio de vos
BEGIN OF y_spfli,
carrid
TYPE spfli-carrid,
connid
TYPE spfli-connid,
cityfrom
TYPE spfli-cityfrom,
airpfrom
TYPE spfli-airpfrom,
cityto
TYPE spfli-cityto,
airpto
TYPE spfli-airpto,
deptime
TYPE spfli-deptime,
arrtime
TYPE spfli-arrtime,
END OF y_spfli,
"Estrutura de Horrio de vos
BEGIN OF y_saida,
carrid
TYPE spfli-carrid,
connid
TYPE spfli-connid,
fldate
TYPE sflight-fldate,
cityfrom
TYPE spfli-cityfrom,
airpfrom
TYPE spfli-airpfrom,
cityto
TYPE spfli-cityto,

airpto
TYPE spfli-airpto,
deptime
TYPE spfli-deptime,
arrtime
TYPE spfli-arrtime,
END OF y_saida.
*======================================================================*
* TABELAS INTERNAS
*======================================================================*
DATA: t_sflight
TYPE TABLE OF y_sflight,
t_spfli
TYPE TABLE OF y_spfli,
t_saida
TYPE TABLE OF y_saida.
*======================================================================*
* WORK AREAS
*======================================================================*
DATA: wa_sflight
TYPE y_sflight,
wa_spfli
TYPE y_spfli,
wa_saida
TYPE y_saida.
*======================================================================*
* TELA DE SELEO
*======================================================================*
* Parmetros de Seleo
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
"Denominao breve da companhia area
s_carrid FOR sflight-carrid,
"Cdigo da conexo de vo individual
s_connid FOR sflight-connid.
SELECTION-SCREEN END

OF BLOCK b1.

*======================================================================*
* INICIALIZAO
*======================================================================*
INITIALIZATION.
*
* "Inicializando o SO do CARRID
* s_carrid-sign
= 'I'.
* s_carrid-option = 'BT'.
* s_carrid-low
= 'AA'.
* s_carrid-high
= 'ZZ'.
* APPEND s_carrid.
*======================================================================*
* INCIO DO PROCESSAMENTO
*======================================================================*
START-OF-SELECTION.
"Seleciona os dados
PERFORM seleciona_dados.
"Monta a tabela de sada
PERFORM monta_saida.
"Exibe o relatrio de Vos
PERFORM exibe_relatorio_voo.

************************************************************************
*
AT USER-COMMAND
*
************************************************************************
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'TESTAR'.
MESSAGE 'TESTE FOI CLICADO!!!' TYPE 'I'.
WHEN 'HOTSPOT'.
"Mostra o campo clicado
GET CURSOR FIELD vg_campo.
CASE vg_campo.
WHEN 'WA_SAIDA-CARRID'.
MESSAGE 'Cia Area' TYPE 'I'.
ENDCASE.
WHEN 'VOLTAR' OR 'ENCERRAR' OR 'SAIR'.
LEAVE PROGRAM.
ENDCASE.
*AT LINE-SELECTION. "Quando clicar na linha
*
* "Mostra o campo clicado
* GET CURSOR FIELD vg_campo.
*
* CASE vg_campo.
*
*
WHEN 'WA_SAIDA-CARRID'.
*
*
MESSAGE 'Cia Area' TYPE 'I'.
*
* ENDCASE.
* CALL TRANSACTION 'ME23N'.
*======================================================================*
* FORMS
*======================================================================*
*&---------------------------------------------------------------------*
*&
Form SELECIONA_DADOS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM seleciona_dados .
"Seleciona os Vos
SELECT carrid connid fldate

FROM sflight
INTO TABLE t_sflight
WHERE carrid IN s_carrid
AND connid IN s_connid.
"Verifica se encontrou informaes na seleo de dados acima
IF sy-subrc = 0.
"Seleciona os Vos
SELECT carrid connid cityfrom airpfrom cityto
airpto deptime arrtime
FROM spfli
INTO TABLE t_spfli
FOR ALL ENTRIES IN t_sflight
WHERE carrid EQ t_sflight-carrid
AND connid EQ t_sflight-connid.
ENDIF.
ENDFORM.
" SELECIONA_DADOS
*&---------------------------------------------------------------------*
*&
Form MONTA_SAIDA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM monta_saida .
"Ordena as tabelas internas
SORT: t_sflight BY carrid connid,
t_spfli BY carrid connid.
"Monta a tabela de sada
LOOP AT t_sflight INTO wa_sflight.
"L os horrios dos vos
READ TABLE t_spfli INTO wa_spfli WITH KEY carrid = wa_sflight-carrid
connid = wa_sflight-connid
BINARY SEARCH.
"Se encontrou...
IF sy-subrc = 0.
wa_saida-carrid

= wa_sflight-carrid.

wa_saida-connid

= wa_sflight-connid.

wa_saida-fldate

= wa_sflight-fldate.

wa_saida-cityfrom = wa_spfli-cityfrom.
wa_saida-airpfrom = wa_spfli-airpfrom.
wa_saida-cityto

= wa_spfli-cityto.

wa_saida-airpto

= wa_spfli-airpto.

wa_saida-deptime = wa_spfli-deptime.

wa_saida-arrtime = wa_spfli-arrtime.
APPEND wa_saida TO t_saida.
ENDIF.
ENDLOOP.
ENDFORM.
" MONTA_SAIDA
*&---------------------------------------------------------------------*
*&
Form EXIBE_RELATORIO_VOO
*&---------------------------------------------------------------------*
* CORES DE CAMPOS
*&---------------------------------------------------------------------*
* 0 COL_BACKGROUND - depends on GUI
* 1 COL_HEADING
- gray-blue
* 2 COL_NORMAL
- light gray
* 3 COL_TOTAL
- yellow
* 4 COL_KEY
- blue-green
* 5 COL_POSITIVE - green
* 6 COL_NEGATIVE - red
* 7 COL_GROUP
- violet
*----------------------------------------------------------------------*
* EXEMPLOS:
*----------------------------------------------------------------------*
* FORMAT COLOR 1 INTENSIFIED ON
* FORMAT COLOR 1 INTENSIFIED OFF
* FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
* FORMAT COLOR COL_HEADING
* FORMAT COLOR 3
*
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM exibe_relatorio_voo .
DATA: vl_qtd_registros
vl_flag.

TYPE i,

"Verifica se a tabela de sada contm dados


IF t_saida[] IS NOT INITIAL.
SET PF-STATUS 'STATUS_GUI'.
DESCRIBE TABLE t_saida LINES vl_qtd_registros.
"Monta o cabealho do Relatrio
FORMAT COLOR 1 INTENSIFIED ON.
WRITE: /'RELATRIOS DE VOS'.
SKIP 1.
FORMAT COLOR 3.
WRITE: /'Quantidade de Registros: ', vl_qtd_registros.
ULINE.
SKIP 2.
WRITE: / sy-uline.

FORMAT COLOR 1 INTENSIFIED OFF.


WRITE:/01 'Cia Area',
15 sy-vline,
16 'Cod Vo',
30 sy-vline,
31 'Dt Vo',
45 sy-vline,
46 'Cid Partida',
60 sy-vline,
61 'Aer Partida',
75 sy-vline,
76 'Cid Chegada',
90 sy-vline,
91 'Aer Destino',
105 sy-vline,
106 'Hora Partida',
120 sy-vline,
121 'Hora Chegada',
133 sy-vline.
FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
"Limpa o flag, antes da utilizao
CLEAR vl_flag.
"Monta os registros do relatrio
LOOP AT t_saida INTO wa_saida.
"Se o flag estiver marcado, uma nova linha
IF vl_flag IS NOT INITIAL.
"Desmarca o flag
CLEAR vl_flag.
SKIP 1.
WRITE: / sy-uline.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE:/01 'Cia Area' HOTSPOT,
15 sy-vline,
16 'Cod Vo',
30 sy-vline,
31 'Dt Vo',
45 sy-vline,
46 'Cid Partida',
60 sy-vline,
61 'Aer Partida',
75 sy-vline,
76 'Cid Chegada',
90 sy-vline,
91 'Aer Destino',
105 sy-vline,
106 'Hora Partida',
120 sy-vline,
121 'Hora Chegada',
133 sy-vline.
FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
ENDIF.

"Cria a primeira linha


WRITE:/01 wa_saida-carrid CENTERED,
15 sy-vline,
16 wa_saida-connid,
30 sy-vline,
31 wa_saida-fldate,
45 sy-vline,
46 wa_saida-cityfrom,
60 sy-vline,
61 wa_saida-airpfrom,
75 sy-vline,
76 wa_saida-cityto,
90 sy-vline,
91 wa_saida-airpto,
105 sy-vline,
106 wa_saida-deptime,
120 sy-vline,
121 wa_saida-arrtime,
133 sy-vline.
AT END OF carrid.
WRITE: / sy-uline.
"Marca a varivel de controle
vl_flag = c_x.
ENDAT.
ENDLOOP.
ELSE.
"Mensagem de Aviso
MESSAGE 'No foram encontradas informaes de vos.' TYPE 'I'.
ENDIF.
ENDFORM.

" EXIBE_RELATORIO_VOO

Você também pode gostar