Você está na página 1de 48

ABAP Training

Curso Bsico
ABAP/4

1
ABAP Training

Conceito breve do SAP

O SAP um sistema que trabalha com um nmero muito grande


de tabelas interligadas, que armazenam e manipulam os valores de
controle dos processos. Essas tabelas so responsveis pelo
armazenamento dos valores do sistema e so divididas em grupos que
se interligam em um todo. Assim, existem tabelas responsveis pelas
informaes de FI, outras pelas informaes de SD, outras ainda por
MM, mas todas elas apresentam campos chaves que permitem, pelos
mais diferentes e complicados caminhos, a interligao e consistncia de
todo o sistema. Embora a ferramenta ABAP/4 dentro do SAP seja muito
poderosa e praticamente capaz de permitir qualquer customizao do
sistema, muito importante manter os conceitos originais sempre em
mente, e nunca tentar forar alguma coisa que deveria ter um
comportamento natural. Por exemplo, nunca tente alterar um valor de
uma tabela do SAP (embora perfeitamente possvel, com o comando
UPDATE), sem um minucioso estudo de suas implicaes
anteriormente. Isso pode comprometer a integridade dos dados do
sistema, se no forem atualizados todos os valores de todas as tabelas
relacionadas a essa alterao.

2
ABAP Training

Instncia X Client

Tambm muito importante o conceito do funcionamento do


ambiente do sistema durante a evoluo de um projeto. Inicialmente
devemos entender os conceitos de client e instncia:

Client definido como sendo uma unidade independente do R/3, em


termos comerciais, organizacionais e tcnicos. Isso significa que
possuem sua prpria configurao, dados de aplicao e dados
cadastrais (master data).

Instncia definida como um ambiente do R/3 que agrupa um ou


mais clients, onde se executa um determinado trabalho.

Uma instncia de trabalho, geralmente possui mais de um client,


onde so trabalhados simultaneamente diferentes frentes de trabalho do
projeto. A inteno dessa diviso que se possa trabalhar somando
valores, sem que haja conflitos de interesse. Por exemplo, durante um
projeto, o client para desenvolvimento das customizaes de ABAP deve
ser diferente dos outros, pois trabalha muito com testes e alteraes
constantes, o que inviabiliza outros tipos de servios.
Se essa diviso muitas vezes ajuda, algumas vezes atrapalha.
Geralmente as massas de dados so diferentes nos clients, e o
comportamento principalmente nos testes dos produtos customizados
pode ser diferente. O recomendado pela prpria SAP que exista um
client s para testes, com massa de dados completa que permita
recarga sempre que necessrio, o que permitiria que as condies de
teste pudessem ser repetidas. No dia a dia de um projeto isso muito
difcil, pois a manuteno desses clients pelo time de basis geralmente
no muito bem vista.
As instncias variam tambm ao longo de um projeto. A medida
que o sistema vai sendo refinado, geralmente se inicia uma nova
instncia livre dos vcios e restos de testes da anterior. Pelo menos 3
instncias sempre existem durante o perodo de um projeto. A instncia
de desenvolvimento, a de qualidade e finalmente a de produo. Cada
vez que o sistema migrado de uma instncia para a outra, somente
deve ser aproveitado o que est comprovadamente funcionando na
instncia anterior, de modo a diminuir os erros a cada migrao.

3
ABAP Training

4
ABAP Training

Objetos Client Dependent e Client Independent

Todos os objetos criados em um sistema SAP, podem ser divididos


em dois grupos, tratados diferentemente ao longo de um projeto. Os
objetos chamados Client Independents so aqueles que uma vez
criados podem ser utilizados por todos os clients de uma mesma
instncia, sem que se necessite de nenhuma articulao adicional. O
simples fato de se encontrar ativo no repositrio do sistema habilitado
para a instncia, o permite ser utilizado por todos os clients dessa
instncia, de maneira simultnea. O maior exemplo de objetos
independentes do client so os programas de ABAP/4 normais
customizados. Por exemplo, um report criado em um client de
desenvolvimento, pode ser executado de um outro client de teste,
existente na mesma instncia, uma vez que tenha sido gerado e ativado.
Os objetos dependentes do client, ao contrrio, uma vez criado,
por exemplo, no client de desenvolvimento no pode ser executado de
nenhum outro, a menos que seja transportado ou copiado para o seu
destino. Esse um exemplo tpico dos formulrios em SAPscript.
Dentro da classe dos objetos dependentes do client, existe um
subgrupo que exige uma ateno maior ainda. o caso dos logotipos
utilizados dentro de um SAPscript. Esses objetos, alm de no serem
compartilhados pelos clients, tambm no geram request ao serem
criados, o que impossibilita serem transportados diretamente,
precisando associarmos, primeiro, esses elementos a uma Change
Request atravs de um programa. Nesse caso, os logotipos devem ser
gerados em cada um dos clientes em que se deseje utiliz-lo, atravs da
execuo de um programa do SAP. Esse tipo de problema, ao longo de
um projeto, exige uma ateno especial, para evitar problemas futuros.
Por exemplo, o desenhista tcnico deve tomar o cuidado de anexar o
arquivo .TIF do logotipo na especificao, para futura repetio do
processo de gerao do logotipo dentro do sistema. Caso esse cuidado
no seja tomado, futuramente pode-se obter um logotipo de tamanho
diferente, gerando retrabalho e perda de tempo.

5
ABAP Training

Transaes

Transao um cdigo alfanumrico de 20 caracteres, utilizado


para iniciar um processo dentro do sistema SAP. Todo e qualquer
processo ou parte dele deve ser executado dentro do sistema atravs de
uma transao. Na customizao de ABAP/4, sempre que um GAP do
sistema coberto, isso gera pelo menos uma transao, de modo que o
usurio possa executar esse produto customizado de dentro do sistema.
Toda operao realizada atravs do menu do sistema, tambm
corresponde a uma transao. Um mtodo para conhecermos o cdigo
de uma transao cujo caminho pelo menu sabido, entrarmos na
mesma, e na tela inicial desta transao, utilizarmos o menu Sistema
Status, que informa o programa tela e transao executados.
No desenvolvimento de customizaes ABAP/4, as principais
transaes utilizadas, so:

SE38 abre o editor ABAP/4


SE16 permite a visualizao do contedo de tabelas do SAP
SE11 permite a visualizao da arquitetura de uma
tabela/estrutura do SAP
SE43 criao de menus
SE93 criao de transaes customizadas
SE71 criao e manuteno de formulrios SAPscripts
CMOD criao de projetos Enhancements (Field Exits, User Exits, ...)

6
ABAP Training

Editor ABAP/4

O editor de programao ABAP/4 do SAP pode ser encontrado


atravs do caminho :

Menu SAP Ferramentas ABAP Workbench Desenvolvimento


Editor Abap

7
ABAP Training

Ou pela transao SE38.

Uma tela para a entrada do nome do programa aberta, como


exemplificada abaixo. Para criar um programa novo, utilize um nome
ainda no existente no repositrio, e apertar o boto Criar. Para editar
ou exibir um programa j existente, entrar com o nome do programa e
apertar os botes respectivos.

Padres de nomenclatura, no s para nome de programas, mas


para todos os desenvolvimentos no SAP R/3 variam de cliente para
cliente e em alguns casos de projeto a projeto e principalmente com a
verso do SAP com a qual se est trabalhando. Contudo, em todos os
casos os nomes dos desenvolvimentos comeam sempre com Z ou Y,
SAPMZ ou SAPMY ou SAPFZ ou SAPFY.

8
ABAP Training

A aparncia do editor no difere muito de um editor de texto bem simples, onde


se possvel escrever linhas de comando e lgica.

9
ABAP Training

Um dos recursos permitidos para que se utilize um outro editor


como o Note Pad do Windows, o recurso de Download e Upload.
Atravs do menu Utilitrios Outros Utilitrios
Upload/Download, o sistema permite que cdigos escritos em outros
editores possam ser carregados no editor ABAP/4 e vice-versa.

Esse recurso nos permite salvar os cdigos ainda inativos ou


incompletos. extremamente til para mantermos um controle prprio
das verses quando se est codificando.

10
ABAP Training

Exemplos
Curso Bsico

11
ABAP Training

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.

Existem alguns tipos de variveis chamadas de variveis do sistema. Elas possuem


informaes e dados do processamento, como o idioma de acesso (sy-langu), a data (sy-
datum), a hora (sy-uzeit), etc.. Essas informaes esto contidas na estrutura SYST (Campos
de sistema ABAP, que pode ser abreviada para SY) e podem ser acessadas conforme o
exemplo acima, o nome da estrutura mais o campo que se deseja.

12
ABAP Training

EXEMPLO 2

REPORT ZEXEMP_02 NO STANDARD PAGE HEADING.

WRITE 'PAG 1'.

NEW-PAGE.

WRITE 'PAG 2'.

TOP-OF-PAGE.

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


80 'Page',
SY-PAGNO.
ULINE.

13
ABAP Training

EXEMPLO 3
REPORT ZEXEMP_03.

WRITE : 'NORMAL'.

FORMAT INTENSIFIED OFF.

WRITE : 'NEGRITO '.

FORMAT COLOR 1.

WRITE : 'FUNDO AZUL'.

FORMAT COLOR OFF.

FORMAT INTENSIFIED ON.

WRITE : 'NORMAL'.

14
ABAP Training

EXEMPLO 4
REPORT ZEXEMP_04.

DATA: NOME(20) TYPE C,


RG(10) TYPE I,
DATA LIKE BKPF-BUDAT,
HORA(8) VALUE '14:05:45'.

MOVE 'Solution Center' TO NOME.


RG = 42159818.
DATA = '19973005'.
SKIP 2.
WRITE: 'Nome:',
NOME,
/ 'RG:',
RG UNDER NOME,
/ 'Data:',
DATA,
/ 'Hora:',
HORA.

15
ABAP Training

EXEMPLO 5
REPORT ZEXEMP_05.

PARAMETER: P_NOME1(15) TYPE C,


P_NOME2(15) TYPE C DEFAULT 'Abap Factory',
P_BOTAO1 RADIOBUTTON GROUP G1,
P_BOTAO2 RADIOBUTTON GROUP G1.

WRITE P_NOME1.

IF P_NOME2 NE 'ABAP FACTORY'.


WRITE P_NOME2.
ENDIF.

IF P_BOTAO1 = 'X'.
WRITE / 'BOTO 1 ACIONADO'.
ELSE.
WRITE / 'BOTO 2 ACIONADO'.
ENDIF.

16
ABAP Training

17
ABAP Training

18
ABAP Training

EXEMPLO 6

REPORT ZEXEMP_06 MESSAGE-ID za.

TABLES t005h.

PARAMETER: p_pais LIKE t005s-land1.

DATA: tg_t005h TYPE TABLE OF t005h,


wa_t005h TYPE t005h.

SELECT *
FROM t005h
INTO TABLE tg_t005h
WHERE land1 = p_pais
ORDER BY cityc.

IF sy-subrc EQ 0.
LOOP AT tg_t005h INTO wa_t005h.
WRITE: / wa_t005h-bezei,
wa_t005h-land1.
ENDLOOP.

ELSE.
MESSAGE i006.
ENDIF.

19
ABAP Training

20
ABAP Training

21
ABAP Training

EXEMPLO 7
REPORT ZEXEMP_07.

TABLES: t005h.

DATA v_var1 VALUE '1'.

DATA: tg_t005h TYPE TABLE OF t005h,


wa_t005h TYPE t005h.

SELECT *
FROM t005h
INTO TABLE tg_t005h
WHERE land1 IN ('US', 'DE')
ORDER BY land1.

IF sy-subrc EQ 0.
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.

IF wa_t005h-land1 = 'DE'.
FORMAT COLOR COL_TOTAL.
ELSE.
FORMAT COLOR COL_NORMAL.
ENDIF.

WRITE : / wa_t005h-land1,
21 wa_t005h-bezei.
ENDLOOP.

ELSE.
WRITE text-001.
ENDIF.

22
ABAP Training

23
ABAP Training

EXEMPLO 8
REPORT ZEXEMP_08 MESSAGE-ID za.

TABLES: spfli.

DATA: vg_arquivo TYPE string VALUE 'C:\TEMP\curso.txt'.

TYPES: BEGIN OF y_spfli,


carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
END OF y_spfli.

DATA tg_spfli TYPE TABLE OF y_spfli.

PARAMETER p_carrid TYPE spfli-carrid DEFAULT 'AA'.

SELECT carrid connid countryfr cityfrom countryto cityto


FROM spfli
INTO TABLE tg_spfli
WHERE carrid EQ p_carrid.

IF sy-subrc EQ 0.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = vg_arquivo
write_field_separator = 'X'
TABLES
data_tab = tg_spfli
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
ELSE.

24
ABAP Training

MESSAGE e008.
ENDIF.

25
ABAP Training

26
ABAP Training

EXEMPLO 9
REPORT ZEXEMP_09 MESSAGE-ID za.

TABLES zspfli.

DATA: vg_arquivo TYPE string VALUE 'C:\TEMP\CURSO.TXT',


vg_cont TYPE i.

TYPES: BEGIN OF y_spfli,


carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
END OF y_spfli.

DATA: tg_spfli TYPE TABLE OF y_spfli,


wa_spfli TYPE y_spfli.

CALL FUNCTION 'GUI_UPLOAD'


EXPORTING
filename = vg_arquivo
TABLES
data_tab = tg_spfli
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.

CLEAR vg_cont.

LOOP AT tg_spfli INTO wa_spfli.


MOVE: wa_spfli-carrid TO zspfli-carrid,
wa_spfli-connid TO zspfli-connid,
wa_spfli-countryfr TO zspfli-countryfr,
wa_spfli-cityfrom TO zspfli-cityfrom,
wa_spfli-countryto TO zspfli-countryto,
wa_spfli-cityto TO zspfli-cityto.
INSERT zspfli.

IF sy-subrc = 0.

27
ABAP Training

vg_cont = vg_cont + 1.
ENDIF.
ENDLOOP.

WRITE: 'FORAM INSERIDOS ', vg_cont, 'NA TABELA ZSPFLI'.

28
ABAP Training

Exerccios
Curso Bsico

29
ABAP Training

EXERCCIO 1

Desenvolver o programa ZUSCS_EXER01_## que resulte a listagem


seguinte onde :
a) ## - Nmero do aluno
b) Variveis de sistema utilizadas:
SY-DATUM
SY-UZEIT

Observaes:
Aps indicar o Pacote: SALVAR o objeto, porm NO salvar como

Local Object, quando o SAP perguntar por um Request Number;


Pressionar CREATE REQUEST e digitar a seguinte descrio:

Academia de Talentos USCS Grupo #


Anotar o nmero da change request para ser utilizado durante todo

este mdulo do curso

30
ABAP Training

EXERCCIO 2

Desenvolver o programa ZUSCS_EXER02_## que resulte o cabealho


seguinte onde:
a) ## - Nmero do aluno
b) Varivel de sistema utilizada:
SY-UNAME
SY-DATUM

31
ABAP Training

EXERCCIO 3

Desenvolver o programa ZUSCS_EXER03_## que possua as seguintes


caractersticas:
a) ## - Nmero do aluno
b) Simulao de uma calculadora com 4 operaes ( +, -, /, * ) e dois
campos para entrada de dados
c) Exigncia quanto entrada de todos os dados
d) Layout (tanto de entrada como de sada) de acordo com os
apresentados a seguir

32
ABAP Training

33
ABAP Training

EXERCCIO 4

Desenvolver o programa ZUSCS_EXER04_## que possua as seguintes


caractersticas:
a) ## - Nmero do aluno
b) Que atravs das tabelas SPFLI e SFLIGHT resulte um relatrio dos
vos existentes para um determinado percurso, sendo que a exposio
da aeronave utilizada e do preo da passagem ocorram apenas quando
for uma operao de reserva
c) Layout (tanto de entrada como de sada) de acordo com os
apresentados a seguir
d) Campos utilizados :
SPFLI-CARRID
SPFLI-CITYFROM
SPFLI-CITYTO
SPFLI-FLTIME
SPFLI-ARRTIME
SPFLI-DEPTIME
SFLIGHT-FLDATE
SFLIGHT-PLANETYPE
SFLIGHT-PRICE

34
ABAP Training

35
ABAP Training

36
ABAP Training

37
ABAP Training

EXERCCIO 5
Desenvolver o programa ZUSCS_EXER05_## que a partir de um
arquivo texto contendo a declarao de uma das aeronaves citadas a
seguir, seja capaz de criar um novo arquivo com a declarao da
aeronave bem como o nome da companhia area. O programa deve
conter as seguintes caractersticas:
a) ## - Nmero do aluno
b) Exibio de mensagem tanto no caso de sucesso na criao do
arquivo final como no caso da ocorrencia de algum erro.
c) Layout (tanto de entrada como de sada) de acordo com os
apresentados a seguir
d) Campos utilizados: SFLIGHT-CARRID e SFLIGHT-PLANETYPE

38
ABAP Training

39
ABAP Training

RESOLUO 1

REPORT zuscs_exer01.

SKIP 5.

ULINE.

ULINE 30(29).

WRITE: /37 text-001.

SKIP.

WRITE: 30 'DIA',
49 sy-datum,
/ 'HORA' UNDER 'DIA',
sy-uzeit UNDER sy-datum.
SKIP.

ULINE 30(29).

ULINE.

40
ABAP Training

RESOLUO 2
REPORT zuscs_exer02 NO STANDARD PAGE HEADING.

SKIP 4.

ULINE 4(88).

WRITE: /04 '|',


05 text-001,
68 '|',
77 sy-datum,
91 '|'.

FORMAT INTENSIFIED OFF.

WRITE: 70 'Data: ',


/01 ''.

ULINE 4(88).

WRITE: /05 'Nome:',


70 'Usurio:'.

FORMAT INTENSIFIED ON.

WRITE: 04 '|',
11 'Solution Center',
68 '|',
79 sy-uname,
91 '|',
/01 ''.

ULINE 4(88).

41
ABAP Training

RESOLUO 3

REPORT zuscs_exer03 MESSAGE-ID ya.

PARAMETER : p_fator1(5) TYPE i,


p_fator2(5) TYPE i,
p_add RADIOBUTTON GROUP g1,
p_sub RADIOBUTTON GROUP g1,
p_mult RADIOBUTTON GROUP g1,
p_div RADIOBUTTON GROUP g1.

DATA : result(6) TYPE i,


operacao(15) TYPE c.

IF p_fator1 = '' OR p_fator2 = ''.


MESSAGE i005.
ELSE.

IF p_add = 'X'.
result = p_fator1 + p_fator2.
operacao = 'SOMA'.
ENDIF.

IF p_sub = 'X'.
result = p_fator1 - p_fator2.
operacao = 'SUBTRAO'.
ENDIF.

IF p_mult = 'X'.
result = p_fator1 * p_fator2.
operacao = 'MULTIPLICAO'.
ENDIF.

IF p_div = 'X'.
result = p_fator1 / p_fator2.
operacao = 'DIVISO'.
ENDIF.

SKIP 3.

ULINE.

FORMAT COLOR COL_NORMAL.

WRITE: /001 'OPERADOR 1 =',


p_fator1,
132 ' ',
/001 'OPERADOR 2 =',
p_fator2,
040 'OPERAO =',
operacao,
132 ' '.
ULINE.

FORMAT COLOR COL_TOTAL.

42
ABAP Training

WRITE: /001 'RESULTADO =',


result,
132 ' '.
ULINE.

ENDIF.

43
ABAP Training

RESOLUO 4

REPORT zuscs_exer04 MESSAGE-ID za NO STANDARD PAGE HEADING LINE-SIZE 95.

TABLES: spfli, sflight.

TYPES: BEGIN OF y_voo,


carrid TYPE spfli-carrid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
fltime TYPE spfli-fltime,
arrtime TYPE spfli-arrtime,
deptime TYPE spfli-deptime,
fldate TYPE sflight-fldate,
planetype TYPE sflight-planetype,
price TYPE sflight-price,
END OF y_voo.

DATA: tg_spfli TYPE TABLE OF spfli,


tg_sflight TYPE TABLE OF sflight,
tg_voo TYPE TABLE OF y_voo.

DATA: wa_spfli TYPE spfli,


wa_sflight TYPE sflight,
wa_voo TYPE y_voo.

DATA: vg_contador TYPE i,


vg_cabec TYPE c.

PARAMETER: p_origem TYPE spfli-cityfrom,


p_destin TYPE spfli-cityto,
p_reserv RADIOBUTTON GROUP g1,
p_dest RADIOBUTTON GROUP g1.

SELECT *
FROM spfli
INTO TABLE tg_spfli
WHERE cityfrom EQ p_origem
AND cityto EQ p_destin.

IF sy-subrc NE 0.
MESSAGE e006.
ENDIF.

SELECT *
FROM sflight
INTO TABLE tg_sflight
FOR ALL ENTRIES IN tg_spfli
WHERE carrid EQ tg_spfli-carrid
AND connid EQ tg_spfli-connid.

SORT: tg_spfli BY carrid connid ASCENDING,


tg_sflight BY carrid connid fldate ASCENDING.

CLEAR vg_contador.

44
ABAP Training

LOOP AT tg_spfli INTO wa_spfli.


CLEAR: wa_voo,
wa_sflight.

vg_contador = vg_contador + 1.

MOVE: wa_spfli-carrid TO wa_voo-carrid,


wa_spfli-cityfrom TO wa_voo-cityfrom,
wa_spfli-cityto TO wa_voo-cityto,
wa_spfli-fltime TO wa_voo-fltime,
wa_spfli-arrtime TO wa_voo-arrtime,
wa_spfli-deptime TO wa_voo-deptime.

READ TABLE tg_sflight WITH KEY carrid = wa_spfli-carrid


connid = wa_spfli-connid
INTO wa_sflight
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE: wa_sflight-fldate TO wa_voo-fldate,
wa_sflight-planetype TO wa_voo-planetype,
wa_sflight-price TO wa_voo-price.
ENDIF.

APPEND wa_voo TO tg_voo.


ENDLOOP.

WRITE: /01 text-001,


vg_contador,
95 ''.
SKIP.

vg_cabec = 'X'.

LOOP AT tg_voo INTO wa_voo.

IF vg_cabec EQ 'X'.
ULINE.
FORMAT COLOR COL_GROUP.

WRITE: /01 '|',


30 wa_voo-cityfrom,
wa_voo-cityto,
95 '|'.

CLEAR vg_cabec.

ULINE.
FORMAT COLOR COL_HEADING.

WRITE: /01 '|',


02 'OPERADORA',
13 'DATA',
26 'TEMPO DE VOO',
41 'SADA',
51 'CHEGADA'.

IF p_reserv = 'X'.

45
ABAP Training

WRITE: 61 'AERONAVE',
89 'PREO'.
ENDIF.

WRITE 95 '|'.

ULINE.

ENDIF.

FORMAT COLOR COL_NORMAL.

WRITE: /01 '|',


02 wa_voo-carrid,
13 wa_voo-fldate,
26 wa_voo-fltime,
41 wa_voo-deptime,
51 wa_voo-arrtime.

IF p_reserv = 'X'.
WRITE: 61 wa_voo-planetype,
75 wa_voo-price.
ENDIF.

WRITE 95 '|'.

ENDLOOP.

ULINE.

46
ABAP Training

RESOLUO 5
REPORT zuscs_exer05 MESSAGE-ID za.

TABLES sflight.

PARAMETER: p_flnm_e TYPE rlgrap-filename DEFAULT 'C:\TEMP\AERONAVE.TXT',


p_flnm_s TYPE rlgrap-filename DEFAULT 'C:\TEMP\DADOS.TXT'.

TYPES: BEGIN OF y_entrada,


planetype TYPE sflight-planetype,
END OF y_entrada.

TYPES: BEGIN OF y_saida,


planetype TYPE sflight-planetype,
separador TYPE c,
carrid TYPE sflight-carrid,
END OF y_saida.

DATA: tg_entrada TYPE TABLE OF y_entrada,


tg_saida TYPE TABLE OF y_saida.

DATA vg_arquivo TYPE string.

MOVE p_flnm_e TO vg_arquivo.

CALL FUNCTION 'GUI_UPLOAD'


EXPORTING
filename = vg_arquivo
TABLES
data_tab = tg_entrada
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.

IF NOT tg_entrada IS INITIAL.


SELECT planetype carrid
FROM sflight
INTO TABLE tg_saida
FOR ALL ENTRIES IN tg_entrada
WHERE planetype = tg_entrada-planetype.

47
ABAP Training

IF sy-subrc = 0.
MOVE p_flnm_s TO vg_arquivo.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
filename = vg_arquivo
TABLES
data_tab = tg_saida
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc EQ 0.
MESSAGE i007.
ELSE.
MESSAGE e008.
ENDIF.
ELSE.
MESSAGE e006.
ENDIF.
ENDIF.

48

Você também pode gostar