Apostila ABAP Advanced

Embed Size (px)

Citation preview

  • 7/25/2019 Apostila ABAP Advanced

    1/177

    SAP ABAP

    Advanced

  • 7/25/2019 Apostila ABAP Advanced

    2/177

  • 7/25/2019 Apostila ABAP Advanced

    3/177

    TRAINNING EDUCATION SERVICES

    ABAP ACADEMY

    Mdulo ABAP Advanced 40 horas

    www.trainning.com.br

    1

    Curso Avanado de ABAPLinguagem ABAP & Ferramentas

    2

  • 7/25/2019 Apostila ABAP Advanced

    4/177

    Tpicos

    Classe de Desenvolvimento - 4 Requests - 5 Dicionrio de Dados - 111 Criao de Tabela - 152 ABAP Editor - 193 ABAP Report - 198 Construo de Programa - 221

    Tela de Seleo - 227 Mdulo Pool - 277 Bacth Input - 316 Call Transactions - 347

    3

    Classe de Desenvolvimento

    As classes de desenvolvimento so importantes

    para o transporte entre sistemas de produo edesenvolvimento.

    Todos os objetos pertencentes aodesenvolvimento so combinados em uma classede desenvolvimento, o qual atribudo em umarequest.

    Todos os objetos associados classe dedesenvolvimento $TMP so locais e no sotransportados

    4

  • 7/25/2019 Apostila ABAP Advanced

    5/177

    Change Request - Tipos

    Geralmente o sistema SAP definido em trsambientes: Desenvolvimento, Qualidade eProduo.

    Para transportar os objetos de um repositrio de umambiente para outro, utilizado as Change Requests

    H seis tipos de Change Requests: Customizing

    Workbench Transporte de cpias Relocao objetos s/mudana de pacote Relocao objetos c/mudana de pacote Relocao de um pacote completo

    5

    Change Requests - Tipos

    Customizing So reservadas para transportar contedo de tabelas

    do tipo customizing. Essas tabelas contminformaes de configurao dos mdulosfuncionais (FI, MM, SD etc.) ou configuraes dosistema.

    Workbench

    So utilizadas para transportar objetos dorepositrio tais como programas, objetos dodicionrio de dados tais como tabelas e vises

    6

  • 7/25/2019 Apostila ABAP Advanced

    6/177

    Change Requests - Tipos

    Transporte de cpias Esse tipo de request pode ser utilizada para

    transportar objetos a um sistema SAP especfico. Os objetos so transportados com as verses que

    possuem no sistema atual. Os objetos do sistema de origem no so alterados.

    7

    Change Requests - Tipos

    Relocao objetos sem mudana de pacotes Esse tipo de request pode ser utilizada para o

    desenvolvimento de objetos em outro sistema SAPem uma base temporria.

    Esse tipo de request oferece as mesmasfuncionalidades do tipo de request de trasnporte decpias, ou seja, possvel mover os objetos de um

    sistema para o outro. Ex.: O desenvolvimento pode ser realizado em um

    ambiente separado, o qual no ir interferir noprocesso de desenvolvimento.

    8

  • 7/25/2019 Apostila ABAP Advanced

    7/177

    Change Requests - Tipos

    Relocao objetos com mudana de pacotes Esse tipo de request pode ser utilizada para o

    desenvolvimento de objetos em outro sistema SAPem uma base permanente.

    Permite a alterao a localidade original dos objetospara o sistema de destino e alterar os pacotes dos

    objetos ao mesmo tempo. O pacote alterado automaticamente. Quando um

    pacote selecionado, os objetos adquirem o direitode transporte imediatamente aps a importao nosistema de destino da request.

    9

    Change Requests - Tipos

    Relocao de um pacote completo Esse tipo de request utilizada quando o pacote

    completo de um ambiente de desenvolvimento para ser modificado permanentemente.

    Permite alterar a camada de transporte do pacoteautomaticamente.

    Para isso s especificar o pacote e a camada de

    transporte onde o pacote dever ser atribudo. A listade objetos da request configuradaautomaticamente e contm todos os objetos dopacote.

    10

  • 7/25/2019 Apostila ABAP Advanced

    8/177

    Change Requests

    As change requests possuem uma ou maistarefas

    As tarefas podem ser atribudas a diferentesusurios

    As tarefas contm os objetos que sero

    transportados entre os sistemasAs transaes de change requests so: SE01,SE09 e SE10

    11

    Change Requests - CriaoAs requests podem ser criadas atravs das

    transaes SE01, SE09 ou SE10.

    1

    2

    3

    12

  • 7/25/2019 Apostila ABAP Advanced

    9/177

    Change Requests - CriaoAs requests podem ser criadas no momento da

    criao de um objeto

    1

    2

    13

    Change Requests

    Request

    Proprietrio

    Descrio

    Tarefas

    Objeto

    AmbienteProjeto

    14

  • 7/25/2019 Apostila ABAP Advanced

    10/177

    Debug

    15

    Debug O debug uma ferramenta que permite a

    execuo do programa linha a linha, permitindoassim visualizar os dados conforme o programa executado.

    H dois modos de ativar o debug: Atravs do comando /H, no campo de comando.

    16

  • 7/25/2019 Apostila ABAP Advanced

    11/177

    Debug Atravs dos botes Definir/Eliminar ponto de parada

    externo e Definir/Eliminar ponto de parada de sesso. necessrio entrar no cdigo do programa, inserir o ponto de parada

    na linha desejada e executar o programa.

    17

    Debug - Funcionalidades1. Ponteiro2. Caixa de Variveis3. Boto para alterar o valor

    da varivel

    4. Exibir instruo atual5. Etapa Individual (F5)6. Executar rotina *(F6)7. Retornar da Rotina (F7)8.Avanar at o cursor (F8)

    1

    2

    3

    45

    6 7 8

    18

  • 7/25/2019 Apostila ABAP Advanced

    12/177

    ABAP Tipos de Dados & Declaraes

    19

    Tpicos

    Tipos de Dados Declarao dos tipos de dados

    Variveis Constantes Tipos de dados elementares Estruturas

    Tabelas internas Campos de sistema

    20

  • 7/25/2019 Apostila ABAP Advanced

    13/177

    Tipos de DadosA tabela abaixo mostra os tipos ABAP pr-

    definidos:Tipo Tamanho Tamanho padro Descriob 1 Byte Inteiro de 1 byte (interno)

    c 1 a 65,535 caracteres 1 caracteres Campo texto

    cursor Igual ao i Igual ao i Cursor de banco de dados

    d 8 caracteres Campo data

    f 8 bytes Nmero de ponto flutuante

    i 4 bytes Inteiro de 4 bytes

    n 1 a 65,535 characters 1 caracteres Texto numrico

    p 1 a 16 bytes 8 bytes Nmero packed

    string Varivel String de textos 2 bytes Inteiro de 2 bytes (internal)

    t 6 caracteres Campo de tempo

    x 1 a 65,535 bytes 1 byte Campo de byte

    xstring Varivel String de byte

    21

    Tipos de DadosA tabela abaixo apresenta os valores permitidos

    e os valores iniciaisTipo Valores Valor Inicial

    b De 0 a 255 0c Qualquer caractere alfanumrico " " para cada posio

    d 8 caracteres alfanumricos definidos pelo usurio; Somente valores noformato AAAAMMDD, os quais so permitidos como entrada de data deacordo com as regras de calendrio: AAAA(ano): 0001 a 9999, MM(ms): 01 a12, DD(dia): 01 a 31

    "00000000"

    f Os pontos de nmero flutuante so apresentados internamente com 16 casasdecimais de acordo com o padro IEEE-754 (dupla preciso). Os valorespermitidos so -1,7976931348623157EE+308 a -2,2250738585072014EE-308para a rea negativa, o valor zero, e +2,2250738585072014EE-308 a+1,7976931348623157EE+308 para a rea positiva. A validade de ambas asreas so estendidas na direo do zero atravs de nmeros "denormalized"

    depois do IEEE-754.

    0

    i -2.147.483.648 to +2.147.483.647 0

    n Qualquer caractere alfanumrico, entretanto, os valores vlidos so somenteos dgitos de 0 a 9.

    "0" para cada posio

    22

  • 7/25/2019 Apostila ABAP Advanced

    14/177

    Tipos de Dados - ContinuaoTipo Valores Valor Inicial

    p O tamanho vlido para os nmeros "packed" est entre 1 e 16 bytes; duascasas decimais so embaladas em um byte, onde o ltimo byte contm

    somente uma posio e o sinal de positivo e negativo. Depois doseparador de decimal, at 14 casas decimais so permitidas. Dependendodo tamanho do campo len e do nmero de casas decimais dec, aplica-seas seguintes reas de valores: (-10^(2len -1) +1) / (10^(+dec)) a (+10^(2len-1) -1) /(10^(+dec)) em passos de 10^(-dec). Valores dentro desseintervalo so arredondados.

    0

    string igual ao tipo c string vazia de tamanho 0s -32.768 to +32.767 0t 6 caracteres alfanumricos definidos pelo usurio; o nico valor vlido so

    os nmeros que so interpretados como especificao de tempo nas 24horas do formato do relgio HHMMSS. A SAP recomenda a utilizarexclusivamente 00 a 23 para HH(horas) e 00 a 59 para MM (minutos) e 00

    a 59 para SS (segundos).

    "000000"

    x Caracteres hexadecimais 0-9, A-F hexadecimal 0xstring Igual ao tipo x string vazia de tamanho 0

    23

    Declarao de tipos de dados

    O comando DATA utilizado para declarar as

    variveis, estruturas e tabelas internas. O comando CONSTANTS declara as constantes

    do programa O comando TYPES permite criar tipos de dados

    elementares, tipos de referncia e tipos detabela, o qual ser utilizado como referncia

    para variveis, estruturas e tabelas O comando TABLE cria uma work-area databela definida

    24

  • 7/25/2019 Apostila ABAP Advanced

    15/177

    VariveisA declarao das variveis se d atravs da

    sintaxe:DATA { {var [ ( l en) ] TYPE abap_t ype [ DECI MALS dec] }

    | {var TYPE abap_t ype [ LENGTH l en] [ DECI MALS dec] } }[ VALUE val | {I S I NI TI AL}][ READ- ONLY] .

    Exempl o:DATA v_char 1( 10) TYPE c. Ti po char com10 posi esDATA v_i nt 1 TYPE i . Ti po i nt ei r o

    DATA v_dec1 TYPE p DECI MALS 2. Ti po compact ado com 2 casas deci mai sDATA v_char 2( 2) TYPE c VALUE ST . Ti po char com 2 posi es e val orpadro ST

    25

    Tipos de dados elementares

    O comando TYPES define um tipo de dado

    independente ou um tipo de dados estruturado. Qualquer tipo de dados independente definido

    com a adio TYPE e um tipo de dados ou com aadio LIKE e o objeto de dados.

    possvel criar tipo de dados elementares, tipos dereferncia, tipos estruturados e tipos de tabelas.

    Para o tipo de dados estruturado, utiliza-se o blocode comandos BEGIN OF e END OF

    junto com o comando TYPES.26

  • 7/25/2019 Apostila ABAP Advanced

    16/177

    Contruo de tipos de dados Tipo de dados elementares

    TYPES: t ext 1 TYPE c LENGHT 10,

    t ext 2 TYPE c LENGHT 15.

    DATA: v_msg TYPE t ext 1, Var i velv_coment TYPE t ext 2. Var i vel

    Tipos estruturadosTYPES: BEGI N OF t y_mar a,

    mat nr TYPE mar a- mat nr ,mt ar t TYPE mar a- mt ar t ,zei nr TYPE mar a- zei nr ,

    END OF t y_mar a.

    DATA: wa_mar a TYPE t y_mar a. Wor k- ar ea

    27

    Tipos de dados elementares

    Tipo de tabelasTYPES spf l i _sor t TYPE SORTED TABLE OF spf l i

    WI TH UNI QUE KEY car r i d conni d.

    DATA: t i _spf l i TYPE spf l i _sor t . Cr i ao de t abel ai nt er na

    28

  • 7/25/2019 Apostila ABAP Advanced

    17/177

    Constantes

    O comando CONSTANTS cria um objeto do tipoconstante, ou seja, um objeto que no pode ter ovalor alterado.

    Exemplo:CONSTANTS: c_mt ar t TYPE mar a- mt ar t VALUE FERT .

    CONSTANTS: BEGI N OF sap_ag,zi p_code TYPE n LENGTH 5 VALUE ' 69189' ,ci t y TYPE st r i ng VALUE `Wal l dor f `,count r y TYPE st r i ng VALUE `Ger many`,

    END OF sap_ag.

    29

    Estrutura

    A estrutura pode ser criada de trs formas: Referncia a uma tabela transparente Referncia a uma estrutura do dicionrio de dados Referenciado a um tipo de dados local

    A estrutura criada atravs do comando DATA

    30

  • 7/25/2019 Apostila ABAP Advanced

    18/177

    Estrutura Criao de estrutura

    Declarado com o tipo de uma tabelatransparente ou estrutura do dicionrio dedados

    Exemplo1: Criao da estrutura (work-area) wa_mara com os componentes da tabelatransparente MARA.

    DATA wa_mar a LI KE mara. OuDATA wa_mara TYPE mara.

    Exemplo2: Criao da estrutura (work-area) wa_return com os componentes da estrutura dodicionrios de dados BAPIRET2.

    DATA wa_r et ur n LI KE BAPI RET2. OuDATA wa_r et ur n TYPE BAPI RET2.

    31

    Estrutura Criao de estrutura

    Declarado com o tipo de dados localTYPES: BEGI N OF t y_mar a,

    mat nr TYPE mar a- matnr ,mt ar t TYPE mar a- mt ar t ,zei nr TYPE mara-zei nr ,

    END OF t y_mar a

    Exempl o: Cr i ao da est r ut ura WA_MARA com r ef ernci a ao t i po de dadosTY_MARA.

    DATA: wa_mara TYPE t y_mara.

    32

  • 7/25/2019 Apostila ABAP Advanced

    19/177

    Estrutura Criao de estrutura

    Declarao com o comando DATAExempl o: Cr i ao da est r utura WA_MARA com os component es MATNR, MTART

    e ZEI NR da t abel a t r ansparent e MARA.

    DATA: BEGI N OF wa_mar a,mat nr TYPE mar a- matnr ,mt ar t TYPE mar a- mt ar t ,zei nr LI KE mara- zei nr ,

    END OF wa_mar a

    33

    Tabela Interna

    A tabela interna fornece um meio de armazenardados de uma estrutura fixa e armazen-la emmemria.

    Os dados so armazenados linha por linha namemria e cada linha tem a mesma estrutura.

    No ABAP, as tabelas internas substituem asfuncionalidades de arrays.

    O tipo de dados de uma tabela interna definido

    pelo tipo de linha, chave e tipo de tabela interna.

    34

  • 7/25/2019 Apostila ABAP Advanced

    20/177

    Tabela Interna Tipo de Linha

    O tipo de linha de uma tabela interna pode ser de

    qualquer tipo, sendo que normalmente umaestrutura. Cada componente da estrutura uma coluna na

    tabela interna. O tipo de linha pode ser elementar ou outra

    tabela interna.

    35

    Tabela Interna Chave

    A chave identifica a coluna da tabela H dois tipos de chaves:

    Chave standard Chave definido pelo usurio

    A chave a ser especifica pode ser UNIQUE ouNON-UNIQUE

    Tabelas internas com chaves nicas, no podemter registros duplicados com a mesma chave. A

    univocidade ir depender do mtodo de acesso tabela.

    36

  • 7/25/2019 Apostila ABAP Advanced

    21/177

    Tabela Interna Tipo de Tabela

    O tipo de tabela define como o ABAP ir acessar

    os registros individuais da tabela. Existem trs tipos de tabelas internas: Standard table Sorted table Hashed table

    37

    Tabela Interna Standard table

    A standard table possui um ndice linear interno. O sistema pode acessar os registros pelo ndice da

    tabela ou pela chave. O tempo de resposta de acesso atravs da chave proporcional ao nmero de entradas na tabela

    A chave da tabela standard no nica e nopode ser especificada uma chave nica

    Os registros so inseridos rapidamente pois no

    necessrio verificar a existncia do registro

    38

  • 7/25/2019 Apostila ABAP Advanced

    22/177

    Tabela Interna Sorted table

    Os registros da sorted table so sempre inseridosde forma ordenada.

    Possuem ndice interno. O acesso aos registros podem ser efetuados pelo

    ndice ou pela chave. O tempo de resposta pela chave logariticamente

    proporcional ao nmero de entradas na tabela,devido procura binria.

    As chaves a serem utilizadas podem ser nicas ouno nicas e devem ser especificadas nadeclarao da tabela interna.

    39

    Tabela Interna Hashed table

    As hashed tables no possuem ndice linear. Os registros da tabela s podem ser acessados

    atravs de chaves. O tempo de resposta de acesso tabela independeda quantidade de registros e constante, pois osistema utiliza um algortmo hash.

    A chave de acesso deve ser nico.Ao definir a tabela deve ser especificado o

    parmetro UNIQUE.

    40

  • 7/25/2019 Apostila ABAP Advanced

    23/177

    Tabela interna Header Line

    Header line uma work-area utilizada quando atabela interna processada.

    A work-area est vinculada tabela interna e declarada com o parmetro WITH HEADERLINE.

    Exemplo:DATA: t i _mara TYPE mara OCCURS 0 WI TH HEADER LI NE.

    READ TABLE t i _mara WI TH KEY mat nr = SCE002 .

    MATNR MTART ZEINRSCE002 VERP 234545

    8D08 FERT 122212

    SCE001 FERT 534213

    SCE002 VERP 234545

    7D5F HALB 112221

    41

    Criao de tabelas internas

    Standard tableDATA: BEGI N OF t i _mar a OCCURS 0,

    mat nr TYPE mar a- mat nr ,mt ar t TYPE mara- mt art ,zei nr TYPE mar a- zei nr ,

    END OF t i _mar a.

    DATA: t i _mara TYPE t y_mara OCCURS 0 WI TH HEADER LI NE.

    DATA: t i _mar a TYPE TABLE OF t y_mar a.

    DATA: t i _mara TYPE mar a OCCURS 0 WI TH HEADER LI NE.

    42

  • 7/25/2019 Apostila ABAP Advanced

    24/177

    Criao de tabelas internas

    Sorted tableTYPES: BEGI N OF t y_mar a OCCURS 0,

    mat nr TYPE mar a- mat nr ,mt ar t TYPE mara- mt art ,zei nr TYPE mar a- zei nr ,

    END OF t y_mar a.

    DATA: t i _mar a TYPE SORTED TABLE OF t y_mar a WI TH NON- UNI QUE KEY

    mat nr .

    43

    Criao de tabelas internas

    Hashed tableTYPES: BEGI N OF t y_mar a OCCURS 0,

    mat nr TYPE mar a- mat nr ,mt ar t TYPE mara- mt art ,zei nr TYPE mar a- zei nr ,

    END OF t y_mar a.

    DATA: t i _mara TYPE HASHED TABLE OF t y_mara WI TH UNI QUE KEYmat nr .

    44

  • 7/25/2019 Apostila ABAP Advanced

    25/177

    Campos de sistema -SYST

    Os campos de sistema ABAP esto sempredisponveis nos programas ABAP.

    O sistema em tempo de execuo preenche oscampos de acordo com o contexto.

    Podem ser utilizados nos programas para obter o

    status do sistema. Os campos de sistema so variveis, mas devemser tratados como constantes, pois ao alteraralgum valor, o fluxo do sistema pode ser alterado

    45

    Campos de sistema - SYST

    Os campos de sistema esto definidos naestrutura do dicionrio de dados SYST e nosprogramas esto disponveis na estrutura SY.

    Exemplos de campos de sistema: SY-MANDT Retorna o mandante do logon SY-SUBRC Cdigo de retorno dos comandos

    ABAP SY-TABIX ndice da linha (tabela interna) SY-BATCH Executa o programa em background

    46

  • 7/25/2019 Apostila ABAP Advanced

    26/177

    Campos de sistema - SYST

    Os campos de sistema esto definidos na estrutura dodicionrio de dados SYST e nos programas esto disponveisna estrutura SY.

    Exemplos: SY-MANDT Retorna o mandante do logon SY-SUBRC Cdigo de retorno dos comandos ABAP SY-TABIX ndice da linha (tabela interna) SY-BATCH Executa o programa em background SY-TCODE Cdigo da transao atual SY-UNAME Nome do usurio SY-DATUM Data atual do sistema SY-UZEIT Hora atual do sistema SY-UCOMM Cdigo de funo que acionou o PAI

    47

    Campos de sistema - SYSTCampo Descrio

    INDEX Contador de loopsPAGNO Pgina da lista atualTABIX ndice de tabelas internasTFILL Nmero de linhas de tabelas internasDBCNT Entradas de tabela de banco de dados processadasFDPOS Ocorrncia em cadeia de bytes ou caracteresCOLNO Coluna atual na lista

    LINCT Comprimento das pginas da listaLINNO Linha atual na listaLINSZ Largura da linha da listaPAGCT Campo do sistema obsoletoMACOL N de colunas na margem esquerda de uma lista de impressoMAROW N de colunas na margem superior de uma lista de impressoTLENG Comprimento das linhas de uma tabela internaLILLI Linha da lista selecionadaSUBRC Cdigo de retorno de instrues ABAPCUCOL Posio do cursor horizontal em PAICUROW Posio do cursor vertical no PAILSIND ndice da lista de ramificaoLISTI ndice da lista exibidaSTEPL ndice da linha step loop atualSROWS Telas, nmero de linhasSCOLS Telas, nmero de colunasLOOPC Linhas visveis de um step loopTZONE Data e hora, diferena de horas para hora de referncia UTC

    Campo DescrioDAYST Flag de horrio de veroFDAYW Calendrio de fbrica-dia da semanaLANGU Cdigo de idioma do ambiente de texto atualMODNO ndice do modo externoBATCH Programa corre em backgroundBINPT O programa corre em batch inputCALLD Programa ABAP, modo de chamada do programa ABAP

    DYNNR N da tela atualDYNGR Grupo de telas da tela atualWTITL Marcao para cabealho da pgina standardCPAGE N da pgina atual de uma listaDBNAM Banco de dados lgico de um programa executvelMANDT Identificao do mandante do usurio atualPEXPI Perodo de reteno spool (parmetro de impresso)PRINI Campo do sistema internoPRIMM Sada imediata (parmetro de impresso)PRREL Eliminar aps sada (parmetro de impresso)PRBIG Falso-rosto da seleo (parmetro de impresso)PRNEW Nova ordem spool (parmetro de impresso)PDEST Dispositivo de sada (parmetro de impresso)PLIST Nome da ordem spool (parmetro de impresso)PRDSN Nome do spool fileCALLR Local de incio de impresso da listaRTITL Ttulo do progr.a imprimir (parmetro de impresso)PRREC Destinatrio (parmetro de impresso)PRTXT Texto para falso-rosto (parmetro de impresso)PRABT Departamento no falso-rosto (parmetro de impresso)

    48

  • 7/25/2019 Apostila ABAP Advanced

    27/177

    Campos de sistema - SYSTCampo Descrio

    PAART Preparao para impresso (parmetro de impresso)PRCOP Nmero de expresses (parmetro de impresso)DBSYS Sistema de banco de dados centralSYSID Nome do sistema SAP

    OPSYS Sistema operacional do servidor de aplicaoPFKEY Status GUI atualSAPRL Release do sistema da SAPTCODE Cdigo de transao atualUCOMM Cdigo de funo que acionou o PAISPONO N spool na sada de listagemDATUM Data atual do servidor de aplicaoSLSET Variante utilizadaUZEIT Hora atual do servidor de aplicaoUNAME Nome do usurioLSTAT Campo do sistema obsoletoABCDE Alfabeto latinoTITLE Contedo da linha de ttulo

    ENTRY Campo do sistema internoLISEL Contedo de uma linha da lista selecionadaULINE Trao horizontalCPROG Programa de chamadaLDBPG Programa de banco de dados de um banco de dados lgicoTVAR0 Varivel txt.p/caractere preenchimento em ttulos da listaTVAR1 Varivel txt.p/caractere preenchimento em ttulos da listaTVAR2 Varivel txt.p/caractere preenchimento em ttulos da listaTVAR3 Varivel txt.p/caractere preenchimento em ttulos da lista

    Campo Descrio

    TVAR4 Varivel txt.p/caractere preenchimento em ttulos da lista

    TVAR5 Varivel txt.p/caractere preenchimento em ttulos da lista

    TVAR6 Varivel txt.p/caractere preenchimento em ttulos da lista

    TVAR7 Varivel txt.p/caractere preenchimento em ttulos da lista

    TVAR8 Varivel txt.p/caractere preenchimento em ttulos da lista

    TVAR9 Varivel txt.p/caractere preenchimento em ttulos da lista

    MSGID Classe de mensagem

    MSGTY Tipo de mensagem

    MSGNO N mensagem

    MSGV1 Varivel mensagens

    MSGV2 Varivel mensagens

    MSGV3 Varivel mensagens

    MSGV4 Varivel mensagens

    VLINE Trao vertical

    STACO Primeira coluna de listas exibida

    STARO Linha superior exibida

    DATAR Marcao para entrada em um campo de tela

    HOST Nome do servidor de aplicao atual

    DATLO Data local do usurio atual

    TIMLO Hora local do usurio atual

    ZONLO Fuso horrio do usurio atual

    49

    Linguagem ABAP

    50

  • 7/25/2019 Apostila ABAP Advanced

    28/177

    Operadores Lgicos

    Operadores simplesI gual EQ =Di f er ent e NE >Mai or ou i gual a GE >=Menor que LTMenor ou i gual a LEI nt er val o de val or es BETWEEN val 1 AND val 2

    i ni ci al I S I NI CI ALNOT val 1 {oper ador }

    51

    Operadores Lgicos

    Operadores para stringCONTAI NS ONLY st r1 CO st r2CONTAI NS NOT ONLY st r 1 CN st r 2CONTAI NS ANY st r 1 CA st r 2CONTAI NS NOT ANY st r 1 NA st r 2CONTAI NS STRI NG st r 1 CS st r 2CONTAI NS NO STRI NG st r 1 NS st r 2COVERS PATTERN st r 1 CP st r 2NOT PATTERN st r 1 NP st r 2

    52

  • 7/25/2019 Apostila ABAP Advanced

    29/177

    Instrues de Controle

    Condio IF-ELSE-ENDIFI F condi o.

    BLOCO 1ELSE. ELSEI F condi o.

    BLOCO 2ENDI F.

    Condio CASECASE var i vel .

    WHEN val or 1.BLOCO 1

    WHEN val or 2.BLOCO 2

    WHEN OTHERS.BLOCO n

    ENDCASE.

    53

    Instrues de Controle LoopsDO n TI MES.

    BLOCOENDDO.

    DO.I F condi o.

    EXI T.ENDI F.BLOCO.

    ENDDO.

    WHI LE condi o.BLOCO.

    ENDWHI LE.

    CHECK condi o.

    CONTI NUE.

    54

  • 7/25/2019 Apostila ABAP Advanced

    30/177

    Open SQL

    55

    Acesso ao Banco de Dados

    O R/3 independente do sistema de banco dedados apesar das diferenas de sintaxes dosvrios banco de dados.

    Cada work-process no servidor de aplicao temuma interface de banco de dados.

    A interface do banco de dados converte todas as

    requisies do banco de dados do R/3 para oscomandos SQL do banco de dados.

    56

  • 7/25/2019 Apostila ABAP Advanced

    31/177

    Acesso ao Banco de Dados

    H dois mtodos de acesso ao banco de dadosatravs dos programas ABAP: Open SQL

    As declaraes Open SQL so subconjuntos dopadro SQL que totalmente integrado ao ABAP.Eles permitem acessar os dados independentemente

    do sistema de banco de dados que o R/3 estejautilizando. Eles permitem ler os dados (Select) ealterar os dados (INSERT, UPDATE, DELETE)

    SQL Nativo

    57

    Acesso ao Banco de Dados

    SQL Nativo O SQL Nativo vagamente integrado ao ABAP e

    permite o acesso a todas as funes contidos nainterface de programao do respectivo sistema de

    base de dados. Ao contrrio do Open SQL, no SQL Nativo, as

    declaraes no so verificadas e convertidas. Elasso enviadas diretamente para o sistema de banco dedados.

    58

  • 7/25/2019 Apostila ABAP Advanced

    32/177

    Open SQL O Open SQL tem os seguintes comandos:

    Comando FunoSELECT Seleciona os dados das tabelas do banco de dados

    INSERT Adiciona registros em uma tabela do banco de dadosUPDATE Altera o contedo de um registro da tabela do banco de dados

    MODIFYInsere um novo registro ou altera o contedo de um registroexistente

    DELETE Exclui registros da tabela do banco de dados

    OPEN CURSOR,FETCH,

    CLOSE CURSOR

    L os registros de uma tabela do banco de dados utilizando o cursor

    59

    Open SQL

    Cdigo de Retorno Todos os comandos do Open SQL retornam os

    valores para os seguintes campos de sistema: SY-SUBRC

    Aps cada comando SQL, o campo de sistema SY-SUBRC recebe o valor 0 se a operao foi realizada comsucesso, caso contrrio, o valor retornado ser diferentede 0.

    SY-DBCNT Aps a execuo do comando SQL, o campo do sistema

    SY-DBCNT contm o nmero dos registrosprocessados.

    60

  • 7/25/2019 Apostila ABAP Advanced

    33/177

    Open SQL - SELECT

    O SELECT o comando utilizado para ler osregistros das tabelas do banco de dados.

    A sintaxe do comando SELECT :

    SELECT INTO

    FROM [ WHERE ][GROUP BY ][ HAVING ][ ORDER BY ]

    61

    Open SQL - SELECT

    SELECT A clusula select define a estrutura dos dados a

    serem lidos, ou seja, um ou vrios registros, oscampos e se registros idnticos sero aceitos ouno.

    Exemplo:SELECT SI NGLE mat nr mt ar t aur t FROM . . .SELECT DI STI NCT mat nr mt art FROM . . .

    62

  • 7/25/2019 Apostila ABAP Advanced

    34/177

    Open SQL - SELECT

    Os dados tambm podem ser agregados por umacoluna da tabela, atravs das seguintes expresses: MAX: retorna o valor mximo da coluna MIN: retorna o valor mnimo da coluna AVG: retorna o valor mdio da coluna COUNT: conta os valores ou linhas:

    COUNT ( DISTINCT ): retorna o nmero dediferentes valores das colunas

    COUNT(*): retorna o nmero total de registros daseleo

    Exemplo:SELECT MAX( AUART ) FROM. . .

    63

    Open SQL - SELECT

    INTO A clusula INTO define a rea de destino nos

    quais o resultado do select transferido. Os valores podem ser transferidos para variveis,

    work-areas e tabelas internas, desde que asvariveis de destino sejam compatveis ouconvertidos com os dados selecionados.

    64

  • 7/25/2019 Apostila ABAP Advanced

    35/177

    Open SQL - SELECTInserir em variveisDATA: v_mat nr TYPE mar a- mat nr ,

    v_auar t TYPE mar a- auart ,

    v_menge TYPE mara- menge.

    SELECT matnr auart menge FROM maraI NTO ( v_mara, v_auart , v_menge) . . .

    Inserir em work-areaDATA: BEGI N OF wa_mar a,

    v_mat nr TYPE mar a- mat nr ,v_auart TYPE mara-auart ,v_menge TYPE mara- menge.

    END OF wa_mar a.

    SELECT matnr auart menge FROM maraI NTO wa_mar a

    Inserir em work-area baseado em tabela

    DATA: wa_mar a TYPE mar a.

    SELECT matnr auart menge FROM maraI NTO CORRESPONDI NG FI ELDS OF wa_mar a

    Inserir em tabela internaDATA: BEGI N OF wa_mar a OCCURS 0,

    v_mat nr TYPE mar a- mat nr ,v_auart TYPE mara- auart ,v_menge TYPE mara- menge.

    END OF wa_mar a.

    SELECT matnr auart menge FROM mara

    I NTO TABLE t i _mar a

    Inserir em tabela interna baseado em tabela

    DATA: wa_mar a TYPE mar a OCCURS 0.

    SELECT matnr auart menge FROM maraI NTO CORRESPONDI NG FI ELDS OF TABLE t i _mar a

    65

    OPEN SQL - SELECT

    FROM A clusula FROM especifica a tabela em que os

    dados especificados na clusula select sero lidos. As vises de banco de dados tambm pode ser

    utilizadas na clusula FROM Podem ser especificados uma tabelas ou mais de

    uma tabela, com o uso das clusulas INNER JOIN

    ou OUTER JOIN. Select de uma tabelaSELECT matnr auart menge FROM mara ...

    66

  • 7/25/2019 Apostila ABAP Advanced

    36/177

    Open SQL - SELECT

    Select em mais de uma tabelaSELECT . . .. . .FROM [ I NNER] J OI N [ AS ] ON

    Exemplo:

    SELECT m~mat nr t ~makt xFROM mara as m I NNER J OI N makt as tON m~mat nr = t ~mat nr

    I NTO wa_mat _descWHERE m~mat nr = 08D8

    AND t ~spr as = SY- LANGU.

    67

    Open SQL - SELECT

    Restringir o nmero de registros Para restringir o nmero absoluto de registros

    includos na seleo, use a clusula abaixo:

    SELECT . . . FROM UP TO ROWS

    Onde um valor inteiro positivo e o sistema l

    o mximo de registros.

    68

  • 7/25/2019 Apostila ABAP Advanced

    37/177

    Open SQL - SELECTWHERE

    A clusula WHERE restringe o nmero de registrosselecionados especificando as condies que devemser atingidas.

    SELECT . . .FROM . . .I NTO . . .WHERE campo1 = 8076 AND

    campo2 I N ( RTY , ERP , MMP ) OR Li st a de val or escampo3 BETWEEN 001 AND 100 AND I nter val os de val or escampo 4 LI KE ( ABC%) AND St r i ng de compar aocampo 5 I S NULL

    69

    Open SQL Select

    WHERE - Condio tabular

    A clusula where tem uma variante especial que permite derivaras condies das linhas e colunas de uma tabela interna:SELECT . . . FOR ALL ENTRI ES I N WHERE

    Ao especificar um campo da tabela interna como um operandoem uma condio, todas as linhas da tabela interna so lidas. Acomparao ento executada para cada linha da tabela interna.Para cada registro, o sistema seleciona os registros do banco dedados que satisfaam a seleo.

    As linha duplicadas so automaticamente eliminadas doresultado.

    Se a tabela interna estiver vazia, todas as entradas da tabela dobanco de dados so lida.

    70

  • 7/25/2019 Apostila ABAP Advanced

    38/177

    Open SQL - Insert

    O comando INSERT adiciona registro(s) natabela interna

    Os registros podem ser adicionadosindividualmente ou coletivamente

    Inserindo um nico registro:I NSERT I NTO VALUES OU

    I NSERT FROM .

    O contedo da work-area so adicionados tabelado banco de dados . A work-area deve ter amesma estrutura da tabela do banco de dados.

    71

    Open SQL - Insert

    Inserindo vrios registros:I NSERT FROM TABLE [ ACCEPTI NG DUPLI CATE KEYS]

    O contedo da tabela interna adicionadona tabela do banco de dados em umanica operao. A tabela interna deve ser do mesmotipo da tabela do banco de dados.

    Se a tabela possuir campos chaves duplicados, umerro de execuo apresentado. Se o parmetro

    ACCEPTING DUPLICATE KEYS for utilizado, no apresentado o erro de execuo, mas o campo desistema SY-SUBRC receber o valor 4.

    72

  • 7/25/2019 Apostila ABAP Advanced

    39/177

    Open SQL - Insert

    ExemploInsere um registro individual na tabela SPFLI:

    TABLES SPFLI .DATA WA TYPE SPFLI .WA- CARRI D = ' LH' .WA- CI TYFROM = ' WASHI NGTON' .. . .I NSERT I NTO SPFLI VALUES WA.

    WA- CARRI D = ' UA' .WA- CI TYFROM = ' LONDON' .. . .I NSERT SPFLI FROM WA.

    73

    Open SQL - Insert

    Exemplo

    Insere vrios registros na tabela SPFLI:

    DATA: I TAB TYPE HASHED TABLE OF SPFLIWI TH UNI QUE KEY CARRI D CONNI D,WA LI KE LI NE OF I TAB.WA- CARRI D = ' UA' . WA- CONNI D = ' 0011' . WA- CI TYFROM = . . .I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' LH' . WA- CONNI D = ' 1245' . WA- CI TYFROM = . . .I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' AA' . WA- CONNI D = ' 4574' . WA- CI TYFROM = . . .I NSERT WA I NTO TABLE I TAB.. . .I NSERT SPFLI FROM TABLE I TAB ACCEPTI NG DUPLI CATE KEYS.

    74

  • 7/25/2019 Apostila ABAP Advanced

    40/177

    Open SQL Update

    O comando UPDATE utilizado para alterar ocontedo da tabela do banco de dados Modificando registros individuais

    Para modificar os registros individualmente de umatabela do banco de dados atravs de uma work-area,utilize o seguinte comando:

    UPDATE FROM

    Se a tabela do banco de dados conter um registro coma mesma chave, o registro atualizado. Caso contrrio,o registro no alterado e o SY-SUBRC recebe o valor4.

    75

    Open SQL Update

    Modificando vrios registros Para modificar vrios registros de uma tabela do

    banco de dados, o comando :UPDATE FROM TABLE

    Se o sistema no puder modificar um registrodevido a no existncia de um registro com chave

    especificada, o processo no finalizado, mas oprocessamento continua no prximo registro.

    76

  • 7/25/2019 Apostila ABAP Advanced

    41/177

    Open Sql - Update

    Modificando os registros coluna por coluna Para modificar determinada colunas na tabela do

    banco de dados, utilize o comando:UPDATE SET . . . WHERE .

    A condio WHERE determina as linhas que seroalteradas. Se a clusula WHERE no for especificada,

    todos os registros so atualizados. A expresso o parmetro que determina as colunas que seroatualizadas:

    = , sendo que pode ser um objeto dedados ou uma coluna da tabela do banco de dados.

    77

    Open SQL - Update

    Exemplo de UpdateAtualiza o contedo da coluna PLANETYPE com A310 e diminui o valor dacoluna PRICE por 100 para cada entrada na tabela SFLIGHT onde CARRIDseja LH e CONNID 0402.UPDATE SFLI GHT SET PLANETYPE = ' A310'

    PRI CE = PRI CE - ' 100. 00'WHERE CARRI D = ' LH' AND CONNI D = ' 0402' .

    Os campos CARRID e CONNID so os campos chaves da tabela SPLFI. Todosos registros que tiverem como chave os valores AA e 0064, seroatualizados.

    DATA WA TYPE SPFLI .

    MOVE ' AA' TO WA- CARRI D.MOVE ' 0064' TO WA- CONNI D.MOVE ' WASHI NGTON' TO WA- CI TYFROM.. . .UPDATE SPFLI FROM WA.

    78

  • 7/25/2019 Apostila ABAP Advanced

    42/177

    Open SQL - Delete

    O comando DELETE utilizado para excluir osregistros da tabela do banco de dados.

    Para excluir as linhas utilizando condiesutilize a seguinte sintaxe:

    DELETE FROM WHERE

    Todas as linhas que atenderem a condio sero

    removidas. Se uma tabela interna vazia for especificada na

    clusula where, todos os registros da tabela dobanco de dados sero removidos.

    79

    Open SQL - Delete

    Ao invs de utilizar a clusula WHERE, possvel selecionar os registros para exclusoutilizando o contedo de uma work-area.

    DELETE FROM .

    Isto exclui o registro com a mesma chave primriada work-area.

    80

  • 7/25/2019 Apostila ABAP Advanced

    43/177

    Open SQL - Delete

    Tambm possvel excluir vrias linhascoletivamente utilizando uma tabela interna.

    DELETE FROM TABLE

    Esta sintaxe exclui todos os registros da tabela dobanco de dados que possuem as mesmas chavesprimrias da tabela interna.

    Se o sistema no puder excluir um registro, pois achave especificada no existe, a operao no cancelada, mas o processo continua a partir doprximo registro.

    81

    Open SQL - Delete

    Exemplo de DeleteTodas os registros da tabela SFLIGHT so excludos onde PLANETYPE tenha ovalor A310 e CARRID tenha o valor LH.

    DELETE FROM SFLI GHT WHERE PLANETYPE = ' A310' AND CARRI D = ' LH' .

    Os campos CARRID e CONNID so campos chave da tabela SPFLI. Os registroscom as chaves primrias AA e 0064 so excludas.TABLES SPFLI .

    DATA: BEGI N OF WA,CARRI D TYPE SPFLI - CARRI D,CONNI D TYPE SPFLI - CONNI D,

    END OF WA.

    MOVE ' AA' TO WA- CARRI D.MOVE ' 0064' TO WA- CONNI D.DELETE SPFLI FROM WA.

    82

  • 7/25/2019 Apostila ABAP Advanced

    44/177

    Open SQL - DeleteUma tabela interna hashed definida com a estrutura das chaves primrias databela SPFLI. Depois do preenchimento da tabela interna, os registros databela do banco de dados sero excludos de acordo com os valores das chaves

    internas da tabela interna.DATA: BEGI N OF WA,CARRI D TYPE SPFLI - CARRI D,CONNI D TYPE SPFLI - CONNI D,END OF WA,I TAB LI KE HASHED TABLE OF WAWI TH UNI QUE KEY CARRI D CONNI D.

    WA- CARRI D = ' UA' . WA- CONNI D = ' 0011' .I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' LH' . WA- CONNI D = ' 1245' .

    I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' AA' . WA- CONNI D = ' 4574' .I NSERT WA I NTO TABLE I TAB.. . .DELETE SPFLI FROM TABLE I TAB.

    83

    Open SQL Consideraes

    Os comandos INSERT, UPDATE e DELETE

    trabalham com work-area e tabela interna. As work-areas e tabelas internas devem ter a mesma

    estrutura da tabela do banco de dados que sermanipulada.

    Se a operao foi realizada com sucesso, o valor docampo de sistema SY-SUBRC ser 0, caso contrrio

    ser 4. O campo de sistema SY-DBCNT ir conter o nmero

    de registros afetados durante a operao.84

  • 7/25/2019 Apostila ABAP Advanced

    45/177

    Operaes em Tabela Interna

    85

    Tabela Interna

    A tabela interna utilizada para armazenar umou mais registros em memria e pode seracessado e manipulado de forma similar a umatabela de banco de dados.

    Os dados da tabela interna podem ser inseridos,removidos, modificados, ordenados,comparados e lidos.

    O comando SELECT no pode ser utilizado paraobter os registros de tabela interna.

    86

  • 7/25/2019 Apostila ABAP Advanced

    46/177

    Tabela Interna - Inicializar

    Como qualquer objeto de dados, a tabela internapode ser inicializada atravs dos comandos: CLEAR

    Este comando restaura a tabela interna ao estado ao qualestava imediatamente aps a declarao. Isto significaque a tabela no contm linhas. Entretanto a memriautilizada pela tabela interna continua alocada.

    Se a tabela interna possuir cabealho, a tabela ecabealho possuem o mesmo nome e para apagar ocontedo da tabela, necessrio utilizar as chaves ([])aps o nome da tabela interna, caso contrrio, somente ocontedo cabealho ser apagado.

    87

    Tabela Interna - Inicializar

    O comando REFRESH realiza o mesmo

    procedimento do comando CLEAR[], ou seja,reinicializa a tabela interna e mantm a memriautilizada pela tabela interna alocada.

    O comando FREE reinicializa a tabela interna elibera a memria alocada.

    88

  • 7/25/2019 Apostila ABAP Advanced

    47/177

    Tabela Interna - Inicializar

    Exemplo:

    DATA: BEGI N OF LI NE,COL1,COL2,

    END OF LI NE.

    DATA I TAB LI KE LI NE OCCURS 0 WI TH HEADER LI NE.

    CLEAR I TAB. Li mpa o cabeal ho da t abel a i nt er naCLEAR I TAB[ ] . Li mpa o cont edo da tabel a i nt er naREFRESH I TAB. Li mpa o cont edo da t abel a i nt er naFREE I TAB. Li mpa o cont edo da t abel a i nt er na

    89

    Tabela Interna - Comparao

    As tabelas internas podem ser comparadas.. . . . . .

    O operador a ser utilizado pode ser os operadoresABAP (EQ, =, NE, , >=, LE, ,LT,

  • 7/25/2019 Apostila ABAP Advanced

    48/177

    Tabela Interna - Comparao

    Se o componente for outra tabela interna, elesso comparados recursivamente.

    Se a tabela interna estiver sendo comparadadiferente da equalidade, a comparao finalizada quando o primeiro par decomponentes forem diferentes e retorna oresultado correspondente.

    91

    Tabela Interna - Comparao Exemplo

    DATA: BEGI N OF LI NE,COL1 TYPE I ,COL2 TYPE I ,

    END OF LI NE.

    DATA: I TAB LI KE TABLE OF LI NE,J TAB LI KE TABLE OF LI NE.

    DO 3 TI MES.LI NE- COL1 = SY- I NDEX.LI NE- COL2 = SY- I NDEX ** 2.APPEND LI NE TO I TAB.

    ENDDO.

    MOVE I TAB TO J TAB.

    LI NE- COL1 = 10. LI NE- COL2 = 20.APPEND LI NE TO I TAB.

    I F I TAB GT J TAB.WRI TE / ' I TAB GT J TAB' .

    ENDI F.

    APPEND LI NE TO J TAB.

    I F I TAB EQ J TAB.

    WRI TE / ' I TAB EQ J TAB' .

    ENDI F.

    LI NE- COL1 = 30. LI NE- COL2 = 80.

    APPEND LI NE TO I TAB.

    I F J TAB LE I TAB.

    WRI TE / ' J TAB LE I TAB' .

    ENDI F.

    LI NE- COL1 = 50. LI NE- COL2 = 60.

    APPEND LI NE TO J TAB.

    I F I TAB NE J TAB.

    WRI TE / ' I TAB NE J TAB' .

    ENDI F.

    I F I TAB LT J TAB.

    WRI TE / ' I TAB LT J TAB' .

    ENDI F.

    92

  • 7/25/2019 Apostila ABAP Advanced

    49/177

    Tabela Interna - Ordenao

    As tabelas standard ou hashed podem serordenadas.

    O comando para ordernao :SORT [ ASCENDI NG| DESCENDI NG] [ AS TEXT] .

    O comando ordena a tabela interna em ordemascedente pela sua chave.

    A direo da ordem pode ser especificada atravs dasopes ASCENDING e DESCENDING, sendo que aprimeira opo a padro.

    Quanto maior a tabela, maior ser o tempo paraorden-la.

    93

    Tabela Interna - Ordenao

    A tabela interna pode ser ordenada pelo

    componente desejado atravs do comando abaixo:

    SORT [ ASCENDI NG| DESCENDI NG] [ AS TEXT]BY [ ASCENDI NG| DESCENDI NG] [ AS TEXT]

    . . . [ ASCENDI NG| DESCENDI NG] [ AS TEXT] .

    A tabela interna ordenada pelos componentes ... , ao invs da chave da tabela. Onmero de campos a serem ordenados estlimitado a 250.

    94

  • 7/25/2019 Apostila ABAP Advanced

    50/177

    Tabela Interna - Ordenao

    Ordenao Alfabtica Bem como as opes ASCENDING e

    DESCENDING, tambm pode ser especificado queos campos a serem ordenados devem serordenados alfabeticamente, o qual afeta o mtodode ordenao em strings.

    95

    Tabela Interna Determinar Atributos

    Para determinar os atributos de uma tabela interna

    em tempo de execuo que no estava disponvelestaticamente, utilize o comando:

    DESCRI BE TABLE [ LI NES ] [ OCCURS ] [ KI ND ] .

    O uso do parmetro LINES retorna o nmero delinhas preenchidas na varivel .

    O uso do parmetro OCCURS, retorna o tamanhoinicial da tabela interna para a varivel . O uso do parmetro KIND, retorna o tipo de tabela

    interna para a varivel , onde96

  • 7/25/2019 Apostila ABAP Advanced

    51/177

    Tabela Interna Determinar Atributos

    O uso do parmetro KIND, retorna o tipo detabela interna para a varivel , onde: T = Tabela standard S = Tabela sorted H = Tabela hashed

    97

    Tabela Interna Determinar AtributosExemplo:

    DATA: BEGI N OF LI NE,COL1 TYPE I ,

    COL2 TYPE I ,END OF LI NE.

    DATA I TAB LI KE HASHED TABLE OF LI NEWI TH UNI QUE KEY COL1 I NI TI AL SI ZE 10.

    DATA: LI N TYPE I ,I NI TYPE I ,KND TYPE C.

    DESCRI BE TABLE I TAB LI NES LI N OCCURS I NI KI ND KND.WRI TE: / LI N, I NI , KND.

    Sada0 10 H

    98

  • 7/25/2019 Apostila ABAP Advanced

    52/177

    Tabela Interna Determinar AtributosExemplo:

    DO 1000 TI MES.LI NE- COL1 = SY- I NDEX.LI NE- COL2 = SY- I NDEX ** 2.I NSERT LI NE I NTO TABLE I TAB.

    ENDDO.

    DESCRI BE TABLE I TAB LI NES LI N OCCURS I NI KI NDKND.

    WRI TE: / LI N, I NI , KND.

    Sada1000 10 H

    99

    Tabela Interna Inserir linha individual

    Para inserir uma linha na tabela interna, asintaxe :

    I NSERT TO .

    pode ser uma work-area ou a expressoINITIAL LINE.

    A work area deve ser compatvel com a tabela

    interna e a expresso INITIAL LINE insere umregistro em branco na tabela interna.

    100

  • 7/25/2019 Apostila ABAP Advanced

    53/177

    Tabela Interna Inserir linha individual

    Regras Em uma tabela interna standard, a linha inserida

    no final da tabela interna Em uma tabela sorted, a linha inserida de acordo

    com a chave da tabela. Se a chave no nica, oregistro duplicado inserido acima da entrada

    existente com a mesma chave. Em uma tabela hashed, a linha inserida de

    acordo com a chave da tabela.

    101

    Tabela Interna Inserir vrias linhas

    Para inserir vrias linhas na tabela interna, a

    sintaxe :I NSERT LI NES OF [ FROM ] [ TO ] I NTO TABLE .

    e so tabelas com tipos de linhascompatveis. O sistema insere as linhas da tabela um por um na tabela usando asmesmas regras da insero individual.

    Se uma tabela com ndice (standard esorted), pode ser especificado a primeira e a ltimalinha da tabela que dever ser inserida em e.

    102

  • 7/25/2019 Apostila ABAP Advanced

    54/177

    Tabela Interna Inserir LinhasDATA: BEGI N OF LI NE,

    LAND( 3) TYPE C,

    NAME( 10) TYPE C,AGE TYPE I ,WEI GHT TYPE P DECI MALS 2,

    END OF LI NE.

    DATA I TAB LI KE SORTED TABLE OF LI NEWI TH NON- UNI QUE KEY LAND NAME

    AGE WEI GHT.

    LI NE- LAND = ' G' . LI NE- NAME = ' Hans' .LI NE- AGE = 20. LI NE- WEI GHT = ' 80. 00' .I NSERT LI NE I NTO TABLE I TAB.

    LI NE- LAND = ' USA' . LI NE- NAME = ' Nancy' .LI NE- AGE = 35. LI NE- WEI GHT = ' 45. 00' .I NSERT LI NE I NTO TABLE I TAB.

    LI NE- LAND = ' USA' . LI NE- NAME = ' Howar d' .LI NE- AGE = 40. LI NE- WEI GHT = ' 95. 00' .I NSERT LI NE I NTO TABLE I TAB.

    LI NE- LAND = ' GB' . LI NE- NAME = ' J enny' .

    LI NE- AGE = 18. LI NE- WEI GHT = ' 50. 00' .

    I NSERT LI NE I NTO TABLE I TAB.

    LI NE- LAND = ' F' . LI NE- NAME = ' Mi chel e' .

    LI NE- AGE = 30. LI NE- WEI GHT = ' 60. 00' .

    I NSERT LI NE I NTO TABLE I TAB.

    LI NE- LAND = ' G' . LI NE- NAME = ' Kar l ' .

    LI NE- AGE = 60. LI NE- WEI GHT = ' 75. 00' .

    I NSERT LI NE I NTO TABLE I TAB.

    LOOP AT I TAB I NTO LI NE.

    WRI TE: / LI NE- LAND, LI NE- NAME, LI NE- AGE, LI NE-

    WEI GHT.ENDLOOP.

    Exemplo: Preencher a tabela interna com seis entradas

    103

    Tabela Interna Inserir LinhasResultado

    104

  • 7/25/2019 Apostila ABAP Advanced

    55/177

    Tabela Interna Inserir Linhas

    DATA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,

    END OF LINE.

    DATA: ITAB LIKE STANDARD TABLE OF LINE,JTAB LIKE SORTED TABLE OF LINE

    WITH NON-UNIQUE KEY COL1 COL2.

    DO 3 TIMES.LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2.APPEND LINE TO ITAB.LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 3.APPEND LINE TO JTAB.ENDDO.

    INSERT LINES OF ITAB INTO TABLE JTAB.

    LOOP AT JTAB INTO LINE.WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.ENDLOOP.

    Exemplo: Duas tabelas internas so criadas com os mesmoscomponentes, mas com tipo de tabelas diferente. Cada um preenchido com trs linhas.

    105

    Tabela Interna Inserir LinhasResultado

    106

  • 7/25/2019 Apostila ABAP Advanced

    56/177

    Tabela Interna Inserir linhassumarizadas

    O comando abaixo permite inserir linhassomadas na tabela interna:COLLECT I NTO .

    Todos os campos que no fazem parte da chave databela deve ser do tipo numrico (F, I ou P).

    O comando COLLECT deve ser utilizado para criartabelas sumarizadas.

    107

    Tabela Interna Inserir linhassumarizadas

    Quando uma linha inserida, o sistema verifica se

    h uma entrada na tabela que combine com achave. Se no houver uma entrada correspondentena tabela, o comando COLLECT tem o mesmoefeito do comando INSERT. Se uma entrada existirna tabela, o comando COLLECT no cria uma novalinha, mas adiciona o contedo dos campos

    numricos da work-area no contedo dos camposnumricos da linha existente.

    108

  • 7/25/2019 Apostila ABAP Advanced

    57/177

    Tabela Interna Inserir linhassumarizadas

    DATA: BEGIN OF LINE,

    COL1(3) TYPE C,

    COL2(2) TYPE N,

    COL3 TYPE I,

    END OF LINE.

    DATA ITAB LIKE SORTED TABLE OF LINE

    WITH NON-UNIQUE KEY COL1 COL2.

    LINE-COL1 = 'abc'. LINE-COL2 = '12.LINE-COL3 = 3.

    COLLECT LINE INTO ITAB.

    WRITE / SY-TABIX.

    Exemplo: Os dois primeiros comandos COLLECT trabalham como ocomando INSERT. No terceiro comando COLLECT, a primeira linha

    da ITAB modificada.LINE-COL1 = 'def'. LINE-COL2 = '34'.LINE-COL3 = 5.COLLECT LINE INTO ITAB.WRITE / SY-TABIX.

    LINE-COL1 = 'abc'. LINE-COL2 = '12'.

    LINE-COL3 = 7.

    COLLECT LINE INTO ITAB.

    WRITE / SY-TABIX.

    LOOP AT ITAB INTO LINE.

    WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.

    ENDLOOP.

    109

    Tabela Interna Inserir linhassumarizadas

    110

  • 7/25/2019 Apostila ABAP Advanced

    58/177

    Curso Avanado de ABAPDicionrio de Dados

    111

    Objetivo

    O dicionrio de dados permite a descriocentralizada de todos os dados utilizados nosistema sem redundncia.

    Informaes novas ou modificadas sofornecidas automaticamente para todos oscomponentes do sistema, garantindo assim, aintegridade, consistncia e segurana dos dados.

    112

  • 7/25/2019 Apostila ABAP Advanced

    59/177

    Caractersticas do Dicionrio de Dados

    Gerncia centralizada das definies de dadosutilizados no sistema

    Suporte as definies dos tipo de dados deusurios (elemento de dados, estruturas etabelas)

    Definio de estrutura de objetos de banco dedados (tabelas, ndices e viso), os quais socriados automaticamente no banco de dados

    113

    Caractersticas do Dicionrio de Dados

    Os principais tipos de objetos do dicionrio dedados so: Tabelas Vises Tipos (elemento de dados, estruturas e categoria

    de tabelas) Domnios Ajuda de Pesquisa Objetos de Bloqueio

    114

  • 7/25/2019 Apostila ABAP Advanced

    60/177

    Transao SE11

    115

    TABELAS

    116

  • 7/25/2019 Apostila ABAP Advanced

    61/177

    Tabelas

    As tabelas podem ser definidasindependentemente do banco de dados nodicionrio de dados.

    Quando a tabela ativada, uma definio fsicada tabela criada no banco de dados de acordocom a tabela criada no dicionrio de dados.

    As definies das tabelas so convertidas dodicionrio de dados para a definio de umdeterminado banco de dados.

    117

    Ativao de tabelas

    TAB1 TAB2 TAB3 TAB4 TAB...

    Banco de Dados

    Dicionrio de Dados

    Oracle, MSSQL, DB2, etc

    118

  • 7/25/2019 Apostila ABAP Advanced

    62/177

    Tipos de tabelas Existem trs tipos de tabelas no dicionrio de dados. So elas:

    Tabelas Transparentes Para cada tabela transparente no dicionrio de dados h uma tabela

    correspondente no banco de dados com o mesmo nome, campos edefinies.

    Tabelas Pool Para cada tabela no banco de dados, h vrias tabelas no dicionrio de

    dados. O R/3 utiliza o pool de tabelas uma grande quantidade (dezenas amilhares) de pequenas tabelas (de 10 a 100 registros cada). As tabelaspool reduzem a quantidade de recursos necessrios do banco de dadosquando vrias tabelas pequenas necessitam ser acessadas ao mesmotempo.

    Tabelas Cluster As tabelas cluster so similares as tabelas pool. Eles so utilizados para

    armazenar poucas tabelas (de 2 a 10) mas com grande quantidade dedados. A vantagem de utilizar tabelas cluster no caso de acessar dados demltiplas tabelas simultaneamente, reduzindo o nmero de acesso aobanco de dados aumentando a performance.

    119

    Classe de Entrega

    A classe de entrega controla o transporte dedados da tabela, no caso de instalao, mudanade release, cpia de mandante, e no caso detransporte entre sistemas de cliente. A classe deentrega tambm considerada na Atualizaoampliada de tabelas.

    120

  • 7/25/2019 Apostila ABAP Advanced

    63/177

    Classe de Entrega Existem as seguintes classes de entrega: A

    Tabela de aplicao (dados mestre e de movimento) C

    Tabela de cliente, os dados so atualizados exclusivamente pelo cliente. L

    Tabela para arquivar dados temporrios. G

    Tabela de cliente, a SAP pode inserir registros novos, mas no pode sobregravar ou eliminaraqueles que j existem. necessrio que o conjunto de nomes de cliente seja definido natabela TRESC (utilizar o report RDDKOR54).

    E Tabela de sistema com conjuntos de nomes prprios para entradas de cliente. necessrio

    que o conjunto de nomes de cliente seja definido na tabela TRESC (utilizar o reportRDDKOR54).

    S

    Tabela de sistema, as modificaes de dados tm o status de modificaes de programa. W Tabela de sistema (por exemplo, tabela do ambiente de desenvolvimento), cujos dados so

    transportados por objetos de transporte prprios (por exemplo, R3TR PROG, R3TR TABL,etc).

    121

    Definio de tabelas

    A definio de tabelas possuem os seguintescomponentes: Campos da tabela Chave Externa Configuraes Tcnicas ndice

    122

  • 7/25/2019 Apostila ABAP Advanced

    64/177

    Campos da Tabelarea de definio dos campos da tabela

    123

    Campos da Tabela - Referncia Se houver algum campo do tipo moeda ou

    quantidade, necessrio informar a tabela e ocampo de referncia.

    A tabela de referncia deve conter um campo noformato de chave de moeda (tipo de dado CUKY)ou unidade de medida (UNIT)

    Um campo s atribudo ao campo de refernciaem tempo de execuo. Ex. Se um campo contm

    um valor monetrio, a moeda determinada deacordo com o campo de referncia.

    124

  • 7/25/2019 Apostila ABAP Advanced

    65/177

    Campo da tabela - Referncia

    125

    Chave Externa

    O relacionamento de tabelas no dicionrio dedados realizado atravs de chave externa

    Verificao de valores para campos de entradaAssociar vrias tabelas numa viso ou objetos debloqueio

    126

  • 7/25/2019 Apostila ABAP Advanced

    66/177

    Chave Externa

    127

    Configuraes Tcnicas

    Define como a tabela ser manuseada quandofor criada no banco de dados, tais como o tipo debuffer da tabela e criar log de alterao deregistros da tabela

    Os parmetros da configurao tcnica so: Categoria de dados Categoria de tamanho Buffer Log

    128

  • 7/25/2019 Apostila ABAP Advanced

    67/177

    Categoria de Dados

    A categoria de dados define o tablespace ou Dbspace do bancode dados quando ele criado. As categorias de dados so:

    APPL0 (dados mestre) So dados raramente atualizados como dados de um cliente

    (nome, telefone, endereo) APPL1 (dados transacionais)

    So dados freqentemente atualizados. Um exemplo so osmateriais de um depsito, os quais so alterados a cada nova

    ordem de compra APPL2 (dados organizacionais) So dados que so definidos quando o sistema instalado e

    raramente modificado. Um exemplo a tabela com o cdigo dospases.

    USR1 e USR2 So categorias para uso do cliente para testes de desenvolvimento.

    129

    Categoria de tamanho

    O parmetro categoria de tamanho define oespao necessrio esperado para a tabela nobanco de dados.

    As categorias de tamanho variam de 0 a 4. Para cada categoria, atribudo um tamanho

    fixo de memria no banco de dados, o qual

    depende do tipo do banco de dados utilizado

    130

  • 7/25/2019 Apostila ABAP Advanced

    68/177

    Categoria de tamanho Configuraes Tcnicas

    TAB_A 1

    TAB_B 2TAB_C 3

    Categoria de Tamanho

    TAB_A

    TAB_B

    TAB_C

    ExtensoInicial

    PrimeiraExtenso

    SegundaExtenso

    131

    Buffer

    O tipo de buferizao define quais os registrossero armazenados no buffer do servidor deaplicao quando o registro acessado.

    Somente os campos chaves podem serbuferizados.

    Os tipos de buferizao so:

    Armazenar em buffer registros individuais Armazenar em buffer reas genricas Armazenamento em buffer completo

    132

  • 7/25/2019 Apostila ABAP Advanced

    69/177

    Buffer Registros Individuais

    Com o armazenamento em buffer de registrosindividuais, somente os registros atualmentelidos so carregados no buffer.

    Esse tipo de buffer necessita de menos espao dearmazenamento

    Os custos administrativos so maiores, pois maisacesso ao banco de dados so necessrios

    133

    Buffer Registros Individuais

    Exemplo: Se o tipo de armazenamento em buffer for

    individual, somente o registro lido carregado nobuffer.

    SELECT SI NGLEFROM MARDWHERE MATNR = 208014400

    AND WERKS = M400AND LGORT = MD40 .

    Tabela transparente MARD

    MATNR WERKS LGORT

    208014180 M400 MD40

    208014180 M400 MD42

    208014400 M400 MD40

    208014400 M400 MD42

    280806160 M400 MD40

    280806160 M400 MD42

    280808120 M400 MD40

    Contedo do Buffer

    208014400 M400 MD40

    134

  • 7/25/2019 Apostila ABAP Advanced

    70/177

    Buffer reas Genricas

    Com a bufferizao de reas genricas, todos osregistros onde o critrio de seleo seja genrico,so carregados no buffer.

    necessrio informar o nmero de camposchave para a rea genrica.

    necessrio que o nmero entrado esteja entre 1e o nmero de campos chave -1. Por exemplo,para uma tabela com 6 campos chave, s soadmitidos valores entre 1 e 5.

    135

    Buffer reas Genricas

    No exemplo abaixo, o registro marcado lido pelo

    programa. Se a tabela possuir buffer genrico, todos osregistros lidos com a chave genrica (MATNR e WERKS)so gravados no buffer.

    Contedo do Buffer

    280806160 M400 MD40

    280806160 M400 MD42

    280806160 M400 MD43

    SELECT *FROM MARDWHERE MATNR = 280806150

    AND WERKS = M400 .

    Tabela transparente MARD

    MATNR WERKS LGORT

    208014180 M400 MD40

    208014180 M400 MD42

    208014400 M400 MD40

    208014400 M400 MD42

    280806160 M400 MD40

    280806160 M400 MD42

    280806160 M400 MD43

    136

  • 7/25/2019 Apostila ABAP Advanced

    71/177

    Buffer Completo

    Com a buferizao completa, todos os registrosda tabela so carregados no buffer a partir doprimeiro acesso tabela.

    As tabelas que devem ser buferizadas so astabelas com poucos dados, lidos frequentementee raramente atualizados.

    137

    Buffer Completo

    No exemplo abaixo, o registro marcado lido pelo

    programa. Se a tabela possuir buffer completo, todos osregistros so gravados no buffer.

    SELECT *FROM MARDWHERE MATNR = 208014400

    AND WERKS = M400AND LGORT = MD40 .

    Tabela transparente MARD

    MATNR WERKS LGORT

    208014180 M400 MD40

    208014180 M400 MD42

    208014400 M400 MD40

    208014400 M400 MD42

    280806160 M400 MD40

    280806160 M400 MD42

    280806160 M400 MD43

    Contedo do Buffer

    208014180 M400 MD40

    208014180 M400 MD42

    208014400 M400 MD40

    208014400 M400 MD42

    280806160 M400 MD40

    280806160 M400 MD42

    280806160 M400 MD43

    138

  • 7/25/2019 Apostila ABAP Advanced

    72/177

    Log

    O uso do flag de Log utilizado quando h anecessidade de saber quais registros foramalterados.

    Se o log estiver ativo, cada alterao nos dados databela (com os comandos UPDATE e DELETE) pelousurio ou pelo programa registrado na tabela delog DBTABPRT.

    O log deve ser usado com cuidado pois podeimpactar a performance do sistema e se houveracesso de vrios usurios simultaneamente podecausar a situao de Lock.

    139

    ndice

    O ndice utilizado para aumentar a eficinciana busca do registro em determinada tabela.

    O ndice pode ser considerado um cpiareduzida de uma tabela contendo determinadoscampos. Essa cpia sempre ordenada.

    O ndice contm um ponteiro ao registro

    correspondente da tabela selecionada,permitindo que os campos no contidos nondice sejam lidos.

    140

  • 7/25/2019 Apostila ABAP Advanced

    73/177

    ndice

    Existem dois tipos de ndice: ndice Primrio

    O ndice primrio possui os campos chaves da tabela e o ponteiropara os campos no-chave da tabela. criado automaticamente.

    ndice Secundrio O ndice secundrio necessrio se a tabela acessada

    freqentemente de um modo que no aproveita os campos chavesda tabela

    Podem ser criados mais de um ndice secundrio, mas deve-se

    levar em considerao a performance, pois a cada registroinserido na tabela, o sistema tem que armazenar os dados dondice.

    O sistema identifica automaticamente qual ndice serutilizado se houver mais de um ndice.

    141

    ndice

    ndice Primriondice Primrio para SCOUNTERMANDT CARRID COUNTNUM P

    100 AA 00000001 7

    100 BA 00000001 9

    100 BA 00000002 12

    100 BA 00000003 5

    100 BA 00000004 2

    100 LH 00000001 10

    100 LH 00000002 4

    100 LH 00000003 8

    100 LH 00000004 11

    100 LH 00000005 1

    100 LH 00000006 13

    100 LH 00000007 6

    100 LH 00000008 14

    100 UA 00000001 3

    Tabela SCOUNTER

    MANDT CARRID COUNTNUM AIRPORT

    100 LH 00000005 ACA

    100 BA 00000004 ACE

    100 UA 00000001 BER

    100 LH 00000002 LCY

    100 BA 00000003 LHR

    100 LH 00000007 BER

    100 AA 00000001 DEN

    100 LH 00000003 FRA

    100 BA 00000001 LCY

    100 LH 00000001 LGW

    100 LH 00000004 LHR

    100 BA 00000002 MUC

    100 LH 00000006 RTM

    100 LH 00000008 HAM

    Campos chaves

    142

  • 7/25/2019 Apostila ABAP Advanced

    74/177

    ndice ndice Secundrio

    ndice Secundrio

    AIRPORT P

    ACA 1

    ACE 2

    BER 3

    BER 6

    DEN 7

    FRA 8

    HAM 14

    LCY 4

    LCY 9

    LGW 10

    LHR 5LHR 11

    MUC 12

    RTM 13

    Tabela SCOUNTER

    MANDT CARRID COUNTNUM AIRPORT

    100 LH 00000005 ACA

    100 BA 00000004 ACE

    100 UA 00000001 BER

    100 LH 00000002 LCY

    100 BA 00000003 LHR

    100 LH 00000007 BER

    100 AA 00000001 DEN

    100 LH 00000003 FRA

    100 BA 00000001 LCY

    100 LH 00000001 LGW

    100 LH 00000004 LHR100 BA 00000002 MUC

    100 LH 00000006 RTM

    100 LH 00000008 HAM

    SELECT *FROM SCOUNTERWHERE AI RPORT = LCY .

    BinarySearch

    143

    Categoria de Ampliao

    A seleo de uma categoria de ampliao

    necessria, uma vez que nas ampliaes detabelas e de estruturas em programas semverificao unicode ativa, principalmente nasverificaes de tipo e em conjunto comestruturas profundas, podem ocorrer erros desintaxe e em tempo de execuo.

    Em funo da definio de estrutura, os botesde rdio permitidos da caixa de dilogo estoprontos para entrada

    144

  • 7/25/2019 Apostila ABAP Advanced

    75/177

    Categoria de Ampliao (ECC 6.0)

    As opes de categoria de ampliao so: no amplivel

    A estrutura no pode ser ampliada. amplivel e em forma de caractere

    Todas os componentes de estrutura e as respectivas ampliaestm de ser em forma de caractere (C, N, D ou T).

    amplivel e em forma de caractere ou numrica A estrutura e a respectiva ampliao no pode conter

    categorias de dados profundas (tabelas, referncias, cadeias). amplivel conforme pretendido

    A estrutura e a respectiva ampliao pode conter componentes,cuja categoria de dados facultativa.

    no classificada Esta categoria pode ser selecionada, por exemplo, para um

    status de transio, mas no ao criar estruturas.145

    DOMNIOS E ELEMENTO DE DADOS

    146

  • 7/25/2019 Apostila ABAP Advanced

    76/177

    Domnio

    O domnio um objeto que contm asinformaes tcnicas de um campo, como o tipode dados e o tamanho do campo.

    No domnio tambm definido o intervalo devalores, os quais podem ser valores individuaisou um conjunto de valores ou uma tabela deverificao.

    No domnio definido as rotinas de converso.

    147

    Domnio Tipos de dados Tipos de Dados do Dicionrio

    TIPO DESCRIO

    ACCP Perodo contbil AAAAMM

    CHAR Cadeias de caracteres com no mximo 255 caracteresCLNT MandanteCUKY Cdigo da moeda, referido por campos CURRCURR Campo de moeda (divisa), arquivado como DECDATS Campo de data (AAAMMDD), arquivado como carac(8)DEC Campo de clculo ou montante com vrgula e sinal pos./neg.FLTP Nmero em ponto flutuante com preciso de 8 bytesINT1 1 byte n inteiro 0 a 255INT2 2 byte n inteiro 32767 a 32767INT4 4-byte n inteiro -2177483647 a 2177483647LANG Cdigo de idioma sempre 1 caracterLCHR Seq. longa de caracteres maior que 255 e necessita campo INT2LRAW Seq. longa de bytes, necessita campo INT2NUMC Campo de caracteres s com dgitos mximo de 255 dgitos

    PREC Preciso de um campo QUANQUAN Campo quantidade, aponta p/campo de unidades de formato UNITRAW Seqncia de bytes no interpretadaTIMS Campo de hora (hhmmss), arquivado como caract.(6)VARC Seq. longa caracteres, no suportada a partir da verso 3.0UNIT Cdigo de unidades para campos QUAN

    148

  • 7/25/2019 Apostila ABAP Advanced

    77/177

    Elemento de Dados

    O elemento de dados um objeto que contm aspossveis descries utilizadas na telas dosprogramas e ajudas de pesquisa.

    No elemento de dados, especificado o domnioa ser utilizado.

    O elemento de dados atribudo aos campos dastabelas, estruturas e programas ABAP.

    149

    Domnio & Elemento de Dados

    O domnio s pode ser utilizado pelo elementode dados e ambos se completam.

    Um domnio pode ser utilizado por vrioselemento de dados, mas o elemento de dados spode ter um domnio.

    O campo de uma tabela herda as caractersticas

    do elemento de dados, tais como a descrio eajuda de pesquisa e o tipo de dado e tamanho dodomnio atribudo ao elemento de dados.

    150

  • 7/25/2019 Apostila ABAP Advanced

    78/177

    Campo & Elemento de Dados &Domnio

    TABELA 1 TABELA 2 TABELA 3

    Elemento de Dados 1 Elemento de Dados 2

    Domnio

    O tipo de dados e o tamanho so sempre consistente

    151

    Criao de Tabela

    152

  • 7/25/2019 Apostila ABAP Advanced

    79/177

    Antes de criar a tabela, necessrio criar osdomnios que sero atribudos aos elementos de

    dados os quais sero atribudos aos campos databela.

    153

    Criao do Domnio SE11

    1. Marcar o boto de rdio Domnio2. Inserir o nome do domnio (sempre comea com a letra Z)

    3. Clicar no boto Criar

    2

    3

    1

    154

  • 7/25/2019 Apostila ABAP Advanced

    80/177

    Criao do Domnio - Definio4. Inserir a descrio do domnio5. Informar o tipo de dados6. Informar a quantidade de posies7. Ativar o domnio

    4

    5

    6

    7

    155

    Criao do Elemento de Dados SE118. Marcar o boto de rdio Categoria dados9. Inserir o nome do elemento de dados (sempre comea com a letra Z)10. Clicar no boto Criar11. Selecionar a opo Elemento de Dados

    9

    10

    8

    11

    156

  • 7/25/2019 Apostila ABAP Advanced

    81/177

    Criao do Elemento de Dados Ctg.dds

    12. Inserir a descrio13. Inserir o nome do domnio criado14. Clicar na aba Denomin.campo para inserir os textos do campo

    13

    14

    12

    157

    Criao do Elemento de Dados Denomim.campo

    15. Inserir a descrio16. Ativar o elemento de dados

    15

    16

    158

  • 7/25/2019 Apostila ABAP Advanced

    82/177

    Criao da Tabela SE11

    17. Marcar o boto de rdio Tab. Banco dados18. Inserir o nome da tabela (sempre comea com a letra Z)19. Clicar no boto Criar

    18

    19

    17

    159

    Criao da Tabela Entrega e atualizao20. Inserir a descrio da tabela21. Definir a classe de entrega22. Definir a regra de atualizao da tabela23. Clicar na aba Campos

    20

    21

    22

    23

    160

  • 7/25/2019 Apostila ABAP Advanced

    83/177

    Criao da Tabela Campos24. Definir o nome do campo (nomenclatura livre)25. Definir se o campo chave e se o campo NOT NULL26. Inserir o nome do elemento de dados27. Definir a chave externa (opcional)28. Clicar no boto Configuraes tcnicas (obrigatrio)

    24

    25

    26

    27

    28

    161

    Criao da Tabela Opes tcnicas29. Definir a categoria de dados30. Definir a categoria de tamanho31. Ativar o buffer se necessrio32. Definir o tipo de armazenamento em buffer caso o buffer tenha sido ativado33. Voltar para a tela anterior

    29

    31

    32

    30

    33

    162

  • 7/25/2019 Apostila ABAP Advanced

    84/177

    Criao da Tabela ndice34. Clicar no boto ndices... para abrir a janela de ndice35. Clicar no boto Criar e selecionar a opo desejada para abrir a janela de identificao do

    ndice36. Inserir o cdigo de identificao do ndice

    34

    35

    36

    163

    Criao da Tabela ndice37) Inserir a descrio do ndice38) Indicar os parmetros do ndice39) Indicar os campos da tabela que faro parte do ndice40) Salvar o ndice

    37

    38

    39

    40

    164

  • 7/25/2019 Apostila ABAP Advanced

    85/177

    Criao da Tabela Categoria de Ampliao

    41) No menu Suplementos, selecionar a opo Categoria de ampliao...42) Selecionar a categoria de ampliao pretendida43) Clicar em Aceitar

    41

    42

    43

    165

    Visualizar dados da tabela

    Os dados includos em uma tabela podem servisualizados atravs das transaes SE16 ouSE16N, sendo esta ltima a verso mais nova nasverses ECC5 e ECC6.

    SE16 SE16N

    166

  • 7/25/2019 Apostila ABAP Advanced

    86/177

    Viso

    Os dados de uma viso so derivadas de uma oumais tabelas, mas no so armazenadas fisicamente. Uma viso pode ser utilizado por um programa

    ABAP para a seleo de dados. O primeiro passo definir as tabelas bases No segundo passo, essas tabelas devem ser

    associadas atravs de condies Join

    O terceiro passo definir os campos das tabelas baseque devero estar presentes na viso O quarto passo definir as condies de seleo que

    restringem os registros a serem apresentados naviso

    167

    Viso

    Existem quatro tipos de viso: Viso de banco de dados Viso de projeo Viso de atualizao Viso de ajuda

    168

  • 7/25/2019 Apostila ABAP Advanced

    87/177

    Viso de banco de dados

    Geralmente, os dados esto distribudos entre vriastabelas. Uma viso fornece um meio de obter estesdados distribudos.

    A operao de join realizada no banco de dados,minimizando o nmero de acesso ao banco dedados.

    Se a viso possuir somente uma tabela, o sistemapermite a insero de registro, caso contrriosomente a leitura das tabelas

    O acesso aos dados de uma viso geralmente maisrpido do que acesso individual as tabelas

    169

    Viso de banco de dados

    F1 F2 F3 F5 F8

    F1 F2 F3 F5 F8

    F1 F2 F3 F4 F5 F6 F7 F8

    Tabela 1 Tabela 2 Tabela 3

    Definio da visono dicionrio de dados

    Ao ativar a viso criada no banco de dados

    Definio da viso nobanco de dados

    Interface do banco de dados

    Programa ABAP

    170

  • 7/25/2019 Apostila ABAP Advanced

    88/177

    Viso de projeo

    Viso de projeo utilizado para ocultarcampos de uma tabela.

    A viso de projeo contm apenas uma tabelabase. No possvel definir condies deseleo.

    No h um objeto correspondente no banco dedados para a viso de projeo. possvel acessar tabelas clusters e pool com aviso de projeo

    171

    Viso de atualizao

    A viso de atualizao fornece um meio fcil de

    atualizar objetos de aplicaes complexas. Todas as tabelas de uma viso de atualizao devemestar associadas com chaves estrangeiras, pois ascondies de join na viso de manuteno soderivadas das chaves estrangeiras.

    No possvel entrar as condies de join como aviso de banco de dados.

    O mecanismos de manuteno fornecido atravsda transao SE54, para criar o programa demanuteno e a transao SM30 para executar oprograma de atualizao.

    172

  • 7/25/2019 Apostila ABAP Advanced

    89/177

  • 7/25/2019 Apostila ABAP Advanced

    90/177

    Criao - Viso de banco de dados1. Marcar o boto de rdio Viso2. Inserir o nome da viso (sempre comea com a letra Z)3. Clicar no boto Criar4. Selecionar a opo Viso de banco de dados

    2

    3

    14

    175

    Criao - Viso de DB tabelas/condies join5. Inserir a descrio da viso6. Definir as tabelas bases7. Definir as condies de Join8. Clicar na aba Cpos.viso

    5

    7

    6

    8

    176

  • 7/25/2019 Apostila ABAP Advanced

    91/177

    Criao - Viso de DB Campos Viso

    9. Especificar os campos da viso

    9

    177

    Criao - Viso de DB condio de seleo

    10. Definir a condio de seleo11. Ativar a viso

    11

    10

    178

  • 7/25/2019 Apostila ABAP Advanced

    92/177

    Estruturas

    As estruturas so utilizadas para definir osdados da interface dos module pools e telas epara definir os tipo de parametros dos mdulosde funo.

    As estruturas possuem componentes que podemreferenciar a um tipo elementar (via elemento de

    dados ou diretamente especificando o tipo dedados e tamanho), outra estrutura ou umacategoria de tabela.

    As estruras podem possuir vrios nveis.

    179

    Ajudas de Pesquisa

    A ajuda de pesquisa (F4) uma funo standarddo SAP.

    Ele permite apresentar ao usurio uma lista depossveis entradas para um determinado campo.

    til quando um campo requer a entrada de umvalor formal.

    180

  • 7/25/2019 Apostila ABAP Advanced

    93/177

    Ajuda de Pesquisa - Processo

    1. O usurio clica no boto de match-coderelacionado ao campo para obter uma lista depossveis valores para o campo

    2. O sistema apresenta opes de pesquisa para osvalores

    3. O usurio especifica o critrio de seleo e inicia apesquisa

    4. O sistema determina os valores que satisfaam asrestries e apresenta o resultado em uma lista5. O usurio seleciona o valor atravs de duplo

    clique.6. O valor selecionado transferido para o campo

    181

    Ajuda de Pesquisa Elementar

    182

  • 7/25/2019 Apostila ABAP Advanced

    94/177

    Ajuda de Pesquisa Coletiva

    183

    Objeto de bloqueio

    O R/3 sincroniza simultaneamente o acesso de

    vrios usurios aos mesmos registros atravs demecanismos de bloqueio.

    Os bloqueios so ativados e desativados atravs demdulos de funo.

    Os mdulos de funo de bloqueio so criadosautomaticamente pelo dicionrio de dados.

    O objeto de bloqueio pode ter uma ou mais tabelas. O nome do objeto de bloqueio deve comear com a

    letra E.184

  • 7/25/2019 Apostila ABAP Advanced

    95/177

    Objeto de bloqueio - EstruturaAs tabelas nas quais os registros devem ser

    bloqueados atravs de objetos de bloqueio sodefinidos com as respectivas chaves.

    CH1 D1

    CH2 CH3

    D3CH4 CH5 CH6

    Tabela 1

    Tabela 2

    Tabela 2

    Chave estrangeira

    Chave estrangeira

    185

    Objeto de bloqueio - Parmetros Os parmetros de bloqueio de uma tabela consiste

    nas chaves da mesma. Os parmetros de bloqueio so utilizados como

    parmetros de entrada nos mdulos de funo debloqueio para ativar ou desativar o bloqueio.

    Tabela 1

    CH1 D1

    1 ...

    2 ...

    3 ...

    Tabela 2

    CH2 CH3 D2

    1 1 ...

    2 1 ...

    2 2 ...

    3 1 ...

    3 3 ...

    Tabela 3

    CH4 CH5 CH6 D3 D4

    1 1 A ... ...

    2 1 A ... ...

    2 1 B ... ...

    2 1 C ... ...

    2 3 A ... ...

    2 3 B ... ...

    3 1 A ... ...

    Chamada do mdulo de funo de bloqueio com as chavesCH1 = 2 e CH3 = 1

    Os registros em vermelho esto bloqueados

    186

  • 7/25/2019 Apostila ABAP Advanced

    96/177

    Objeto de bloqueio - Modo O modo de bloqueio controla como os usurios iro acessar os

    dados simultaneamente. Pode ser atribudo separadamente para cada tabela do objeto de

    bloqueio O acesso por mais de um usurio pode ser efetuado pelos seguintes

    modos: Bloqueio de escrita (Exclusive Lock)

    Os dados bloqueados s podem ser lidos ou processados por um nicousurio. Tanto a solicitao de outra proteo contra gravao como asolicitao de um bloqueio de leitura so rejeitadas.

    Bloqueio de leitura (Shared Lock) Vrios usurios podem acessar simultaneamente os mesmos dados para

    leitura. Contudo, assim que um usurio processar os dados, um segundo

    usurio j no pode acessar estes dados. As solicitaes de novosbloqueios de leitura so aceitas, mesmo se forem provenientes de outrosusurios. Uma proteo contra gravao rejeitada.

    Bloqueio de escrita ampliado (Exclusive but not cumulative) Enquanto as protees contra gravao podem ser solicitadas vrias vezes

    e canceladas sucessivamente pela mesma transao, uma proteo contragravao ampliada s pode ser solicitada uma vez pela mesma transao.Qualquer outra solicitao de um bloqueio rejeitada.

    187

    Objeto de bloqueio Mdulo deFuno

    Quando o objeto de bloqueio ativado, doismdulos de funo so criados. ENQUEUE_ DEQUEUE_

    188

  • 7/25/2019 Apostila ABAP Advanced

    97/177

    Objeto de bloqueio Mdulo deFuno - Parmetros

    Campos do objetos de bloqueio So os campos chaves definidos no dicionrio de

    dados Passar o valor X para o campo que deseja

    bloquear Se no for passado o valor X, ser feito um

    bloqueio genrico

    189

    Transaes

    SE11 Dicionrio de Dados SE16/SE16N Exibio dos dados de tabelas SE14 Utilitrio de banco de dados SM30 Atualizao de viso de tabelas SE93 Atualizao de transao

    190

  • 7/25/2019 Apostila ABAP Advanced

    98/177

    Exercciosa) Criar as seguintes tabelas no SAP

    Campo Elemento de Dados Domnio

    NUMDOC J_1BDOCNUM

    NFNUM PRPRIO NUM 6

    LIFNR LIFNR

    CGC_CPF PRPRIO PRPRIO

    Campo Elemento de Dados Domnio

    NUMDOC J_1BDOCNUM

    ITNUM J_1BITMNUM

    MATNR MATNR

    MENGE J_1BNETQTY

    MEINS PRPRIO CUKY 3

    VALOR J_1BNETPRI

    MOEDA PRPRIO PRPRIO

    Notas Fiscais de Entrada de Material paraAgrupamento com o nome: (Z##NFKGR)

    Itens das Notas Fiscais com o nome:(Z##NFPGR):

    191

    Exercciosb) Criar os relacionamentos entre as duas tabelas

    do exerccio anterior e as tabelas SAPc) Criar uma viso para listar os fornecedores e os

    respectivos materiais comercializados pelosmesmos.

    A viso deve conter os seguintes campos: LIFNR (Nmero do fornecedor) NAME1 (Nome do fornecedor) MATNR (Cdigo do material)

    MAKTX (Descrio do material pelo idioma delogon)

    192

  • 7/25/2019 Apostila ABAP Advanced

    99/177

    Curso Avanado de ABAPAbap Report

    193

    Tpicos

    ABAP EditorABAP Report

    194

  • 7/25/2019 Apostila ABAP Advanced

    100/177

    ABAP Editor

    O ABAP Editor a ferramenta para a criao deprogramas ABAP A transao do ABAP Editor SE38 No ABAP Editor possvel:

    Criar/Modifica/Visualizar o programa Copiar e renomear o programa Excluir o programa do sistema

    Ativar o programa Alterar as caractersticas do programa Documentar o programa Criar/Modificar/Visualizar os elementos de texto do

    programa

    195

    ABAP Editor Tela inicial1. Verificar a sintaxe do cdigo2. Ativar o programa3. Executar o programa4. Pesquisar onde o programa

    utilizado

    5. Excluir o programa dosistema

    6. Copiar o programa7. Renomear o programa8. Depurar o programa9. Depurar o programa com

    variante10.Gerenciar variante do

    programa

    1 2 3 4 5 6 7 8 9 10

    196

  • 7/25/2019 Apostila ABAP Advanced

    101/177

    ABAP Editor Editor1. Exibir/Modificar cdigo2. Ativar/Desativar programa3. Carregar outro programa

    4. Pesquisar onde o programa utilizado

    5. Excluir o programa dosistema

    6. Copiar o programa7. Renomear o programa8. Depurar o programa9. Depurar o programa com

    variante

    10.Gerenciar variante doprograma

    1 3 4 5 6 7 8 9 102 11 12

    197

    ABAP Report

    198

  • 7/25/2019 Apostila ABAP Advanced

    102/177

    Caractersticas

    As principais caracterticas de um ABAP Reportso: um programa executvel Possui tela de seleo, a qual definida atravs de

    comandos ABAP

    199

    ABAP Report - ManutenoA manuteno de programas ABAP Report

    efetuado atravs da transao SE38

    As opes de manuteno so: Texto fonte Variantes Caractersticas Documentao Elemento de Texto

    200

  • 7/25/2019 Apostila ABAP Advanced

    103/177

    ABAP Report Texto Fonte Como o prprio nome j diz, texto fonte onde

    feito a criao/manuteno dos programasABAP

    201

    ABAP Report VariantesVariante um grupo de valores de critrio de

    seleo.

    Em vez de entrar os mesmos critrios de seleocada vez que iniciar o programa de obteno dedados, o usurio pode entrar e gravar em umavariante os valores que sempre utiliza comocritrios de seleo

    possvel criar e especificar uma variante para o

    programa de obteno de dados em cada visode anlise.

    202

  • 7/25/2019 Apostila ABAP Advanced

    104/177

    ABAP Report Caractersticas Nas caractersticas do programa so definidos:

    Ttulo Tipo de programa Status Aplicao Grupo de autorizaes Pacote Banco de dados lgico Verso tela seleo Bloqueio do editor Verificao unicode ativas Aritmtica em ponto fixo Incio com variante

    203

    ABAP Report Caractersticas

    204

  • 7/25/2019 Apostila ABAP Advanced

    105/177

    ABAP Report Caractersticas Ttulo

    Descrio breve da funcionalidade do programa

    Tipo de programa Neste campo necessrio informar o modo de

    execuo do programa. As opes so: 1. Programa executvel: Declarar o programa como

    Executvel, ou seja, que podem ser executados sem anecessidade de se criar transaes para ele.

    F. Grupo de funes: Declarar o programa comomdulo de funo. Utilizado pelo SAP na criao demdulo de funo

    I. Include: Declarar o programa como Include. Uminclude um programa independente que possui duasfuncionalidades:

    Pode ser utilizado em diversos programas; Facilita a manuteno dos programas.

    205

    ABAP Report Caractersticas J: Pool de Interface: As interfaces so administradas

    pelo gerador de classes; a categoria de programa Jno pode ser modificada nos atributos.

    K: Pool de classes: Contm classes. As classes soadministradas pelo gerador de classes; a categoria deprograma J no pode ser modificada nos atributos.

    M: Pool de mdulos: Declarar o programa comoModule Pool, significa que, este programa necessitada criao de transaes ou menus para serexecutado. Exemplo: Programas Dilogo.

    S: Pool de sub-rotinas: contm partes de programa(FORM) que so executveis atravs das instruesPERFORM externas.

    206

  • 7/25/2019 Apostila ABAP Advanced

    106/177

    ABAP Report Caractersticas Status

    Descreve o status do programa. Exemplo: TPrograma de testes

    Aplicao Campo para alocao de programa em uma

    determinada rea de negcio. Exemplo: Se oprograma for para Financial Account, escolhe-seF.

    Grupo de Autorizaes Autorizao para os usurios executarem o

    programa: S_DEVELOP e para manter oprograma S_PROGRAM.

    207

    ABAP Report Caractersticas Pacote

    Os pacotes so importantes para transportesentre os sistemas de produo e

    desenvolvimento. So combinados todos os objetos pertencentes

    ao desenvolvimento em uma classe dedesenvolvimento em uma change request

    Todos os programas associados a classe dedesenvolvimento $TMP so locais e no sotransportados.

    A classe de desenvolvimento escolhida nacriao do programa

    208

  • 7/25/2019 Apostila ABAP Advanced

    107/177

    ABAP Report Caractersticas Banco de dados lgico

    Somente para programas executveis (Tipo 1). Estecampo determina o Banco de Dados Lgico que serutilizado por este programa.

    Verso tela seleo Verso de tela de seleo do programa de banco de

    dados Bloqueio do Editor

    Quando marcado, permite somente o proprietrioatualizar, apagar, renomear o programa.

    Somente o proprietrio poder modificar edesbloquear o programa

    209

    ABAP Report Caractersticas Verificao de unicode ativas

    Realiza a verificao de unicode Aritmtica em ponto fixo

    Se marcar este campo, o sistema arredonda oscampos numricos (tipo P) de acordo com onmero de casas decimais especificados noprograma, ou preenche-as com zeros, neste casoo sinal decimal o ponto (.).

    Incio via variante

    Somente para programas executveis. Informaque o programa s pode ser executado com umaVariant.

    210

  • 7/25/2019 Apostila ABAP Advanced

    108/177

    Report - Criao1. Inserir o nome do programa2. Selecionar Texto Fonte

    3. Clicar no boto Criar

    1

    2

    3

    211

    Report - Criao1. Inserir uma descrio breve do programa2. Determinar o tipo de programa3. Clicar no boto Gravar

    1

    2

    3

    212

  • 7/25/2019 Apostila ABAP Advanced

    109/177

    Report - Criao4. Inserir o pacote5. Clicar no boto Salvar

    6. Inserir o nmero da change request7. Clicar no boto Confirmar

    4

    56

    7

    213

    Report Editor ABAP

    214

  • 7/25/2019 Apostila ABAP Advanced

    110/177

    Editor ABAP1. Exibir/Modificar (CTRL+F1)2. Ativar/Desativar o programa

    (SHIFT+F8)3. Verificar o cdigo (CTRL+F2)4. Ativar o programa (CTRL+F3)5. Executar o programa (F8)6. Lista de Utilizao (CTRL+SHIFT+F3)

    7. Definir/Eliminar ponto de paradade sesso

    8. Definir/Eliminar ponto de paradaexterno

    9. Modelo10. Pretty Printer11. Exportar o cdigo12. Importar o cdigo

    1 2 3 4 5 6 7 8 9 10

    12

    11

    215

    Editor ABAP - Funcionalidades

    Exibir/Modificar (CTRL+F1) Alterna o editor para o modo de visualizao e

    edio do cdigoAtivar/Desativar o programa (SHIFT+F8)

    Altera o status do programa para ativo ou inativoAtivar o programa (CTRL+F3)

    Ativa o programa tornado-o possvel para aexecuo do usurio. Na ativao, o cdigo verificado a procura de erros

    216

  • 7/25/2019 Apostila ABAP Advanced

    111/177

    Editor ABAP - FuncionalidadesVerificar o cdigo (CTRL+F2)

    Verifica se o cdigo possui erro de sintaxe

    217

    Editor ABAP - Funcionalidades

    Executar o programa (F8) Executa o programa, desde que o mesmo seja do tipo 1

    - Programa Executvel e o programa esteja ativo. Lista de Utilizao (CTRL+SHIFT+F3)

    Retorna uma lista informando quais os programas,transaes, classes e ampliaes utilizam o programapesquisado.

    Definir/Eliminar ponto de parada de sesso Insere um ponto de parada para que o programa sejainterrompido em modo de depurao para a soluo de

    problemas. O ponto de parada utilizado em todas assesses do logon atual.

    218

  • 7/25/2019 Apostila ABAP Advanced

    112/177

    Editor ABAP - Funcionalidades

    Definir/Eliminar ponto de parada externo Insere um ponto de parada vlido para todos os usurios, do

    servidor e sistema atual. Os pontos de parada externos so teis para debugar programas

    BSP ou WebDynpro. Nesse caso, o logon no realizado atravsdo SAP GUI, mas sim do browser, por exemplo. Entretanto, ospontos de parada devem ser devem ser ativados antes de logar.

    O uso do ponto de parada externo vlido pelo perodo de 2

    horas. Modelo O boto modelo uma ferramenta para inserir determinados

    comandos como modelo, a modo de facilitar a codificao pelodesenvolvedor.

    219

    Editor ABAP - Funcionalidades

    Pretty Printer O boto Pretty Printer utilizado para uniformizar o

    layout do programa, tal como endentao ecapitulao.

    Importar/Exportar cdigo Importa/Exporta o cdigo fonte de/para um

    arquivo texto.

    220

  • 7/25/2019 Apostila ABAP Advanced

    113/177

  • 7/25/2019 Apostila ABAP Advanced

    114/177

    Comando REPORT

    LINE-SIZE largura Esta opo define a largura da linha da listagem com

    a quantidade de caracteres definido em largura. A largura mxima de 1023 caracteres. Quando a opo LINE-SIZE no especificada, a

    largura da listagem se ajustar automaticamente ao

    tamanho da janela.

    223

    Comando REPORT

    LINE-COU