Academia ABAP

1.659 visualizações

Publicada em

Informações técnicas de código ABAP

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.659
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
88
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Academia ABAP

  1. 1. Academia ABAP - Noturno Parte 1 : Sap 50 . Navegação  Client - Permite unir operações, num único sistema, com independência das informações. Usuário e senha. Elementos de Tela : comand field, menubar, standard , toolbar, titlebar, checkboxe, radiobuttons, statusbar(rodapé). Sap Easy Access : Favoritos, settings. Código de Transação: /n, /o, System/Status cod-trans, help. F1 ; Informações de campos, funções. F4 : Matcode. Menu Help : Aplication help - (aplicação atual). Ap Library - Documentos online. Glossary - Busca do termos. Release Notas : Mostrar mudanças de release. Sap Net. Feed Back : Chamada ao suporte. Settings : Setting do Help. Services System: Criar Sessão, profile, listas(salvar, imprimir), status, logf. Services, reporting (iniciar report), output controller (request especifica de imprimir), table maintenance (Procurar tabelas e views), batch input, job, funções do user profile. Table Setting : Criação de variantes p/campos muito usado, personalizar o SAPGUI, colocar botões de radiobuttons. System Kernel : O R/3 trabalha com clientes (Software componentes) que provem serviços (services). Esses componentes podem ser um processo (Work Process), um grupo de processos(aplication server). Camadas On-tier, two-tier e 3-tier(Presentation, aplicattion e database). O dispatcher trabalha no sistema FIFO com as requests. A função do dispatcher é conectar o presentation ao Banco de Dados, distribuir as transacoes aos Work Processe organizar a comunicação. Já na comunicação com o banco de dados, temos os programas abap, que são independentes.
  2. 2. MS.: Message server- Comunicação entre instancia. GS. : Gateway service - Comunicação entre sistemas R/3 e legado. WP : Work Process : D : Dialog = Presentation Message Server : B : BackGround - Jobs Gateway : V : Update = update do Banco de dados. V2: Update2 S : Spool = Impressão. E : Enqueue = Lock Banco de dados. Objetos : EY ou EZ são para enqueue e D do banco de dado. Update no banco é assíncrono. Os jobs de Background tem prioridade A, B, C. Instance, central Instance. Comunications : RFC - Protocolo para chamar subrotinas. Pode Ter chamadas síncronas(Chama e espera o retorno da função). Assíncrona - paralelamente roda programas enquanto espera o retorno da função. Transacional : Enfileira um grupo de funções e amarra em tasks, no fim chama essa task. OLE : Comunicação com as aplicações office. Comando OLE -> ABAP com um RFC  SAPGUI PC. R/3 server : R-Ole Sapserver RFC ou BAPIS. Segurança : Browser  Firewall  W Gate  Web Server Firewall  ITSAgate(Saprouter) client lan Serviços SAP ; SapNet, GoingLive and Early Watch, remote consulting. Curso BC400 Três formas de iteração com o usuário : 1- Telas de Seleção; 2- Telas; 3- Lista. O gerenciamento feito por seleção. O usuário solicitante do sistemas, informa o que ele está procurando. O programa ABAP é executado em trechos. 1- O usuário executa o programa;
  3. 3. 2- O programa enato é carregado; 3- Definição das variáveis - tela de filtro; 4- Acesso aos trechos; 5- Apresentação da lista. Para cada tela temos um PBO e um PAI. Repositório : O repositório é organizado por classes de desenvolvimento. A função da classe de desenvolvimento é organizar o projeto. No repositório estão todos os objetos de desenvolvimento. Change request - Tarefa criada após a associação de um objeto a uma classe de desenvolvimento. Ferramentas ABAP : ABAP editor : Tr. SE 38 Utilizado para relatório. Function Builder : Módulos de Função. Screen Painter : Desenhar Telas. Menu Painter : Definir Menus, títulos, funções standart. Class Builder : Objetos. Debugger : Debuggar programas. ABAP Dictionary : Definição do Banco de Dados. No objeto navigator posso ver o menu de contexto. Debugger : Executo e /R ou execute/debugger. (Single step - F5) Para ver o conteúdo de uma variável, somente um duplo click. Todo comando começa por uma keyword. Pretty Printer - Palavras Chaves. F1- Ajuda. Parameters : Tela de Seleção. Select options : Tela de Seleção. Start-of-Selection = Bloco de Evento. At Line-Selection Lembra que a change é transportado e não a tarefa. Como Criar um classe de desenvolvimento? - SE80  icone outros Objetos ou Shift F5  coloco a classe (ZABAP) createdescrição Tranport layer (onde fica a produção)SalvarSalvarNumero da request. Types e Data : Compare Java. Type : uma classe que eu crio, apenas crio.
  4. 4. Data : instancio um objeto dessa classe ou um tipo (int), string, etc. Exemplos. Type : tchar (5) type c. Data: var type tchar; Data: var2 type scarrid, Var3 (5). As descrições do matchcode vem do data element, objeto do dicionário de dados, que tem a documentação do objeto. O matchcode vem do data element. A vantagem de declarar um tipo do dicionário é a característica semântica. Tipos : C  Caracter < 255b, N  Numérico <= 255b, D Date yyyymmdd T Time, X Byte (Hexadecimal) <=255b I Integer - não se define quantidade de bytes p/este campo, P Packed number compactados 16b ou 31 dígitos + sinal. F float point number -String -xtring Definições : Decimals - depois do p, máximo de decimal. Constants <.....> type <.....> value <'.....'>. Compute a = a * c ou a = a * c. Move v1 to v2 ou v2 = v1: Clear : apaga conteúdo. Case .... When.. when others.. Endcase. If... Else Endif.. elseif Lembrar : Data : it_tabela type standard table of nome_estrutura. = Tabela Internas. Comandos com Tabelas Internas : APPEND wa to it_tabela. Insere em baixo. INSERT wa into it_tabela. Where ou não where.
  5. 5. READ TABLE it_tabela into wa. Where - leitura Lembrar de testar o Sy-subrc = 0 achou o registro. MODIFY TABLE it_tabela where. - Modificar dados da tabela. DELETE it_tabela where. Deletar registros. LOOP AT it_tabela into wa. Looping de leitura de tabela. ENDLOOP. SORT by ..... MESSAGE : A - Abend c/Gravacao no log file, X - Abend s/Gravação no Log File, E - Erro, W- Warning, I - Informação, S - No rodapé. Para criar dinamicamente : Message id <mid> type <mtype> numbers<mtype> with <field> <field>. Informações sobre tabelas : - Application Hyerarchy e repositório information system : - Input field on screen - F1 Data Element - Debugger - Break point no select: - Editor. - Object List in the Object Navigator. - Select <result ou campos ou * ou single> from <table> into <wa> where <filtro>. - Endselect. (se for single não precisa) Linhas = registros e colunas = campos. Select single para ler uma única linha, porem no where deve Ter todos os campos chaves. Corresponding fields of - para assegurar que os campos estão em ordem. Importante : - Sempre quando o where tiver mais de uma clausula, usar o and ou or. - Sempre depois do endselect testar o sy-subrc ou sy-dbint tem o numero de linhas lidas. Se eu usar Select < > from < > into TABLE <it_tabela> não precisa do endselect. Quando executo uma operação chamamos de anay fetc. Posso ainda declarar vários elementos do dicionário de dados e usar ao INTO (G1,G2,G3). Autorizações : No user master record ficam armazenadas as autorizações. AUTORITY CHECK - Verifica no user master record, nos profiles(que tem a finalidade de dar autorização aos objetos). Testar sy-subrc = 0, tem autorização. Na administração do user master record define-se quais doctos. O usuário pode acessar e quais tipos de acessos ele tem (change, display). Quando você checa a autorização, basta checar o objeto e o valor de acesso, 1-Create, 2-Change, 3 Display.
  6. 6. Importante : O autority-check retorno na sy-subrc o valor se o user tem autorização e ne 0 se não tem autorização. Os códigos mais freqüentes para o authority check são : 0 - Tem acesso x - Não tem acesso 8 - Não tem acesso a todos os campos do objeto. Você pode ainda verificar um campo e adicionar o statement FIELD. LENDO MULTIPLOS DATABASE TABLES: Encapsular dados reutilizáveis. Views : São aplicações especificas de diferentes tabelas. Elas podem conter uma seleção de campos de uma tabela grande ou campos de varias tabelas diferentes. A View é definida no BD, sendo que este objeto é bom em performace. Importante : Para achar em qual tabela types uma estrutura é usada, basta procurar em Utilities - Where Used List. INTERNAL PROGRAM MODULARIZATION : Um programa ABAP é uma coleção de blocos de processamento. Há vários tipos de blocos de processamento. Event Blocks: São chamados pelo run-time system. Eles terminam quando inicia um novo event block. Exemplo : Initialization : - Start-of-selection, - at line-selection. Subrotinas : Perform, no sistema. (form .... endform. Paramentos são passados). Modules : Para o processamento de telas. Quando se declara um parameters do tipo data (sy-datum) , o sistema pega a data atual . Somente se após o parameters eu declarar default sy-datum. Para ele pegar a data somente. Depois no initialization eu posso fazer um atualização nesta varial (data). Ex. pa_date = pa_date - 7. Start-Of-Selecetion - 1º . Evento para gerar a lista. Quando você pressiona o F8(execute). Initialization : É um evento que você usa se precisar setar um numero de valores default. Ele é chamado antes da tela de seleção. Subrotinas : Blocos de processamentos com uma interface definida: FORM <nome da subrotina> using value <....> type ..... Changing <....> type<...> Os valores desta variável changing são modificáveis na subrotina.
  7. 7. ENDFORM. Chamadas por referencia - Usa Variáveis direto o endereço de memória. Não faz uma copia de parâmetro. É usado o mesmo pointer para o parâmetro formal (local) é o atual parâmetro. Chamadas por valores : Na chamada da rotina os valores são copiados e só são retornados para o atual parâmetros. Se usar o Changing e no ENDFORM. Importante : O numero de parâmetros local tem que ser igual ao do atual parâmetros. USER DIALOGS LISTAS : O Objetivo principal das listas é produzir dados de uma maneira que estes possam ser facilmente entendidos pêlos usuários. Elas são language independente, "Moeda" indepent. São produzidas por telas, impressão, internet/Intranet. Tem a seguinte interface standard de navegação : BACK, EXIT, CANCEL, PRINT, FIND, SAVE, HELP. Todo lista tem um list header e um column header. Dois caminhos para edita-los. 1- Funções do Text Element. 2- Com o programa salvo e ativo - entrar em SystemListList Header ou no código fonte entrar em GOTO Text Element. O Titulo e o header fazem parte do text Element. São objetos literais que tem ao vantagem de ser traduzidas em várias línguas. Os Text Element podem seguir 2 caminhos, no caso de mensagens. .Text-<999>. .<text> (<zzzz>). As listas (em programas executáveis) necessitam de comandos para sua criação : WRITE, SKIP, ULINE, depois a lista será gerada. AT-LINE-SELECTION. Event Block para criar uma lista de detalhes. (Duplo Click em uma linha especifica, gravada pelo comando Hide após o write) A lista básica é criada , pelo processo no start-of-selection. E a lista de detalhes se o sy-lsind > 0 no at-line-selection na lista. Na lista (n -1) você vê o detalhe da (n -1). Cada vez que se quer um detalhe de uma det. Lista o sy-lsind é incrementado. Importante - Não esquecer do comando HIDE AREA (Hide :...). As informações da Hide Área são para a construção da linha de detalhes. USER DIALOGS SCREEN: Selection screen são usados para restringir dados a serem selecionados. Reduz a carga consideralvelmente se forem tabelas muito grande. Possuem : - single fields
  8. 8. - complex entries : Intervalos, operations... - variants - Matchcode e search help. Podem ser traduzidos os selection textx. O sistema checa automaticamente estes campos. Select-Options ....For ....(estrutura). Selection texts podem mudar o texto das variáveis e traduzir. Variants : No programa rodando, escolho a variant  Save Variant.Texto o programa com um valor que é a variant. Parameters : Parametes : <nome> type ou like. Você define o tipo e o sistema só acerta aquilo. Deve se usar o WHERE no select para limitar exatamente o valor do parameters. Select Options : SELECT-OPTIONS : <NOME> FOR <DATA-OBJECT). Gera uma it_tab com as colunas : 1- "Sign", se o valor ou intervalo deve ser incluídos ou excluídos. 2- Option - operadores 3- Low - menor valor 4- High - maior valor Importante : No select a clausula WHERE deve ser Ex: where carrid in <NOME>. É obrigatório ou o Parameters ou select -options. Pelo menos um. A Select Screen começa no event block : At select screen que vem depois do INITIALIZATION. Se há algum erro o sistema volta para a selection screen, limpa o campo e mostra uma mensagem do tipo status. SCREEN DETAILS : Dar um duplo click na linha que deve estar no AT LINE-SELECTION. GRAFICAL SCREEN PAINTERS permite você definir o elementos da tela. Para ver os atributos, basta clicar no campo e em <..?..>. Um campo deve ser obrigatório. Posso ver os atributos também no Element List. Tables : Para declarar tabelas internas com a mesma interface de um estrutura. O transporte é feito automaticamente entre telas e data object com o mesmo nome imediatamente antes de uma tela ser mandada para o presentation server(After PBO). O sistema copia da wa (progr.ABAP) os campos correspondentes a wa da tela. Depois da ação (Antes PAI) o sistema copia da screen wa para wa(abap). Para definir os botões eu tenho que por o function code. Importante : Devo por element list o Ok_code e declarar no programa data : ok_code type sy- ucomm(user command). PBO - Process Before Output - É processado antes de ser mostrado a tela. PAI - Process after Input - Processado depois da tela digita. Neles não contem programação ABAP. Os comandos abaps são chamados através do comando : MODULE <NOME>. Duplo click no NOME e ai colocar os comandos ABAP, isto devido Ter um interpretador de Telas e Um outro interpretador de comandos abap.
  9. 9. MODULE <NOME>: - No ABAP ENDMODULE. Next Screen Set screen <NNN> no PAI serve para direcionar dinamicamente para a tela NNN. OK_CODE - Ele é do tipo sy-ucomm. No PBO devo dar um clear OK_CODE. No PAI devo Testa-lo CASE OK_CODE, sempre criando um MODULE. O module é reutilizável e ele gera no PBO e no PAI as palavras INPUT e OUTPUT. Importante : Declarar um save_ok no programa PAI fazer Save_ok = Ok_code e clear OK_code. COMPONENTES REUTILIZAVEIS : FUNCTION MODULES : FORM - usando parâmetros. OBJETOS : CLASS BAPI : BAPI Logical Database FUNCTION MODULES : Existem um function groupe que contem function modules e que podem ser chamados por qualquer programa abap. Nesse grupo contem : 1 - data object = podem ser vistos e alterados p/todos Function Modules. 2 - Subrotinas = Podem ser chamadas por todos Function Modules. 3 - Screens = Podem ser chamadas por todos Function Modules. Os módulos de função são unidades modulares com interfaces e contém (pode): Import Parameters = parâmetros passados - opcional. Export Parameters = Parâmetros de retorno - são sempre opcional. Changing Paramet.= Parâmetros que são passados e podem ser alterados. Eles podem ser opcional e as mudanças só retornam ao programa após a função ser executada. O exception : São usadas em erros, retornando o valor no sy-subrc. Objetos de Dados podem ser locais ou globais e todas as subrotinas pode ser alteradas. REPOSITORY PARA INFO. OBJETO e Métodos : Processo Integrado de desenvolvimento de um mesma linguagem. Encapsulamento : outros componentes não xxposições sobre o status interno. Polimorfismo : Objetos de classes diferentes reagem diferentes p/uma mesma mensagem.
  10. 10. Herança - Relacionamento entre classes. Uma usa estruturas que já foram definidas. Objetos são representações concretas ou abstratas do mundo real. Definir classes, tipos de objetos. Criação em tempo de execução, instancia. Type  data : <ref> type ref to <CLASS>, CREATE OBJECTS <REF> EXP... IMPORT.... CALL METHOD <REF>  <nome método>. Áreas de aplicação dos objetos : Office Integration Business Addins: Controls Pilot Projetos ALV - Grid Control Custom Controls que agem como container no front end. Um container pode contar outros controles. Existe objetos na classe builder para administrar custom controls e ALV Grid Control. CL_GUI_CUSTOMER_CONTAINER e CL_GUI_ALV_GRID. BAPI - BUSINESS APPLICATION PROGRAM INTERFACE : São interfaces que contem processos e dados de um sistema de aplicação de negócios, implementados como método de um objeto no BUSINESS OBJECT REPOSITORY(BOR) TRANSAÇÃO = SWO2. Podem ser utilizadas por varias aplicações = Java, C++ VB. Uma BAPI (Um Objeto) tem key atributos : identificação única para cada objeto. Instance specific methods : identificados por ATRIBUTOS. Instance specif methods : Chamado por todas as instancias de um objeto. Para ver os parâmetros de um método, basta expandir a estrutura do método. O export normalmente tem um parâmetro RETURN que contem informações de erros ocorridos. Importante : NÃO HÁ EXCEPTION PARA BAPIS. STANDARD BAPIS: GET LIST : Retorna campos Chaves. GET DETAIL : Retorna atributos do objeto. Create_from_data - cria novo objeto. BAPIS São implementados usando módulos de função. CALL FUNCTION : Você deve incluir uma estrutura de um tipo de seu prog. Para RETURN. LOGICAL DATABASE : Você pode colocar exatamente 1 logical database por programa.
  11. 11. O LD lê logicamente dados DB, cada LD tem um estrutura contendo uma hierarquia que serão lidas. Os dados são lidos hierarquicamente e ele mesmo otimiza a performace, checa autorizações e entrega a tela. NODES <nós>,<nós2>. = Tables só que também define a selection screen. É a estrutura hierárquica do logical database. Essa Estrutura é uma wa preenchida em tempo de execução. Aqui é definido um data object wa, e os detalhes da tela de seleção. Cada estrutura tem seu detalhe. Get <nós> - Event Block. Get <nós> e Get <nós2> são chamados varias vezes de acordo com o logical DB na ordem são executados. START-OF-SELECTION. GETs<nós>. END-OF-SELECTION. Get <nós> Late. Acabei de ler os vários registros do <nós>. Ou seja para verificar a quebra. Get <nós> FIELDS <campos> - Seleciono os campos que quero trabalhar. BC430 - ABAP DICTIONARY. O dicionário ABAP é uma central de gerenciamento de todos os objetos de dados do R/3. As tabelas e Views são definidas no dicionário como estruturas, porem no momento de ativação da tabela ela é criada fisicamente no BD. No BD são criadas fisicamente as views e as tabelas. Há 3 tipos de categoria. 1 - Data Elements - Componentes 2- Structure - Vários Componentes. 3- tables types - Estruturas de uma tabela interna. O Dicionário ainda tem suport a F4- Search Help, F1 Documentation do data Element. Consistência de dados usando foreign keys. Bufferização. O ABAP Dictionary é totalmente integrado no desenvolvimento e run-time. Cada mudança pega os efeitos automaticamente e leva ao programa e telas. Tabelas no dic. ABAP = Select * from client specified where mandt = 900. Os Atributos de tabela são os campos no DB, campos  colunas, registros Linhas. Cada campo da tabela tem um único nome. Tabelas com 1 ou mais key fields são chamadas primary key. ATENÇÃO : Campos data type curr e quan tem que ser referenciados por cuki e unit. Na tabela por exemplo : Currency  cuky Quantity  unit DOMAIN = Onde se defini o tipo, tamanho, valores fixos check table.
  12. 12. Objetos Básicos : Tabelas, Domínios e data elements. Domain - Value range do campo. Físico. Data Element - atributos semânticos. O significado do domínio no contexto, label de tela, search help. Built-in-type - especifica no data element o data type sem domínio. Direct type - Colocar o data type direto p/ o campo sem o data element. Um mesmo domain pode ser usado para vários data elements. Techinal Setting : - Devo definir quando defino a tabela interna transparente. - Buffering da tabela que sai do DB p/Aplicação. - Data Class - Área física onde reside o table space. - Size categoria = Quantos registros ela tem.(Tabela). - Loggins = Tabelas de autorizações. Data Class = Classes lógicas que definem área fixa : 1- Master Data : dados poucos modificados. Exemplo cadastro de fornecedores. 2- Transaction data : Dados muitos modificados. Exemplo Um componente de estoque que pode ser afetado depois de uma ordem de venda. 3- Organizational data = Dados definidos no customizing. Exemplo country key. 4- System data : Dados do R/3, programas p/ serem executados. Size Category : Um espaço padrão é criado e mais extents são criados. Para uso, ele deve ser definido o Size-category. Loggin : Para gravar modificações na profile que contém o parâmetros Rec/client : Rec/Client = ALL - Todos clients gravados. Rec/Client = 000[..] os seguintes/ Rec/Client = OFF - Nenhum clients gravados. Verificar Logs na transação = SC43. Índices = Secondary indices. Um índice pode ser criado para melhorar o acesso, tornando-o mais rápido, Nem todos os campos da tabela estão num índice e deve-se tomar cuidado para estabelecê-los e não se tornar redundante. Lembrando que o índice primário é formado pêlos campos chaves e criado na ativação da tabela se você escolher essa opção. O Data Base optimizer escolherá qual melhor forma de acesso. BUFFER : $TAB no command field = limpa os buffer do app server (Apliocation server). Servem para entrar acessos ao DB. O R/3 gerência os bancos individualmente no app. Server.
  13. 13. Há Três tipos de bufar : 1- Full Buffering - Toda a tabela é bufferizada. 2- Generic Buffering = Todos os dados que fazem parte da chave acessada são bufferizada. 3- Single-recording-bufferin - Apenas o registro acessado. Full Buffering - Para Tabelas pequenas e muito acessados e poucos gravadas. Genneric Buffering = Você deve Ter uma generic key e deve ser definida na escolha do buffering. Single Record - Usados para tabelas grandes com um único registro é freqüentemente acessado. Sincronização de Buffering : Parâmetros rdisp/bureftime em segundos de 60 a 3600 sendo recomendados entre 60 e 240 segundos. Existe uma tabela de sincronização. Tabelas pouco escritas devem ser buffering e as muitos escritas não devem ser Bufferizadas. FIXED VALUE. O domain descreve o value range. Podem ser fixed values, usados para checagem e matchcode(F4). Value Table - para checagem em tabelas, mas é necessário definir a foreing key (chave estrangeira). Deve ser usado o mesmo domínio para consistir dados. Sempre coloco na value table o campo que quero consistir. Exemplo : no campo departamento da tabela de clientes quero consistir com a tabela de departamentos. Foreing key Table é a tabela que será checada. Check Table é onde vou consistir os dados. Importante : Client depend - na chave primaria tem o campo mandt. É necessário Ter o mesmo domínio, Uma tabela não pode consistir ela mesma. Cardinalidade : Descreve quantos dados check table serão associados aos foreing keys tables. 1- No key fields - não identificam a tabela key fields 2- Key Tables - Identificam a tabela. 3-Key fiedls of a text table. Identifica e tem campo chave a língua. Repository information system do ABAP = Chamamos do information system. Ajustes : - Deletar a tabela existente e criar uma nova. - Inserir um campo. - Conversão de tabelas. - ALTER TABLE faz ajustes. Para ajustar a tabela o DB cria uma OKMTAB, cria uma nova tabela e move corresponding of nos dados. Mas deve-se verificar se houveram problemas de conversão nas transações = SE11 ou SE14.
  14. 14. ESTRUTURAS APPEND : Um tipo de include que permite você colocar campos a tabelas standard SAP. Quando uma tabela é ativada os campos da estrutura append são criados fisicamente no DB e podem ser usados no ABAP Program. Essas estruturas são preservadas no upgrade de versão. Só podem ser a tabelas transparentes(ZZ ou YY). VIEWS : São Aplicações especificas para juntar dados de varias tabelas. As tabelas são juntadas através do produto entre elas, gerando uma tabela com dados das duas tabelas. Joing condition : Limitação do produto cartesiano, descrevendo como os registros de duas tabelas serão relacionadas. Projection - Escolha de alguns campos da tabela. Selection condition : pode ser um campo (que esteja ou não na Views) que seja = a uma determinada condição. A Views é mais eficiente que select alinhado e pode ser usada para definir tipos de dados como os outros tipos. São criados fisicamente no DB durante a ativação. O Status de manutenção define se ela pode ser somente lida ou se pode ser gravada. Porem se tem mais de uma de uma tabela, só poderá ser lida . O buffering é igual a da tabela, é análogo. Você pode incluir tabelas inteiras na views, basta colocar na view field o caracter *, no campo table o nome da tabela e no campo field name o caracter *. Para incluir um include na view basta colocar um "-" no view field, no campo field table o nome da include e no campo field nomes dos campos a serem incluídos. Application Object - Dados de mais de uma tabela formam unidades lógicas. O Uso de maintenance views é para facilitar operações complexas de atualizações de dados que estão em diferentes tabelas. A Maintenance view dever linked como uma foreing key. Por isso você não defini as joing condition, Essa interface da maintenance view é feita do dicionário de dados e gerada com a transação SE54. JOIN CONDITION : Inner Join : Você só pega os registros que tem a entrada em todas as tabelas incluídas na views. Exemplo : Tabelas pedidos e itens dos pedidos, será listados somente os pedidos que tiverem itens no pedido. Outer Joing - Você pega todos os registros, inclusive os que não tem entradas nas tabelas. Exemplo : Tabelas pedidos e itens dos pedidos, será listados todos os pedidos. Database Views - implementam inner join e o maitenance views implementam a outer join. SEARCH HELP : F4
  15. 15. 1 - Valores Fixos 2- Chave Estrangeira (Foreing key) check table. 4- Data/Hora O input help é definido no ABAP Dictionary. Um numero de requerimentos deve ser colocado no screen fields. O input help determina a value que pode ser usado na seleção. O input help deve preparar uma dialog com o usuário. O Search Help é usado para descrever um input help. A Interface do search help controla os dados transferidos, define o contexto dando a serem usados. Mecanismo disponíveis para search help ser acessado de uma tela é chamado de search help attachmente. Você pode testar o comportamento do search help. SELECTION METHOD - Definição de um objeto do banco de dados do qual os dados poderão ser relacionados . Estes Podem ser tabelas. Maintencance views não podem ser usadas como selection methods. Existem 2 tipos de apresentações : 1- Dialog box for displaying the hit list = Apresenta uma lista para o usuário escolher. 2- Dialog box for restricting values = É apresentada uma tela de seleção antes da hit list. Você pode definir parametros no search help usando campos do selection method (Com exceção do client). O tipo do parâmetro deve ser associado a um data element. Os Searchs Helps podem ser associados a fields. Ele possui parâmetros IMPORT e EXPORT. Import = Parâmetros usados para copiar dados para o input help. Export = Parâmetros de retorno de dados do input help. Existem tres (3) mecanismos para attaching search help em campos: 1- Diretamente no campo da tabela, assim como definir uma foreing key. 2- Em uma check Table. 3- Associar a um data element. Deve se definir EXPORT. Associando um search help a um data element ou a uma check table ele poderá ser reutilizável. Como o screen Event POV pode-se programar o próprio input help. Techinical Info está no menu de contexto da hit list. Search paths : permitem acesso a dados que não são chaves. Vários podem ser implementados por campo. Collective Search Helps : Vários search helps paths. Elementary Search Help : Search Help Normal. F4 - POV = Process on value request - Field codcli module zaza. F4 em codcli chama o modulo zaza.
  16. 16. F1 - POH =Process on Help = No Dicionário, na Tabela e no campo. BC402 - PROGRAMMING TECHNIQUES : Definições : Source code = Contem comandos ABAP Screens = Layout + Flow Logic Interface + Contem app tollbar, standard, menus Text Elements Textos para tradução . Variants = Permite você usar valores predefinidos. Documentation = escrita do ponto de vista do usuário. O Programa ABAP é dirigido a eventos, ele consiste de duas partes : 1- Declarações : Definir dados globais, data type, object, select screen e interface(Includes); 2- Processing Blocks : Cada Bloco de processamento é implementado uma única vez e termina quando começa um novo bloco se este for um event block.: Através de keywords : Dialog modules e procedures, eles tem palavra de conclusão. O Programa ABAP é compilado e depois interpretado em tempo de execução. Para que o programa ABAP seja reusavel você deve organizar o programa em includes, iniciando pelo TOP Include. O Dispatcher e o processo pelo qual os clients individualmente no presentation server são associados a um work process por um tempo em particular. Work Process - Está no application server e são responsáveis pêlos processos de dialog steps Rodam independentes de plataforma. Ele Contem 3 componentes : 1- Screen Processor : Comunicação entre o SAP GUI e o work Process. Ele procura a screen flow logi e o conteúdo do campo. 2- ABAP Processor : Procura a lógica do programa e se comunica com o Dbinterface. 3- DataBase Interface : Comunica-se com 0 DB. Os Event Block são controlados pelo sistema ou pelo usuário. As Modularization Unit são controlados pelo programador. Para um programa pool de modulos ser executado, deve ser associados a um código de transação, que pode ser um programa executável. Num programa pool de modulo, você associa uma dialog transaction. O primeiro evento a ser disparado é o - LOAD-OF-PROGRAM, depois executa-se o PBOTELAPAI. Se necessário disparar o evento LEAVE TO LIST-PROCESSING, todos os eventos de lista ficam disponíveis. ORDEM DOS EVENTOS - MODULO POOL - TRANSAÇÕES 1- LOAD-OF-PROGRAM. 2- INITIALIZATION. 3- AT SELECTION-SCREEN OUTPUT. 4- AT SELECTION-SCREEN INPUT. (PAI) 5- START-OF-SELECTION.
  17. 17. 6- GET or GET LATE. 7- END-OF-SELECTION.  Depois de processado o sistema mostra a linha básica. 8- AT LINE-SELECTION.  Se foi clicado 2 vezes na lista. AT USER-COMMAND.  Se foi clicado em um icone PICK. - TOP-OF-PAGE - END-OF-PAGE - TOP-OF-PAGE DURING LINE-SELECTION - END-OF-PAGE DURING LINE-SELECTION. Sy-lisel  Retorna a linha. MODULARIZAÇÃO : Quando você chama uma unidade da modularização, o sistema carrega ele inteiro no container do problema. Modularizações: Function Group : (F) Módulos de Funções = Objetos locais e telas de programas. Include Program : (I) Contem comandos ABAP. Global Interface : (J) Contem interfaces Globais. Global Classes : (K) Contem Classes Globais. Tipo E (1) : Executável. Data Object = É uma área de memória reservada para um data type (char..,..,data element). Criando um data type do dicionário, cria-se um objeto global. No programa os data types são locais . Tem ABAP data types para serem usados como base para definir data type. Os atributos técnicos de um elementary field é chamado elementary type. A estrutura é chamada de componente. A tabela tem line-type, access type, key definition e key type. Tipos do Dicionário : CURR , deve referenciar um CUKY, assim como UNIT referencia QUANT, FLTP usado para cálculos precisos. NUMC - tipo p/cep dígitos que não podem ser calculados. Para cálculos de negocio, usar DEC ou QUANT. STRING e RAWSTRING não são tipos elementares. Data Element - Componentes(atributos) semânticos mais atributos técnicos através de domínios. Structure - Tabelas, estruturas, table type. STRING não pode usar into corresponding field of no select.
  18. 18. Table Type : Line type : descreve as linhas da tabela. Key Definition : Quais campos da tabela serão chaves. Key type : Duplicidades ou não de chaves(Unique). Access type : standard, sorted ou hashed. (index table). Standard Table : Acesso aos dados usando index ou chave, com chave não unique, o sistema busca na tabela toda cada vez que você acessa-a via chave. Sort-Table : O sistema automaticamente da sort na tabela e faz uma busca binaria. HASHED-TABLE : Você pode acessar via chave única, eficiente no acesso freqüente a tabelas grandes. Tipos Numéricos : (I) - Todos Numéricos . (F) - Ponto Flutuante. (P) - Packed default 15 char max. 31 char. Tipos alfanuméricos : (N) - string Numérica. (C) - Caracter, (D) - Date yyyymmdd = like sy-datum (T) - Time = like sy-uzeit (X) - Hexadecimal. Obs. F = Usado para cálculos precisos, P- Usado para cálculos comuns, calculando com precisão a ultima casa decimal, N Usado apenas para dígitos (ex.CEP) CN ou X - não é definido staticamente e sim dinamicamente no programa. Types. 1 bytes = 2 posições sendo que 1 posição e para o sinal. Se um data type tem o mesmo nome de um tipo global e local o programa pega o local. TYPES : Servem para definir um tipo que depois será referenciado por um data type ou referenciado num outro lugar depois da TYPE ou LIKE. Like só deve ser usado referenciando um type já definido no data object. Type : test1(5) type c. Test2(4) type p decimals 2. Structure Type : Comando : Types Begin oF <.....>
  19. 19. End of. Para definir componentes a uma linha da estrutura ou seja com todos seus componentes uso : Types <nome> type line of <estrutura>, Tabela Interna. Types <IT-TBA> type ou like <Standard,sorted ou Hashed> table of <modelo> with standard ou hashed ou sorted <uniq, non unique> key campos. No default eu não coloco os campos. Data : <var> type <tipo> value <>, Data : Begin of <ESTRUT.> .... End of. With header line - Técnica obsoleta. INITIALIZE nn - Usado para restringir o numero máximo de linhas para a memória, ele aloca o produto de nn * o tamanho da linha. Num 2 passo ele aloca 12. PARAMETERS : Define a tela de seleção e não se pode usar campos do tipo F, string e xtring. COMANDO : PARAMETERS : <Nome campo> type <tipo> , <Nome campo> like <tipo>. SELECT-OPTION : - Cria uma tabela interna de valores possíveis com 4 campos(colunas). 1- SIGN 2- OPTION 3- LOW 4- HIGH COMANDO : SELECT-OPTION : <nome> FOR <TIPO>. Ainda se cria este tipo de tabela usando (TYPE ou LIKE) range of. CONSTANTS : <Nome> type ou like <Tipo> value ....... As constants não podem ser mudadas em tempo de execução. Um literal numérico deve conter no máximo 31 dígitos. Um text element pode conter ate 255 caracteres. Para se usar duas vezes o apostrofe assim 'JHON'' s bike is red. Os números com ponto flutuante devem estar entre aspas. Text Simbols: A principal vantagem é que eles podem ser traduzidos. Write TEXT-<X99> . X99 pode conter ate 3 caracteres. Write '<default>' (<t12>). Se não houver um t12 na linguagem em que se está logado, o texto default será mostrado. Transportando dados da tela para o programa.
  20. 20. Deve Ter o mesmo nome o campo da tela e do programa. Se são campos do dicionário usar tables para WA(Work Area). Não esquecer de que o uso de tables é só nesse caso. LOGICAL DATABASE : São programas que podem ser atachados a seus programas executáveis, tomando nossos programas mais simples. NODES <NODES> - Cria e declara var em seu programa. GET <node> - devolve registro a registro com write ao programa. GET <node> late - é disparado depois de todos os gets do nó. Utilizado para quebra de relatório. SPACE - constante C que contem um espaço. SYST - Estrutura com system fields (campo do sistema SAP). Sy-uname - retorna o nome do usuário logado. Sy-tcode - retorna o código da transação. Sy-mandt - retorna o client Sy-datum - retorna a data. Sy-langu - retorna a linguagem. Sy-subrc - retorna o código do comando. FIELD SYMBOLS : FIELD SYMBOLS <<Nome>> type i. Data int type i value 15. Assign int to <<NOME>> o ponteiro <Nome> estará associado a int. Unissign <<NOME>> o ponteiro <Nome> estará desassociado a int. Quando eu associo o ponteiro a var basta eu preencher o ponteiro ou modifica-lo que estarei mudando a var. TYPE REF TO DATA - Crio um ponteiro. GET REFERENCE OF VAR INTO PONTEIRO. ASSIGN POINT=> * to field SYMBOL. CREATE DATA <PONTEIRO>. CRIA OBJETO SEM NOME. DESCRIBE FIELD LENGHT TYPE OUTPUT-LENGHT DECIMALS<> = Usado para encontrar os atributos de um data element no tempo de execução. Ex. DESCRIBLE TABLE <IT_TAB> LINES = Retorna o numero de linhas numa tabela interna. STATEMENTS : CLEAR - LIMPA Header Linha da Tabela. REFRESH - LIMPA A TABELA. MOVE <> TO <>. MOVE-CORRESPONDIGN <> TO <>. WRITE <> TO FIELD. - Faz move por nome de campos. Dois campos compativeis tem o mesmo tipo e tamanho.
  21. 21. Duas Estruturas compatíveis tem a mesma estrutura e se componentes são compatíveis. Duas tabelas internas são compatíveis quando suas linhas são compatíveis e suas seqüências de chaves, uniqueness atributos e tipos são compatíveis. Conversão : P  C branco = 0. SEARCH - Busca um caracter. REPLACE - Replace o 1º . do caracter. TRANSLATE - Transforma um upper case ou lower case. SHIFT - Retira um caracter na sua 1º ocorrência. CONDENSE - Retira os espaços em brancos. CONCATENE - Junta 2 string. OVERLAY - Junta 2 string iguais preenchidas SPLIT - Separa duas string. Operações Feitas com os comandos. STRLEN(CAMPO) = Tamanho do campo. SEARCH<CAMPO> FOR <OQUE>. REPLACE <OQUE> WITH <COM> INTO <ONDE>. TRANSLATE <ONDE> USING <OQUE> <ONDE> to [UPPER|LOWER]. SHIIFT <ONDE> [<VAR>] [RIGHT|LEFT] [circular]. SPLIT <Onde> ate <ATE> INTO <campos>. CONCATENE <A> <B> into <C>. OVERLAY <CAMPO> with <CAMPO2> [ONLY <VAR>]. MOVE <CAMPO1>+<posição> TO <CAMPO2>+<posicao>. CALCULOS : + - * / **= POTENCIA DIV - Divisão inteira. MOD - Resto da Divisão inteira. Para calculos decimais usar tipo DEC ou P. 4 Erros Podem Ocorrer para cálculos. 1- Um campo pode não ser convertido pois não é interpretado como numero. 2- Um número ultrapassa o val de conversão. 3- Divisão por Zero. 4- Argumento invalido ex. LOG (-3). Dados : O sistema sempre associa a campos numéricos calculando o numero de dias desde 01.01.0001. Expressões Lógicas : EQ ou =  Igual NE ou <>  Diferente GT ou >  maior que GE ou >=  Maior igual
  22. 22. LT ou <  Menor que LE ou <=  Menor igual BETWEEN  Entre IS INITIAL  Valores Inicial AND  e OR  ou NOT  Negação. ENTRE STRING : CO  Contem Somente CN  Não contem somente CA  Contem Algum NA  Não contem nenhum CS  Contem string NS  Não contem a string CP  Contem modelo NP  Não contem o modelo Testes CASE < >. WHEN < > . WHEN OTHERS. ENDCASE. IF < >. ELSE < >. ELSEIF < >. ENDIF. CHECK [ ]. Se o check é falso, ele faz o 1º comando seguinte. LOOPS : DO [ <n> times]. O numero de linhas é obtido pelo sy-index. ENDDO. WHILE <>. ENDWHILE. LOOP AT < >. ENDLOOP. SELECT ...
  23. 23. ENDSELECT. LEAVING PROCESSING BLOCKS. CHECK : Vai p/ o próximo passo do loop. Termina o bloco de processamento e vai para o próximo. EXIT : Sai loop, se for LOAD-OF-PROGRAM, START-OF-SELECTION, GET<nó> LATE, END OF SELECTION, mostra a lista e continua nos eventos tipo2(relatório). Se for do tipo2 acaba o bloco e vai para o próximo. LEAVE PROGRAM - Sai do Programa. LEAVE TO TRANSACTION. Message : Mostra a mensagem e todo o programa termina e as tabelas internas são deletadas. CATCH : CATCH SYSTEM EXCEPTION <EXCEÇÃO> >= nulos. ENDCATCH. TABELAS INTERNAS : Você pode copiar um conteúdo para a WA ou usar um assign como ponteiro, no caso de tabela muito grande. STANDARD TABLES : APPEND <WA> TO <it-tabela>. APPEND INITIAL LINE TO <it-tabela>. APPEND LINES OF <it-tabele> to <it-table2>. INSERT <WA> INTO <IT-TABELA> INDEX <N>. INSERT LINES OF <ITTAB>. READ TABLE <ITABELA> INDEX <N> INTO <wa>. Na var sy-tabix contem o índice lido. O numero de linhas lidas. [comparing] - comparar conteúdo das tabelas. [Transporting] - pode restringir o conteúdo dos dados. SORT <ita.> [Ascending|Descending] [by <campo> [stable] Para as sort keys continuarem constantes. MODIFY <itab> from <WA> index <n>. MODIFY <itab> from <WA> . Não tem loop. DELETE <ittab> index <N>. DELETE <ittab> from <N1> to <N2> where . LOOP AT <itab> INTO <WA>.
  24. 24. ENDLOOP. OBSERVAÇÃO : 1- O modify muda os dados correntes. 2- CLEAR limpa uma tabela toda s/header line. 3- No loop sy-tabix tem o index corrente. Ao final de loop, ele terá o valor que tinha antes do loop ser iniciado. HASHED TABLE : NÃO TEM APPEND. INSERT <WA> INTO TABLE <ITAB>. SORT é igual a STANDARD TABLE SORT <itab> [Ascending|Descending] [by <campo> [stable] Para as sort keys continuarem constantes. READ TABLE <itab> FROM <wa1> INTO <wa2>. READ TABLE <itab> WITH KEY <KD1> = VAL1 AND <KD2> = VAL2 INTO <WA>. MODIFY <itab> FROM <wa>.  MODIFICA UM LINHA. MODIFY <itab> FROM <wa> TRANSPORTING <CAMPOS> WHERE <>.  MODIFICA VARIAS LINHA COM CAMPOS ESPECIFICOS. DELETE TABLE <itab> FROM <wa>.  DELETE UMA LINHA. DELETE TABLE <itab> WITH TABLE KEY <k1> = VAL1.  DELETE VARIAS LINHAS. DELETE TABLE <itab> WHERE <COND> . DELETE VARIAS LINHAS. FREE <itab>.  RETIRA DA MEMORIA A TABELA. DELETE ADJACENT DUPLICATES FROM <itab>.  Deleta duplicidades com mesmo conteúdo de chaves. A tabela sort são mais eficientes para poucas entradas. Mas muitas mudanças. As HASHED TABLES São boas para bufferizar informações que você precisa repetidamente e pode ser acessadas através de unique key(chave única). HEADER LINE É o mesmo que declarar a strutura da tabela com uma WA com o mesmo nome. COLLECT [<WA> INTO] <ITAB>. READ TABLE <itab> ASSIGN <<fsline>>. LOOP AT <itab> ASSIGN <<FSLINE>>.  Não pode usar sum. ENDLOOP. Ponteiros para a linha.
  25. 25. SUBROTINAS : FORM <NOME> USING < > Changing < >. ENDFORM. Os parâmetros tem uma seqüência e uma vez definidos não podem ser omitidos. Você pode declarar dados locais e se eles tiverem os mesmos nome dos dados globais dentro da subrotina eles são considerados locais. Formal parameter - locais. Actual parameter - Globais. Passagem por valor  Faz uma copia do actual parameter. Passagem por referencia  cria-se um porteiro para o campo parameter. Se passar um valor do changing por referencia, ele mudará na hora, se por valor, só no endform. USING não altera valores. Para dados grandes, o using é por referencia. Deve se especificar o tipo no USING E CHANGING. Tipos de estrutura e ponteiros devem ser especificados. para tabela interna deve ser genérico usando user-defined. Os Parâmetros são passados na seqüência da definição. É interessante usar o PATTERN. HEADER LINE : Se eu colocar como tipo uma tabela com header line, ele interpreta apenas o header line, para tanto eu devo usar o [ ], como uma tabela toda. Na subrotina não há header line. Parâmetros globais não são vistos na SUBROTINA. FUNCTION GROUPS AND FUNCTION MODULES : Programas do tipo F  Function Groups. Não executáveis diretos. FUNCTION MODULES : Parâmetros IMPORT e CHANGING opcionais para os quais você associa default values. EXCEPTION : que retorna na var sy-subrc. Remote - enabled. Execução assíncrona ou paralela(síncrona). Updates. Atributos : Normal; Remote BC415; UPDATE BC414; Parâmetros : IMPORT - Parâmetros recebidos. CHANGING - Parâmetros alterados e retornados.
  26. 26. EXPORT - Parâmetros enviados. Default são passados por referencia. Import e Changing podem ser declarados como opcionais. Exporting são sempre opcionais. SRC Code : Os blocos de comentários são atualizados. Pode se declarar seus tipos locais, chamar subrotinas e outros módulos de função. Exceptions : Um modulo de função termina quando uma exceção é chamada. RAISE <EXCEPTION>. Se a exception não está listada ocorre uma subrotina. MESSAGE <KIND> <NUM(ID)> RAISING <EXCEPTION>. Se a exception não está listada ele manda uma mensagem e não. DOCUMENTATION Funcionalidades, Exemplos de chamadas, dicas e outros. WORK LIST - INATIVO ATIVO(Revisado) ATIVO. FUNCTION TESTE. A Função pode ser testado, debugado e Run Time Analisys. USAR O PATTERN. Os formal parameters estão sempre a esquerda. FUNCTION GROUPS : Pode Ter telas, dados globais, módulos de função. Todos os módulos de função tem acesso as variáveis globais. CALLING PROGRAMS AND PASSING DATAS : Duas Técnicas : 1- Chamando o programa e encerrando. 2- Chamando o programa e depôs deste ser rodado, volta ao programa que chamou. External Session - Varias janelas = /O. Internal Session - Vários Programas. Cada programa tem uma sessão interna. Elas estão dentro de uma external session. Cada External Session tem no máximo 9 internal session. Cada Sessão do R/3 pode Ter no máximo 6 external session.
  27. 27. O Grupo de função é carregada na mesma internal session que o chamou e fica ativo até o fim deste programa. Se um outro programa chamou um function module desse grupo de função já carregado, ele é carregado novamente na internal session que o chamou. PROGRAMAS EXECUTAVEIS : Para se chamar um programa executavel, usa-se o SUBMIT <p> [VIA SELECTION SCREEN] [AND RETURN]. Volta ao programa que chamou. Sem o AND RETURN ele volta para o sistema operacional. Chamando uma Transações : LEAVE TO TRANSACTION <'TCODE'>. Ele sai do programa e inicia o programa 'TCODE'. Equivale a o /N CALL TRANSACTION 'TCODE', ele executa o programa e no evento LEAVE PROGRAM do programa chamado ele volta para o próximo comando depois do call transaction. [AND SKIP FIRST SCREEN] ele não usa o conteúdo da primeira tela da transação, mas executa o PBO e o PAI. Passando dados entre Programas : 1- Programa Interface: Através de módulos de funções passando valores p/selection screen ou input fields. Exemplos : SUBMIT <PROG> with pa_city = ... pa-ca = .... AND RETURN. 2- ABAP MEMORY . Existe um para cada external session. As internal session da ABAP Memory podem conversar dentro de uma external session. Quando o usuário da um /i ou fecha a external session a abap memory correspondente é automaticamente inicializada. EXEMPLO : EXPORT <para onde> from <campos do programa> to MEMORY ID 'MY_ID'. - IMPORT <deonde> TO <campos do programa> FROM Memory ID 'my_id'. Os campos devem Ter o mesmo tipo. SAP MEMORY : É uma memória p/todas external session de um login. Usar SET PARAMETER ID '<campo> field <campo>. GET PARAMETER ID '<campo>' . Pode-se definir usar o Object Navigator. Para saber o nome do campo usar F1, Techical Inffo. USANDO INTERNAL TABLE: CALL TRANSACTION 'TCODE' USING <itab>. <ittab> deve Ter a struct da bdcdata, com mensagem deve Ter a struct bdcmsgcoll. Se a transação for OK o código dela estará nu sy-subrc. LISTAS E SAP QUERY - BC405
  28. 28. 1- QUICK VIEWS : TRANSAÇÃO = QSVI. Basis mode e layout mode. A lista tem interface EIS, ABC analisys ALV Grid Control e pode ser processada para programas externos como WORD. QUICK Views são vistas apenas pelo criador, não podem ser transportadas. Ela pode ser de um database table, view, logical database e table join ou functional área. Join pode ser INNER ou LEFT OUTER. Quando se usa uma tabela varias vezes pode-se usar alias. No modo Básico há 4 áreas. Data Source - dados da quick views. Information - ajuda. Setup - Titulo e controle. Online Documentation - Documentos online. Você usa duas tabelas, "list Fields", Avaliable fields. 2- QUERYS : Sem criadas sem necessidades de programação. Ela gera um programa que corresponde a uma tela de seleção da lista . O nome do programa é AQMM BBBBBBBBBB9999999999. MM = Área BBBBBBBBBB = Nome do user group 99999999999999 = Nome da query. Para definir uma query é necessário definir um user group e uma functional área a qual definira quais tabelas e campos a query poderá se referir. Uma functional área pode Ter varias user groups associados, assim como o user groups pode estar associados a varias áreas funcionais. A query sempre é criada para uma área funcional especifica, nela deve estar associada o grupo de usuário que irá criar a query. Um Usuário pode acessar todas as querys do seu grupo de usuários e pode copiar uma query de um grupo de usuários distinto se a área funcional da query a ser copiada também está associada a seu grupo. Tipos de Querys: 1- Basic Lits - Detalhe, classificação. 2- Statistic - Linhas de Totais, campos. 3- Ranked List - 10 + Totais (Ranking). A partir da release 4.6, query painter e imprimir parte da lista. As querys podem ser geradas em Excel, EIS, ABC analisys , table control, alv grid, Sap Grafics, etc.
  29. 29. As querys podem estar na standard área (client-specif, não transporta, não é vista por outro Client e não tem link com o Wb Organizer) ou na global área(todos os clientes deve Ter uma classe de desenvolvimento, tem link comWBO. Ambas devem estar associados a um grupo funcional, sendo que só estarão disponíveis as relacionadas. Campos locais : São definidos no field slection : Title  Function  Field Selection  Selection Field . Você pode criar short description para se referenciar a um campo. Os campos locais devem Ter uma regra de validação. Querys Statistics : 1- Ordenar as colunas por ascending ou descending 2- Os campos numéricos são acumulativos. 3- Pode se definir até 9 estatistics individualmente. 4- Deve ser referenciar unidades de moeda e medida. Ranked Querys : São uma forma especial das estatísticas, porem tem apenas 1 campo numérico como parâmetros de ordenação, que é o critério de rankeamento. O sistema só mostra um certo número de registros. Basis List Campos fontes de dados  Estrutura da lista Informação sobre o elemento ativo  Estrutura da lista, Ajuda. Sempre que se edita um único elemento usar a função APPLY. Pode-se usar o dialog and drop e pode salvar a lista. Query Quick Views Particiona Lista Única. LISTAS : Com um comando WRITE o programa já gera um list buffer. No fim dos eventos a lista é processada. Pode Ter no máximo 60.000 linhas 1023 cararcters por linha. Tem um cabeçalho standard com o nome do programa a esquerda e o numero da pagina a direita e na Segunda linha uma quebra. Elas são mantidas no scrool . Usando Report <Nome Programa> line-size 20 (Largura) line-count 12 (Altura), definimos o numero de linhas globais para todas as listas. Dentro de um nível par mudar o número de linhas, usamos o new-page line-count. Se quiser usar o default do programa, colocar 0. O header pode ser definido na execução da lista, na edição e usando no STANDARD PAGE HEADING, no REPORT e no evento TOP-OF-PAGE colocar o cabeçalho. Eles ficam na tela durante o scrool.
  30. 30. Header que podem ser traduzidos. Editor  Goto  Text Elements Title/Headings LISTSystemLISTLIST No programa podem ser traduzidas depois./ NEW-PAGE WITH TITLE/ WITH HEADING/ TOP-OF-PAGE c/Text Element. FORMAT : COLOR <col...> [on/off] -cor INTENSIFIED [on/off] - intensidade INVERSE [on/off] - inverte com o back HOTSPOT[on/off] - mão do mouse INPUT [on/off] - campo de input RESET - apaga todas. Para cada evento os formats são apagados. WRITE [at] [/pos(lenght)]. NO-GAP - Não imprime espaços. NO ZERO - Substitui zeros por espaços DD/MM/YY - data dia/mês/ano UNDER - Começa na coluna do campo. LEFT-JUSTIFIED - CENTERED - RIGHT-JUSTIFIED  Alinhamentos. INCLUDE <icon>. WRITE <icon-eu> as ICON.  Imprime um icone. INCLUDE <SYMBOL>. WRITE <F> as SYMBOL. ULINE = SY-ULINE, gera uma linha horizontal. Sy-VLINE  Linha Vertical. Line-top-right-corner as line.  Linha de ponta. SCROOL LEFT [PAGE} [TO COLUMN] [TO LAST PAGE]. New-Line-NO-SCROLLING NEW LINE  '/' NO WRITE. RESERVE <N> LINES. PARA O RODAPE. SKIP - Pula linhas. SKIP TO LINE <n> pula para linha N. BACK POSITION: Text Symbol. 'TEXT'(ABC)  Mostra o texto. TEXT-ABC  Mostra o texto. SY-LINCT  Numero de linhas = LINE-COUNT SY_LINSZ  Numero de colunas = LINE-SIZE. SY-SCROW Numero de linhas da tela. SY-SCOLS  Numero das colunas na tela. SY-PAGNO  Numero da pagina. SY-LINNO Numero de linhas.
  31. 31. SY-COLNO  Numero de colunas. Funções Standard : BACK / CANCEL/ EXIT. PRINT SEARCH SAVE SCROLL SELECTION SCREEN : Para desenhar você tem que declarar nodes, parameters ou select-option, que geram a select screen default. Alem dela pode ser chamada : SELECTION-SCREEN BEGIN OF SCREEN <n> SELECTION-SCREEN END OF SCREEN <n> PARAMETERS : TYPE/LIKE  TIPO DELE. [DEFAULT]  VALOR DEFAULT MEMORY ID  VALOR DEFAULT DO SAP MEMORY. OBRIGATORY  OBRIGATORIO. AS CHECKBOX " " ou "X" USAR if. AS RADIOGROUP <group>  A LETRA USAR case O parameters tem no máximo 8 caracteres. SELECTION-OPTIONS <SELTAB> FOR <f>. Gera uma tabela interna com os campos. SIGN OPTION LOW HIGH Incluir EQ|NE|LE MENOR MAIOR. excluir GE|LT|GT BT|CP|NP O select deve ser com a clausula WHER IN Os valores defaults são I e EQ ou I e BT. Posso escolher outros através do select Options button, posso apagar tudo com o deselect all. DEFAUL <V> option xx SIGN x. DEFAULT <v1> to V2. MEMORY ID . No caso do logical database eu adiciono parameters ou select-option e eles aparecem depois. Desenhando Select Screen. SELECTION SCREEN BEGIN OF <NOME> WITH FRAME TITLE <+>. SELECTION SCREEN END OF <NOME>.
  32. 32. No maximo 5 frades. Select screen begin of line. Select screen coment pose text Parameters p..... Selection-screen end of line.  Para dialog colocar CALL SEL SCR 000 STARTING AT INITIALIZATION : É Processado 1 vez e antes da linha de seleçao. Pode-se inicializar as variáveis com move x to x. As telas de seleção são geradas durante o evento AT SELECTION-SCREEN OUTPUT, que é o PBO da select screen, Já o evento AT-SELECTION-SCREEN corresponde ao PAI da tela de seleção, podendo se fazer um check dos campos. Pode ser usado com as extensões: ON <CAMPO>  Num determinado campo. ON <BLOCK>  Num Bloco. Somente os campos chamados será feito a reentrada. Posso trabalhar com varias Selection Screen, Selection Screen BEGIN of <A>. END OF <A>. CALL SCREEN <A>. LEAVE TO SCREEN 100. EXECUTE - Sy-subrc = 0. CANCEL = sy-subrc = 4. No programa você pode criar variants para todas as telas ou quando ele estiver rodando, cria- se para a tela corrente. Nome 'SAP&XXX" pela SAP e "CUS&XXX"por clientes. VARIANTS - TRANSAÇÃO = TVARV. LOGICAL DATABASE : É um programa que oferece dados para o meu programa. Vantagens : Reusabilidade, provem de selection screen, autority check, lê o BD, manutenção de dados. Há uma hierarquia de estruturas em ordem. Existem + de 200 LDB. NODES : É um comando que soma os cmds. TABLES + PARAMETERS + SELECT OPTION Ele tem um comando interno "PUT" que força um GET que são processados em ordem hierárquica. Os nodes podem conter até 14 caracteres e podem ser : 1- Tipos Tabelas : Tem que Ter o mesmo nome da tabela transparente. 2- Type Group (type C) mesmo nome do type group. 3- Dynamic - o run time cria a struc e decide o nome. 4- Nodes START OF SELECTION
  33. 33. GET <NO> Le um No. GET <NO> LATE - é disparado antes dos dados do proximo NO. END OF SELECTION. CHECK  Se for falso sai do BLOCO. STOP  Sai dos blocos e vai direto para o end of selection. EXIT  Sai do programa. REJECT  Diferente do check, ele sai daquele registro mas continua em outros do mesmo nível. SELECTION INCLUDE DB<LDBNAME> SEL: SELECT OPTIONS :......[FOR NODE] .... Se eu declaro apenas nós menores, os nós superiores também aparecem. Não esquecer que eles sempre são lidos de acordo com sua estrutura. Pode usar dynamic selections. No programa do logical DB os Put estão em subrotinas e a seqüência de chamadas é PUT GET  PUT LDB PROg LDB No caso de eu adicionar um selection option devo fazer um check <nome> = CHECK <NODES> <CAMPO> in <SELECAO>. Acesso aos Dados : Pode-se usar dois tipos de acesso : OPEN SQL- Que tem vantagens como a independência do programa com DB , check de syntax e SAP Buffer. Native SQL  EXEC SQL. Comandos  ENDEXEC. ....... Não usar INSERTDELETE e update. O Uso de Views. É bom pela manutenção de dados, elas podem ser bufferizadas, e um único SELECT É usado. A desvantagem é que ela é pouco flexivel. INNER JOIN SELECT (campos da tab) into TABLE itab from Tba1 INNER JOIN Tba2 on.
  34. 34. LEF OUTER JOIN : FOR ALL ENTRIES IN TAB. Carrego uma tabela interna e vejo no select para todas as entradas que estão lá. SAP QUERY - ADMINISTRATION : User Group - Tem que Ter nome e descrição e pode Ter vários usuários e varias áreas funcionais associadas. Autorizações da Query :Tem 2 mecanismos : 1- Associar = User group  Usuários que estão associados podem ver a query, se não estiver não podem ver a query. 2- Object S_QUERY. ACTVT = 2  Pode alterar a query + user group ACTVT = 23  Pode fazer manutenção + user group 02 + 23  Não precisa user group é SAP ALL. FUNCTIONAL AREA : Tipos de Functional Áreas : (Primary dataset). LDB, JOIN, TABLE / ou VIEWS, SEQUENTIAL DATASET, PROGRAM. Deve se definir o tipo  functional group -- >campos  adicionar campos  parâmetros. Lembrar de gerar. (ATIVAR). Criar um functional group com ID e descrição e marcar com "mais" na tabela (Primary data set) . Campos adicionais alias e código são feitos através do botão extras. Colocar um parameters e depois checar Control Level. Definindo Tabela Interna. TYPE : Begin of <ESTRUTURA>, END OF <ESTRUTURA>. DATA : itab standard table of <estrutura>. APPEND - Insere entradas no fim de standard e sorted table. COLLECT : Grava no fim ou soma numéricos aos que tem chave correspondentes, SORT <ITAB> [BY <CAMPOS>] ASCENDING ou DESCENDING. LOOP AT <ITAB>. ENDLOOP. Retorna sy-subrc = 0 se pêlos menos 1 registro foi lido. AT FIRST .... Roda uma vez no primeiro registro. ENDAT.
  35. 35. AT LAST .... Roda uma vez no ultimo registro. ENDAT. AT NEW <CAMPO> .... Roda quando o valor do <CAMPO> muda neste loop. (quebra) ENDAT. AT END OF <CAMPO>.... Roda quando o valor do campo muda no próximo registro. (quebra) ENDAT. SAVING : Onde posso salvar. 1- No R/3 -app server - sap office. 2- No menu computer - local file 3- Na area R/3 p/listas - área menu. Pode ser mandada pelo email R/3. Como local ela pode Ter 4 formatos: 1- Unconverted- ASC III 2- Spreadsheet - EXCEL 3- RTF - WORD 4- HTML O programa RSSOPCDR especifica o default. O programa RSRSSCIS , mostra as listas salvas no menu área. PRINTING : 4 Modos : 1- Selection Screen 2- De dentro do programa 3- Com a lista gerada 4- Em background Para se imprimir uma lista o evento : NEW-PAGE PRINT ON. Modulo de Função : SET_PRINT_PARAMETERS. NO DIALOG, a lista vai direto para o spool. NEW-PAGE PRINT OFF. Acaba. NEW-PAGE PRINT ON PARAMETERS <par>. Para pegar o <par.> deve se chamar a função GET_PRINT_PARAMETERS. BACKGROUND : Definir um job e associar ao programa. ALV_GRID_CONTROL Custom CONTROLS através de objetos, você usa um container e joga a lista na tela. Existem varias funções standard o ALV grid é uma ferramenta para gerar lista.
  36. 36. Para implementar deve-se criar uma tela, botão cancel, back, exit, campo OK_code e na tela desenhar um container "C". No programa declarar 2 objetos. Cont - type ref to cl_gui_custom_container. Alv - type ref to ALV_grid_. Depois instanciar se ainda não foi instanciado, pois eles só podem ser instanciados 1 vez no programa. CREATE OBJECT cont EXPORTING container nome = "C".  O mesmo da tela CREATE OBJECT alv export I_parent = cont. I_parente  o nome do objeto container. Deve-se fazer um select into table int (do dicionário) e depois um Call Screen. Depois no PBO da tela cria-se um modulo para chamar o método. SET TABLE_FOR_FIRST_DISPLAY passando a estrutura do dicionário e a tabela interna. Para declarar campos separados devo criar uma tabela interna do tipo lv_t_fcat. Cada linha corresponde a TELAS : BC410 Eventos na Selection Screen : AT SELECTION-SCREEN OUTPUT.  PBO AT SELECTION-SCREEN ON HELP REQUEST FOR <CAMPO> .  F1 AT SELECTION-SCREEN ON VALUE REQUEST FOR <CAMPO>  F4 AT SELECTION-SCREEN INPUT.  PAI Eventos LOAD OF PROGRAM - 1,M,F,S  Disparado depois que carrega o programa. INITIALIZATION  1, - Antes da selection Screen. START OF SELECTION  1,M  Depois da selection screen END OF SELECTION  1,M  Depois da todos os dados serem input e antes as lista. TOP-OF-PAGE  1  Sempre que inicia uma lista. BACK e CANCEL  Volta a lista anterior. EXIT  sai das listas e vai p/a selection screen TOP-OF-PAGE DURING LINE SELECTION  Para cabeçalho de listas de detalhes. Sy-lsind  numero da lista de detalhes.
  37. 37. Listas de detalhes são gerados pelo AT LINE-SELECTION ou AT USER-COMMAND. HIDE <áreas> para guardar áreas a serem usadas, para saber a chave dos detalhes. CLEAR depois. Xxxxxxx tem a posição do cursor. Status : GUI STATUS é um menu bar ou standard toolbar ou aplication toolbar ou function keys. SET TITLE BAR <'abc'>. SET PFSTATUS <'abc'>. O titulo pode Ter ate 20 caracteres. Title bar são também GUI STATUS e a variável de sistema sy-title tem o titulo corrente. Do ponto de vista técnico, um status é uma referencia para um menu bar, uma chave associada e um application toolbar. Uma função dentro de uma status pode estar ativa ou inativa. Um application toolbar pode conter 35 pushbutton. Um menu pode conter 15 entradas/ pode Ter até 6 menus. Pode ser de 3 formas : Online status, dialog box e context menu. Adjust template  extras pega outro status. Para pegar o código dessas funções, usar o evento AT-USER-COMMAND. Listas Interativas : Todos os functions code são capturados pelo AT USER-COMMAND, menos o PICK, que corresponde ao AT LINE_SELECTION READ sy-index FIELD VALUE marca. MODIFY CURRENTLINE FIELD VALUE marca from space. GET CURSOR FIELD <f> [value<f>]. O retorno vai ser uma estrutura, então eu tenho que movimentar o tamanho do nome da estrutura + 1. <f> = <f> + nome da wa. SORT it by campos (<f>) descending. Antes, testar o sy-subrc ou Check. Message <tipo> <xxxx> (<message-id>). Técnicas de Telas : General Atributos no user setting são configurados pêlos usuários.
  38. 38. Screen Objetos : Text fields, input/output, status icon, group box, radio button, check box e bushbutton, tem atributos do dicionário de dados, do programa e de display. Subscreen, tabstrip control e table control tem os atributos gerais e atributos específicos. Para mudar atributos dinâmicos da tela uso : LOOP AT SCREEN ... ENDLOOP. Ativar = 1. Inativo = 0. Screen - _____ = [0,1]. No fim modify screen. Mudanças dinâmicas são temporárias. Pode-se criar 4 grupos para modificações em comum. As modificações devem ser feitas no PBO ou seja, num modulo do PBO. As telas são compostas de atributos, element list e flow logic. Atributos dinâmicos das telas : 1- Size setting at size. 2- Sequence 3- Next screen 4- Setting  cursor position. Quando se cria uma tela deve-se escolher o tipo, next screen e para chama-la basta clicar screen. Element List : Tem uma lista de todos elementos da tela com 6 visões. LAYOUT Tem gráfico e alphanumeric, podendo usar campos. Flow Logic: Numero da tela sy-dynnr. Os nomes na tela e no programa devem ser iguais. SET SCREEN subscreve temporariamente o next screen. LEAVE TO SCREEN da tela e vai para a próxima Tela. Chamando uma tela , quando ela retorna ela volta ao comando sequente a sua chamada. Na chamada da subtela temos que colocar : STARTING AT coluna e linha. ..... ENDING AT. SET CURSOR FIELD <nome do campo>. Para o gui status a única função reservado é ENTER, SAVE,BACK,EXIT,CANCEL. TEXT FIELD :
  39. 39. Um text field contem labels para outros elementos. Podem Ter textos, literais, icones. E não pode ser iniciados com '-' ou "?" . Quando tem mais de uma palavra usar "-". Atributos mutáveis em tempo de execução : BRIGHT e INVISIBLE. Ele pode ficar invisível atrevas de SCREEN-INVISIBLE = 1 ou SCREEN-ATIVE = 0. LOOP AT SCREEN <nome>. If screen-name = "textfield1". Screen-ative = 0. Modify screen. ENDLOOP. STATUS ICON: Contem um ícone que será mostrado na tela.Tem atributos modificáveis : output/input, intensified, visible. Definir no ABAP um campo do TIPO icons-text, com o mesmo nome da tela e chamar a função CREATE-ICON. GROUP BOX : Elementos que estão juntos. Como radio Button ou campos. É uma caixa. Se eu tiro os campos que estão nele. Ele Some. INPUT/OUTPUT FIELDS : Input field é uma elemento retangular, usado para entrada de dados. Se este foi associado a data-elements pode Ter F4, check, etc. Output Field é um elemento retangular onde o sistema mostra dados. Utilizar a tabela Screen para mudar atributos. Obs. LOOP AT SCREEN <>. Os campos declarados na tela devem ser associados usando DATA ou tables. Pode-se usar o SET ou GET parameters id. Usando o get no PBO e o SET no PAI para copiar o conteudo da tela na SAP MEMORY. Os ParametersID estão definidos na TPARA. Os checks são feitos na seguinte ordem : ? campo requerido; format Check Fixed value Foreing key check. Usando o comando FIELD no MODULE, se há algo errado o sistema devolve a tela novamente, sem passar pelo PBO com um único campo p/input, o que deu erro. É ele quem faz o campo estar aberto para INPUT, se o module não é chamado de dentro dele, ele volta mas não para Input. CHAIN FIELD : <f1>, <f2>. ENDCHAIN. Um campo pode estar em mais de um CHAIN ...ENDCHAIN. Mensagem. X/A - PROG.100TELAMSG X/A- ANTES PROG.100 E  TELA 100 MSG E  PBO TELA 100.
  40. 40. W TELA 100 MSG W PBO TELA 100, mas se der ENTER, Confirma a entr. I TELA 100MSG i TELA 200. S TELA 100  TELA 200 MSG I - mensagem no rodapé da próxima tela. ON INPUT - Se não tiver brancos ou zero entra no modulo, = Parecido com CHAIN. ON REQUEST  trocou o conteúdo para qualquer coisa. AT EXIT-COMMAND  Só pode ser usado com 1 module, retorna no OK-CODE, se clicou em cancel ou exit. BACK  Volta para o anterior e se for do mesmo nível vai a initial screen. EXIT  Vai para que chamou o programa. Cancel  Sy-data para recuperar dados. EXITCANCEL São do tipo EXIT. INPUT HELP : É feito através de uma lista drop-drown. Cria se uma lista drop-drown e associa a um campo com search help ou uma tabela de valores fixos. CHECKBOX : Permitem selecionar mais de uma opção. RADION BUTTON : Quando você seleciona 1 os outros são deselecionados. Assim como os input/output field os radio groups e os check box podem Ter textos ou ícones associados. Para criar um checkbox, deve ser criado no screen painter e uma var no programa do tipo c com o mesmo nome. Para o radio button vale o mesmo do parágrafo anterior, porem ainda deve se associar a uma mesmo grupo. Edit GroupRadio ButtonDefine. PUSHBUTTONS : O pushbutton tem uma função particular quando ele é escolhido, o sistema chama o programa e passa o function code. Um campo no programa com o mesmo nome deve ser criado. Na criação ele deve Ter um function code, pois seu retorno será para o OK-CODE. Se chamar um botão que tem o tipo de função " ", o PAI é processado. Se chamar um tipo "E" o sistema vai para AT USER COMMAND. SUBSCREEN : Uma area de subscreen é uma área reservada para outra screen em tempo de execução. A subscreen pode ser usada em screen enhancements, tabstrip, modification e web transaction. Essa subscreen pode ser usado por diferente programa. Na chamada da subscreen não é permitido LOOP...ENDLOOP e CHAIN..ENDCHAIN. ela não tem OK_CODE nem modules, AT USER COMMAND, NEM SET TLTLE , SET PFSTATUS, SET SCREEN OU LEAVE SCREEN. Para criar basta ir ao LAYOUT, criar a área e colocar um nome.
  41. 41. Chamando a subscreen no PBO e no PAI--CALL SUBSCREEN <nome>. Na respectiva chamadas são executadas o PBO e o PAI da subscreen. Se a subscreen não é do mesmo pool de módulos do programa principal, os dados globais não estão disponíveis, importando e exportando dados com o MOVE. A subscreen pode estar também num grupo de função e usar modulo de função para ser interface de transporte de dados. Isso é usado para clientes, Para chamar um modulo no PBO, devo chama-lo antes da chamada da subscreen. Já no PAI o processo é inverso, primeiro chamo a subscreen e depois o modulo de import dados. TABSTRIP : São usados para simplificar operações complexas. Se tem diferentes aplicações que formam unidades lógicas. Não deve ser usado : 1- Se precisar mudar o ambiente de tela. 2- Se os componentes tiverem uma certa ordem. 3- Se forem processados dinamicamente. Ele consiste de paginas individuais, que tem uma área e um titulo. O titulo só terá uma linha. Ele pode conter muitas paginas. Se não couber todos os títulos de uma vez, há um scrool e um menu, que quando é clicado um pushbutton o menu aparece. A tabela consiste de um titulo, uma área de subscreen e uma subscreen. Do ponto de vista técnico, os títulos são como pushbutton. Eles tem atributos especiais. Para definir uma tabstrip control São necessários 3 Passos : 1- Definir uma área. 2- Definir um titulo e se necessário adicionar. 3- Associar uma subscreen área a cada pagina. Para definir deve-se criar um objeto TABSTRIP no screen painter, colocar um nome é essencial. No programa ABAP usar CONTROLS:meu_tabstrip type TABSTRIP. Ele é definido pela estrutura CXTAB_TABSTRIP, com o campo ACTIVETAB contendo o function code da pagina ativa. O numero de pagina default é 2. Ele pode Ter 2 tipos de function type, " " ou "P". 1- Se for " ", ele chama o PAI e o function code vai para o OK-CODE. 2- Se For "P", o usuário pode rolar entre as paginas sem chamar o PAI. Deve se associar uma subsreen área para cada pagina. Quando ela é associada, automaticamente ela entra no "Reference Object" para a tabtitle. Sendo assim se for usar a mesma área para varias, basta colocar o nome no "Reference Object". Nos scroolings locais deve ser associado subscreen diferentes e nos pushbutton(titles) deve Ter o function type "P". O sistema quando o PAI é associado, chama todas as subscreen. Se as tabpages dividem a mesma subscreen área, o programa vê o function code para determinar qual tela será mostrada. Dois Processos : No PAI o programa determina qual tabpage precisa ser ativa. No PBO, o programa mostra a tela correspondente. O sistema somente checa os campos da subscreen atual. No Pai você deve colocar o activtab da sua estrutura = 0 save_og e no PBO testar qual é o active e chamar a tela correspondente. Para colocar selection screen basta criar : SELECTION-SCREEN BEGIN OF SCREEN a AS SUBSCREEN.
  42. 42. SELECTION-SCREEN END OF a. SELECTION-SCREEN BEGIN OF TABBED BLOCK <NOME> FOR <N> LINES. SELECTION-SCREEN TAB (tamanho) tab1 USER_COMMAND CMD1 DEFAULT SCREEN 100. SELECTION-SCREEN END OF BLOCK <NOME>. O Sistema gera o control e não deve escrever. TABLE CONTROL : Uma área da tela que o sistema mostra os dados de uma forma tabular. Uma linha pode Ter varias colunas. Pode se mostrar ou entrar uma estrutura de dados usando a table control. Muitas ações do table control são feitas no presentation server, porem o PAI é disparado quando a ação é scroll vertical ou uma configuração salva pelo usuário. Atributos : Nome, posição inicial, static size. O Special table control atributos são configurados pelo usuários. Os campos Step e loop da estrutura syst. É preciso definir a table área e os tables fields. Do mesmo modo que a tabstrip, deve-se definir uma área no screen painter, e usar o controls no ABAP. TYPE TABLEVIEW USING SCREEN "XXX". O uso do REFRESH CONTROL <CTRL> FROM SCREEN <XXXX>, Reseta a table. Para selecionar os campos, basta seleciona-los via dicionário. Ele ainda pode Ter uma coluna de seleção, assim com um checkbox para transporte entre telas e programas. Existem 2 tipos de atributos: 1- Gerais - Contem informações sobre table controls. 2- Column Atributos - São gravados numa tabela interna. Para cada coluna é mantido os seus atributos na tela, mais os atributos da table control. A table control pode ser alterada dinamicamente. Por performace os dados da table control são lidos uma vez PBO e armazenados numa tabela interna. Depois ele lê da tabela. A tabela não precisa ser preenchida a todo PBO, só se mudou a Key field. A table control deve saber quantas linhas tem a tabela interna através do describe . Itab LINES mycontrol - lines. É necessário fazer um LOOP.. ENDLOOP no PBO e no PAI pois só há uma wa procurando as linhas da table control. No PBO você joga a wa para table control e no PAI você joga as mudanças da table control na wa. A wa pega e joga na tabela interna. Para cada passo do LOOP o sistema lê a linha da tabela, joga na wa que move para tela. Quando se usa table control o systema preenche a table control e no fim do PBO preenche os outros campos da tela. No FLOW LOGIC LOOP AT <iTAB> into <WA> WITH CONTROL <MYCONTROL>. Chama MODULE de Carregar . MODULE .....ENDMODULE. No ABAP MODULE, Terá MOVE CORRESPONDING wa TO <ESTRUTURA>. O processo PAI é o mesmo processo. LOOP AT <ITAB> FIELD <ESTRUTURA>.
  43. 43. MODULE modifica. ENDLOOP. Modifica : MOVE CORRESPONDING WA TO <ESTRUTURA>. MODIFY ITAB FROM WA INDEX. O atributos das células podem ser modificadas temporariamente, através de um LOOP dentro do PBO, passando a tabela, a estrutura e o control. Sy-loopc contem as linhas processadas no PBO. Context menu : Menus de contexto que são definidos na criação de objetos na tela. São menus definidos no menu painter ou menus dinâmicos e são associados a output fields. Não associar a box, table controls e screen. Para criar , no stats como context menus. No menu pode Ter qualquer function code. Deve ser criado uma subrotina. FORM ON_CTMENU_<MEUMENU> USING MEUMENU TYPE REF TO CL_ctmenu. CALL METHOD CL_CTMENULOAD GUI-STATUS EXPORTING PROGRAM-SY-CPROG STATUS = MENU = MEUMENU. ENDFORM. Nos atributos do objeto é definido qual menu e nos atributos gerais qual a subrotina (Só a parte do meu nome). LIST SCREEN : Basta criar módulos que contenham o comando WRITE. Atenção não tem os EVENTOS : LOAD-OF-PROGRAM, INITIALIZATION, START-OF-SELECTION, END-OF- SELECTION. Porem tem : AT-LINE-SELECTION, AT USER-COMMAND, TOP-OF-PAGE, END-OF- PAGE, TOP-OF-PAGE-DURING-LINE-SELECTION. LEAVE TO LIST PROCESSING AND RETURN TO SCREEN XXX. OU ANTES DO LEAVE : SUPRESS DIALOG. BC414 - DATA BASE UPDATES : OVERVIEW: Os updates são feitos através de OPEN SQL(DML) ou Native SQL (DML ou DLL). Cada vez que deseja se fazer um update no DB, o Open SQL converte isso em comandos especifico do DB. Por isso independe do BANCO que se use os programas, usam o mesmo comando. É usado um buffer no aplication server para reduzir acessos ao DB e tornar mais rápidos o DB.
  44. 44. Já o native SQL precisa ser especifico para cada DB. Os comandos do OPEN SQL podem ser inumeros, usar like no where, para atualizar varios ajustes da mascara, acessar registros, tabelas, etc. O sy-subrc retorna sucesso ou falha na operação. O sy-dbcnt retorna o numero de registros lidos. O Open SQL não verifica autorizações. Isso deve ser feito separadamente. Se eu quiser mudar dados em todos os clientes, não coloco o CLIENTSPECIFIED. Sem adição dados no client coment com not valuated em todos os clientes. Inserção de 1 linha. INSERT INTO <ITAB> VALUE <WA?. Dados podem ser inseridos na view, no entanto devem ser de uma única tabela e deve ser criado no DB. Retorna 0(zero) no sy-subrc se o dado foi incluido com sucesso e 4 se não foi. INSERT <DBTAB> [CLIENTSPECIFIED]. Uso TABLES : DBTABLE. Tabelas Internas : Posso colocar de uma tabela interna : INSERT <DBTABLE> FROM TABLE <itab>. O sy-dbint contem o numero de linhas inseridas na tabela. Mudando um registro ou mais : UPDATE <DBTABLE> [CLIENTSPECIFIED] SET <f1> = <g1> Where .... UDPATE <DBTABLE> from WA. UPDATE <DBTABLE> from TABLE <ITAB>. MODIFY <DBTABLE> FROM <WA>. MODIFY <DBTABLE> FROM <ITAB>. O Insert insere novas linhas, o update modifica as linhas correntes e o modify tenta fazer o update, se não conseguir faz o insert. Retorna 0 ou 4 no sy-dbint. DELETE : DELETE FROM <DBTABLE> WHERE CHAVES = . Pode Ter wa ou TABLE <DBTABLE>. Se eu não especificar a chave eu deleto vários registros. DELETE <DBTAB> FROM TABLE <ITAB>. DELETE <DBTAB> WHERE FIELD IN <ITAB>. Rollback : Mensagens A ou X disparam o rollback , E, W, I não disparam. Pode se disparar atraves do comando ROLLBACKWORK. SAP LUW : Sap logical unit work . Trabalha com o principio de : todos ou nenhum passos são realizados. DBLUW : Data Base logical unit of work.
  45. 45. É coberto com todos os dialogs steps end by database commit e fechado pelo commit e somente sessa hora os dados são gravados no DB. É dado um commit implicito a cada vez que é chamado um WP(WORKPROCESS). Varias Telas são agrupadas e um único DBLUW é chamado. LOCKS NO DB : Locks são caminhos para coordenar acessos simultâneos. O DB MS fisicamente loca entradas que estão sendo mudadas. Logical Locks numa global lock table no app server, o wp enqueue administra essas request de lock. Lock em registros que não tem fisicamente no DB(insert). Os locks são feitos através de rotinas function modules. Função ENQUEUE e DEQUEUE, para colocar e retirar o lock, se o sistema falhar retorna na EXCEPTION e a função DEQUEUE retira o lock. LOCK TABLE = SM12. Os argumentos da função usa sempre os campos chaves da tabela, chamados lock argumentos. LOCK MODE : E Escrever dados S Ninguém altera, só pode pedir lock de leitura. X Não admite um segundo lock. Se eu locar com E ou X ninguém pode mais locar. Se eu usar S mingúem loca com E ou X mas loca com outro S. Já no mesmo programam se eu lockar comE ou S, eu posso usar E ou S novamente e o E serra marcado como leitura, no entanto o X não. Devo pedir o lock antes do objeto lido e o unlock depois da alteração. Lock Modules são criados para lock objects e não tables. Devem começar com "EY" ou "EZ". Deve se especificar o modo e então são criados as funções ENQUEUE <NOME> e DEQUEUE <NOME>. Lembrando que tabelas (pelo menos uma deve ser associada). Os locks pode ser armazenados num lock container, se eles forem em vários objetos, diminuindo o intervalo de comunicação com o administrador de locks. FLUSH_ENQUEUE termina o lock container. Para colocar vários objetos o IMPORT PARAMETERS_COLECT = "X". Se um dos lock der errado, gera0se a exceção FOREING-LOCK. Técnicas de Updates : DIRETO : Devem ser todos no final, no ultimo passo. O estudado no ultimo capitulo. LOCKREAD-CHANGEDEQUEUE. PERFORM <SUBROTINA> ON COMMIT. Só executa quando tiver o comando commit work que executa uma única vez. Ai acaba o SAP LUW, inicia o DBLUW que termina com um commit do banco. Se eu clicar em cancel em algum momento, deve ser um rollback. Essas subrotinas não trabalham com interface e sim com dados globais do programa. UPDATE TECHIQUES :
  46. 46. Até agora que fez o update foi o programa. Se eu mandar 100 atualizações, meu programa terá que esperar. Não tenho logs , e as dialogs que executam o processo. Process : Juntar updates em pacotes e mandar WP de updates. O Programa joga as mudanças na log table em vez de no DB, que depois serão mandadas juntas para o db. Quando SAP LUW fecha o pacote avisa o programa que será feito um update, ai o sistema manda os dados da log tables para o programa de updates, que fará o update fisico no DB real.Se deu certo o WP de update deleta as entradas da logtables. Se deu erro ele mantem a log table com um flag de erro. A transação SM13 monitora updates. Rdisp /vb_mail se manda email ? Rdisp/ vb_mail_user_list pra quem. Assíncrono  Não espera a atualização. Síncrono Libera a log table e espera atualização. Local  Libera a log table e espera atualização. Depois da atualização o lock do meu programa é fechado. TECHICAL IMPLEMENTATION : Módulos de Função do tipo update module. Tem parametros de importing e de tabelas. Os exporting e exception são ingnorados. CALL FUNCTION "x" in Update task. Assegura que não será executada agora. Então o sistema gera uma entrada na log table com o nome da função e seus paramentos. Com o comando commit um log header é gerado dizendo que o conjunto de updates para aquele SAP LUW foram incluídos. O Commit WORK é assíncrono. Para desfazer os updates usar o comando ROLLBACKWORK que deleta todos os dados da log table, dispara o rollback para o DB, inicia um novo SAPLUW. Com a chamada do ROLLBACK o banco de dados volta ao estado anterior. O programa continua (Sem next) e o perform e call function in update retornam ao inicio. O rollback deve ser usado com mensagem do TIPO A. Não se pode usar roll back work ou commit work num update normal. Um roll back implícito seria uma mensagem do abend. Os locks devem ser gravados na lock table, para isso um unlock só deve ser feito depois do commit work. As falhas são reprocessadas sem lock. Uso : Assíncrono - Continua o processamento e o update fica funcionando(default). Local - Usa o Wp de dialog e e síncrono. A VBLOG não está em disco e sim na memória, ganhando tempo de execução. SET UPDATE TASK LOCAL. Síncrono - Espera o fim do update para o processamento. AND WAIT depois do commit work. Assíncrono é bom para transações que eu não preciso dos dados imediatamente atualizados. Local para transações que serão rodados em background.
  47. 47. Síncrono para transações que irá usar os dados em seguida. V1 e V2 : Update module .start imed .start imed no restart . restart delay  podem sem manualmente udpate. V1 - pode ser assíncrono, síncrono e local. V2 - Sempre rodado assíncrono e em disco, não são processados até que todos V1 sejam processados. Se ocorrer um erro na V2, o sistema desfaz (rollback) e todas as mudanças feitas por V2 são desfeitas, flegando um erro na VBLOG. Os locks são feitos automaticamente no V1, já que V2 não tem. O V1 se encarrega do V2. O conceito do SAP LUW. STARTING : .CALL trsansactin (Até o commit). .submit report .fim. .commit. .rollback /n Leave to transaction. Message A ou X Fase 1  entradas. Fase 2  Commit. Fase 3  data base updates. CALL TECHINIQUES FOR PROGRAMs. Há dus maneiras de ser executar um programa chamando de outro. A- Sem retorno a quem chamou. SUBMIT <PROG> / LEAVE TO TRANSACTION <CODE>. B- Com retorno: SUBMIT <PROG> AND RETURN. CALL TRANSACTION <CODE> CALL FUNCTION. Chamando um programa executavel. SUBMIT <PROG>, retorna para quem chamou o programa original. SUBMIT <PROG> and retain , retorna para quem chamou o programa original, na linha abaixo. SUBMIT <PROG> and return , retorna para tela de seleção. Chamando uma transação : CALL TRANSACTION <CODE> = chama e volta.
  48. 48. LEAVE TO TRANSACTION <CODE> = /n External Session - Uma janela do R/3 pode ser até 6 external session. Internal Session : cada external session pode Ter 9 internal session, que são dentro da external session para cada programa. Existe ABAP MEMORY para internal session e sap memory para todas as external session. Chamando uma call transaction ou submit and return, cria uma nova internal session. Quando o novo programa acaba, leave program, acaba a internal session. Porem se eu uso o LEAVE TO TRANSACTION, ele esvazia a pilha e começa tudo de novo, inclusive a ABAP memory. O SUBMIT sozinho replace o programa que chamou pelo programa chamado. No caso do call function, o grupo de funções é carregado dentro da internal session que chamou. Grupos de funções são sempre carregados uma vez por internal session. Se colocar no function call START NEW TASK <NOME> (nome que identifica a external session). Esse metodo é assíncrono, porem as funções devem ser remote enable. Transferencia de Dados : 1- Via Called program : Através de módulos de funções, selection screens. SUBMIT <PROG> AND RETURN WITH <PARAMETER> <OPERATOR> <VALUE> WITH <SEL.OPTIO> <OPERATOR> VALUE SIGN. 2- ABAP MEMORY : EXPORT <LABEL P/A VAR. NA MEMORY> FROM <MEUCAMPO> <TABELA COM MESMO NOME> FROM MEMORY IF "MY-ID". 3- SAP MEMORY

×