Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

CALL FUNCTION com DESTINATION ‘NONE' cria nova LUW

images/thumbnail.jpg - Thumbnail
Sabias que quando invocas uma função com a opção DESTINATION ‘NONE’ estás a iniciar uma nova LUW? Isto pode parecer apenas uma curiosidade, mas há um caso em que pode fazer toda a diferença: sabes aqueles módulos de função que ao serem chamados uma segunda vez têm um comportamento diferente da primeira vez? Isto acontece porque eles hão-de ter alterado alguma variável global ao grupo de funções. Ora se iniciares uma nova LUW quando chamares a função, o seu grupo de funções é automaticamente inicializado e assim garantes que o comportamento da função é o esperado.

Debug de um job

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

Como perguntar se a linha existe sem parecer antiquado

images/thumbnail.jpg - Thumbnail
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?

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.

Fazer debug a um ciclo infinito já em execução

images/thumbnail.jpg - Thumbnail
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.

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.

Pré-definir SELECT-OPTIONs

images/thumbnail.jpg - Thumbnail
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.

Ignorar excepções de um módulo de função

images/thumbnail.jpg - Thumbnail
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.

Concatenemos

images/thumbnail.jpg - Thumbnail
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.

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.

Onde está o booleano?

images/thumbnail.jpg - Thumbnail
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.

LOOP at tbl ASSIGNING <linha> CASTING

images/thumbnail.jpg - Thumbnail
Sabias que podes fazer LOOP de uma tabela interna com uma estrutura A para dentro de uma estrutura do tipo B?

Indentar em bloco

images/thumbnail.jpg - Thumbnail
Para indentares um bloco de linhas só com teclas faz assim:

Limpar os buffers de uma sessão SAP

images/thumbnail.jpg - Thumbnail
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.