21 novembro 2019

Valor absoluto com abap

O valor Absoluto de um número é o seu valor sem considerar o sinal. Para obtermos este valor, utilizamos a função ABS conforme exemplo:

DATA: valor TYPE wrbtr.

valor = '-13'.
valor = ABS( valor ).


Neste caso, o resultado após a execução do código será 13 (valor sem o sinal de negativo).

05 setembro 2019

Gerenciando Pontos de Parada no SAP com RSBREAKPOINTS

Executando o programa RSBREAKPOINTS, conseguimos de uma forma bem simples gerenciar os pontos de parada (break points) no SAP.

Um exemplo de utilização, seria a situação em que você precise eliminar todos os pontos de parada que colocou, mas não lembra exatamente em quais objetos foram colocados.

Utilizando o programa, basta inserir o Mandante, Usuário e marcar a opção Eliminar pontos de Parada para remover todos os pontos de parada para o dado usuário.



Além de Remover, é possível também Exibir e Gravar os pontos de parada.

23 julho 2019

Criar Transação para SM30

Quando criamos uma tabela Z que precisa ser atualizada manualmente pelo usuário/funcional, utilizamos a opção "Gerador de atualização de tabela" na tela de criação (SE11) e geramos a nossa "SM30" desta tabela.

Para atualizar os dados desta tabela, basta acessar a transação SM30 com o nome dela e fazer nossas modificações.




O problema neste fluxo é que nem sempre o usuário final terá acesso à SM30 (visto que ao acessar a esta transação ele terá acesso a visualizar/modificar qualquer outra tabela além da sua), então quase sempre o funcional irá pedir ao abap para criar um transação Z associada à tela de atualização da tabela onde, ao acessar a transação, o usuário vai diretamente para a tela de atualização sem passar pela tela inicial da transação SM30

Então, vamos aos passos para criar nossa transação para manutenção de tabelas.

Partindo do ponto onde já temos o nosso "Diálogo de atualização de tabela" ou simplificando, nossa SM30 criada, iremos:


26 junho 2019

Classe local

Segue um modelo de implementação de uma classe local dentro um report onde teremos basicamente dois métodos:

  • print_value (Irá imprimir um dado valor)
  • change_value (Irá alterar um dado valor)

A estrutura de implementação deste exemplo consiste em basicamente 3 passos:

03 junho 2019

JDBG - Job debug

O SAP oferece uma maneira simples de debugar um programa que foi executado via job para que possamos verificar com detalhe algum possível erro que ocorreu na execução. Utilizamos o comando JDBG para esta tarefa. Confira os passos:

  1. Acessamos a transação SM37 e filtramos o programa/job alvo.
  2. Selecionamos a linha, e no campo de código de transações colocamos o comando JDBG .
  3. Apertamos Enter.



30 maio 2019

Sap Icon Code e Icon ID

A lista de ícones disponíveis no SAP é encontrada na tabela ICON. Se exibirmos o conteúdo da tabela via  SE16 podemos ver os ícones representados de forma gráfica com nome, descrição e outros parêmetros técnicos:



Para utilizarmos estes ícones em nossos programas, seja em um pop-up, alv ou uma lista, precisamos encontrar o código referente ao ícone que vai ser interpretado no programa abap.

27 maio 2019

Tratamento da exceção CX_SY_ZERODIVIDE

Ao escrever um cálculo em nosso código que envolve divisão, uma regra é garantir que não teremos valores zerados no momento do cálculo para não ocorrer um dump.

Abaixo um exemplo de código onde uma divisão por 0 não foi tratada corretamente:

DATA: v_resultado TYPE p,
      v_valor_1   TYPE p,
      v_valor_2   TYPE p.

v_valor_1 = 10.
v_valor_2 = 0.

v_resultado = v_valor_1 / v_valor_2.

24 maio 2019

Comando SIGN

Olá pessoal,

Um dica simples que pode ajudar no dia a dia é o uso do comando "SIGN" para descobrir se o valor de uma variável é positivo, negativo ou zerado. Sua utilização é muito simples conforme podemos ver abaixo:

DATA: v_valor_1     TYPE p,
      v_valor_2     TYPE p,
      v_valor_final TYPE p,
      v_sing        TYPE i.

v_valor_1 = 10.
v_valor_2 = 5.
v_valor_final = v_valor_2 - v_valor_1.

v_sing = SIGN( v_valor_final ).

WRITE v_sing.

O comando retornará (1) para número positivo, (0) para número zerado e (-1) para número negativo.