ACADEMIA INTERNA
ABAP / SAP R3
CronogramaIntroduo SAP R/3Dicionrio de Dados*ProgramaoRelatriosALV*On Line*Batch-Input/Call Transaction*SapScript*Exits
* exerccios
www.softtek.com.brClick to edit Master title style**********
INTRODUO SAP R/3
ObjetivosO que SAP R/3Funcionais e Basis ComponentsArquiteturaProjetosNavegao
O que o SAP R/3?
SAP - R/3Gesto Empresarial - ERPIntegraoAcesso a informao em tempo real e seguraTomada de decisoEvoluo e melhorias constantes
Funcionais e Basis Components
Funcionais e Basis Components
Sistema R/3Sales & Distribution : A soluo completa para o gerenciamento integrado de todas tarefas para vendas, faturamento e expedio.Materials Management : O processo completo de compras, com suporte integrado de resultados e planejamento de produo.Production Planning : O sistema de PCP ajustvel para todos os tipos de produo com suporte integrado de resultados e do gerenciamento de compras.Quality Management : O sistema para o controle da qualidade assegurada em todas as reas da cadeia logstica.Plant Maintenance : A soluo independente de indstria para a administrao da manuteno de sistemas produtivos.
Human Resources Management : Desde o processamento integrado de administrao RH, gerenciamento de tempo e despesas de viagens at a folha de pagamento.Human Resources Planning : Planejamento organizacional, posicionamento, desenvolvimento educacional e controle do custo de pessoal em um sistema totalmente integrado. Sistema R/3
Financial Accounting: Uma ampla viso do desempenho que inclui gerenciamento de caixa, banco eletrnico, controladoria financeira, oramento de caixa e consolidao.Controlling: Contabilidade de custos, desde a contabilidade de centros de custos e de elementos de custos at a anlise de lucratividade.Asset Management : O gerenciamento completo de todos os ativos fixos, desde da contabilidade tradicional de ativos e gerenciamento tcnico de ativos at a controladoria de investimentos. Project Information System : A integrao de todas as reas de servios para o planejamento de projetos, processamento e controle. Executive Information System (EIS) : Acesso rpido aos dados, fatos e representaes grficas para decises gerenciais. Sistema R/3
Estrutura Organizacional
Mdulo FI e suas funes
Contabilidade Empresarial
Contas a Pagar
Gesto de Materiais - Processo de Abastecimento
Logstica - R/3
Recursos Humanos
ABAP ?
ABAPdvancedusinesspplicationrogramming
www.softtek.com.brClick to edit Master title style**********
Arquitetura
Arquitetura em 3 camadas
Logon Balancing
Servidores
Mandantes
Requests
Transporte
www.softtek.com.brClick to edit Master title style**********
Projetos
FasesLevantamento - BCModelagem dos processos atuaisComo devero ser os processos - BCCustomizaoDesenvolvimentos - BCValidao - BCTestes individuais/integrados - BCProduo - BCMelhorias - BC
www.softtek.com.brClick to edit Master title style**********
Navegao
www.softtek.com.brClick to edit Master title style**********
DICIONRIO DE DADOS
ObjetivosO que dicionrio de dadosElementos do dicionrio de dadosComo utilizar o dicionrio de dadosLevantamento de informaes no R/3
Dicionrio de Dados
Tabela
Dicionrio ABAP/4
Elementos do Dicionrio de DadosTabelas - armazenam dadosEstruturas - no armazenam dadosVises - join de tabelas e restrio de camposCampos Elementos de dadosDomniosAjuda de pesquisa
Integrao do Dicionrio de Dados
www.softtek.com.brClick to edit Master title style**********
Tabelas
Elemento de Dados e Domnios
Generalizando
Foreign Key
EstruturasAs estruturas possuem os mesmos elementos das tabelas masno armazenam dados. S esto preenchidas em run-time.
www.softtek.com.brClick to edit Master title style**********
Vises
Vises
Trabalhando com a SE11
www.softtek.com.brClick to edit Master title style**********
Levantamento de Informaes
F1 - Ajuda (Help)
F9 - Informao tcnicaFunes
Exerccio 1. Criar uma tabela Z no dicionrio de dados, com o nome ZTESTE_001.
Layout :- DOCUMENTOchavenumrico10- ITEMchavenumrico05- TEXTOalfa40- MATERIALnumrico06- QUANTIDADEnumrico04- PRECO_UNITARIOnumrico15(02)- PRECO_TOTALnumrico15(02)
Os desenvolvimentos devem ser amarrados em uma mesma request. A descrio da request deve comear por : TREIN ABAP ???? - ... ???? : Iniciais do nome, para identificar o usurio. Os elementos de dados e seus domnios devem ser criados. Objetos Z.
Preencher manualmente a tabela criada, com os registros abaixo, via dilogo de atualizao (SE11/SM30).
Exerccio - continuao
DocumentoItemTextoMaterialQtdePreo UnitPreo Tot100000000100001Documento teste 001 900001001010,00100000000100002Documento teste 001 900002001212,00100000000200001Documento teste 001 9000010009100,00100000000200002Documento teste 001 900003002025,00500,00100000000200003Documento teste 001 900003000950,00
PROGRAMAO
SE38/SE80 - Navegao
Tipos de progamas possveis
Estrutura geral de um programa abap Criando um novo programa
Declarao de tabelasTabelas do dicionrio de dados
TABLES : tabela01, tabela02, .
Tabelas internas
DATA: BEGIN OF t_tabela01 OCCURS 0, campo1(16) TYPE c, campo2 LIKE tabela01-campo, ... END OF t_tabela01.
DATA: BEGIN OF t_tabela02 OCCURS 0. INCLUDE STRUCTURE tabela02.DATA: END OF t_tabela02.
Como funciona o Header LineHeader LineRegistros da TabelaObs.: os registros so trabalhados no Header e posteriormente levados tabela.
1001ABCA90S23,001002DEFJ82J02,032003GHIKK8900,01
Declarao de estruturaEstrutura
DATA: BEGIN OF e_tabela01, campo1(16) TYPE c, campo2 LIKE tabela01-campo, ... END OF e_tabela01.
DATA: BEGIN OF e_tabela02. INCLUDE STRUCTURE tabela02.DATA: END OF e_tabela02.EstruturaObs.: a estrutura criada apenas em tempo de execuo, nunca gravada.
1001ABCA90S23,00
Declarao de variveisVarivieis
Por referncia a outro campo de tabela j existente :
DATA: variavel01 LIKE tabela01-campo01.
Pelo tipo que queremos :
DATA: variavel02(04) TYPE i.
Uma varivel com a estrutura de outra :
DATA: variavel03 LIKE tabela02.
Tipos de dadosTipos
I->inteiro (4 bytes c/ sinal)N->numrico (s nmeros)P->compactadoF->ponto flutuanteC->caracterD->data (AAAAMMDD)T->hora (HHMMSS)X->hexadecimal (sequncia de bytes)
Obs.: se no for atribudo tipo a varivel, esta ser definida como caracter, automticamente.
Tela de seleo
Tela de seleo
Tela de seleo
Eventos de um programa AbapINITIALIZATION:Onde se pode setar variveis e preencheratributos ao se inicializar o programa.
START-OF-SELECTION:Corpo principal do programa. Onde asselees de dados so feitas e informaestrabalhadas.
END-OF-SELECTION:No obrigatrio, mas costuma-se utilizareste ponto para impresso de relatrios e finalizao do processo.
TOP-OF-PAGE:Este evento se processa antes do primeirodado ser impresso em cada pgina. Pode serusado como cabealho, em companhia doNO STANDARD PAGE HEADING.
END-OF-PAGE:Este evento ocorre quando se ultrapassa onmero de linhas da pgina corrente.Ou quando se passa de uma pgina outra.
IF
IF ENDIF.Este comando permite que se desvie o fluxo do programa, dependendo da condio. Para encerrar usa-se: ENDIF, pode-se ainda ELSEIF e ELSE. O programa s ir executar a condiocorreta.
IF . ENDIF.
Exemplo: IF VBAP-VBELN IS INITIAL. MESSAGE E001(ZSSI). ENDIF.
IF... ELSE... ENDIF.
IF . ELSE. ENDIF.
Exemplo.: IF VBAP-VBELN is INITIAL. MESSAGE E001(ZSSI). ElSE. MOVE VBAP-VBELN TO W_VBELN. ENDIF.Comandos bsicos - IF
-IF ELSEIFELSEIFENDIF.
IF . ELSEIF . ...ELSEIF . ...ENDIF.
Exemplo.: IF VBAP-VBELN is INITIAL. MESSAGE E001(ZSSI). ElSEIF not VBAP-VBELN is INITIAL . MOVE VBAP-VBELN TO W_PERNR. ELSEIF not VBAP-VBELN is INITIAL AND W_VBELN is INITIAL. MOVE VBAP-VBELN TO W_VBELN. ENDIF.Comandos bsicos - IF
LOOP
LOOP ENDLOOP.
LOOP AT . ENDLOOP.
LOOP AT WHERE . ENDLOOP.
Comandos bsicos - LOOP
CASE
-CASE ENDCASE. um controle baseado em ndice de objeto de dados. Este controle deve ser concludo com ENDCASE.
CASE . WHEN [OR OR ...]. ... WHEN .[OR OR ...] ... WHEN [OR OR ...]. ... WHEN ... ... WHEN OTHERS. ...ENDCASE.
Exemplo: CASE W_DATA(02). When 01. W_DATA = W_DATA + 1. When 02. W_DATA = W_DATA + 2. When others. Clear W_DATA. ENDCASE. Comandos bsicos - CASE
DO
-DO ENDDO.Repete o processamento que est dentro de DO e ENDDO.Terminando com os comandos EXIT, STOP e REJECT.Pode usar CONTINUE, para terminar o passo do DO e continuar o passo seguinte.
DO < n > TIMES. ...ENDDO.
Exemplo1: DO 10 TIMES. IF VBAK-VBELN eq VBAK-VBELN. W_VBELN = VBAK-VBELN. ENDIF. ENDDO.
Exemplo2: DO. IF VBAK-VBELN is INITIAL. EXIT. ELSEIF VBAK-VBELN in P_VBELN. CONTINUE. ENDIF. ENDDO.Comandos bsicos - DO
WHILE
-WHILE ENDWHILE.Repete o processamento que est dentro de WHILE e ENDWHILE, se a expresso verdadeira.A cada passagem a expresso verificada.Pode usar CONTINUE , para terminar o passo do WHILE e continuar o passo seguinte.
WHILE expresso. ENDWHILE.
Exemplo: WHILE W_WRITE
MOVE
MOVE
MOVE TO .
= =
-MOVE utilizando tabela interna
MOVE TO .
=
A citao acima tem o mesmo efeito que = .
MOVE-CORRESPONDING
Este comando move os campos idnticos de uma estrutura para outra.
MOVE-CORRESPONDING TO .
Comandos bsicos MOVE
WRITE
-WRITE comum os campos sarem justificados a esquerda. Os campos numricos so alinhados a direita.
Exemplos: WRITE . WRITE: /TEXT-001, TEXT-002, TEXT-003+2(8). WRITE: /002 TEXT-004.
Opes:... NO-ZERO.... NO-SIGN.... DD/MM/YY.... MM/DD/YY.... DD/MM/YYYY.... MM/DD/YYYY.... DDMMYY.... CURRENCY w.... DECIMALS d.... ROUND R.... UNIT u.... USING EDIT MASK mask.... UNDER g.... NO-GAP.... LEFT-JUSTIFIED.... CENTERED.... RIGHT-JUSTIFIED.Comandos bsicos WRITE
CLEAR
-CLEARReseta o valor da varivel. Tambm aplica-se a estruturas e tabelas, limpando o header line,mas no interferindo nos dados no caso de tabelas.Se a varivel for alfanumrica, volta a ser branco. Se for numrica, retorna a zero.
Exemplos:CLEAR .CLEAR .limpa o header line da tabela
SKIP
-SKIP nRealiza o salto de linhas. A varivel n identifica a quantidade de linhas a ser pulada.
Exemplos:SKIP.Ir pular 1 linha mesmo efeito que SKIP 1SKIP 10.Ir pular 10 linhas
ULINE
-ULINEImprime uma linha corrente.
Exemplos:ULINE.Imprime linha corrente da largura da pgina ULINE /35(50).Linha comear na posio 35 e ter comprimento de 50 bytesComandos bsicos CLEAR/SKIP/ULINE
COMENTRIOS
Algumas das formas como podemos documentar um programa ABAP.
* -> um asterisco na frente da linha, j serve para comenta-l toda.
-> a aspas dupla, na mesma linha do cdigo, serve para comentar dali para frente.
Exemplos:*IF t001-text IS INITIAL.* ADD 1 TO w_number.* ENDIF.
IF t001-text IS INITIAL. continue. Comando para sair do Loop atualENDIF.
Comandos bsicos Comentrios
FORM
-FORM ENDFORM.Define uma subrotina dentro do programa ABAP. Pode ser executada a qualquer momento, dentrodo programa.
Exemplos:FORM f_leitura_bseg. Instrues.EDFORM.Opes:FORM USING p_variavel_referencia CHANGING p_variavel_valor TABLES p_tabela. InstruesENDFORM.
PERFORM
-PERFORMExecuta chamadas de subrotinas do programa ABAP.
Exemplos:PERFORM f_leitura_bseg.Opes:PERFORM USING v_variavel_referencia CHANGING v_variavel_valorTABLES t_tabela.
Comandos bsicos FORM/PERFORM
CLEAR
-CLEARLimpa/Inicializa a header line da tabela interna.
Exemplo:CLEAR t_tabela01.
REFRESH
-REFRESHEste comando limpa os dados da tabela interna. No libera a memria carregada.
Exemplo:REFRESH t_tabela01.
FREE
-FREEEste comando apaga os dados da tabela interna, liberando a memria onde ela estavacarregada.
Exemplo:FREE t_tabela01.Tabela interna Limpeza e Inicializao
READ
-READRealiza a leitura de dados de uma tabela interna.
READ TABLE WITH KEY
READ TABLE INDEX
Exemplos:READ TABLE table01 WITH KEY nome = w_nome.Busca por campo especfico
READ TABLE table02 INDEX w_index.Busca por posio do registro
SY-SUBRC
-SY-SUBRC um campo de sistema, que retorna o resultado do ltimo comando processado.Se estiver abaixo de um READ, retorna a condio de processamento do mesmo. Se SY-SUBRC = 0,Significa que foi processado corretamente. Diferente disso, ERRO.
Exemplos:READ TABLE table WITH KEY nome = w_nome.
IF sy-subrc 0. WRITE: /001 Erro na leitura do arquivo.ENDIF.Tabela interna READ / Leitura
Tabela interna APPEND / Gravando
MODIFY
-MODIFYComando para alterar registro de uma tabela interna.
MODIFY .
Exemplos:MODIFY t_tabela01.
Opes:MODIFY t_tabela02 INDEX sy-index.
DELETE
-DELETEComando para deleo de registro de uma tabela interna.
DELETE .
Exemplos:DELETE t_tabela01.
Opes:DELETE t_tabela02 INDEX sy-index.DELETE t_tabela03 WHERE cracha = 3005.DELETE t_tabela04 FROM 3 to 5.
Tabela interna MODIFY/DELETE
COLLECT
-COLLECT .Este comando tambm insere registros na tabela interna. A particularidade que, ele analisaos campos alfanumricos. Estes sendo iguais, ele realiza a soma dos campos numricos.NAME PRICELH 100000AR 50000FL 10000000LH 50000Soma os campos numricos150000Tabela interna COLLECT
SORT
-SORTComando utilizado para se sortear a tabela interna.
SORT .
Exemplos:SORT t_tabela01.
Opes:SORT t_tabela02 BY campo2 campo3.SORT t_tabela03 BY campo4 ASCENDING campo5 DESCENDING.
DESCRIBE
-DESCRIBEComando para gerar informaes sobre determinada tabela interna.
DESCRIBE TABLE LINES
Exemplos:DESCRIBE TABLE t_tabela01 LINES LINHAS N linhas preenchidas OCCURS OCORRENCIA. N ocorrncias na def. da tabela
Obs.: As variveis utilizadas para se obter o resultado (LINHAS/OCORRENCIA) devem ser definidas com tipo inteiro (I).Tabela interna SORT/DESCRIBE
Tabela DB SAP - SELECTSELECT
-SELECTComando SQL utilizado para leitura das informaes de uma tabela do banco de dados SAP.Possui diversas variaes.
-Select de todos os campos de uma tabela.
SELECT * FROM . instrues.ENDSELECT.
Obs.: O comando SELECT em si, pede um ENDSELECT para fech-lo. Em algumas variaes isto no se faz necessrio. Esta variao no um modo eficiente para acesso ao banco. No indicado, mesmo com incluso da clausula WHERE.
-Select para variveis.
SELECT campo1 campo2 campo3 INTO (var01, var02, var03, ) FROM WHERE .
-Select inserindo em uma tabela interna.
SELECT INTO TABLE FROM WHERE .
-Select inserindo dados em determinados campos de uma tabela interna.
SELECT INTO CORRESPONDING FIELDS OF TABLE FROM WHERE .
-Select inserindo dados em uma tabela, usando como base os dados de outra j preenchida.
SELECT INTO TABLE FROM FOR ALL ENTRIES IN WHERE .
Obs.1: Se ao buscar os registros com FOR ALL ENTRIES, e dois registros forem iguais, o sistema s ir trazer um. Portanto CUIDADO com este tipode select. Sempre buscar um campo que garanta a unicidade dos dados.
Obs.2: Sempre verificar se a tabela interna, de referncia< tabela interna1>, contm dados e os mesmo estejam ordenados.
Tabela DB SAP - SELECT
-Select para buscar apenas um registro especfico.
SELECT SINGLE INTO TABLE FROM WHERE .
Obs.: Para o uso do SELECT SINGLE, deve-se utilizar a chave completa da tabela. Se no possuir as chaves todas, utilizar a opo UP TO 1 ROWS.
SELECT INTO TABLE FROM UP TO 1 ROW WHERE .ENDSELECT.
-Select com range de valores.
SELECT INTO TABLE FROM WHERE BETWEEN AND .
-Select em um intervalo de valores
SELECT INTO TABLE FROM WHERE IN (valor_mnimo,valor_mximo).Tabela DB SAP - SELECT
INSERT
-INSERT1.Insere registros na tabela do dicionrio.
INSERT INTO [ FROM ][ VALUES ] .
Exemplos:TABLES: SPFLI.
DATA: WA LIKE SPFLI.
WA-CARRID = 'LH'.WA-CITYFROM = 'WASHINGTON'.INSERT INTO SPFLI VALUES WA.
WA-CARRID = 'UA'.WA-CITYFROM = 'LONDON'.INSERT SPFLI FROM WA.
Grava os valores da estrutura WA na tabela SPFLI.Mesmo feito do comando acima.Tabela DB SAP - INSERT
INSERT
2.Insere registros na tabela do dicionrio, a partir de uma tabela interna.
INSERT INTO FROM TABLE [ ACCEPTING DUPLICATE KEYS ].
Exemplos:TABLES: SPFLI.
DATA: ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.
ITAB-CARRID = 'UA'.ITAB-CONNID = '0011'.APPEND ITAB.
ITAB-CARRID = 'LH'.ITAB-CONNID = '1245'.APPEND ITAB.
ITAB-CARRID = 'AA'.ITAB-CONNID = '4574'.APPEND ITAB.INSERT SPFLI FROM TABLE ITAB.
Tabela DB SAP - INSERT
UPDATE
-UPDATE1.Modifica registros na tabela do dicionrio. Um registro por vez.
UPDATE [ FROM ].
Exemplos:TABLES: SPFLI.
DATA: WA LIKE SPFLI.
MOVE 'AA' TO WA-CARRID.MOVE '0064' TO WA-CONNID.MOVE 'WASHINGTON' TO WA-CITYFROM.UPDATE SPFLI FROM WA.
MOVE 'LH' TO SPFLI-CARRID.MOVE '0017' TO SPFLI-CONNID.MOVE 'BERLIN' TO SPFLI-CITFROM.UPDATE SPFLI.
Tabela DB SAP - UPDATE
UPDATE
2.Modifica registros na tabela do dicionrio. Vrios registros por vez.
UPDATE SET .. [ WHERE condio ].
Exemplos:TABLES: SFLIGHT.UPDATE SFLIGHT SET PLANETYPE = 'A310' FLPRICE = FLPRICE - '10000' WHERE CARRID = 'LH'.
3. Modifica registros na tabela do dicionrio, a partir de uma tabela interna.
UPDATE FROM TABLE .
Exemplos:TABLES: SPFLI.
DATA: ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.
ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.APPEND ITAB.ITAB-CARRID = 'LH'. ITAB-CONNID = '1245'.APPEND ITAB.ITAB-CARRID = 'AA'. ITAB-CONNID = '4574'.APPEND ITAB.UPDATE SPFLI FROM TABLE ITAB.Tabela DB SAP - UPDATE
MODIFY
-MODIFYEste comando tambm altera registros na tabela do dicionrio, mas contm uma diferenaimportante. Com este comando, se o registro a ser alterado no for encontrado, ele inserido na tabela do dicionrio.Segue o mesmo esquema do comando UPDATE.
MODIFY [ FROM ].
MODIFY FROM TABLE .
Exemplos:TABLES: SPFLI.
DATA: WA LIKE SPFLI.
MOVE 'AA' TO WA-CARRID.MOVE '0064' TO WA-CONNID.MOVE 'WASHINGTON' TO WA-CITYFROM.MODIFY SPFLI FROM WA.
TABLES: SPFLI.
DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.
ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.APPEND ITAB.ITAB-CARRID = 'LH'. ITAB-CONNID = '1245'.APPEND ITAB.ITAB-CARRID = 'AA'. ITAB-CONNID = '4574'.APPEND ITAB.MODIFY SPFLI FROM TABLE ITAB.Tabela DB SAP - MODIFY
DELETE
-DELETE1.Deleta registros da tabela do dicionrio.
DELETE FROM .
Exemplos:TABLES: SPFLI.
DATA: WA LIKE SPFLI.
MOVE 'AA' TO WA-CARRID.MOVE '0064' TO WA-CONNID.
DELETE SPFLI FROM WA.
2.Deleta registros da tabela do dicionrio. Vrios registros por vez.
DELETE FROM WHERE .
Exemplos:TABLES: SFLIGHT.
DELETE FROM SFLIGHT WHERE PLANETYPE = 'A310' AND CARRID = 'LH'.Sero deletados os registros na estrutura WA, de acordo com os campos chave.Tabela DB SAP - DELETE
DELETE
3. Modifica registros na tabela do dicionrio, a partir de uma tabela interna.
DELETE FROM TABLE .
Exemplos:TABLES SPFLI.
DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.
ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.APPEND ITAB.ITAB-CARRID = 'LH'.ITAB-CONNID = '1245'.APPEND ITAB.ITAB-CARRID = 'AA'.ITAB-CONNID = '4574'.APPEND ITAB.
DELETE SPFLI FROM TABLE ITAB.Os registros so deletados baseando-se nos campos chave.Tabela DB SAP - DELETE
COMMIT WORK
Efetiva as operaes realizadas nas tabelas para o SAP.Enquanto o COMMIT no executado, o SAP trabalha em uma rea separada. S carrega as modificaes para o banco, quando o comando executado.
ROLLBACK WORK
Desfaz as modificaes efetuadas pelo programa, antes de ser executado o COMMIT.Aps a execuo do COMMIT, o ROLLBACK no mais consegue desfazer as modificaes.
Exemplos:COMMIT WORK.DELETE FROM bkpf WHERE INSERT zteste_001 from zteste_001.
IF sy-subrc 0. ROLLBACK WORK. continue.ELSE. COMMIT WORK.ENDIF.Primeira gravao.Insere registros na tabela.Se ocorrer erro na insero, desfaz tudo o que foi feito aps o primeiro COMMIT.Efetiva operaes realizadas at este COMMIT.Deleta registros da tabela.COMMIT WORK / ROLLBACK WORK
CONCATENATEUtilizado para concatenar/juntar vrias strings em uma s.
CONCATENATE INTO [ SEPARATED BY ].
CONDENSEUtilizado para eliminar os espaos em branco de uma string.
CONDENSE [ NO-GAPS ].
TRANSLATEUtilizado para transformar os caracteres em maisculos ou minsculos. E tambm paraconverter uma string a partir de outra.
TRANSLATE TO UPPER CASE.TRANSLATE TO LOWER CASE.
TRANSLATE USING .
DATA: STRING1 (10) VALUE 'AbCdEfGhIj', STRING2 (20) VALUE 'AxbXCydYEzfZ'.
TRANSLATE STRING1 USING STRING2.
WRITE / STRING1.
A sada ser a seguinte string : xXyYzZGhIjTrabalhando com cadeia de caracteresA string utilizada para o TRANSLATE, STRING2 tem a seguinte instruo :A xb XC yd YE zf Z
REPLACESubstitui o contedo de uma string por outra, em uma outra string destino.
Exemplos:DATA: T(10) VALUE 'abcdefghij', STRING LIKE T, STR1(4) VALUE 'cdef', STR2(4) VALUE 'klmn', STR3(2) VALUE 'kl', STR4(6) VALUE 'klmnop'.
STRING = T.REPLACE STR1 WITH STR2 INTO STRING.WRITE / STRING.
A sada na string ser a seguinte : abklmnghij
STRING = T.REPLACE STR1 WITH STR3 INTO STRING.WRITE / STRING.STRING = T.
A sada na string ser a seguinte : abklghij
REPLACE STR1 WITH STR4 INTO STRING.WRITE / STRING.
A sada na string ser a seguinte : abklmnopghTrabalhando com cadeia de caracteres
SEARCHPermite que se busque uma string em uma cadeia de caracteres ou em uma tabela interna.
SY-SUBRC = 0, string encontrada.SY-FDPOS = , retorna a posio em que foi encontrada.SY-SUBRC = 4, string no encontrada.
SEARCH FROM .
SEARCH FOR [ AND MARK ].
Obs.: No caso de busca em tabela interna, a varivel SY-TABIX retorna a linha em que a string procurada foi encontrada.
STRLENDevolve o tamanha da string referenciada.
v_tamanho = STRLEN( IVAN RODRIGO ).
v_tamanho = STRLEN( TEXT-001 ).Trabalhando com cadeia de caracteres
RELATRIOS
Formatando listas : OverviewComandos de sada/Opes de formatao :WRITEFORMATNEW-PAGE
Eventos :TOP-OF-PAGEEND-OF-PAGE
Elementos de texto :TEXT-SYMBOLSHEADINGSSELECTION TEXTS
System fields
WRITE
Formato de sada dos tipos de dados pr-definidos :
Tipo DadoTamanho SadaPositioningCtamanho do campoesquerdaD8esquerdaF22direitaI11direitaNtamanho do campoesquerdaP2 * tamanho do campo + 1direitaT6esquerdaX2 * tamanho do campoesquerda
Revendo as opes do comando WRITE:
... NO-ZERO.... NO-SIGN.... DD/MM/YY.... MM/DD/YY.... DD/MM/YYYY.... MM/DD/YYYY.... DDMMYY.... CURRENCY w.... DECIMALS d.... ROUND R.... UNIT u.... USING EDIT MASK mask.... UNDER g.... NO-GAP.... LEFT-JUSTIFIED.... CENTERED.... RIGHT-JUSTIFIED.Comando WRITE
WRITE
Exemplos:
WRITE: ****************.WRITE: Date, sy-datum.
WRITE: Time, sy-uzeit.
WRITE: 5 `****************.
WRITE: /10 Usurio:, 30 sy-uname.
SKIP 2.
ULINE.
ULINE /5(40).
V_DATUM = SY-DATUM.V_UZEIT = SY-UZEIT.
WRITE: 5 Datum, 20 V_DATUM DD/MM/YYYY.
WRITE: /10 Time, 25 V_TIME USING EDIT MASK __:__:__.Comando WRITE
FORMAT
-Trabalhando com cores.
Opes para se modificar as cores da lista, via comando FORMAT.
1. COLOR n [ON]or COLOR OFF2. INTENSIFIED [ON]or INTENSIFIED OFF3. INVERSE [ON]or INVERSE OFF4. HOTSPOT [ON]or HOTSPOT OFF5. INPUT [ON]or INPUT OFF RESET
FORMAT INTENSIFIED OFF.FORMAT INTENSIFEID.FORMAT COLOR COL_KEY.FORMAT COLOR COL_TOTAL INTENSIFIED OFF.WRITE: /05 V_TOTAL COLOR COL_POSITIVE.Comando FORMAT
NEW-PAGE
O comando NEW-PAGE inicia uma nova pgina, durante o processamento da lista.Ele no imprime pginas em branco. Ele as ignora.O comando incrementa o contador de pginas do sistema varivel SY-PAGNO.Para ser executado, a opo NO STANDARD PAGE HEADING deve ser colocada no programa.
END-OF-PAGE
O comando executado sempre a rea definida para impresso na pgina acaba.
LINE-SIZE colCria o report com colunas por linha.
LINE-COUNT n(m)Cria o report com linhas por pgina, das quais (m) linhas sero reservadas para o processamento do comando END-OF-PAGE.
ALGUNS CAMPOS DO SISTEMA PARA CRIAO DE LISTAS
SY-PAGNO : nmero da pgina corrente.SY-LINNO : nmero da linha corrente.SY-COLNO : nmero da coluna em que o cursor est posicionado.Comando NEW-PAGE / END-OF-PAGE
ALV
ALV GridO Alv (Abap List Viewer) Grid uma ferramenta flexvel para exibio de relatrios ou rvore.
So disponibilizados botes que permitem ao usurio manipular os dados (classificar, filtrar e somar).
Alm dos botes standards do sistema, possvel criar novos botes conforme a necessidade do usurio.
Isto pode eliminar certas etapas no processo de gerenciamento de eventos para controles .
ALV GridO Abap List Viewer padroniza e simplifica o uso de listas e relatrios no sistema R/3. O Abap List Viewer fornece interfaces e formatos de lista padronizados para todas as listas e relatrios.
Pode-se especificar os campos a serem exibidos no relatrio e modificar a seqncia em que esses campos so exibidos. Alm disso, pode-se ajustar a largura das colunas individuais para atender a requisitos especficos.
ALV GridO List Viewer permite :
Usar variantes de exibio standard predefinidas pela SAP .
Ordenar os dados : crescente e decrescente.Ordenar as linhas de acordo com os valores das colunas, em seqncia crescente ou decrescente.
Definir um filtro.Exibir somente os campos desejados.
Formar totais e subtotais.Em uma lista, possvel calcular totais e subtotais de uma ou mais colunas selecionadas.
ALV GridExibio de informaes detalhadas.Pode-se acessar informaes detalhadas de linhas individuais da lista.
Pesquisa. possvel pesquisar informaes especficas.
Impresso de listas e pr-visualizao.Pode-se imprimir as listas e chamar uma pr-exibio antes de imprimir.
ALV GridExportao de dados.Pode-se copiar as listas, por exemplo, para uma planilha ou grav-las como arquivo local.
Deslocar colunas.
O Alv Grid formado basicamente por :- Uma barra de ferramenta- Um ttulo- Uma lista de sada.
Um programa ALV simplesPrograma : Z_ALV_SIMPLE.
Estruturas de um programa ALVO programa endereado no link Exemplo ALV 01.doc contm as estruturas necessrias para se desenvolver um programa mais abrangente e formatado.
ExerccioRelatrio.
Criar um relatrio que dever buscar os documentos contbeis (BSEG) e seus itens (BKPF), listando-os, ordenados por documento+item+datadocumento.
Dever existir uma somatria por documento contbil, de todos os campos devalor. Incluir entre os documentos uma linha de separao.
O relatrio dever conter um cabealho que identifique o ttulo do relatrio, a hora e data de execuo, alm do usurio.
Incluir tambm indicador de pginas.
O cabealho dever ter cor diferente das demais linhas do relatrio.
J as linhas de detalhe devem se alterar entre duas cores, de mesma tonalidade, mas de intensidades diferentes.
Exerccio1.Dados para seleo das informaes :
BSEG (documentos contbeis)Exerccio (GJAHR) = 2001Tipo de documento (BLART) = AB ou SA ou SBData do documento (BLDAT) = mes 09 e ano 2001Status do documento (BSTAT) = branco
Buscar os itens na tabela BKPF, pela chave.
Incluir ao final do relatrio um demonstrativo do total de registros lidos das tabelas.
Campos a inserir no relatrio : BSEG (BUKRS, BELNR, GJAHR, BLART,BLDAT, BKTXT, BSTAT) e BSEG (BUZEI, AUGCP, AUGBL, WRBTR, PSWBT, PSWSL).
ExerccioTransformar o relatrio do item 1, em uma relatrio ALV Grid.
Retirar os valores fixos para seleo dos dados e incluir uma tela de seleo,com os seguintes campos : Empresa, Documento, Exerccio, Tipo documentoe Data documento.
Validar - ao menos um dos campos da tela de seleo dever estar preenchi-do.
Incluir no cabealho, o logotipo da Softtek.
Incluir sumarizador pelos campos de valor.
On Line / Module Pool
IntroduoOnline so tipos de programas que, como o prprio nome indica, funcionam online, ou seja, instantaneamente. Por isso, eles so dotados de uma maior capacidade de customizao das telas e maior flexibilidade para criarem uma interface mais amigvel com o usurio.
Eles so especialmente teis na criao de aplicaes que necessitem de subtelas ou quando necessrio fornecer informaes aos usurios de outra maneira que no um relatrio. Na maioria dos casos, os programas standard funcionam assim.
Estrutura de um Module Pool
Estrutura de um Module PoolScreenDesenho da Tela (Definio dos Campos)Lista de campos para tratamento de errosDefinio dos mdulos PBO e PAI relacionados com a tela
GUI Status e GUI TitleDefinio dos comandos de boto e menus disponveis:Definio do ttulo de telaHabilitao dos comandos standards existentesCriao de novos comandos necessrios
Evento PBOEvento executado antes da exibio da tela para o usurio:Definio do GUI Status e GUI Title para a tela correspondenteSeleo inicial de dados e atribuio de valores a serem exibidos na tela
Evento PAIEvento executado aps um comando do usurio (enter, click de um boto, etc...)Verificao do cdigo de comando executado (definido no GUI Status)Cdigo ABAP para execuo da lgica do comando
Desenvolvendo um Module PoolSE80A transao SE80 a mais adequada para se desenvolver um module pool, poispossibilita acesso dinmico a qualquer elemento do programa, bem como as estru-turas GUI, includes, modules e telas.Os programas desenvolvidos pelos clientes no SAP, devem iniciar com SAPMZ.Por exemplo, SAPMZABAP05.A tela desenhada no Screen Painter Grfico, que possui ferramentas de fcil utilizao.A programao das telas feita em uma rea da prpria tela, destinada a lgica deprogramao da mesma.As sub-rotinas chamadas a partir da lgica de programao das telas, recebem onome de mdulo MODULE... Os mdulos do PBO ficam armazenados em um include do prprio PBO. O mesmoacontecendo com os mdulos do PAI.
SE80
Module Pool Exemplo
Tela Lgica de Processamento
Module Pool Mais conceitos
Screen Painter Grfico
SubtelaA Subtela uma rea na Tela onde podemos variar os campos conforme a necessidade, no deixando fixo os campos numa tela e no havendo necessidade de replicar alguns campos e vrias telas.
Podemos dividir a definio da Subtela em 2 Partes:
Tela de Origem: onde definimos uma rea especfica para chamada da Subtela.
Subtela: Tela onde sero definidos os campos da Subtela.
SubtelaNa criao da Tela em que ser feita a referncia Subtela, criamos uma rea especfica para esta Subtela. Tela de Origem
Subtela
Subtela Tela de OrigemNa PBO (PROCESS BEFORE OUTPUT) dever existir um comando para a execuo desta subtela, sendo: CALL SUBSCREEN sub1 INCLUDING programa dynpronr.SUB1 Seria o nome da rea definida para a SubtelaPROGRAMA Nome do Programa onde se encontra a Subtela. Normalmente, se refere ao mesmo programa da Tela NormalDYNPRONR Nmero da Subtela a ser executadaQuando este comando executado, a PBO desta Subtela executada, com todas as rotinas definidas nela.Na PAI (PROCESS AFTER INPUT) dever existir um comando para a execuo desta subtela, sendo:CALL SUBSCREEN sub1.Onde:SUB1 Seria o nome da rea definida para a Subtela (como na PBO)Quando este comando executado, a PAI desta subtela executada, com todas as rotinas definidas nela. A Subtela no tem PF-STATUS definido, utiliza-se as definies da Tela de Origem, de onde est sendo executada a Subtela.
Table Control
Table Control
Table Control
Table Control
Table Control Definies de CdigoPara utilizao de uma Table Control necessrio varivel tc1, que deve ter o mesmo nome da Table Control desenhada na Tela. A informao 9000 se refere ao cdigo da Tela onde est a Table Control. CONTROLS: tc1 TYPE TABLEVIEW USING SCREEN 9000.Na PBO deve exitir o seguinte comando: LOOP WITH CONTROL tc1.ENDLOOP.No PBO, sero feitos n loopings, conforme a quantidade de linhas que teremos da Table Control na Tela. No PAI, este Loop faz uma leitura de todas as linhas da Table Control que estiverem sendo exibidas na tela, tendo os campos contedo ou no. Dentro deste Looping (tanto na PBO como na PAI) podemos incluir quantos MODULEs forem necessrios. Lembrando que estes MODULEs sero executados para todas as linhas da Table Control que estiverem sendo exibidas na tela, como explicado acima.
Table Control Definies de CdigoSugere-se que estas informaes da Table Control sejam movimentadas para uma tabela interna, j que na PBO todos os dados da Tela so limpos para receberem os dados novamente. Ento, o que normalmente utiliza-se criar uma Tabela Interna com o mesmo formato da Table Control e na PAI feito um MODULE onde se grava os dados da Tela na Tabela Interna. Na PBO, estes dados so movimentados novamente para a Table Control.
Comandos teis:CHAIN Verifica quando um campo alterado ou utilizado.
Table Control Atributos da Table ControlAlguns Atributos da Table Control podem ser alteradas conforme a necessidade do programa, sendo:
Table Control Atributos da Table Control(*1) O parmetro COLS uma outra estrutura que contm a definio de alguns dados por campo da Table Control.Para alterao destes parmetros, basta alterar o contedo dos campos, movimentando a informaes para a Table Control-Campo (Ex.: TC1-TOP_LINE = 5). Mltiplos Table Control Para cada Table Control desenhada na Tela, existir um Loop/Endloop no PAI e PBO; O Nome das Table Controls devem ser diferentes entre elas;
Table Control Inibir e Exibir CamposPara os campos da Tela, com excesso de Table Control, para inibir e exibir campos utilizado o seguinte comando:
LOOP AT SCREEN. SCREEN-INVISIBLE = XENDLOOP.
Onde X pode ser 0 para exibir e 1 para inibir.
Caso seja necessrio escolher um campo em especfico, basta fazer o filtro atravs do campo SCREEN-NAME. Tambm podem ser utilizados os campos SCREEN-GROUP1, SCREEN-GROUP2, SCREEN-GROUP3 e SCREEN-GROUP4.
Table Control Inibir e Exibir CamposPara Table Control, caso haja necessidade de inibir uma coluna da Table Control, o comando deve ser outro: DATA: wa TYPE cxtab_column . LOOP AT tc1-COLS INTO wa . wa-INVISIBLE = X. MODIFY tab1-COLS FROM wa . ENDLOOP.Onde: TC1 Nome da Table ControlWA Varivel com tipo referenciando TYPE CXTAB_COLUMNX Se informado 0 o campo no ser inibido, se 1 o campo ser inibidoCom esse comando, todos os campos sero inibidos pois no h nenhuma checagem de qual campo dever ser inibido. Para escolher o campo, usar a varivel WA-SCREEN-NAME que contm o nome do campo. Tambm podem ser utilizados os campos WA-SCREEN-GROUP1, WA-SCREEN-GROUP2, WA-SCREEN-GROUP3 e WA-SCREEN-GROUP4.
ExerccioExerccio de Module Pool
Utilizar o exerccio 2 do tpico anterior (ALV). Ser um programa com duastelas. A primeira se equivaler a tela de seleo dos dados. Na segunda tela, acima, os campos que foram digitados na primeira travados;abaixo, criar uma lista (table control), com os itens do documento solicitado.Para este programa, os campos da primeira tela documento e ano, deveroser obrigatrios.
Batch-Input
Call Transaction
ObjetivosO que Batch-InputComo realizar uma carga atravs desta tcnicaCall TransactionDirect Input
Transferindo Dados Externos
Nunca gravar na base direto
Seqncia para codificao
Funes Para Batch-Input
Transao SHDB
REPORT Z_TESTE .
DATA: BEGIN OF BDC_TAB OCCURS 0. INCLUDE STRUCTURE BDCDATA.DATA: END OF BDC_TAB.
DATA: BEGIN OF REGISTRO OCCURS 0, ID LIKE SCUSTOM-ID, TEL LIKE SCUSTOM-TELEPHONE, END OF REGISTRO.
Programa Modelo Batch-Input
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
PARAMETERS: ARQUIVO(80) TYPE C DEFAULT 'H:\TEAMSAP\ABAP\batch.txt LOWER CASE. SELECTION-SCREEN END OF BLOCK 1.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-002.
PARAMETERS: TP_UNIX RADIOBUTTON GROUP TP, TP_WS RADIOBUTTON GROUP TP DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK 2.
DATA: NOME_ARQ LIKE RLGRAP-FILENAME.
Programa Modelo Batch-Input - Continuao
START-OF-SELECTION.
Nome_arq = arquivo.
IF TP_UNIX = 'X'. PERFORM ABRE_ARQUIVO_UNIX. ELSE. PERFORM ABRE_ARQUIVO_WINDOWS. ENDIF.
PERFORM OPEN_GROUP. PERFORM PREPARA_BDC. PERFORM FECHA_GROUP.
END-OF-SELECTION.Programa Modelo Batch-Input - Continuao
FORM ABRE_ARQUIVO_UNIX.
OPEN DATASET NOME_ARQ FOR INPUT IN TEXT MODE.
DO. READ DATASET NOME_ARQ INTO REGISTRO. IF SY-SUBRC NE 0. EXIT. ENDIF. APPEND REGISTRO. ENDDO.
ENDFORM.Programa Modelo Batch-Input - Continuao
FORM ABRE_ARQUIVO_WINDOWS.
CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = NOME_ARQ FILETYPE = 'ASC' TABLES DATA_TAB = REGISTRO EXCEPTIONS CONVERSION_ERROR = 1 FILE_OPEN_ERROR = 2 FILE_READ_ERROR = 3 INVALID_TABLE_WIDTH = 4 INVALID_TYPE = 5 NO_BATCH = 6 UNKNOWN_ERROR = 7 GUI_REFUSE_FILETRANSFER = 8 OTHERS = 9. Programa Modelo Batch-Input - Continuao
IF SY-SUBRC NE 0. WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ. EXIT. ENDIF.
ENDFORM. ABRE_ARQUIVO_WINDOWSPrograma Modelo Batch-Input - Continuao
FORM OPEN_GROUP.
CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = SAP_2' KEEP = 'X' USER = SY-UNAME EXCEPTIONS CLIENT_INVALID = 1 DESTINATION_INVALID = 2 GROUP_INVALID = 3 GROUP_IS_LOCKED = 4 HOLDDATE_INVALID = 5 INTERNAL_ERROR = 6 QUEUE_ERROR = 7 RUNNING = 8 SYSTEM_LOCK_ERROR = 9 USER_INVALID = 10 OTHERS = 11.Programa Modelo Batch-Input - Continuao
IF SY-SUBRC NE 0. WRITE: 'Erro no Open Group'. EXIT. ENDIF.
ENDFORM. OPEN_GROUPPrograma Modelo Batch-Input - Continuao
FORM PREPARA_BDC.
REFRESH BDC_TAB.
LOOP AT REGISTRO.
PERFORM PREENCHE_BDC USING: 'X' 'SAPMTFBA' '0100', ' ' 'SCUSTOM-ID' REGISTRO-ID, ' ' 'BDC_OKCODE' '/00',
'X' 'SAPMTFBA' '0200', ' ' 'SCUSTOM-TELEPHONE' REGISTRO-TEL, ' ' 'BDC_OKCODE' '=SAVE'.
PERFORM INSERT. REFRESH BDC_TAB. ENDLOOP.
ENDFORM.Programa Modelo Batch-Input - Continuao
FORM PREENCHE_BDC USING DYNBEGIN NAME VALUE.
IF DYNBEGIN = 'X'. MOVE: NAME TO BDC_TAB-PROGRAM, VALUE TO BDC_TAB-DYNPRO, 'X' TO BDC_TAB-DYNBEGIN. APPEND BDC_TAB. ELSE. MOVE: NAME TO BDC_TAB-FNAM, VALUE TO BDC_TAB-FVAL. APPEND BDC_TAB. ENDIF.
CLEAR BDC_TAB.
ENDFORM.Programa Modelo Batch-Input - Continuao
FORM INSERT.
CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = 'TFBA' TABLES DYNPROTAB = BDC_TAB EXCEPTIONS INTERNAL_ERROR = 1 NOT_OPEN = 2 QUEUE_ERROR = 3 TCODE_INVALID = 4 PRINTING_INVALID = 5 POSTING_INVALID = 6 OTHERS = 7.
IF SY-SUBRC NE 0. WRITE: 'Erro no Insert'. EXIT. ENDIF.ENDFORM.Programa Modelo Batch-Input - Continuao
FORM FECHA_GROUP.
CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS NOT_OPEN = 1 QUEUE_ERROR = 2 OTHERS = 3.
IF SY-SUBRC NE 0. WRITE: 'Erro no Open Group'. EXIT. ELSE. WRITE: 'Sesso Criada'. ENDIF.
ENDFORM.Programa Modelo Batch-Input - Continuao
Batch-Input X Call Transaction
Pg. 01REPORT Z_TESTE .
DATA: BEGIN OF BDC_TAB OCCURS 0. INCLUDE STRUCTURE BDCDATA.DATA: END OF BDC_TAB.
DATA: BEGIN OF MSG_TAB OCCURS 0. INCLUDE STRUCTURE BDCMSGCOLL.DATA: END OF MSG_TAB.
DATA: BEGIN OF REGISTRO OCCURS 0, ID LIKE SCUSTOM-ID, TEL LIKE SCUSTOM-TELEPHONE, END OF REGISTRO.Programa Modelo Call Transaction
Pg. 02SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.PARAMETERS: ARQUIVO(80) TYPE C DEFAULT 'H:\TEAMSAP\ABAP\batch.txt' LOWER CASE.SELECTION-SCREEN END OF BLOCK 1.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-002.
PARAMETERS: TP_UNIX RADIOBUTTON GROUP TP, TP_WS RADIOBUTTON GROUP TP DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK 2.
SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE TEXT-003.PARAMETERS: ALL RADIOBUTTON GROUP MODE DEFAULT 'X', ERRO RADIOBUTTON GROUP MODE, NADA RADIOBUTTON GROUP MODE.
SELECTION-SCREEN END OF BLOCK 3.Programa Modelo Call Transaction Continuao
Pg. 03DATA: NOME_ARQ LIKE RLGRAP-FILENAME, MODO(1) TYPE C, CONT TYPE I VALUE 0, C_TEXTO(255) TYPE C.
START-OF-SELECTION.
NOME_ARQ = ARQUIVO.
IF ALL = 'X'. MODO = 'A'.ELSEIF ERRO = 'X'. MODO = 'E'.ELSE. MODO = 'N'.ENDIF.Programa Modelo Call Transaction Continuao
Pg. 04IF TP_UNIX = 'X'. PERFORM ABRE_ARQUIVO_UNIX.ELSE. PERFORM ABRE_ARQUIVO_WINDOWS.ENDIF.
PERFORM PREPARA_BDC.IF CONT > 0. PERFORM FECHA_BDC.ENDIF.Programa Modelo Call Transaction Continuao
Pg. 05FORM PREPARA_BDC. REFRESH BDC_TAB.LOOP AT REGISTRO. PERFORM PREENCHE_BDC USING: 'X' 'SAPMTFBA' '0100', ' ' 'SCUSTOM-ID' REGISTRO-ID, ' ' 'BDC_OKCODE' '/00',
'X' 'SAPMTFBA' '0200', ' ' 'SCUSTOM-TELEPHONE' REGISTRO-TEL, ' ' 'BDC_OKCODE' '=SAVE'. WRITE: / REGISTRO-ID, REGISTRO-TEL. PERFORM INSERT. REFRESH BDC_TAB.ENDLOOP.ENDFORM.Programa Modelo Call Transaction Continuao
Pg. 06FORM PREENCHE_BDC USING DYNBEGIN NAME VALUE.
IF DYNBEGIN = 'X'. MOVE: NAME TO BDC_TAB-PROGRAM, VALUE TO BDC_TAB-DYNPRO, 'X' TO BDC_TAB-DYNBEGIN. APPEND BDC_TAB. ELSE. MOVE: NAME TO BDC_TAB-FNAM, VALUE TO BDC_TAB-FVAL. APPEND BDC_TAB. ENDIF. CLEAR BDC_TAB.ENDFORM.Programa Modelo Call Transaction Continuao
Pg. 07FORM INSERT. CALL TRANSACTION 'TFBA' USING BDC_TAB MODE MODO UPDATE 'S' MESSAGES INTO MSG_TAB. IF SY-SUBRC NE 0. CONT = CONT + 1. PERFORM PREPARA_PASTA_ERRO. ENDIF. PERFORM MENSAGENS.ENDFORM.Programa Modelo Call Transaction Continuao
Pg. 08FORM ABRE_ARQUIVO_UNIX.
OPEN DATASET NOME_ARQ FOR INPUT IN TEXT MODE.
DO. READ DATASET NOME_ARQ INTO REGISTRO. IF SY-SUBRC NE 0. EXIT. ENDIF. APPEND REGISTRO.ENDDO.
ENDFORM.Programa Modelo Call Transaction Continuao
Pg. 09FORM ABRE_ARQUIVO_WINDOWS.
CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = NOME_ARQ FILETYPE = 'ASC' TABLES DATA_TAB = REGISTRO EXCEPTIONS CONVERSION_ERROR = 1 FILE_OPEN_ERROR = 2 FILE_READ_ERROR = 3 INVALID_TABLE_WIDTH = 4 INVALID_TYPE = 5 NO_BATCH = 6 UNKNOWN_ERROR = 7 GUI_REFUSE_FILETRANSFER = 8 OTHERS = 9.Programa Modelo Call Transaction Continuao
Pg.10 IF SY-SUBRC NE 0. WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ. EXIT. ENDIF.
ENDFORM.Programa Modelo Call Transaction Continuao
Pg.11FORM MENSAGENS.
LOOP AT MSG_TAB.
SELECT SINGLE TEXT INTO C_TEXTO FROM T100 WHERE SPRSL = 'PT' AND ARBGB = MSG_TAB-MSGID AND MSGNR = MSG_TAB-MSGNR.
IF MSG_TAB-MSGV1 NE SPACE. REPLACE '&1' WITH MSG_TAB-MSGV1 INTO C_TEXTO. IF SY-SUBRC NE 0. REPLACE '&' WITH MSG_TAB-MSGV1 INTO C_TEXTO. ENDIF. CONDENSE C_TEXTO. ENDIF.Programa Modelo Call Transaction Continuao
Pg.12 IF MSG_TAB-MSGV2 NE SPACE. REPLACE '&2' WITH MSG_TAB-MSGV2 INTO C_TEXTO. IF SY-SUBRC NE 0. REPLACE '&' WITH MSG_TAB-MSGV2 INTO C_TEXTO. ENDIF. CONDENSE C_TEXTO. ENDIF. IF MSG_TAB-MSGV3 NE SPACE. REPLACE '&3' WITH MSG_TAB-MSGV3 INTO C_TEXTO. IF SY-SUBRC NE 0. REPLACE '&' WITH MSG_TAB-MSGV3 INTO C_TEXTO. ENDIF. CONDENSE C_TEXTO. ENDIF.Programa Modelo Call Transaction Continuao
Pg.13 IF MSG_TAB-MSGV4 NE SPACE. REPLACE '&4' WITH MSG_TAB-MSGV4 INTO C_TEXTO. IF SY-SUBRC NE 0. REPLACE '&' WITH MSG_TAB-MSGV4 INTO C_TEXTO. ENDIF. CONDENSE C_TEXTO. ENDIF. CONCATENATE MSG_TAB-MSGTYP ' - ' C_TEXTO INTO C_TEXTO. WRITE: C_TEXTO.
ENDLOOP. REFRESH MSG_TAB.
ENDFORM.Programa Modelo Call Transaction Continuao
Pg.14FORM PREPARA_PASTA_ERRO.
IF CONT = 1. PERFORM ABRE_BDC. PERFORM INSERT_BDC. ELSE. PERFORM INSERT_BDC. ENDIF.
ENDFORM.Programa Modelo Call Transaction Continuao
Pg.15FORM ABRE_BDC.CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = 'ERROS' KEEP = 'X' USER = SY-UNAME EXCEPTIONS CLIENT_INVALID = 1 DESTINATION_INVALID = 2 GROUP_INVALID = 3 GROUP_IS_LOCKED = 4 HOLDDATE_INVALID = 5 INTERNAL_ERROR = 6 QUEUE_ERROR = 7 RUNNING = 8 SYSTEM_LOCK_ERROR = 9 USER_INVALID = 10 OTHERS = 11.Programa Modelo Call Transaction Continuao
Pg.15FORM ABRE_BDC.CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = 'ERROS' KEEP = 'X' USER = SY-UNAME EXCEPTIONS CLIENT_INVALID = 1 DESTINATION_INVALID = 2 GROUP_INVALID = 3 GROUP_IS_LOCKED = 4 HOLDDATE_INVALID = 5 INTERNAL_ERROR = 6 QUEUE_ERROR = 7 RUNNING = 8 SYSTEM_LOCK_ERROR = 9 USER_INVALID = 10 OTHERS = 11.Programa Modelo Call Transaction Continuao
Pg.16 IF SY-SUBRC NE 0. WRITE: 'Erro no Open Group'. EXIT. ENDIF.
ENDFORM.Programa Modelo Call Transaction Continuao
Pg.17FORM INSERT_BDC.CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = 'TFBA' TABLES DYNPROTAB = BDC_TAB EXCEPTIONS INTERNAL_ERROR = 1 NOT_OPEN = 2 QUEUE_ERROR = 3 TCODE_INVALID = 4 PRINTING_INVALID = 5 POSTING_INVALID = 6 OTHERS = 7. IF SY-SUBRC NE 0. WRITE: 'Erro no Insert'. EXIT. ENDIF.ENDFORM.Programa Modelo Call Transaction Continuao
Pg.18FORM FECHA_BDC.
CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS NOT_OPEN = 1 QUEUE_ERROR = 2 OTHERS = 3.
IF SY-SUBRC NE 0. WRITE: 'Erro no Open Group'. EXIT. ENDIF.ENDFORM.Programa Modelo Call Transaction Continuao
Exerccio1) Batch-Input
a) Criar um programa que faa o batch input dos dados obrigatrios no cadastro de fornecedores: Transao FK01.
b) Permitir como parmetro que o usurio informe se o arquivo vem do servidor ou local.
2) Call Transaction
a) Permitir como parmetro que o usurio informe se deseja executar a pasta automaticamente. Exibir as Mensagens do Processo, quebrando por Fornecedor.
SAPScript
O que Sapscript ?O SAPSCRIPT a ferramenta do SAP para criao de formulrios mais elaborados. A opo pela utilizao desta ferramenta se d pela necessidade de alguns recursos grficos que no podem ser obtidos atravs de cdigo de ABAP comum. Com o SAPSCRIP possvel criar um formulrio com logotipo, letras formatadas de vrios tamanhos, criao de grades, cdigo de barras, etc.Apesar de ser uma ferramenta poderosa na gerao de formulrios, o SAPscript ainda apresenta uma srie de limitaes, o seu verificador de erros e debug no possuem as mesmas caractersticas do editor ABAP. Caso, seja digitado um comando com grafia errada ou sem sentido lgico dentro de um formulrio, no ser detectado pelo mesmo e poder no ser executado, passando as vezes despercebido pelo programador. Para que o SAPSCRIPT funcione necessrio que um trabalho em conjunto com um programa ABAP que dever conter algumas funes de chamada e controle do SCRIPT. Sapscript
Deficincias da Ferramenta
Debug
-Checar erro de sintaxe
-Client Dependent
-Criar logotipos (.tif objeto no transportvel)Sapscript
Partes de um FormulrioSapscript
Sapscript
Sapscript
ESTRUTURA FORMULRIOCabealhoInformaes gerais do formulrio, ttulo, a classe de desenvolvimento e os idiomas.PargrafosSo elementos que podem ser criados e apresentam informaes dos textos de uma determinada janela. Caracter de SeleoSo informaes semelhantes s do pargrafo, no que diz respeito a formatao de textos, no entanto podem ser aplicados a trechos de textos e no necessariamente a linhas inteiras do formulrio.PginasSo os elementos responsveis pelo agrupamento das janelas durante certos momentos do relatrio. Sapscript
ESTRUTURA FORMULRIOElementos de TextoCorresponde lgica de processamento e comportamento de uma janela durante a execuo do formulrio. * Pargrafo Padro = Linha longa ( Linha Bruta / Avano de Linha / = Avano de Linha e Linha Longa /( Avano de Linha e Linha Bruta /: Linha de Comando /* Linha de Comentrio /E Elemento de Texto Sapscript
ESTRUTURA FORMULRIOJanelasPodem ser criadas sem limites e tem por finalidade dividir por espao as regies de um formulrio para operaes independentes.
MAIN Somente permitido um tipo de janela MAIN por formulrio, e a nica janela obrigatria em uma pgina. VAREsse tipo de janela deve ser utilizado quando se pretende trabalhar com textos que variam.CONST Nesse tipo de janela so includo objetos e textos que permanecem os mesmos durante todo o relatrio, independente do nmero de pginas.Sapscript
CONDIESNO EXISTENTESNO SAPSCRIPTCN (Contains Not only)CO (Contains Only)CA (Contains Any)NA (Contains Not Any)CS (Contains String)NS (Contains No String)CP (Contains Pattern)NP (contains No Pattner)SapscriptCONDIESEXISTENTESNO SAPSCRIPT= EQ(Igual)< LT (Menor que) > GT (Maior que)= GE(Maior ou igual a) NE (Diferente)NOT(No)AND (E)OR (Ou)
SIMBOLOS UTILIZADOS
DATE: DataDAY: DiaNAME_OF_DAY: Nome do DiaMONTH: MsNAME_OF_MOUNTH: Nome do MsYEAR: AnoTIME: Hora TotalHOURS: Hora AtualMINUTES: Minuto AtualSECONDS: Segundo AtualPAGE: Nmero da PaginaNEXTPAGE: Nmero da nova pginaSPACE: EspaoULINE: Linha HorizontalVLINE: Linha Vertical Sapscript
COMANDOSADDRESSBOTTOMBOXCASEDEFINEHEX IF INCLUDE NEW-PAGE NEW-WINDOW PERFORM POSITION
PRINT-CONTROLPROTECTRESETSET COUNTRYSET DATE MASKSET SIGNSET TIME MASKSIZESTYLESUMMINGTOP
Sapscript
PROGRAMA DE POVOAMENTO DE SAPSCRIPT
Controla impresso formulrio atravs de:
- Seleo e Processamento dos Dados- Abertura- Inicializao- Envio dados para formulrio Finalizao- FechamentoSapscript
ABERTURAA abertura de um formulrio gera automaticamente a inicializao de um formulrio.
FUNO:Call function OPEN_FORM
PARMETROS ESSNCIAIS:DEVICEFORM LANGUAGESapscript
- TDCOPIES (Nmero de Cpias)- TDDEST (Dispositivo de Sada)- TDPREVIEW (Print Preview)- TDIMMED (Sada Imediata)
call function 'OPEN_FORM' exporting * APPLICATION = 'TX' * ARCHIVE_INDEX = ' ' * ARCHIVE_PARAMS = ' ' DEVICE = 'PRINTER' ou 'SCREEN' * DIALOG = 'X' ou '' (Tela de caractersticas de impresso) FORM = 'Z_SCRIPT' (Nome do Formulrio) LANGUAGE = 'P' (Idioma do Formulrio)* OPTIONS = ITCPO (Estrutura com todas as caractersticas) * importing * language = * new_archive_params = * result = exceptions canceled = 1 device = 2 form = 3 options = 4 unclosed = 5 others = 6.Sapscript OPEN_FORM
INICIALIZAOPermite a gerao de vrios formulrios diferentes, como se estivesse abrindo um novo formulrio para cada situao.
FUNO:Call function START_FORM
PARMETROS ESSNCIAIS:FORM LANGUAGESapscript
Este comando no obrigatrio e pode no ser utilizado caso no haja necessidade da quebra e criao de vrios formulrios para uma s seleo de dados.A funo muito similar funo OPEN_FORM, e novamente os parmetros mais importantes so o nome (FORM) e o idioma (LANGUAGE) do formulrio.Para que se possa utilizar um comando START_FORM obrigatrio que um comando de OPEN_FORM tenha sido executado. Caso isso no seja feito um erro de sintaxe ir aparecer.
call function 'START_FORM' exporting * ARCHIVE_INDEX = ' ' FORM = ' ' LANGUAGE = ' ' * STARTPAGE = ' ' * PROGRAM = ' ' * importing * language = exceptions form = 1 format = 2 unended = 3 unopened = 4 unused = 5 others = 6.Sapscript START_FORM
ENVIO DADOS AO FORMULRIODepois da seleo e processamento dos dados, envia-se os dados ao formulrio.
FUNO:Call function WRITE_FORM
PARMETROS ESSNCIAIS:ELEMENTWINDOWSapscript
Um ponto importante que deve ser observado que no possvel utilizar tabelas internas e variveis do programa para a impresso dos dados no SAPSRIPT. Portanto, se algum dado que deva ser impresso estiver numa tabela interna ou varivel, este deve ser copiado para uma estrutura para que possa ser enviado ao SAPSCRIPT. A impresso dos dados nas janelas na maioria das vezes feita simultaneamente com a seleo dos dados, ou seja, a medida que os dados so selecionados, so enviados imediatamente para o formulrio.
O comando para impresso dos dados a seguinte funo:
call function 'WRITE_FORM' exporting ELEMENT = ' ' * FUNCTION = 'SET' * TYPE = 'BODY' WINDOW = 'MAIN' * importing * pending_lines = exceptions element = 1 function = 2 type = 3 unopened = 4 unstarted = 5 window = 6 others = 7.Sapscript WRITE_FORM
Dois parmetros so os mais importantes:
Element Determina qual Data Element ser utilizado dentro do SapscriptWindow Janela na qual os dados devem ser impressos.
Neste ponto fica evidente a diferenciao entre os tipos de janela MAIN e demais janelas.Para as janelas do tipo MAIN, cada comando de escrita (write_form) significa uma nova linha no formulrio e o valor a ser impresso o valor que o campo armazena no momento do comando de impresso.Por exemplo, digamos que o campo MARA-MATNR tenha o valor 1234 e que um comando de impresso seja dado para a janela MAIN que ir imprimir este campo. Logo em seguida uma nova seleo da tabela MARA feita e o campo MATNR agora vale 5678. Se uma nova impresso na janela MAIN for executada o resultado ser o seguinte:
12345678
J as janelas que no forem do tipo MAIN imprimem os dados uma nica vez, no final da impresso do formulrio ou na quebra de pgina, com os valores armazenados nos campos no momento do encerramento ou no momento da quebra, e no no momento da escrita (write_form), ou seja, se no exemplo anterior fosse utilizada uma janela no-main, o resultado final seria somente 5678.Na realidade, a utilizao de um comando WRITE_FORM numa janela no-main utilizada para a escolha de qual elemento de texto ser utilizado para a impresso dos dados. Exemplo: Uma janela HEADER no-main contm dois elementos de texto chamados FRASE1 e FRASE2 da seguinte forma:/E FRASE1 &MARA-MATNR& Teste de Frase 1 /E FRASE2 &MARA-MATNR& Teste de Frase 2Sapscript WRITE_FORM
Se um comando WRITE_FORM for executado para a janela HEADER utilizando o elemento de texto FRASE1,
call function 'WRITE_FORM' exporting ELEMENT = 'FRASE1' * FUNCTION = 'SET' * TYPE = 'BODY' WINDOW = 'HEADER
estar sendo indicado ao programa que, ao se encerrar o formulrio, deve ser impresso o elemento de texto FRASE1 para a janela HEADER (somente um elemento de texto utilizado para cada janela no-main).No caso do exemplo, se o campo MATNR for igual a 1234 no encerramento do formulrio, seria impressa a seguinte frase:
Teste de Frase 1
O elemento de texto a ser impresso ser sempre o ltimo a ser selecionado antes do final ou da quebra de pgina. Se nenhum for selecionado, ao encerrar o formulrio ou mudar de pgina sero impressos os dados que no pertenam a nenhum elemento de texto. Portanto no caso de um campo que deva ser impresso sempre em todasas pginas, como numero de pgina por exemplo, basta coloc-lo fora de qualquer elemento de texto e no selecionar nenhum elemento de texto para a janela que, automaticamente, este dado ser impresso em todas as pginas.Sapscript WRITE_FORM
FINALIZAO FORMULRIO
FUNO:Call function END_FORM
FECHAMENTO FORMULRIO
FUNO:Call function CLOSE_FORM Sapscript
END FORM - Serve para finalizar um formulrio.
call function 'END_FORM' importing RESULT = ' ' exceptions unopened = 1 others = 2.
CLOSE FORM - Serve para fechar um formulrio.
call function 'CLOSE_FORM' importing RESULT = ' ' Tables * OTFDATA = exceptions unopened = 1 others = 2.Sapscript END_FORM/CLOSE_FORM
INFORMAES TEISTransaoSE71Tabela TTXFPPrograma RSTXSCRP (download / upload) ProgramaRSTXLDMC (tipo .TIF)ProgramaRSTXPDFT4 (download .PDF quando gerar na sp01)
DICAS* Nunca esquecer de ativar o formulrio no idioma original, caso contrrio ficar bloqueado as modificaes nos outros idiomas.* Visualizao x Impresso mesma mquina (impressora / basis SPAD)* Visualizao distinta em computadores distintos (verso Sapgui)* No deletar janelas e elementos de textos Sapscript
Exerccio
Exits
Definio
Exist so pontos em locais pr-definidos pela SAP, onde o cliente pode incluir cdigos prprios, por alguma necessidade especfica.
Tipos de exit :
User-Exit
Field-Exit
Menu-Exit
A chamada de uma exit no cdigo Abap, se assemelha a chamada de um mdulo de funes qualquer. Sintase : call customer-function .Exits
ExitsUser-Exit
A criao de user-exit acontece pela transao CMOD/SMOD.O primeiro passo saber se existe uma user-exit, que se possa alterar.Isto pode ser feito, procurando-se no cdigo Abap uma chamada de um mdulo de funo customiz-vel
call customer-function
ou, atravs da execuo de um programa Abap que varre outros programas buscando user-exits
Exits CMOD / User-Exit
Exits CMOD / User-Exit
Exits CMOD / User-Exit
Exits CMOD / User-Exit
Field-Exit
O Field-Exit se diferencia do user-exit, pois no existe uma entrada no meiodo cdigo fonte Abap onde este customizado. Ele existe atrelado a um campo/elemento de dados, alm de ser necessrio amarra-l a um programa e uma tela, especficos.
Para se criar um Field-Exit, ou mesmo, saber se o elemento possibilita umaexit, utilizamos a execuo do programa RSMODPRF.
Onde este, lista todos os Field-Exits j criados e nos d a opo de criao de outros.Exits
Exits Field-Exit
Exits Field-Exit
Exits Field-ExitField-exit Criar/Modificar
Requisitos:a) nome do programa Standard onde se encontra o campo onde se quer colocar codificaob) nmero da telac) nome do elemento de dados do campo
Transao CMOD
1) Rodar o programa RSMODPRF, opo criar.2) Fornecer nome do elemento de dadosNa tela de Function Builder:3) Escolher um grupo de funces(customizado) de acordo com o mdulo4) Gravar o novo mdulo de funo (somente tela Adminstracao) e voltar (tela do passo 2)5) Flegar linha do elemento de dados6) No menu: Atribuir prog/tela7) Fornecer nome do programa e tela standard8) Flegar linha do elemento de dados9) No menu: Processar MF10) Codificar ABAP
Obs.: Se um campo com field-exit codificado por alguma razo aparecer inibido, este field-exit no ser executado.Uso de SET/GET: se o campo da tela contiver um field-exit com SET, este SET ser limpo da memria se em telas posteriores existir o mesmo elemento de dados com o campo aberto.Field-Exit no funcionam em campos check-box ou radio-buttom.
SE09 Organizao de transporte (Utilizado para controlar as requests).SE11 Dicionrio ABAP (Utilizado para criar, alterar e apagar domnios, elemento de dados, campos, tabelas, estrutura).SE16 Data browserSE37 Mdulos de funo ABAP. (Utilizado para criar, alterar e apagar funes (Mdulos de funes).SE38 Editor de programas ABAP. (Utilizada para criar, alterar e apagar programas ABAP).SE39 Editor de tela divididaSE71 Formulrio SAPscript. (Utilizado para criar, alterar e apadar formulrios de SapScript).SE80 Repository Browser. (Utilizado para criar, alterar e apagar, Programas (On-Line ou Module Pool), grupos de funo, etc.).SE91 Atualizao de mensagemSE92 Mensagens do Log do sistemaSE93 Cdigos de transao (Utilizado para criar, alterar e apagar transaes).SM04 Visualiza e derruba sessesSM12 Exibir e eliminar bloqueios (Utilizado para desbloquear programas, transaes, etc.).SM35 Moritorar pasta de Batch-Input.SM37 Monitora os jobs colocados para processamentoST05 Possui vrias funes, a mais utilizada e para realizar o trace SQL.(Mostra todos acessos realizados no BD).ST22 ABAP anlise dump.SHDB Registrador transao - batch input. (Utilizado para criar o mapeamento para posteriormente criar os programas para gerar a pasta de batch input.).CMOD Gerenciamento de projetos (Exits)SMOD Definio de ampliaes (Exits)SMARTFORMS Formulrio SmartFormAlgumas Transaes teis
www.softtek.com.brClick to edit Master title style**********
F I M
Top Related