Debug de um job
Para fazeres debug a um programa que faça parte de um job faz o seguinte:
Para fazeres debug a um programa que faça parte de um job faz o seguinte:
Há muito tempo atrás dizias “porreiro pá”. Depois começaste a dizer “baril”. Depois era “fixe”. Hoje dizes “altamente”. É importante não te baralhares para não dares mau aspecto.
E como perguntas a uma tabela interna se a linha existe?
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.
Imagina que tens um programa a executar um ciclo infinito ou, pelo menos, um ciclo com 70x7 iterações. Nunca mais acaba e tu queres saber o que lá se passa.
No passado tinhas de ir à SM50, seleccionar o processo e escolher no menu “Administração | Programa | Depuração”.
Mas agora há uma forma muito mais simples.
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.
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.
O Abapinho recebeu uma carta.
Sr Abapinho,
Todos sabemos como colocar valores por defeito em select options usando o comando DEFAULT. O que nem toda a gente sabe é que podemos também definir por defeito a opção e o sinal e mesmo o botão para restingir o select options.
Quando chamas um módulo de função que devolve excepções normalmente dás-lhes números sequenciais tipo isto:
CALL FUNCTION 'VAI_ALI_MAS_VOLTA'
EXPORTING
ali = 'Barreiro'
EXCEPTIONS
NOT_FOUND = 1
GOT_LOST = 2
OTHERS = 3.
Mas se a seguir não tiveres o cuidado de ter um IF ou um CASE a olharem para o SY-SUBRC o Code Inspector pode devolve-te um erro caso esteja configurado para tal.
Temos duas variáveis:
DATA palavra1 TYPE string.
DATA palavra2 TYPE string.
DATA: frase TYPE string.
palavra1 = ‘isto’.
palavra2 = ‘aquilo’.
E queremos concatená-las metendo entre elas a palavra ‘mais’ e, claro, separando-as por espaços.
O editor de ABAP tem coisas que não lembram ao diabo. Até dá para escrever ao mesmo tempo em várias linhas.
Não está.
Mas eles - os senhores que fazem e refazem o ABAP propriamente dito - vão tentando remediar a situação.
Olha por exemplo esta nova funcionalidade.
Sabias que podes fazer LOOP de uma tabela interna com uma estrutura A para dentro de uma estrutura do tipo B?
Para indentares um bloco de linhas só com teclas faz assim:
Todos os dias aprendo novos comandos para introduzir no campo da transacção. Hoje aprendi uns que resolvem um problema que, ainda que raramente, já me aconteceu no passado.
Vê lá se isto já te aconteceu: fazes uma alteração a um texto de um elemento usado numa tabela que editas a partir da SM30. Mas quando vais à SM30 o texto antigo continua lá. Activas vezes sem conta, sais e entras da transacção e nada.
Claro que já conheces o botão “Modelo” no editor de ABAP que permite introduzir automaticamente modelos para módulos de função, chamadas a métodos e outros.
Mas o novo editor agora cresceu um bocadinho (já só está 10 anos atrasado em relação ao Eclipse em vez de 20) e já permite completar automaticamente alguns comandos através do atalho CTRL-SPACE.