Múltiplas selecções OR na SE16N

images/thumbnail.jpg - Thumbnail

Se tu és daquelas pessoas que ainda usa a SE16, este artigo não é para ti. Se continuares a ler corres o risco de encontrar ainda mais uma razão para finalmente passares a usar a SE16N (como se todas as outras não fossem já suficientes).

Imagina que queres seleccionar todos os materiais que tenham “PREGO" no nome e que sejam do tipo FERRAGENS e além disso todos os materiais que tenham “GUARDANAPO" no nome e que sejam do tipo COMIDA. Ou seja, não deverá aparecer o “PREGO_NO_PAO” nem o “GARDANAPO_PAPEL”. O que tu queres é isto (faz de conta):

(MATNR = “PREGO%” AND MTART = “FERR” ) OR (MATNR = “GUARDANAPO%” AND MAKT = “COMI” )

Como bem sabes, numa utilização normal (sem recorrer a isto que te vou mostrar) da SE16N terias de a executar duas vezes e cruzar manualmente a informação porque o ecrã de selecção não dá para fazer ORs.

Ou dá?

CASE dentro de SELECT (brevemente em todos os SAPs)

images/thumbnail.jpg - Thumbnail

Prepara-te porque em breve terás muitas surpresas. É que o ABAP está a aprender troques novos. Repara neste:

CONSTANTS:
  lc_menina TYPE STRING VALUE ‘MENINA',
  lc_menino TYPE STRING VALUE ‘MENINO’,
  lc_senhor TYPE STRING VALUE ’SENHOR’,
  lc_senhora TYPE STRING VALUE ‘SENHORA’.

SELECT nome,
 CASE
   WHEN sexo_id = ‘M' AND idade < 18 THEN @lc_menino
   WHEN sexo_id = ‘F’ AND idade < 18 THEN @lc_menina
   WHEN sexo_id = ‘M' AND idade >=18 THEN @lc_senhor
   WHEN sexo_id = ‘F’ AND idade >=18 THEN @lc_senhora
 END AS titulo
FROM zpessoa
WHERE pessoa_id = @pessoa_id
INTO CORRESPONDING FIELDS OF @lt_pessoas.

Só tens de esperar pela versão 7.40.

Procura notas directamente no Google Chrome

images/thumbnail.jpg - Thumbnail

O Google Chrome tem uma app para pesquisar notas SAP de forma integrada. Chama-se SAP Notes finder.

Instala-se aqui.

Obrigado Fernanda Mirabile e Talita Polanczyk pela dica.

O Abapinho saúda-vos.

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.