"
Apoiado por

Pesquisa métodos, atributos, tipos, eventos, etc

Sabes que há uns anos atrás fizeste um método qualquer cujo nome tinha a palavra MALMEQUER. Mas, e agora? Como é que o encontras?

Poderias usar a transacção SE24 para pesquisar uma a uma todas as classes alteradas por ti. Mas eras capaz de demorar algum tempo. Não faças isso.

Experimenta antes usar a transacção SE84:

Transacção SE84

Mais uma forma de ver os parâmetros de um método

diccionario

Imagina que queres chamar um método mas não sabem quais os seus parâmetros. O que fazes?

Dantes tinhas de usar o pattern ou então abrir a classe numa janela ao lado para ver os parametros do método. Depois apareceu o auto-complete e tornou tudo mais simples.

Mas há ainda outra forma.

Ler o resto do artigo! »

ABAP Code PushDown em HANA

servers

[Artigo por Artur Moreira]

A SAP introduziu a partir da versão 7.4 do ABAP o conceito de Code PushDown, que significa utilizar mais a base de dados para cálculos (agregação de dados, somas e vários cálculos prévios).

Ler o resto do artigo! »

Pesquisa incremental

holmes

Quando quero procurar uma determinada palavra num programa ABAP normalmente uso a função de pesquisa carregando em CTRL-F. E depois vou carregando em NEXT para ir encontrando as várias ocorrências da palavra que procuro.

Mas há outra forma. E não é melhor nem pior. É simplesmente diferente: a pesquisa incremental.

Ler o resto do artigo! »

Passar tabelas internas por valor é bom

panama

Quando um método devolve um valor como RETURNING este é sempre passado por valor e não por referência. Muitas vezes faço métodos que devolvem tabelas internas, algumas bastante grandes. Mas sempre me preocupou a ideia de que, como está a ser devolvida por valor, o ABAP devolva uma cópia da tabela interna, algo que pode ter impacto na performance e na memória que o programa gasta.

Felizmente fiquei recentemente a saber que não é assim.

Ler o resto do artigo! »

INSERT dbtab ACCEPTING DUPLICATE KEYS

pronghorn-twins

Quando tentas inserir um registo numa tabela que já tenha outro registo com a mesma chave primária o programa faz dump. O que em alguns casos é uma chatice porque, mesmo que te estejas nas tintas, te obriga a verificar antecipadamente se aqueles chaves já existem na tabela.

Mas o ABAP prevê esses casos e dá-te uma solução:



INSERT dbtab FROM TABLE itab [ACCEPTING DUPLICATE KEYS].

Não te preocupes que quando acrescentas o ACCEPTING DUPLICATE KEYS não violas a primeira lei da termodinâmica: os registos não são inseridos. A única diferença é que o programa não faz dump. O que pode dar jeito nos casos em que não estás preocupado com o que estás a inserir.

O Abapinho saúda-vos.

Exporta e importa as configurações do ABAP Workbench

technology-music-sound-audio-1

Às vezes as coisas estão mesmo debaixo do nosso nariz e não as vimos.

No meu cliente actual trabalho com um montes de sistemas diferentes. Quando altero a configuração num deles muitas vezes, por preguiça ou esquecimento, acabo por não o fazer nos restantes.

Mas há uma forma simples de copiar de uma só vez todas as configurações do ABAP Workbench de um sistema para outro.

Ler o resto do artigo! »

Usa o Editor de Tela Dividida na comparação de versões

pronghorn-twins-fawns-antilocapra-americana

Por defeito a comparação de versões é horrível. Mostra as duas versões numa única coluna, com as diferenças destacadas, o que resulta numa grande confusão. É a coisa menos práctica de sempre.

Mas não tem de ser assim.

Ler o resto do artigo! »

Descobre as diferenças com a SE39

twins-movie-poster

Estava há pouco a fazer QC a um programa que criaram chamado ZSDFAKSPE com quase 1000 linhas e nenhum comentário. Uma óbvia cópia de um programa standard chamado SDFAKSPE.

Decidi então usar o Editor ABAP de tela dividida (Split screen editor) que está na transacção SE39. Introduzi o nome do Z e do standard e depois pude compará-los lado a lado.

Ler o resto do artigo! »

Programar classes baseado em texto fonte

popeye

Estando habituado a programar em Java e C++, a forma como a SE24 obriga a navegar entre as várias partes de uma classe e o facto de cada método estar isolado no seu próprio include ao início fez-me muita confusão. Mas porque é que a SAP complica sempre tudo? Acabei por habituar-me.

A dado momento a SE24 passou a permitir a opção “Basedo em texto fonte” que mostra a classe e os métodos todos ligados em texto corrido. Mas por alguma razão que nunca atinei com aquilo.

Ler o resto do artigo! »

Saltar para a tua última alteração

man-jump

Imagina que estás a mexer num programa daqueles antigos que têm milhares de linhas (sim porque hoje em dia sabes que não modularizar é errado (pecado mesmo) e os teus métodos (sim porque hoje tu já só usas métodos) nunca passam das 200 linhas).

Ora estás tu muito bem a editar uma linha qualquer lá pelo meio quando (como já não vais para novo) o nome de uma variável de que precisas se te varre completamente da memória. Ainda puxas pela cabeça mas não há meio de te recordares dela. Não te resta senão fazer HOME para saltares para o topo do programa, onde estão declaradas todas as variáveis (porque quem fez este programa não modularizava mas era uma pessoa arrumadinha).

Mas esqueceste-te do número da linha que estavas a editar e então lá tens tu de vir por aí abaixo a PAGE DOWNar às apalpadelas à procura da linha que estavas a alterar.

Ou então…

Ler o resto do artigo! »

Eu chamo-te e tu chamas-me

funicular

Quando chamas uma função por RFC tens de lhe dar a RFC DESTINATION do sistema remoto:


CALL FUNCTION ‘ZESPIRREI’
  DESTINATION ’sistema_longe_daqui’.

E se, por alguma razão, precisares que a função que corre no sistema remoto chame uma função no sistema original. Sabes fazê-lo?

Ler o resto do artigo! »

Desfazer alterações no ecrã do depurador

benjaminbutton

Embora uma parte substancial do trabalho de um ABAPador seja depurar código, a maior parte dos ABAPadores que eu conheço investem muito pouco em explorar a ferramenta que o permite, o depurador. Talvez por terem passado anos a aturar um depurador arcaico e limitado. Mas o novo pode fazer muito mais do que lhe costuma ser pedido. E o Abapinho vai tentar ensinar como.

Hoje ensina-te apenas uma pequena tecla.

Ler o resto do artigo! »

Dar passos de bebé no debug

stepsize_baby

Quando fazes debug usas a tecla F5 para avançar para a próxima instrução (ou entrar para dentro de uma sub-rotina). Mas imagina um IF com várias condições:


IF A = 1 AND B = 2 AND C = 3.
  WRITE 'Gosto da palavra glauco'.
ENDIF.

Ao fazeres debug àquele IF com F5 e alguma das expressões for falsa saltas logo para fora do IF e ficas sem saber qual delas falhou.

Mas o novo debugger tem uma nova funcionalidade muito catita que te pode ajudar a entender melhor o que aconteceu ali.

Ler o resto do artigo! »

O SAP ajuda-te a traduzir para qualquer lingua

buddha

Volta não volta encontro mais uma virtude escondida do SAP. Então não é que fiquei a saber que existe uma transacção em que podemos introduzir uma determinada palavra numa determinada lingua e o SAP ajuda-nos a traduzi-la para outra lingua qualquer mostrando-nos noutras traduções que já existam para essa mesma palavra.

Não é fixe? Ok, não é o Google Translate, mas é uma bela ajuda.

Ah, já me esquecia, a transacção chama-se STERM.

Obrigado Sérgio Fraga pela dica.

O Abapinho saúda-vos.

SQL nativo

watch_movement

Por vezes o SQL do ABAP não te permite fazer coisas que conseguirias fazer usando SQL nativo da base de dados. É possível fazê-lo.


* Converte para maiúsculas e acrescenta wildcard 
  TRANSLATE l_name1 TO UPPER CASE.
  CONCATENATE l_name1 '%' INTO l_name1.

* Executa SQL nativo para fazer
* uma pesquisa "case insensitive" pelo nome 
  EXEC sql performing SAVE_ROW.
    SELECT kunnr
           INTO :l_kuune
           FROM kna1
           WHERE kna1.mandt        =    :sy-mandt
           AND   UPPER(kna1.name1) LIKE :l_name1
  ENDEXEC.

Mas atenção pois, ao contrário do SQL do ABAP que é genérico, este SQL terá de ser escrito especificamente para a base de dados existente. Por consequência o código fica menos flexível e mais complexo. Como tal, faz isto só mesmo se não tiveres alternativa.

Foto: Photodesaster via VisualHunt.com / CC BY-NC

O Abapinho saúda-vos.

GROUP BY em LOOPs a tabelas internas

loops

Todos já ordenamos tabelas internas e utilizamos a instrução AT NEW.
Mas a partir da 7.40, podemos utilizar GROUP BY no LOOP.

É fantástico a capacidade de agrupamento em que os valores do registo processado no loop podem ser comparados, recorrendo a expressões e  até métodos.

O agrupamento é realizado num primeiro LOOP e pode ser processado a seguir. Experimentem o seguinte código e, tal como eu, ficarão impressionados com o caminho que o ABAP está a seguir.

Ler o resto do artigo! »

Corrigir erro em código standard com enhancement implícito

remendar

Descobriste um bug num FORM (ou Função ou método) standard:


FORM EQUAL_VALUE CHANGING W_DATE TYPE SYDATUM.
  W_DATE = SY-DATUM - 1.
ENDFORM.

Reportaste o erro à SAP mas eles ainda devem demorar a responder e tu precisas da correcção urgentemente.

Tens de agir.

Sem demora usas o enhancement implícito do início do código para substituir o código original pelo teu (até a correcção chegar, claro):


FORM EQUAL_VALUE CHANGING W_DATE TYPE SYDATUM.
ENHANCEMENT...
* Enquanto no código SAP standard estiver isto: W_DATE = SY-DATUM - 1.
  W_DATE = SY-DATUM - 2.
  EXIT. "salta fora
ENDENHANCEMENT
W_DATE = SY-DATUM - 1.
ENDFORM.

Certo, não é elegante. Mas safa.

Obrigado Pierre Ameye pela dica.

Obrigado Sherri Lynn Wood pela foto.

O Abapinho saúda-vos.

SAABs ASSERTar à primeira?

cinderela

Checkpoints é uma framework muito poderosa do ABAP que no entanto quase ninguém a usa. Porquê? Provavelmente pela mesma razão que quase ninguém ouve Sun Ra e que quase ninguém sabe que o Frank Zappa tem 102 álbuns. Porque embora seja bom, é obscuro e pouco comercial. Os checkpoints são, de facto bons e pouco comerciais. Mas deviam ser mais como o Mozart, que é bom e comercial.

Ler o resto do artigo! »

STA Ticket System acelera a resolução de incidentes SAP

STA_654x885_t

Hoje temos um convidado, Tamás Holics. Ele é dono da STA Consulting, uma empresa Húngara que criou 2 produtos muito interessantes para SAP. Neste artigo o Tamás apresenta o STA Ticket System.

O Problema

Desperdiça-se muito tempo nos processos de teste e manutenção SAP dado que os relatórios de erros produzidos pelos utilizadores serem muitas vezes incompletos ou incorrectos. A resolução do problema reportado normalmente fica pendente até a informação estar toda completa. Ora como em boa parte dos incidentes reportados a equipa de manutenção (analistas, programadores) tem de pedir mais informação sobre o erro, há uma enorme perda de tempo valioso em iterações desnecessárias, tanto de quem reporta incidentes como de quem lhes dá suporte.

Ler o resto do artigo! »


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).