Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

Pesquisar em tabelas internas simplórias

images/thumbnail.jpg - Thumbnail

Imagina uma tabela interna tão simplória que nem sequer tem uma estrutura de dados com campos: DATA: t_simploria TYPE STANDARD TABLE OF char30. Agora imagina que queres fazer uma pesquisa nessa tabela para saber se contém o valor ‘sumo de melão’. mas como não tem campos, como a fazes? Normalmente usarias algo tipo WITH KEY campo = valor. Mas ela não tem campos. O ABAP disponibiliza uma palavra especial que resolve este problema: TABLE_LINE.

Transacção I18N = Internacionalização

images/thumbnail.jpg - Thumbnail

Os americanos são tão bons como os tibetanos a arranjar mnemónicas e abreviaturas para tornar as coisas fáceis de decorar. Internationalization é uma palavra inglesa com 20 letras. Então, a abreviatura adoptada foi I18N, constituida pela primeira e última letras entremeadas por um 18 que representa as 18 letras do meio. Meio maluco mas giro e a verdade é que pegou. Pegou tanto que o SAP tem uma transacção chamada I18N.

É meu, só meu e de mais ninguém

images/thumbnail.jpg - Thumbnail

Imagina que estás a trabalhar num sistema partilhado por muitos outros utilizadores que não conheces. Como no IDESACCESS por exemplo. Nada impede que, por distracção ou perfídia, algum desses outros utilizadores altere ou mesmo apague os teus programas. Na SE38, nas características técnicas do programa, existe um pisco chamado “Bloqueio do editor” que, se o activares, só tu próprio passarás a poder modificá-lo. O Abapinho saúda-vos.

Mensagens entre utilizadores

images/thumbnail.jpg - Thumbnail

Muitas vezes precisamos de aceder aos dados de uma tabela através da SM30 ou a um qualquer documento e esbarramos com uma mensagem a dizer que os dados estão bloqueados por outro utilizador. Há várias hipóteses: Ter muita paciência e esperar; Ter bastante paciência, enviar uma mensagem do SAPOffice e esperar que um dia o utilizador a vá ver; Ter alguma paciência, enviar um e-mail e esperar;

Enfiar um browser dentro do SAPGui

images/thumbnail.jpg - Thumbnail

Quem não gosta de uma promiscuidadezita de vez em quando? Até o Abapinho. É por isso que hoje vos sugerimos que se deleitem a enfiar um browser dentro do SAPGui. E para conseguir isso basta correr este programa na SE38: SAPHTML_R3HTTP_DEMO. Pronto, ficam a saber. E como há clientes para tudo, quem sabe não se encontre aí pelo mundo algum cliente que invente um problema para esta solução. O Abapinho saúda-vos.

ZTETRIS

images/thumbnail.jpg - Thumbnail

O Abapinho aconselha todos os ABAPers a, pelo sim, pelo não, instalarem o programa ZTETRIS no seu ambiente de desenvolvimento. A versão do Tetris para ABAP é da autoria de Sergey Shumakov. Quando te fartares de jogar podes sempre investigar como é que o programa faz para ir várias vezes ao servidor sem intervenção do utilizador. O Abapinho saúda-vos.

ALV Grid Control - Manuais de referência

images/thumbnail.jpg - Thumbnail

Os ALVs são poderosos. Mas esse poder vem à custa de alguma complexidade. Além disso, como quase tudo em SAP, funcionam de forma obscura. Aqui ficam dois manuais de referência em PDF. São muito parecidos mas suficientemente diferentes para referir os dois. Este chama-se BCSRVALV, é da SAP e data de 2001. No site da SAP encontra-se aqui. E aqui também se aprende sobre isto. Já este chama-se ALV_Grid_Control, é de 2004 e está assinado por um senhor chamado Serdar ŞİMŞEKLER que diz ser turco.

Transportar conteúdo de uma tabela

images/thumbnail.jpg - Thumbnail

Fazes assim: Vais à transacção SE01; Crias uma nova ordem de workbench; Editas a lista de objectos; Adicionas-lhe o objecto R3TR-TABU-[nome_tabela]; Clicas na chave que aparece na coluna a seguir; Metes um asterisco * na primeira linha; Gravas a ordem de transporte; Pedes a quem de direito para a passar para onde te aprouver;

Glossário SAP

images/thumbnail.jpg - Thumbnail

É frequente em SAP cruzarmo-nos com um conceito desconhecido. Às vezes esqueço-me de que há ferramentas disponíveis muito fáceis de consultar. E o glossário SAP é um exemplo disso. Pode ser acedido de várias formas: No próprio SAP: através da transacção STERM; Online: num site da SAP: https://help.sap.com/saphelp_glossary/en/; No nosso computador: usando o programa ABAP GLOS_DOWNLOAD_HTML para fazer download de todo o seu conteúdo.

Onde é que eu vi aquilo?

A pesquisa de objectos em ABAP e por todo o SAP é normalmente feita de duas formas: listando objectos de um tipo através de search helps ou procurando objectos em que um determinado objecto é usado, através da opção where used. Só que às vezes o que buscamos não se trata de um objecto mas sim de uma frase qualquer ou mesmo um comentário que sabemos existir no código mas não fazemos ideia de onde.

A técnica das Matrioskas

É sabido que quando é necessário fazer uma pequena alteração a uma função standard para a qual não há nenhum tipo de user-exit, o mais normal é fazer uma cópia dela para uma função Z e lá proceder à alteração necessária. No entanto, quando esta alteração pode ser feita no início ou no final do programa, há uma forma mais elegante de conseguir o mesmo resultado: a técnica das Matrioskas. Criar uma função Z com os mesmos parâmetros que lá dentro invoca a função standard e que, além disso, antes ou depois de a invocar, tem o código para implementar a alteração necessária.

Evitar mensagens dinâmicas

Qual é, digam lá, a melhor coisinha que o ABAP tem? É, digo eu, poder fazer where used em cima de tudo o que mexe. E no entanto, esta maravilhosa funcionalidade só funciona maravilhosamente quando as coisas não são invocadas dinamicamente. Eu uso o where used amiúde para descobrir onde uma determinada mensagem está a ser usada. Ora não é nada incomum encontrar chamadas dinâmicas a mensagens, principalmente em casos onde as mensagens não são enviadas directamente para o utilizador mas sim, por exemplo, para o Application Log.

READ TABLE blablabla TRANSPORTING NO FIELDS

Por vezes ao fazer READ TABLE a uma tabela interna queremos apenas verificar se um determinado registo existe, e não nos preocupamos com os dados retornados. Algo tipo: READ TABLE lt_kna1 INTO wa_kna1 WITH KEY kunnr = l_kunnr. CHECK SY-SUBRC = 0. Ora já que a estrutura WA_KNA1 não vai ser necessária de qualquer forma, mais vale não a usar, usando antes a opção TRANSPORTING NO FIELDS: READ TABLE lt_kna1 TRANSPORTING NO FIELDS WITH KEY kunnr = l_kunnr.

Pesquisa SAP no Firefox e no Internet Explorer

Quando se faz desenvolvimentos em ABAP, pesquisar na SAP Community ou nas notas e na documentação da SAP é uma actividade recorrente. Como tal, quanto mais fácil for fazê-lo, melhor. Ideal seria que fazê-lo fosse tão fácil como pesquisar no Google. Ora uns senhores chamados JNYSolutions tornaram isso possível criando plugins de pesquisa para o Firefox e o Internet Explorer que adicionam a SDN, as notas e a documentação da SAP como motores de busca.

Verificar pasta

Eis uma função para verificar se uma pasta existe e se nela temos permissões de escrita. PARAMETERS: p_dir TYPE btctext80 DEFAULT '/usr/sap/trans'. CALL FUNCTION 'PFL_CHECK_DIRECTORY' EXPORTING directory = p_dir write_check = 'X' * FILNAME = ' ' EXCEPTIONS pfl_dir_not_exist = 1 pfl_permission_denied = 2 pfl_cant_build_dataset_name = 3 pfl_file_not_exist = 4 others = 5. CASE sy-subrc. WHEN 0. WRITE /: 'Directory:', p_dir, ' exists'. WHEN 1. WRITE /: 'Directory does not exist:', p_dir.