Tag > segredo
Patrocinado por
Patrocinado por Inetum

Debug de um job

images/thumbnail.jpg - Thumbnail
Para fazeres debug a um programa que faça parte de um job faz o seguinte:

Calem-se as mensagens das funções

images/thumbnail.jpg - Thumbnail
Há módulos de função standard que lançam mensagens e não deviam. Não deviam porque depois queremos usá-las em programas não interactivos e, em vez de devolverem o erro, atiram com uma mensagem para o ecrã que dá cabo do processo. Mas, provavelmente por ter tomado consciência deste problema, a SAP disponibilizou uma forma elegante (mas muito mal documentada) de resolver o problema.

Procurar texto numa WebDynpro

images/thumbnail.jpg - Thumbnail
A SAP não sabe fazer as coisas bem à primeira. As WebDynpros são um bom exemplo disso. Aquilo nem sequer permite pesquisar texto. É triste. Felizmente o Sérgio Fraga descobriu uma forma, ainda que rebuscada:

De quantos includes é feita uma classe?

images/thumbnail.jpg - Thumbnail
Por muitas voltas que eles dêem no ABAP, acaba tudo por ir dar à SE38. Até os métodos das classes ABAP são guardados em includes. Às vezes quando há um dump diz que o problema está, por exemplo, aqui: CL_MESSAGE_HELPER=============CM001.

Tornar a prender uma ordem de transporte liberada

images/thumbnail.jpg - Thumbnail
Liberaste uma ordem de transporte porque achavas que estava tudo pronto. Mas afinal ainda faltava fazer mais uma pequena modificação. E agora vais ter de criar uma nova ordem e transportar as duas. Que grande chatice. Calma.

Escrever em muitas linhas ao mesmo tempo

images/thumbnail.jpg - Thumbnail
O editor de ABAP tem coisas que não lembram ao diabo. Até dá para escrever ao mesmo tempo em várias linhas.

Matemática problemática

images/thumbnail.jpg - Thumbnail
Sabes a diferença entre um mistério e um enigma? Num enigma sabe-se que há uma solução mas esta não é conhecida; já num mistério, não se sabe se haverá solução. Concordas com isto? 5 * 3 / 10 = ( 5 * 3 ) / 10 = 5 * ( 3 / 10 ) = 1.5 Se não concordas, devias concordar porque é um facto matemático. Mas vamos lá fazer umas experiências.

SELECT comparando 2 campos da própria tabela

images/thumbnail.jpg - Thumbnail
Esta dica é simples e rápida mas aposto 200$482 em como poucos a sabem.

Roubar o conteúdo de uma SALV

images/thumbnail.jpg - Thumbnail
Um amigo de um amigo de um amigo disse que um amigo dele conhecia um amigo que, num bar de alterne ali nas docas, lhe explicou como roubar os dados a uma SALV.

Comando /HS

images/thumbnail.jpg - Thumbnail
Todo os funcional, até o mais funcional dos funcionais, sabe que para começar a depurar (vá, a fazer debug a) um programa ABAP se usa o comando /H. Mas raro será o programador, mesmo o mais programador dos programadores, que saberá para que serve o comando /HS.

Salta a parede

images/thumbnail.jpg - Thumbnail
Baixa a música. Fecha a porta. Olha à volta. Está alguém a olhar para ti? Não estás a ser observado? Nem câmaras de vigilância? Então, podemos continuar.

Parâmetros complexos em funções remotas

images/thumbnail.jpg - Thumbnail
As chamadas a funções remotas (por RFC) não suportam parâmetros com estruturas complexas ( deep structures ). Por outras palavras, se algum dos parâmetros tiver uma estrutura em que um dos seus campos seja outra estrutura ou uma tabela interna, azar, não dá. Desistes? Não desistas. O Abapinho dá-te a solução: serialização.

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

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

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 :