Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

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.

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.

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;

O Abapinho saúda-vos

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