Escolar Documentos
Profissional Documentos
Cultura Documentos
Objectivos
O objectivo deste curso consiste na introduo s ferramentas disponveis pelo ABAP Workbench, na compreenso e utilizao dessas ferramentas nos diferentes mtodos de dilogo com o utilizador e com a base de dados.
Contedo
BC0201 Introduo ao ABAP Workbench BC0202 Instrues Bsicas ABAP e Declarao de Dados BC0203 Leitura de Tabelas de Base de Dados BC0204 Modularizao em ABAP
BC0205 Reporting
BC0206 Exerccios
Contedo
Objectos de Repositrio
FI HR MM
SD
WM
MM
Cust.
MM
Pacote
Mdulos de Funo Programas Tabelas ...
0 0 0
0 0 0
Information System
Debugger Screen Screen Painter Painter Debugger Menu Menu Painter Painter Object Navigator
FI HR MM SD WM MM Cust.
Context menu
Anlise de programas
Funo status
Ecr Seleco
Airline ID Airline
AA American Airlines USD
Ecr
Lista
Anlise de programas
Modo Debug
STOP
Navigation area
Programa SAPBC400WBT_GETTING
Editor
REPORT sapbc400wbt_getting_started.
TABLES sbc400_carrier. DATA wa_scarr TYPE scarr. PARAMETERS pa_car TYPE scarrcarrid. SAPBC400WBT_GETTING 2 : Fixar breakpoint e START - OF -SELECTION. executar programa Executar Directo SELECT SINGLE * FROM scarr INTO CORRESPONDING Depurao Debugging WHERE carrid = pa_car. IF sy -subrc = 0. MOVE CORRESPONDING wa_scarr TO sbc4 1 : Seleccionar o progama CALL SCREEN 100. usando o menu MOVE -CORRESPONDING sbc400_carrier T WRITE:/ wa_scarr -carrid, wa_scarr -carrname,
Anlise de programas
Modo Debug
Help Help
Anlise de programas
Anlise de programas
Princpios gerais da Syntax do ABAP
TABLES DATA PARAMETERS . sbc400_carrier wa _ scarr TYPE scarr . pa_car TYPE scarr - carrid .
START OF SELECTION . . scarr SELECT SELECT SINGLE * FROM INTO CORRESPONDING FIELDS OF wa _ scarr WHERE carrid = pa _ car . IF sy . IF - subrc = 0 . . . . wa _ scarr TO sbc400_ carrier MOVE CORRESPONDING CALL SCREEN 100 . . . MOVE CORRESPONDING sbc400_ carrier TO wa _ scarr WRITE : : wa _ scarr - carrid , , wa _ scarr - carrname , wa _ scarr - currcode . .
Chained statement
ENDIF. ENDIF
Anlise de programas
Atributos de programas
TIPO : 1 I M F S K F P K S T = Report = Include = Module pool (p/ telas Screen Painter) = Mdulos de funo = Pool de subrotinas (forms) = Pool de Classes = Pool de Interfaces = = = = Produtivo standard Produtivo do cliente Programa de sistema bsico Teste
STATUS :
APLICAO :
Anlise de programas
Atributos de programas
Pacote: $TMP (temporrio) (apenas para programas do tipo 1) (apenas para programas do tipo 1)
Grupo de autorizao (Authorization group) Bloqueio de edio (Editor lock) Lanamento apenas com variante (Start via variant) Aritmtica de vrgula fixa (Fixed pt.arithmetic) (relevante para nmeros Packed) (programas do tipo 1) (programas do tipo 1)
Anlise de programas
Editor ABAP O Editor ABAP/4 pode executar em 3 modos distintos
Table Control with line numbering
Modo
Table Control without line numbering Edit Control mode Lower Case
Display
Upper Case Indentar Converso Maisc/Minusc
Pretty Printer
Contedo
Estrutura de um programa ABAP Declarao de Dados
Tipo de Dados Constantes TYPES Regras
Declarao de Registos
Declarao e Processamento de Tabelas Internas Ecrs de Seleco
Exemplos de inicializaes :
DATA : CONTADOR QUANTIA CAUDAL RAM_TELEF(4) LOCAL(4) HOJE AGORA TYPE I VALUE 100, TYPE P DECIMALS 2 VALUE 2000.05, TYPE F VALUE 12E-3, TYPE N VALUE 1203, TYPE C VALUE 1203, TYPE D VALUE 19940314, TYPE T VALUE 100000.
Nota: Se a longitude de sada for curta, o valor cortado e asteriscado esquerda. EXEMPLO: DATA: X(3), Y TYPE P DECIMALS 3. Y = '123457.236'. MOVE Y TO X. WRITE X. RESULTADO: *36
Constants: Nome(10) value Antnio, Aniversrio type D value 19600110, Zero type i value is initial.
Constants: Begin of Morada, Rua(20) type C value Rua das Camlias, Numero type P value 11, Cod_post(4) type N value 2884, Cidade type C value Coimbra, end of morada.
Types: Nome(20) type C, Rua(30) type C, Telefone(20) type N. Types: Begin of list_telf, Apelido type Nome, telef type telefone, end of list_telf. Types: Itab type list_telf occurs 10.
- O nome do campo pode ter no mximo 30 caracteres, incluindo letras, digitos e caracteres especiais;
- Caracteres como; ( ) + . , : no so permitidos; - SPACE uma palavra reservada; - No permitido usar o mesmo nome para um parameter e para um campo.
Variveis de Sistema
NOME SY-DATUM SY-UZEIT SY-UNAME SY-SUBRC SY-REPID SY-LANGU SY-LINCT SY-CUCOL SY-CUROW SY-MANDT SY-TCODE SY-UCOMM SY-SPONR SY-DSNAM
TIPO D T C I C C I I I C C C N C
LG 8 6 12 4 40 1 4 4 4 3 20 70 10 8
Operaes
Operaes Lgicas
Operadores simples : EQ = NE <> GT > GE => LT < LE <= BETWEEN val1 AND val2 IS INITIAL NOT
CO CA CS
Operaes
Operaes com Strings
EXEMPLO de offset : MOVE string1+3(5) TO string2+7(5) .
ABC
DEFGH
IJLM
string1
xxxxxxx
DEFGH
xxxx
string2
EXEMPLO : DATA : DIA_1 TYPE D, OUTRO_DIA LIKE DIA_1, DIA_ANT LIKE DIA_1, DIFF TYPE I . DIA_1 = SY-DATUM . (19960314) DIA_1+6(2) = 01 . Primeiro dia MOVE DIA_1+4(2) TO OUTRO_DIA+4(2) . DIA_ANT = DIA_1 - 1. DIFF = OUTRO_DIA - DIA_1 .
Operaes
Operaes com Strings
SHIFT string BY n PLACES CIRCULAR RIGHT.
REPLACE string 1 WITH string 2 INTO varivel . TRANSLATE varivel TO UPPER CASE . SEARCH varivel/tabint FOR string STARTING AT posio/linha ENDING AT posio/linha . Variveis de sistema afetadas: SY-TABIX - Para tabelas internas SY-FDPOS - Para strings (posio do 1 caracter) SY-SUBRC CONDENSE varivel (NO-GAPS). CONCATENATE f1 f2 INTO varivel. REPLACE % WITH * INTO STRING
Instrues
Instrues de Atribuio
MOVE varivel1 TO varivel2 EXEMPLO : X=3. MOVE X TO REG-CAMPO1. Atribuido valor 3 MOVE-CORRESPONDING regist1 TO regist2. EXEMPLO : TABLES : LFA1 DATA : BEGIN OF FORNEC, LIFNR LIKE LFA1-LIFNR, NAME1 LIKE LFA1-NAME1, FLAG, END OF FORNEC. [] MOVE-CORRESPONDING LFA1 TO FORNEC. * So afetados os campos com o mesmo nome MOVE regist1 TO regist2. (mesma estrutura e atributos)
Instrues
Instrues de Clculo
[COMPUTE] var = expresso UTILIZAO DE : E DA VRGULA. OPERADORES : +, -, *, / DIV (Quociente) MOD (Resto da diviso) SQRT, EXP, LOG, SIN, COS (floats) STRLEN
FUNES :
Instrues
Instrues de I/O
WRITE /col(dim) varivel_2 UNDER varivel_1 USING EDIT MASK __/__ . ULINE [ /col(dim) ] . SKIP [n]. FORMAT INTENSIFIED ON. NEW-PAGE PRINT ON NO DIALOG DESTINATION PRI1 IMMEDIATELY X KEEP IN SPOOL X LINE-COUNT n LINE-SIZE n. NEW-PAGE PRINT OFF. RESERVE n LINES. (Salto de pgina) PARAMETERS : varivel(dim) TYPE tipo LIKE varivel DEFAULT valor OBLIGATORY.
Instrues
Instrues de Controlo
IF condio . bloco 1 ELSE. (ELSEIF) bloco 2 ENDIF. CASE varivel . WHEN valor1. Bloco 1 WHEN valor2. Bloco 2 WHEN OTHERS. Bloco n ENDCASE.
Instrues
Instrues de Controlo
DO n TIMES. bloco ENDDO. (SY-INDEX) DO. IF condio. EXIT . Termina ciclo ENDIF. Bloco ENDDO. WHILE condio. Bloco ENDWHILE. DO. bloco_1. CHECK condio. O bloco 2 de instrues no processado bloco_2. se a condio for falsa. O bloco_2 so as ENDDO. instrues entre o CHECK e o fim do DO.
Instrues
Instrues de Controlo
CHECK condio.
1. CHECK dentro de uma estrutura loop while counter gt 0. bloco1. check flag ne space. bloco 2. endwhile. 2. CHECK fora de uma estrutura loop bloco1. check <condio>. bloco2.
Instrues
Instrues de Controlo
EXIT. 1. EXIT dentro de uma estrutura loop do. if counter gt 100. exit. endif. enddo.
if . exit. endif.
Instrues
Instruo MESSAGE Report <reportname> MESSAGE-ID <message-id>.
. . .
Annn MESSAGE Ennn WITH <field1> <field2> <field3> <field4>. Xnnn Wnnn Innn Snnn
Instrues
Instruo MESSAGE
Classificao das Mensagens de Utilizador
A X
bend xit
E
W I S
rror
arning
nformation uccess
Declarao de Registos
DATA : begin of reg, campo_1 type ..., ... campo_n like varivel, end of reg.
DATA : DATA :
DATA :
Linha de Trabalho
14 12 14
APPEND
append <itab>
AA AA AA
89000
AA LH
12300
66667 66667 100000 100000 100000
LH
UA AA DL UA
DL
LH LH UA
Data : Begin of tabint type List_telef occurs 10. Data: tabela type tabint.
Para trabalhar com tabelas internas sem cabealho, temos que especificar uma WA (work area).
EXEMPLO:
CLEAR tabint. MOVE numero TO tabint-key1. READ TABLE tabint. IF SY-SUBRC = 0. posio = SY-TABIX . ENDIF.
LOOP AT tabint. AT FIRST. Bloco1. ENDAT. AT NEW campo1. Bloco2. ENDAT. AT NEW campo2. Bloco3. ENDAT. Bloco0. AT END OF campo2. Bloco4. ENDAT. AT END OF campo1. Bloco5. ENDAT. AT LAST. Bloco6. ENDAT. ENDLOOP. BLOCO6 : SUM. (Sumariza todos os campos numricos e colocando o resultado na linha de trabalho - header)
Ecrs de Seleco
SELECT-OPTIONS
PARAMETER
Ecrs de Seleco
Instruo SELECT-OPTIONS
SELECT-OPTIONS Pas FOR Lfa1-Lifnr. SIGN OPTION LOW HIGH
Preenchido no ecran
BT - Between GT - Greater then [...] I - Including E - Excluding
Ecrs de Seleco
Instruo PARAMETER
Selection-screen begin of line. Selection-screen comment 1(10) text-001. Parameters: p1(3), p2(5), p3(1). Selection-screen end of line. Titulo
Parameters: R1 Radiobutton group RAD1, R2 Radiobutton group RAD1, R3 Radiobutton group RAD1.
Parameters:
Contedo
Leitura de todos os dados de uma nica entrada; Select Single .. Leitura de todos os dados de vrias entradas select * .. . endselect. Leitura de dados de colunas especficas. select <c1> <c2> into ( campo1, campo2, .) from <tab> where ...
texto 4
SELECT SINGLE * FROM tab WHERE key1 eq 10 AND key2 eq B. IF SY-SUBRC EQ 0. WRITE OK. ELSE. WRITE: / Registo no encontrado.. ENDIF.
key1 10 10 20 30
key1 A B C A
SELECT * FROM tab. WRITE: / tab-key1, tab-key2, tab-texto. ENDSELECT. IF SY-SUBRC NE 0. WRITE: / text-001. ENDIF.
SELECT * FROM tab WHERE condio . Bloco ENDSELECT. SELECT * FROM tab INTO TABLE tabint WHERE condio Bloco. (APPENDING TABLE tabint) MSCARAS DE SELECO WHERE campo BETWEEN var1 AND var2 LIKE mscara IN (var3, var4, ...)
Modularizao em ABAP
Contedo
Subrotinas
Mdulos de Funo Blocos de Eventos Instrues de Eventos Bases de Dados Lgicas
Subrotinas
Definio de Subrotinas
REPORT ZCJ0001. *----- Dados Globais TABLES: ........ DATA: ........ *----- Chamada de Subrotinas PERFORM CALCULA_TOTAL. PERFORM ESCREVE_TOTAL. ...... *---------------------------------------------------------------------* * FORM CALCULA_TOTAL * *---------------------------------------------------------------------* FORM CALCULA_TOTAL. TOTAL = TOTAL + BSEG-WRBTR. ENDFORM. *---------------------------------------------------------------------* * FORM ESCREVE_TOTAL * *---------------------------------------------------------------------* FORM ESCREVE_TOTAL. WRITE: /1 TOTAL. ENDFORM.
Subrotinas
Passagem de valores
FORM name USING b1 VALUE (b2) CHANGING VALUE(b3) . (1) PERFORM name USING a1 (2) (3) a2 CHANGING a3.
(1) Passagem por referncia a1 no tm espao prprio no subrotina (2) Passagem de valor (3) Passagem de valor e retorno do valor EM SUBPROGRAMAS INTERNOS : Tabelas externas e internas so globais Dados DATA so globais Dados DATA definidos nos subprogramas so locais
Subrotinas
Passagem de estruturas
REPORT ZCJ0001. *----- Dados Globais TABLES: SFLIGHT. DATA: ........ *----- Chamada de Subrotinas PERFORM ESCREVE_TOTAL USING SFLIGHT. PERFORM ESCREVE_TOTAL_2 USING SFLIGHT. ...... *---------------------------------------------------------------------* * FORM ESCREVE_TOTAL * *---------------------------------------------------------------------* FORM ESCREVE_TOTAL USING REC SFLIGHT. WRITE: / REC. ENDFORM. *---------------------------------------------------------------------* * FORM ESCREVE_TOTAL_2 * *---------------------------------------------------------------------* FORM ESCREVE_TOTAL_2 USING REC LIKE SFLIGHT. WRITE: / REC-CARRID, REC-CONNID, REC-FLDATE. ENDFORM.
Subrotinas
Passagem de Tabelas Internas
REPORT ZCJ0001. *----- Dados Globais TABLES: SFLIGHT. DATA: TAB LIKE SFLIGHT OCCURS 50 WITH HEADER LINE. *----- Chamada de Subrotinas PERFORM ESCREVE_TOTAL USING TAB[]. PERFORM ESCREVE_TOTAL_2 TABLES TAB. ...... *---------------------------------------------------------------------* * FORM ESCREVE_TOTAL * *---------------------------------------------------------------------* FORM ESCREVE_TOTAL USING TAB2 LIKE TAB[]. DATA: TAB LIKE SFLIGHT. LOOP AT TAB2 INTO TAB. WRITE: / TAB-CARRID. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM ESCREVE_TOTAL_2 * *---------------------------------------------------------------------* FORM ESCREVE_TOTAL_2 TABLES ITAB STRUCTURE TAB. LOOP AT ITAB. WRITE: / ITAB-CARRID. ENDLOOP. ENDFORM.
Mdulos de funo
INTERFACE NORMALIZADA VALIDAO DO TIPO DE PARMETROS TRATAMENTO DE CDIGO DE RETORNO (SY-SUBRC) BIBLIOTECA CENTRALIZADA - Agrupada em Grupos
CALL FUNCTION Funo. EXPORTING passagem de valor A = TEXT B = xxx IMPORTING retorno de valores C = var1_prog D = var2_prog TABLES passagem por referncia T = tab_prog EXCEPTIONS NOT_FOUND = 1 (cdigos de retorno NOT_VALID = 2. para SY-SUBRC)
Blocos de Eventos
Event block
Instrues de Eventos
Eventos associados s Bases de Dados Lgicas
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT. AT SELECTION-SCREEN. START-OF-SELECTION. END-OF-SELECTION. GET . GETLATE.
Eventos associados criao de listas
TOP-OF-PAGE. END-OF-PAGE.
Instrues de Eventos
Exerccios
BC0206 Exerccios
Exerccio 1
Clculo com datas
a) Criar o programa ZCALCULA_DATAS_XXX que escreva o seguinte cabealho : ____________________________________________ Relatrio de : (Utilizador) Feito em : (Data) s : (Hora) _____________________________________________ b) Alterar o programa de modo a calcular uma data distante de outra de um certo nmero de dias.
Exerccio 2
Acesso base de dados
a) Actualizar a tabela criada anteriormente destinada a servir a lista de telefones.
b) Criar um programa com o nome ZLIST_TELEFONES_XXX que liste no ecr os campos da tabela criada: EXTENSO GABINETE UTILIZADOR NIF b) Seleccionar as extenses de telefone de acordo com um parmetro de entrada.
Exerccio 3
Mapa simples
a) Listar a informao da tabela SPFLI referente aos voos de transportadoras areas. Devem ser seleccionados o ID da transportadora (spfli-carrid) e o n do voo (spfli-connid). Nome do report = ZLISTAGEM_VOOS_XXX
b) Na listagem devem constar os seguintes campos : CARRID CONNID CITYFROM CITYTO (ID da transportadora) (Nmero do Voo) (Cidade de partida) (Cidade de chegada)
c) Se a transportadora e voo foram encontrados emitir uma mensagem de confirmao antes da listagem. Nota: Use uma work-area para guardar a informao do select.
Exerccio 4
Pontos de quebra e sumarizaes
a) Crie um programa com o nome ZSFLIGHT_XXXX que liste todos os voos e respectivas datas, mediante uma determinada transportadora a seleccionar. b) O programa dever ler para uma tabela interna todos os registos encontrados (tabela SFLIGHT). c) Ordenar a tabela interna por voo e data. d) Listar os registos encontrados agrupados por por voo. e) Calcular o total de lugares ocupados para cada voo. f) No final listar o total de lugares ocupados em todos os voos.
Exerccio 5
Collect e Ranking
a) Criar o programa Z#ACE_05 que liste o total de ocupantes e a quantia apurada em todos os voos realizados. b) O programa dever ler a tabela SFLIGHT : CARRID SEATSOCC PAYMENTSUM (ID da Transportadora) (Lugares Ocupados) (Total apurado por Voo)
Exerccio 6
Subrotinas
a) Criar o programa Z#ACE_06 que calcule e liste a percentagem de ocupao de cada voo. b) O programa dever ler a tabela SFLIGHT : CARRID CONNID FLDATE SEATSOCC SEATSMAX (ID da Transportadora) (N do Voo) (Data Voo) (Lugares Ocupados) (Lotao Mxima)
calcular a percentagem de ocupao e transferir para a tabela interna os valores. c) O clculo da percentagem deve ser feito usando uma subrotina
Exerccio 7
Mdulos de funo
a) Crie um programa Z#ACE_07 com base no exerccio 6, que faa o download para um ficheiro dos valores de percentagem de ocupao encontrados
Exerccio 9
Select-Options
a) Criar outro programa com o nome Z#ACE_09, idntico ao anterior mas com possibilidade de seleces adicionais. b) Incluir as seguintes seleces especficas : - ID da Transportadora - N do Voo Sugesto : Considerar o uso da instruo CHECK includo no bloco de instrues associado a um evento. c) Numa fase posterior tornar obrigatria a declarao no ecr de uma transportadora.