Patrocinado por
Patrocinado por Inetum

Pesquisar por atributos de objectos em tabelas internas

images/thumbnail.jpg - Thumbnail

Há cada vez mais objectos em ABAP, cada vez menos medo deles e, vê só!, cada vez mais gente a escrevê-los e a usá-los. Ora, se começam a aparecer objectos por todo o lado, é normal e desejável que comecem a enfiá-los também dentro de tabelas internas. Também eu guardei há uns tempos um monte de objectos dentro de tabelas mas infelizmente na altura não sabia disto que vou ensinar aqui. Tinha-me dado jeito. Mas afinal o que vou eu ensinar aqui?

Implementar métodos privados em BADIs

images/thumbnail.jpg - Thumbnail

Há uns tempos tive uma ideia meio estrambólica meio fantástica que hoje decidi partilhar aqui: criar métodos privados nas classes das BADIs. Passo a explicar.

Como sabotar tabelas

images/thumbnail.jpg - Thumbnail

Mais um artigo em auxílio dos que buscam a subversão subreptícia. Espiões, reparem como editar uma tabela que não pode (e provavelmente não deve) ser editada. Apresento-vos 3 técnicas. A primeira já caducou há anos, a segunda está em vias de caducar e a terceira vamos ver quando caducará.

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:

Enviar relatório ou ordem de spool por e-mail

images/thumbnail.jpg - Thumbnail

Este post inaugura uma nova categoria no Abapinho: Código. Os posts desta categoria apresentarão programas úteis prontos a correr. Este serve para enviar por e-mail o resultado de qualquer relatório ou ordem de spool. O programa apresentado faz uso da nova BCS (Business Communication Services) através da classe CL_BCS em vez do velho e cansado SO_DOCUMENT_SEND_API1, paz à sua alma. O conteúdo pode ser enviado no corpo do email, como um anexo TXT ou como um anexo HTML, sendo que este último até vai com as cores todas certinhas e tudo. Disfruta-o. Copia-o cegamente e usa-o ou disseca-o e aprende como usar a CL_BCS. Pelo meio, se te apetecer, ainda podes aprender como usar classes locais e como usar classes de excepção.

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 é.