sap r3
TRANSCRIPT
SAP R/3Desenvolvendo em ABAP/4Instrutor: Glicrio Covizzi [email protected]
Contedo Histrico Viso Geral ABAP Dicionrio de Dados Editor ABAP Modularizao e Estrutura de programas Open SQL Report/Listas Programas de Carga (BDC) Module Pool SapScript
HistricoEm 1972, cinco engenheiros de sistemas decidiram 1972, abandonar seus empregos e, apostando numa idia bastante extravagante para a poca, abrir uma nova empresa. empresa. Surgia a SAP . A idia por trs dessa iniciativa era a criao de uma soluo nica, totalmente integrada, capaz de automatizar todos os processos inerentes a uma empresa. 33 anos e 12 milhes de empresa. usurios depois, a SAP surge como uma das maiores empresas de software do mundo. mundo. A primeira em software de gesto empresarial. empresarial. Empregando mais de 30 mil pessoas em 50 pases diferentes, contando com mais de mil e quinhentos parceiros e 88 mil instalaes. instalaes.
Viso Geral Qual a funo do SAP R/3? oferecer um conjunto integrado, de aplicativos empresariais de grande escala. escala. O conjunto padro de aplicativos integrados com cada sistema R/3 R/3 o seguinte: seguinte: PP (Production Planning - planejamento de produo) MM (Materials Management - gerenciamento de materiais) SD (Sales and Distribution - vendas e distribuio) FI (Financial Accounting - contabilidade financeira) CO (Controlling - controladoria) AM (Fixed Assets Management - gerenciamento de ativos fixos) PS (Project System - sistema de projeto) WF (Workflow - fluxo de trabalho) IS (Industry Solutions - solues de industria) HR (Human Resources - recursos humanos) PM (Plant Maintenance - manuteno das instalaes) QM (Quality Management - gerenciamento da qualidade)
Viso GeralO R/3 vem predefinindo com os aplicativos empresariais bsicos R/3 necessrios maioria das grandes corporaes. Esses corporaes. aplicativos coexistem em um ambiente homogneo. Eles so homogneo. projetados para funcionar utilizando desde um nico banco de dados e um conjunto (muito grande) de tabelas. tabelas. Os tamanhos de banco de dados de produo atuais variam de 12 gigabytes a aproximadamente 3 terabytes. Cerca de 8.000 terabytes. tabelas de banco de dados so distribudas com o produto R/3 R/3 padro. padro.
Viso Geral O que ABAPABAP a linguagem de programao que a SAP criou para desenvolver as aplicaes do R/3, focada em tarefas comerciais R/3 especificas e totalmente voltada para atender as necessidades dos usurios deste software, como: processamento de dados em como: massa, moeda especifica, mltiplos idiomas, etc. etc. Falando em banco de dados o ABAP tambm tem suas particularidades, o desenvolvedor no necessita conhecer o banco no qual est rodando o R/3, apenas cabe ao programador conhecer R/3 o Open SQL. SQL.
Viso Geral Ambiente de TrabalhoO ambiente de trabalho do ABAP normalmente dividido da seguinte maneira: Ambiente de desenvolvimento (desenvolvimento ABAP e customatizao funcionais / testes). Ambiente de Qualidade (realizao dos testes de usurios para aprovao final). Ambiente de Produo (processamento real dos dados da empresa).
Viso Geral Ambiente de desenvolvimentoLocal onde o ABAP ir criar seus programas (objetos) no client especifico para isso, os objetos criados so armazenados a uma Classe de desenvolvimento e tambm a um Change Request/Task. Request/Task. No final do projeto cada desenvolvedor libera sua Request para ser aprovada e assim transportada para outro ambiente. ambiente.
Viso Geral Client dependent / independentA base de desenvolvimento normalmente dividida client ou mandante, alguns objetos quando criados em um determinado client somente so enxergados ali e outros so enxergados em todos os clients. clients. Cdigo fonte de programas INDEPENDENT Telas, Menus e Funes INDEPENDENT Estruturas de tabela, elementos de dados e dominios INDEPENDENT Registros de dados da tabela DEPENDENT Obejtos de Texto, Formulrios SapScript DEPENDENT
Viso Geral ParticularidadesOs programas e outros objetos do repositrio criados pelo cliente devem estar no namespace, ou seja, seus nomes devem comear com as letras Z ou Y (com exceo dos campos em append structures, que devem comear po ZZ ou YY). YY). Os clientes s devem alterar objetos com nomes fora dessa especificao quando expressamente orientados pela SAP (notas de correo)
Dicionrio de Dados Interface entre ProgramasProgramas
e Banco de Dados.ABAP Dicionrio
Banco de Dados
Dicionrio de DadosO dicionrio ABAP (ABAP dictionary) permite a criao e administrao de todas as definies de dados do SAP. SAP. Podem ser definidas tabelas, vises, ndices, elementos de dados, domnios e objetos de bloqueio. bloqueio. Todos os dados que entram no Dicionrio ABAP esto disponveis ao longo do sistema SAP. SAP. Atravs do mecanismo de ativao todas as alteraes entram em vigor em todos os componentes pertinentes ao sistema. sistema. O Dicionrio ABAP est ativamente integrado no ABAP Development Workbench. Cada mudana afeta imediatamente os Workbench. programas e telas de ABAP. ABAP. Toda informao que importante para o ambiente de operao, como tamanho de campo e tipo de campo, tirada do Dicionrio ABAP. ABAP.
Dicionrio de Dados Tipos de DadosType Description of type C N D T X I P F Character Numeric string Date (YYYYMMDD) Time (HHMMSS) Byte (hexadecimal) Integer Packed number Floating point number Initial value Space '00...0' '00000000' '000000' X'00' 0 0 '0.0'
Dicionrio de Dados Dados definidos no programaEntre as formas de tipos de dados mostrados acima, as mais usadas no desenvolvimento de programas ABAP/4 so:1 - Estrutura: consiste em vrios Estrutura: campos com tipos de dados elementares e tem tamanho fixo. fixo. (array) 3 Tabela Interna: uma Interna: estrutura que pode variar em tamanho, no que diz respeito a linhas. linhas. (matriz) Os outros tipos acima, so variaes dos dois j explicados e muito pouco utilizados nos programas. programas.
Dicionrio de Dados Exemplo de criao de tipo de dadosTYPES: texto02 TYPE c. TYPES: BEGIN OF nome_tel, nome(50) TYPE c, fone(15) TYPE c, BEGIN OF nome_tel.
Dicionrio de Dados Tipos de DadosDomnio: Domnio: a definio tcnica do campo, onde colocamos o tipo de dados, o tamanho do campo e tabela de valores possveis. possveis. Elemento de Dados: a definio semntica para um campo Dados: individual, nele colocamos os textos do campo e amarramos a um domnio. domnio. Tabela Transparente (database table): so as tabelas que table): possuem um estrutura criada no dicionrio de dados e que so refletidas no banco de dados. dados. Viso: Viso: agrupamento de tabelas transparentes que possuem ligaes entre si. si.
Dicionrio de Dados Entendendo Domnio e Elemento de Dados
Dicionrio de Dados Caractersticas tcnicas das tabelasQuando uma tabela definida no dicionrio de dados do R/3, R/3 devem ser definidas as caractersticas tcnicas (technical settings) para a tabela. Essas caractersticas so usadas para otimizar o tabela. acesso e a armazenagem da tabela individualmente. individualmente. Valores que necessitam de preenchimento: preenchimento: Descrio Classe de entrada Campo MANDT (especifica qual o mandante). Tipo de dados Categoria de tamanho
Dicionrio de Dados SE11
Dicionrio de Dados Criando Tabela Transparente
Dicionrio de Dados Criando tabela transparente
Dicionrio de Dados Criando Tabela Transparente
Dicionrio de Dados Criando Tabela Transparente
Editor ABAP SE38 Criando um novo programa
Editor ABAP Criando um novo programa
Editor ABAP Criando um novo programa
Editor ABAP Criando um novo programa- Ativando programa
Editor ABAP Tela de seleo SELECTION-SCREEN SELECTION PARAMETER SELECT-OPTIONS SELECTEx.: TABLES: MARASELECTION-SCREEN BEGIN OF BLOCK bloco3 WITH FRAME TITLE text-003. PARAMETER: p_num1 TYPE i. PARAMETER: P_MATNR LIKE MARA-MATNR. SELECTION-SCREEN end of BLOCK bloco3. SELECTION-SCREEN BEGIN OF BLOCK bloco4 WITH FRAME TITLE text-004. SELECT-OPTIONS: S_MATNR FOR MARA-MATNR. SELECTION-SCREEN end of BLOCK bloco4.
Editor ABAP ComandosDATA: DATA: utilizado para definir uma varivel de qualquer tipo (simples, estrutura ou tabela interna). DATA: V_num TYPE i. DATA: v_matnr LIKE mara-matnr. maraDATA: begin of t_mara occurs 0, matnr LIKE mara-matnr, maraend of t_mara. MOVE ou = : esses so os comandos de atribuio de valores. MOVE: 2 to v_num, 'MATERIAL to v_matnr. ou v_num = 2. v_matnr = MATERIAL.
Editor ABAP ComandosIF e CASE: so utilizados como comparativos na lgica do ABAP. CASE:CASE p_sin. WHEN '+'. v_num = p_num1 + p_num2. WHEN ''-'. v_num = p_num1 + p_num2. WHEN OTHERS. ENDCASE.
IF p_sin = '+'. Ou v_num = p_num1 + p_num2. ELSEIF p_sin = ''-'. v_num = p_num1 + p_num2. ELSE. ENDIF.
Editor ABAP ComandosTABLES: TABLES: disponibiliza a estrutura da tabela do banco de dados, para serutilizada dentro do programa, obrigatria essa disponibilizao quando a tabela vai ser utilizada no FOR.
MESSAGE: MESSAGE: utilizado para abrir caixa de dialogo com mensagens.MESSAGE I368(00) with Erro XXXXX.
LOOP AT: utilizado pra ler o contedo de uma tabela AT: LOOP AT itab. WRITE: / itab-name, itab-fone. itabitabENDLOOP.
Editor ABAP ModularizaoREPORT... * Declarao de variveis, constantes, tabela internas, ... * Tela de seleo INITIALIZATION. Primeiro passo a ser executado no programa, antes da tela de seleo e antes da lgica de processamento. AT SELECTION-SCREEN. SELECTIONExecuta logo aps sair da tela de seleo, utilizado para fazer tratamentos de obrigatoriedade de campos e similares. TOP-OFTOP-OF-PAGE. Executa quando encontrado o primeiro comando WRITE dentro da lgica principal, utilizado para colocar cabealho, textos que devem sair em todas as pginas. START-OFSTART-OF-SELECTION. Entre o START-OF-SELECTION e o END-OF-SELECTION, se encontra a lgica principal START-OFEND-OFdo programa, quando programamos de uma forma estruturada colocamos aqui apenas chamadas de sub-rotinas, para evitar poluio de cdigo. subPERFORM ... END-OF-SELECTION. END-OFAT LINE-SELECTION. LINESomente executado se o usurio der um duplo click em uma linha mostrada no relatrio, ou marcar a linha e pedir para ver detalhe, utilizada para listas interativas, drill-down. drillAT USER-COMMAND. USERSomente executado se o usurio der um click em algum objeto do menu, utilizado para listas com botes de interao.
Open SQLO ABAP oferece um conjunto de comandos que permite realizar operaes com os dados armazenados no banco, o Open SQL. A idia SQL. central do Open SQL prover uma linguagem de acesso ao banco independente de plataforma. Os comandos Open SQL tm de passar pelo plataforma. interpretador ABAP, que os traduz para os comandos SQL do banco de dados que esteja sendo utilizado. utilizado. Comandos Dentro do Open SQL, podem-se utilizar os seguintes comandos: podemSELECT: permite a leitura de dados do banco de dados. INSERT: insere dados no banco. UPDATE: atualiza dados. MODIFY: atualiza dados existentes ou os acrescenta caso no existam no banco. DELETE: apaga registros do banco de dados.
Testando SELECT SY-SUBRC SY SY-DBCNT SY-
Open SQL LUW COMMIT e ROLLBACK.Quando trabalhamos com alterao nos dados do banco, bom sabermos que todas as alteraes que estamos fazendo ainda no aconteceram efetivamente no banco, isso s ocorre quando encontra-se o primeiro encontracommit: commit: Exemplo: INSERT . IF SY-SUBRC = 0. SYINSERT . IF SY-SUBRC = 0. SYCOMMIT WORK. ELSE. ROLLBACK WORK. ENDIF. ENDIF.
Open SQL SELECTEX.: SELECT MATNR MAKTX INTO TABLE T_RELATORIO FROM MAKT WHERE MATNR IN S_MATNR AND SPRAS EQ SY-LANGU. SY-
Open SQL INNER JOINEx.: SELECT T1~MATNR T2~MAKTX INTO TABLE T_RELATORIO FROM MARA AS T1 INNER JOIN MAKT AS T2 ON T1~MATNR EQ T2~MATNR WHERE T1~MATNR IN S_MATNR AND T2~SPRAS EQ SY-LANGU. SY-
Open SQL FOR ALL ENTRIESEX.: SELECT MATNR MAKTX INTO TABLE T_RELATORIO FROM MAKT FOR ALL ENTRIES IN T_MARA WHERE MATNR EQ T_MARA-MATNR T_MARAAND SPRAS EQ SY-LANGU. SY-
Report/Lista Criando uma lista simplesex.: REPORT ZLISTAXX NO STANDARD PAGE HEADING LINELINE-SIZE 126 LINE-COUNT 50. LINETABLES MAKT. SELECT * FROM MAKT. WRITE / MAKT-MATNR. MAKTWRITE MAKT-MAKTX. MAKTENDSELECT.
Report/Lista Mudando a apresentao dos camposPodemos mudar a cor com a opo COLOR do comando WRITE; WRITE; podemos mudar a intensidade da cor com a opo INTENSIFIED {ON|OFF}, transformar o campo num HOTSPOT para uso em listas com drill-down, e mudar o posicionamento dos drillcampos com WRITE AT. AT.
LIBS
Report/Lista Mudando a apresentao dos camposEx.:WRITE: / SPFLI-CARRID COLOR 4 INTENSIFIED OFF HOTSPOT SPFLICENTERED. WRITE:/ SPFLI-CARRID COLOR 5 INVERSE. SPFLIFORMAT COLOR 3. WRITE: /10(5) SPFLI-CARRID COLOR 2 INTENSIFIED OFF HOTSPOT. SPFLI-
Report/Lista Criando uma lista complexa AT LINE-SELECTION LINETOP-OFTOP-OF-PAGE DURING LINE-SELECTION LINEHIDE SYSY-LSIND (usado quando se tem vrios nveis de lista) WINDOW STARTING AT ENDING AT
.
Programas de Carga SHDB
Programa de Carga SHDB
Programas de Carga BATCH INPUTSo mais utilizados para grandes massas de dados, pois, ele no faz a execuo automtica da entrada dos dados, ele apenas armazena os dados da BDC em uma local chamado PASTA, e esses dados carregados somente sero processados quando essa pasta for executada na transao SM35. SM35. BDC_OPEN_GROUP BDC_INSERT BDC_CLOSE_GROUP
Programas de Carga CALL TRANSACTIONSo mais utilizados para menor quantidade de dados, ou interfaces on-line que necessitam da resposta do processamento onlogo aps a execuo. execuo.CALL TRANSACTION USING MODE exibir passo a passo somente erros no exibir MESSAGES UPDATE
Programas de Carga Trabalhando com arquivo texto WS_UPLOAD WS_DOWNLOAD OPEN DATASET READ DATASET CLOSE DATASET BACKGROUND
Programas de Carga Tabela BDCDATA
Module Pool SE80
Module PoolOn Principais componentes de um programa On-Line: Development environment ABAP/4 Dictionary Screen Painter ABAP/4 Menu Painter Runtime environment Dialog processor ABAP/4 processor
Particularidade
Nome do programa inicia-se com SAP + M (module pool) + Z ... inicia-
Module Pool Para criao de uma tela, devem ser seguidos os seguintes passos: Defina os componentes bsicos da tela ( screen attributes ). Desenhe o Layout da tela utilizando o fullscreen editor Defina os atributos dos campos ( field list ) Escreva o fluxo lgico da tela. ( flow logic )
Os mais importantes componentes do programa ABAP so
encontrados nos seguintes objetos: Global data ou Estruturas do dicionrio no TOP include (declarao de dados ) Module PBO ( Process Before Output ) Module PAI ( Process After Input ) Sub-rotinas ( se necessrio ) Sub-
Module Pool DEFININDO O FLOW CONTROL No permitido: IF MOVE PERFORM
Module Pool Criar um Tela
Module Pool Menu Painter
Module Pool ...
Um dia terminarei
SAPScript SE71 Ferramenta que auxilia o desenvolvedor Abap a criarrelatrios com formatao grfica Formatao de fontes (tamanho,tipo) Box Figuras ( logomarcas )
SAPScript Header - Cabealho
SAPScript Basic Setting - Configurao da pgina
SAPScript Page Informaes do relatrio
SAPScript Windows Janelas do relatrio
SAPScript Page Windows Posio da Page na Window
SAPScript Page Windows Posio da Page na Window
SAPScript Pargrafo sublinhado Tamanho da fonte, tipo de letra, negrito, itlico ou
SAPScript Text Elements
SAPScript SAPSCRIPT a partir do programaAbrindo FormulrioMOVE: 'LOCL' TO ITCPO-TDDEST, "Impressora '' TO ITCPO-TDIMMED, "Imediato '' TO ITCPO-TDDELETE, "Deleo apos impressao P_EXIBI TO ITCPO-TDPREVIEW,"Exibir antes da impresso '' TO ITCPO-TDGETOTF. CALL FUNCTION 'OPEN_FORM' EXPORTING DEVICE = 'PRINTER' DIALOG = 'X' FORM = 'ZSAPCURSOXX' LANGUAGE = 'P' OPTIONS = ITCPO EXCEPTIONS CANCELED =1 DEVICE =2 FORM =3 OPTIONS =4 UNCLOSED =5 MAIL_OPTIONS =6 ARCHIVE_ERROR =7 MORE_PARAMS_NEEDED_IN_BATCH = 8 OTHERS = 9. IF SY-SUBRC 0. MESSAGE E368(00) WITH TEXT-007. ENDIF.
SAPScript Chamando um TEXT_ELEMENTCALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'ITEM' * FUNCTION = 'SET' * TYPE = 'BODY' WINDOW = 'MAIN' * IMPORTING * PENDING_LINES = EXCEPTIONS ELEMENT =1 FUNCTION =2 TYPE =3 UNOPENED =4 UNSTARTED =5 WINDOW =6 BAD_PAGEFORMAT_FOR_PRINT = 7 OTHERS = 8.
SAPScript Ativando e Testando Formulario
SAPScript Fechando o FormulrioCALL FUNCTION 'CLOSE_FORM' * * * * IMPORTING RESULT = I_RESULT TABLES OTFDATA = I_OTF EXCEPTIONS UNOPENED =1 BAD_PAGEFORMAT_FOR_PRINT = 2 SEND_ERROR =3 OTHERS = 4.
Modulo Avanado
Contedo SAP Query Relatrio ALV Dicas de Performance de Programas
Query Ferramenta que possibilita a emisso de relatrios, que auxilia nodesenvolvimento do relatrio de uma forma quase easy. easy. Constituio: Constituio: Grupo de Usurios rea Funcional Query
Query Definindo rea de Trabalho rea Standard dependente de Mandante rea Global independente de Mandante
Query rea Funcional SQ02 Onde sero relacionadas as tabelas e campos que estaro disponveis para se fazer a Query
Query Grupo de Usurios SQ03 Deve-se relacionar os Usurio e reas Funcionais Deve-
Query Query Lista Bsica SQ01
Relatrio ALV O ALV padroniza e simplifica a exibio e operaode listas e relatrios no sistema R/3. Fornece R/3 interfaces e formatos padronizados para todas as listas e relatrios. relatrios.
Relatrio ALV Barra de ferramentas
Obs.: SE80 Grupo de Funo SLVC_FULLSCREEN
Relatrio ALVTotal e SubtotalSelecione a coluna com valor numrico, e escolha Total. Para Total. subtotal, escolha uma coluna qualquer. qualquer. Sempre primeiro necessrio totalizar uma coluna com o boto de somatria e s ento definir os subtotais. subtotais.
Relatrio ALVMicrosoft Excelexportarmos para o Excel, algumas particularidades no sero enviadas: enviadas: Assim, se a intenso e gerar o relatrio para envia-lo ao Excel, enviano perca tempo com formataes. formataes. Apenas o bsico transferido. transferido. Temos trs opes para exportar a listagem para o Microsoft Excel, vamos ver a sada de cada uma delas. delas. Ao
Relatrio ALVMicrosoft Excel Opo Excel Macros SAPCom essa opo, o R/3 envia o R/3 relatrio para o Excel e j apresenta vrias barras de ferramentas prprias para que voc tenha as mesmas facilidades. facilidades. Repare na figura, que as opes de ferramentas do prprio Excel no aparecem. Para voltar aparecem. utilize a opo do menu Report e depois Exit. Exit.
Relatrio ALVMicrosoft Excel Opo Tabela a forma mais simples de exportao. exportao. Veja que o R/3 R/3 mantem as barras de ferramentas do Excel e apenas inclui o relatrio na planilha. planilha.
Relatrio ALVMicrosoft Excel Opo Tabela PivotNessa opo o R/3 abre o Excel e R/3 monta o relatrio que permanece com algumas funes. funes. Mesmo que o seu Excel no esteja exibindo a barra de ferramentas Tabela Dinmica, a comunicao R/3 Excel vai R/3 passar a exibi-la, para o acesso exibiaos recursos do relatrio. relatrio.
Relatrio ALVModificar layoutEssa opo engloba as funes do Filtro, Totalizar, Subtotalizar, Ordenar, Selecionar colunas, Ocultar colunas, etc. Vejamos etc. cada guia de opo. opo. Na parte da esquerda, temos as colunas que esto visveis no relatrio. relatrio. Na parte direita, temos todas as disponveis. disponveis. Veja que j temos aqui, a possibilidade de informar quais campos pretendemos totalizar. totalizar.
Relatrio ALVModificar layoutNa guia ordenao, informamos quais campos queremos classificar, em qual ordem e ainda, se desejamos um subtotal por esse campo. campo.
Relatrio ALVModificar layoutNa guia filtro definimos por qual campo (ou quais) gostaramos de delimitar o resultado.A opo Viso raramente utilizada. utilizada. No se cria vises do relatrio. relatrio. muito mais utilizado e simples as opes de layout. layout. Na guia Viso voc pode utilizar templates do Excel ou do Crystal Reports. Tambm h Reports. pouca documentao sobre o assunto. assunto. Os layouts que voc cria, no deixam de ser vises diferentes de um mesmo relatrio. relatrio.
Relatrio ALVModificar layoutNa guia de Representao voc pode alterar algumas opes no formato de seu relatrio. Marque relatrio. ou desmarque os checkboxes. checkboxes.
Relatrio ALVModificar layoutO formato que seu relatrio estiver no momento pode ser salvo. O flag salvo. Config.prelim vai indicar qual o Config.prelim layout default. default. Da mesma forma possvel mudar o formato de seu relatrio a qualquer momento. momento. Basta selecionar outro layout salvo. Na salvo. figura abaixo, temos apenas um. um.
Relatrio ALV Inserindo uma figura no cabealho
Isso melhora bem a aparncia dos relatrios. Veja que temos at a relatrios. possibilidade de inserir figura em background, como na Web. O texto Web. tambm configurvel, voc pode inserir vrias linhas e alterar o tamanho da fonte. fonte. No exemplo acima foi utilizado como background a imagem ALV_BACKGROUND e o nome do logotipo ENJOYSAP_LOGO. ENJOYSAP_LOGO. A tabela com todas as figuras disponveis a BDS_CONN05, CLASS = BDS_CONN05, PICTURES. PICTURES. Transao OAER visualizar imagens.
Relatrio ALV Inserindo uma figura no cabealhocall function 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = v_repid i_background_id = 'ALV_BACKGROUND' i_callback_top_of_page = 'ZF_TOP_OF_PAGE' * i_callback_pf_status_set = 'ZF_STATUS' i_callback_user_command = 'ZF_USER_COMMAND' it_fieldcat = t_fieldcat[] is_layout = v_layout it_sort = t_sort[] i_default = 'X' i_save = 'A' is_variant = v_variante is_print = v_print TABLES t_outtab = t_alv EXCEPTIONS program_error =1 others = 2. call function 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING i_logo = 'ENJOYSAP_LOGO' it_list_commentary = t_listheader.