Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

A mensagem travesti

images/thumbnail.jpg - Thumbnail
Nos módulos AT SELECTION-SCREEN de um REPORT é-te possível lançar mensagens de erro e voltar ao ecrã de selecção. Mas uma vez que passes do START-OF-SELECTION, se lançares uma mensagem de erro, o programa termina. A solução para dar um erro e, ainda assim, regressar ao ecrã de selecção, é travestir a mensagem: START-OF-SELECTION. IF condicao_desejada. MESSAGE S208(00) with 'Erro!' DISPLAY LIKE 'E'. EXIT. ENDIF. WRITE 'Olá, eu sou o resto do programa'.

O circunlóquio do VALUE CHECK

images/thumbnail.jpg - Thumbnail
Nunca te aconteceu esbarrares com uma coisa no ABAP que parece que é mas não é? A documentação diz que é, tudo indica que assim seja, e depois afinal não é. Provavelmente já precisaste de, ao definir um parâmetro no ecrã de selecção de um relatório, limitar as possibilidades do que o utilizador pode introduzir aos valores disponíveis no tipo de dados desse parâmetro, certo? Para isto existe o VALUE CHECK.

Variantes automáticas em reports

images/thumbnail.jpg - Thumbnail
Quando se está a desenvolver um relatório com um ecrã de selecção, é muito chato de cada vez que o testamos ter de preencher o ecrã de selecção com os dados de teste. Normalmente acabamos por criar uma variante de teste para nos poupar a esse chatice. Mas mesmo assim, de cada vez que corremos o relatório, temos de invocar manualmente esta variante. Aqui está uma forma simples de invocar automaticamente uma variante.

De pé ó vítimas da fome

images/thumbnail.jpg - Thumbnail
Classes. Sempre as houve entre as pessoas. Mas no ABAP ainda há poucos que as tenham em conta. Se ser classicista na sociedade pode resultar em pedantismo, no ABAP, a única luta de classes é a que alguns travam para que estas sejam mais usadas. Há dois tipos de classes: as globais e as locais. As globais são criadas na transacção SE24. As locais, que por sinal dou por mim a usar cada vez mais, são feitas declarativamente na SE38.

Esquece!

images/thumbnail.jpg - Thumbnail
O SAP GUI tem boa memória. Vai decorando os valores que lhe vamos metendo nos campos e depois sugere-os quando, mais tarde, voltamos a esses campos. Mas às vezes decora coisas que mais valia esquecer. Como por exemplo quando introduzimos um valor errado e a seguir ele insiste em sugerir-nos esse valor errado. Há uns tempos descobri que este pequeno drama tem solução. Quando, no campo, aparece a combo box com as várias hipóteses, usa as setas do teclado para te posicionares no valor que queres esquecer e depois carrega na tecla DELETE.

SPLIT INTO TABLE

images/thumbnail.jpg - Thumbnail
Aqui vos mostro uma forma criativa de preencher uma tabela interna com constantes que aprendi num programa standard. Imagina que querias criar uma tabela interna com os seguintes tipos de documento financeiro: AB AF CH DG DZ EX F3 F4. A forma mais convencional seria assim: DATA: t_blart TYPE STANDARD TABLE OF blart, wa_blart LIKE LINE OF t_blart. wa_blart = 'AB'. APPEND wa_blart TO t_blart. wa_blart = 'AF'. APPEND wa_blart TO t_blart.

Selecção vertical de texto no editor ABAP não dá? Dá!

images/thumbnail.jpg - Thumbnail
Como todos sabem, pode fazer-se selecções de blocos de texto verticais e horizontais em quase todo o lado do SAPGUI carregando em CTRL-Y e depois arrastando o rato para fazer a selecção. Como todos também sabem, isto não funciona no editor de ABAP. Mas o que provavelmente nem todos sabem é que há uma forma de fazer este tipo de selecções no editor de ABAP: primir e manter o ALT. Assim já podes seleccionar blocos de texto.

Parâmetros não parametrizáveis

images/thumbnail.jpg - Thumbnail
Volta não volta aparece um cliente que pede a um funcional que pede a um programador que crie um parâmetro protegido contra escrita no ecrã de selecção de um programa. É um bocado cretino visto que a ideia dos parâmetros é serem parametrizáveis. Mas enfim, vê-se de tudo. Os clientes têm tanta imaginação que a SAP devia criar um módulo de cinema, SAP CI, especialmente para eles poderem realizar os tantos filmes que lhes vão na cabeça.

Saltando alegremente de ELSE em ELSE

images/thumbnail.jpg - Thumbnail
Tens à tua frente um daqueles IF ELSEIF ELSEIF ELSEIF ELSEIF ELSE ENDIF gigantescos que atravessa centenas de linhas de código. Se fizeres duplo clique em cima do IF ou de qualquer dos ELSEIF vais parar ao ENDIF. Se fizeres duplo-clique lá em baixo no ENDIF vais parar lá acima ao IF. Isto toda a gente sabe. Dá jeito com IF ENDIF pequeninos. Já com os grandes, não serve de muito.

Saltos dentro do editor ABAP

images/thumbnail.jpg - Thumbnail
Nunca te aconteceu estar a programar num programa ABAP daqueles que parecem um testamento com centenas e centenas de linhas e teres de estar sempre a saltar entre uma zona e outra do código? Até há uns dias eu, ignorante, usava o PageUp e o PageDown para saltar entre os dois sítios e perdia montes de tempo à procura do lugar exacto do código que me interessava. Mas entretanto o Sérgio Fraga ensinou-me que o editor ABAP tem uma funcionalidade chamada bookmarks que permite evitar o disparate de andar a subir e a descer às apalpadelas.

CASE de pernas para o ar

images/thumbnail.jpg - Thumbnail
Qual é a tua cor preferida? SELECTION-SCREEN BEGIN OF BLOCK b1. PARAMETERS: p_azul BUTTONGROUP GROUP COR DEFAULT 'X', p_verde BUTTONGROUP GROUP COR, p_roxo BUTTONGROUP GROUP COR. SELECTION-SCREEN END OF BLOCK b1. Se respondeste azul sobrevives e podes atravessar a ponte. De qualquer das formas, em ABAP costuma fazer-se o seguinte para descobrir a cor que o utilizador escolheu: IF p_azul = 'X'. lv_cor = 'AZUL'. ELSE IF p_verde = 'X'. lv_cor = 'VERDE'.

CTRL-clique para seleccionar uma palavra

images/thumbnail.jpg - Thumbnail
Uma dica simples mas valiosa: em qualquer sítio do SAP GUI - incluindo o editor de ABAP - para seleccionar uma palavra basta fazer CTRL-clique em cima dela. Fixe, não? Infelizmente não funciona no GUI Java do Mac :-( (Obrigado ao Sérgio Fraga pela dica) O Abapinho saúda-vos.

RANGE instantâneo - É só juntar água

images/thumbnail.jpg - Thumbnail
Vou ensinar-te uma fórmula mágica para gerar um RANGE em que praticamente é só juntar água. Imagina que queres fazer um RANGE a partir de uma seleção da base de dados para depois o utilizar num outro SELECT qualquer. Claro que o poderias fazer assim: DATA: lt_kunnr TYPE STANDARD TABLE OF kunnr, lr_kunnr TYPE RANGE OF kunnr, wa_kunnr LIKE LINE OF lr_kunnr. FIELD-SYMBOLS: <kunnr> LIKE LINE OF lt_kunnr. SELECT kunnr INTO TABLE lt_kunnr FROM kna1.

Soneca

images/thumbnail.jpg - Thumbnail
Volta não volta é preciso meter um programa a dormir. E como em quase tudo, há várias formas de o fazer, e umas formas são melhores do que outras. A forma mais standard de conseguir isto em ABAP é a seguinte: WAIT UP TO 10 SECONDS. A vantagem do WAIT UP TO N SECONDS é que o processo é libertado durante estes 10 segundos, ficando assim disponível para quem o quiser apanhar.

Várias versões da mesma história

images/thumbnail.jpg - Thumbnail
Toda a gente sabe que as versões do SAP são uma grande confusão. Os senhores de Heidelberg que brincam a dar os nomes às coisas lá deles ou são uns caprichosos, ou andam a gozar connosco, ou devem andar sempre à bulha. Aqui fica uma tabelinha para ajudar a deslindá-las: Ano | UI | Edição | Versão | Versinha | BASIS | WebAS | ECC | NetWeaver —|—|—|—|—|—|—|—|— | Terminal