Patrocinado por
Patrocinado por Inetum

Obtém o texto mais profundo de cadeia de excepções

images/thumbnail.jpg - Thumbnail

Nos dias que correm se não estás a usar objectos és totó.

Se usas objectos, espero que estejas a seguir a boa práctica de usar classes de excepções.

E se usas classes de excepção é bom que entendas a melhor forma de as usar, particularmente as vantagens de as encadear.

Com tudo isto esclarecido, chegamos ao que nos traz aqui hoje. No artigo sobre cadeias de excepções mostrei como, para obter o texto da excepção mais profunda, a que foi inicialmente espoletada, se pode fazer um DO WHILE:

Como devolver um REF TO data sem fazer asneira

images/thumbnail.jpg - Thumbnail

Tenho usado cada vez mais referências em ABAP.

Primeiro usava REF TO só para classes mas vou percebendo cada vez mais as vantagens de as usar também para estruturas de dados. Mas, tal como acontece em C++, há que ter cuidado quando se lida con referências para dados pois facilmente a coisa pode dar para o torto.

Neste artigo tento mostrar como usar e como não usar o REF TO data. Comecemos por ver um exemplo de como não usar:

O estranho caso da estrutura parcialmente protegida

images/thumbnail.jpg - Thumbnail

Estava a tentar actualizar uma linha de uma SORTED TABLE e não estava a conseguir.

Passei-me ao passar o SY-TABIX por parâmetro

images/thumbnail.jpg - Thumbnail

No outro dia aconteceu-me uma coisa muito estranha. Estava eu a passar o SY-TABIX como parâmetro para dentro de um método quando reparei que cá fora era 1 mas quando lá chegava dentro era 0.

Muitíssimo bizarro.

o_coisificador->que_coisa_bizarra( sy-tabix ).

Converte classe de excepção numa BAPIRET2

images/thumbnail.jpg - Thumbnail

Há uns tempos escrevi um artigo a explicar uma forma de converter automaticamente excepções clássicas em classes de excepção. Hoje uso esta técnica em quase todas as classes de excepção que crio (e até já melhorei a coisa mas noutro dia falo disso).

Esta dica explica exactamente o contrário.

Comparar versões ignorando as indentações

images/thumbnail.jpg - Thumbnail

Quando se compara versões por vezes aparecem várias diferenças mesmo quando não fizemos alterações ao código. Essas diferenças podem ser simplesmente consequência de um Pretty Printer que altera as indentações do código. Isto torna a comparação muito difícil e confusa. Mas o ABAP Workbench prevê isso e permite configurar o comparador de versões para ignorar indentações e até comentários. Basta carregares em F5 ou ires ao menu “Display Format > Settings” e adaptá-lo às tuas necessidades:

Usa o GUI Status Standard sem o copiares

images/thumbnail.jpg - Thumbnail

Quando queres usar a CL_GUI_ALV_GRID num CONTAINER tens de copiar um GUI Status standard de outro programa. Por exemplo o GUI Status “STANDARD" do grupo de funções SALV. E depois no PAI do ecrã chamas:

SET PF-STATUS ‘STANDARD’.

E lá aparecem os butõezinhos.

Provérbio ABAP

images/thumbnail.jpg - Thumbnail

Não deixes para amanhã o que podes fazer SY-DATUM.

Cria modelos na SE80 arrastando coisas para o código

images/thumbnail.jpg - Thumbnail

Quando estamos a programar é sempre bom ter formas de acelerar o que estamos a fazer. Uma delas é a geração automática de de padrões de chamadas de métodos e afins.

Conheço 3 formas de o fazer.

$PACOTES locais

images/thumbnail.jpg - Thumbnail

Todos os objectos criados em SAP têm de estar associados a um pacote.

Até recentemente, quando eu queria fazer um teste rápido criava o objecto no pacote $TMP. Tinha assim a garantia de este nunca viria a ser transportado.

Mas por vezes há necessidade de criar coisas no sistema de desenvolvimento que não pretendemos nunca vir a transportar mas que queremos que lá existam eternamente. Como o ZSAPLINK e o abapGit, por exemplo. Mas se as associarmos todas as pacote $TMP fica uma valente confusão.

Campos chave de estrutura DDIC

images/thumbnail.jpg - Thumbnail

Hoje em dia quando quero criar uma SALV defino sempre a estrutura dos dados no DDIC já com os elementos de dados com as descrições desejadas em vez de os forçar no código.

Encontra tudo de uma só vez

images/thumbnail.jpg - Thumbnail

O editor de ABAP tem sempre coisas novas para descobrir.

Quando faço CTRL-F para pesquisar texto a opção que costumo usar é a Continuar proc.

As APPEND STRUCTUREs fazem mais do que eu pensava

images/thumbnail.jpg - Thumbnail

Toda a minha vida ABAPiana usei APPEND STRUCTURES para adicionar campos extra a tabelas standard.

Mas aprendi recentemente que afinal servem para mais duas coisas:

INSERT wa INTO itbl REFERENCE INTO ref. Bug?

images/thumbnail.jpg - Thumbnail

Tenho usado cada vez mais referências em ABAP. Primeiro usava REF TO só para classes mas agora vou percebendo as vantagens de as usar também para estruturas de dados.

Recentemente descobri um comportamento muito lamentável do seguinte comando:

INSERT wa INTO itbl REFERENCE INTO ref.

Mas antes de me queixar sobre isso, dou um bocado de contexto.

Devíamos ser responsabilizados pela merda que fazemos

images/thumbnail.jpg - Thumbnail

Se, ao construir uma ponte, um engenheiro civil fizer mal as contas a ponte cai. Mas não é só a ponte que cai. Esse engenheiro civil provavelmente também cai. Ou pelo menos desequilibra-se. Porque quando fez o projecto da ponte assinou-o, assumindo responsabilidade pelo que fez.

Nós os programadores ABAP não temos esses problemas.