Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

Ó Tempo Volta Para Trás

images/thumbnail.jpg - Thumbnail

“Ó tempo volta para trás Dá-me tudo o que eu perdi Tem pena e dá-me a vida A vida que eu já vivi Ò tempo volta p’ra trás Mata as minhas esperanças vãs Vê que até o próprio sol Volta todas as manhãs” - António Mourão

Ó Tony, é para já. Vou mostrar-te como podes voltar atrás no tempo.

F1 + F9 = Informações técnicas

images/thumbnail.jpg - Thumbnail

Amiúde sinto necessidade de, num ecrã funcional, ver as informações técnicas de um determinado campo. Coloco o cursor sobre o campo desejado, depois carrego em F1 e aparece um ecrã de diálogo com ajuda sobre esse campo. A seguir carrego no botão que diz “informações técnicas”. Mas há uma forma rápida de fazer o mesmo recorrendo apenas ao teclado. É que há dois modos possíveis para o F1 mostrar ajuda de um campo:

Quando a tabela interna não é estruturada

images/thumbnail.jpg - Thumbnail

Quando queres seleccionar linhas numa tabela interna normalmente fazes algo assim: DATA: BEGIN OF itbl, campo1 TYPE c, campo2 TYPE c, END OF itbl. READ TABLE itbl WITH KEY campo1 = 'X' campo2 = 'Y'. LOOP AT itbl WHERE campo1 = 'X' and campo2 = 'Y'. COISO. ENDLOOP. Mas, e se a tabela não for estruturada e quiseres pesquisar na linha como um todo? Bem, nesse caso, fica aqui a dica: usas a palavra especial TABLE_LINE :

Cria variantes de teste em funções a partir do debugger

images/thumbnail.jpg - Thumbnail

Imagina que estás a fazer debug de uma transacção e entras numa função e encontras algo interessante. Tão interessante que tens de lhe fazer debug várias vezes. A via convencional é tornar a iniciar o debug da transacção desde o início. Que seca.

Mas há uma via mais directa. Quando estás a fazer debug de uma função podes, directamente a partir do debugger, criar dados de teste para essa função com os valores com que a função tiver sido chamada nessa instância. É assim:

O histórico do SAPGui não funciona ainda que activo?

images/thumbnail.jpg - Thumbnail

Já te aconteceu o SAPGui não guardar um histórico dos valores que vais introduzindo nos vários campos ainda que, nas configurações, a opção de Histórico esteja activa?

A SE80 tem favoritos

images/thumbnail.jpg - Thumbnail

Na transacção SE80 há de tudo. Parece aquelas mercearias de aldeia atafulhadas de tralha onde se compra pasta de dentes, pão, sandálias, perfume e arroz a granel. Eu gosto dessas mercearias. Mas para lá ir é preciso saber ao que se vai, senão anda-se ao tio ao tio. Mas isso é nesses mercearias, porque na SE80… há favoritos. Pois é. Só soube há uns dias que a transacção SE80 tem a capacidade de guardar favoritos.

Se um desconhecido te oferecer valores, isso é Input

images/thumbnail.jpg - Thumbnail

Num relatório, os valores são normalmente pedidos ao utilizador no ecrã de selecção inicial, antes da execução do programa. Mas e se quiseres pedir-lhe mais alguns valores, interactivamente, a meio da execução do programa? Uma forma de o fazer é criar um ecrã com os campos desejados e depois invocá-lo com CALL SCREEN. Mas desenhar o ecrã e definir o PAI e o PBO é uma valente maçada. Outra solução é recorrer às funções POPUP_GET_VALUES ou POPUP_GET_VALUES_DB_CHECKED.

Ecrãs de selecção com abas

images/thumbnail.jpg - Thumbnail

Os ecrãs de selecção dos programas ABAP têm várias funcionalidades que, embora sofisticadas e simples de usar, são geralmente ignoradas. Aqui mostrar-te-ei quão simples é criar abas para melhor organizar os parâmetros de um programa. Desta vez, excepcionalmente, vou poupar-te à verborreia. É uma aula prática.

Debug em janelas de diálogo modais

images/thumbnail.jpg - Thumbnail

Há determinados momentos em que não é possível fazer /H para iniciar o debugger. O caso mais comum é durante uma janela de diálogo modal (aquilo que os estrangeiros chamam de popup ). Mas há uma forma simples, ainda que rocambolesca, para o conseguires:

O que diz uma mensagem?

images/thumbnail.jpg - Thumbnail

Queres obter o texto de uma mensagem da qual só sabes o ID e o número e não sabes como? Aprende aqui: DATA texto TYPE string. MESSAGE ID '00' TYPE 'E' NUMBER '163' WITH '123' INTO texto. É só isto. Agora do lado de dentro da variável texto encontras o seguinte texto: “O mandante 123 não existe no sistema” Obrigado a Peteris B pela foto. O Abapinho saúda-vos.

Sê preguiçoso quando escreves em ABAPês

images/thumbnail.jpg - Thumbnail

Para tentar determinar quais as profissões com gente mais preguiçosa fiz as seguintes pesquisas no Google:

Profissão Resultados

“médico preguiçoso”| 2.140.000

“advogado preguiçoso”| 1.430.000

“gestor preguiçoso”| 1.020.000

“engenheiro preguiçoso”| 647.000

“político preguiçoso”| 602.000

“economista preguiçoso”| 284.000

“pedreiro preguiçoso”| 91.200

Como se pode concluir inequivocamente, os engenheiros não são suficientemente preguiçosos pois são ultrapassados pelos advogados e pelos médicos. Isto tem de mudar. E esta dica vai ajudar. Mas não sem deixar clara a seguinte diferença: preguiça não é ergasiofobia. Falo aqui da preguiça nobre, a de quem gosta de fazer as coisas mas procura fazê-las com o mínimo esforço possível. Já os preguiçosos mandriões, esses não são para aqui chamados.

O SAP, que lá vai evoluindo lentamente, lançou já há uns anos um editor novo que vem cheio de capacidades muitas das quais, ainda que convenientes, são pouco aproveitadas. Uma delas chama-se “Modelos de código” que passo a apresentar:

ALV com múltipla escolha num ecrã de diálogo modal

images/thumbnail.jpg - Thumbnail

Sabes apresentar, numa janela de diálogo, uma ALV com uma lista de registos permitindo escolha múltipla? Eu não sabia e agora já sei. Vou explicar como é.

Pasta temporária do SAP Gui

images/thumbnail.jpg - Thumbnail

Por vezes um programa quer gravar um ficheiro localmente, no computador do utilizador através do SAP Gui. Nesses casos é comum que um dos campos do ecrã de selecção seja a localização da pasta no disco local. Eis uma forma de inicializar esse campo com a pasta temporária do SAP Gui: PARAMETERS: p_path TYPE string. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. CALL METHOD cl_gui_frontend_services=>directory_browse EXPORTING initial_folder = p_path CHANGING selected_folder = p_path.

Análises parciais na SE30

images/thumbnail.jpg - Thumbnail

Claro que já conheces a transacção SE30 (Análise de tempo de execução) e claro que a usas amiúde para analisar programas standard e descobrir nele tabelas, funções, BADIs e quejandos. Ora se fores como eu, manténs uma relação de amor-ódio com esta transacção: se por um lado a amas por graças a ela consegues ver as entranhas de um programa sem ter de fazer debug, por outro lado odeia-la porque normalmente a lista de entranhas costuma ter milhares de linhas e tornar-se ingerível.

Programas poliglotas que sabem o que dizem

images/thumbnail.jpg - Thumbnail

O SAP é um grande poliglota. Mas o ABAP nem sempre. O ABAP até tem muita facilidade em aprender e falar várias línguas, mas às vezes os programadores não o deixam. Muitos programadores cinzelam os textos literais directamente no programa, deixando-o irremediavelmente incapaz de comunicar em vários idiomas. Imagino duas razões para se agrilhoar um programa a uma única língua: A preguiça, que é a principal razão para se fazerem as coisas mal feitas;