Implementar métodos privados em BADIs
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.
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.
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á.
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 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 :
DATA: itbl TYPE STANDARD TABLE OF string,
wa LIKE LINE OF itbl.
READ TABLE itbl WITH KEY table_line = 'X'.
LOOP AT itbl INTO wa WHERE table_line = 'X'.
COISO.
ENDLOOP.(Obrigado a Aaron Escobar pela foto.)
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:
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.
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?
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. É um botãozinho logo ali à mão. Vejam a foto:
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. São bastante versáteis mas ainda assim algo chatas de utilizar e com algumas limitações.
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.