Category > Tips & tricks
Supported by
Supported by Inetum

<!--:pt-->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;

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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;

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->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.

<!--:pt-->Testar na SE37 não grava dados? Grava.<!--:-->

Uma forma prática de aprender a usar um módulo de funções ou verificar se este nos é útil é através da funcionalidade de teste da transacção SE37. Escolhe-se o módulo de função, faz-se F8 (Executar) e tem-se uma forma interactiva de testar uma função. Isto é óbvio. O que não será óbvio para toda a gente é que este teste não faz COMMIT à transacção e, por isso, qualquer alteração que a função possa fazer à base de dados - como gerar um documento por exemplo - não é gravada.

<!--:pt-->A transacção N<!--:-->

É intrigante o porquê de, nos dias que correm, a transacção SE16 continuar a ser tão utilizada, quando já existe há tantos anos uma muito melhor, a SE16N. A transacção SE16N tem mais: sainete: tem um interface mais dinâmico e sofisticado; simpatia: mostra em simultâneo a descrição funcional e o nome técnico dos campos; sabedoria: mostra em simultâneo o valor interno e externo dos campos com rotinas de conversão;

<!--:pt-->O Abapinho saúda-vos<!--:-->

Bem-vindo ao Abapinho, um blog sobre ABAP em português.