¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Converter valor decimal para hexadecimal em ABAP: Módulo padrão ou código personalizado rápido?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 23 Vistas
0
Cargando...

Olá Especialistas-

Tenho uma necessidade (em ABAP) de poder converter um valor decimal para sua representação hexadecimal.

Tenho IDs de documentos como '189' e '192' e há um arquivo de imagem associado a cada documento chamado '000000BD' e '000000C0.jpg' respectivamente. A C0 é a representação hexadecimal do decimal 192 e BD do 189.

Existe algum módulo de função padrão que posso usar para determinar isso? Se não, algum código personalizado rápido que você possa pensar?

Obrigado,

- Vik.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Vik,

Não vejo a necessidade de um Módulo de Função neste caso. Como mencionou Kathir, uma simples conversão de tipo fará o truque. Insira um inteiro em um campo hexadecimal e obterá o que deseja.

Além disso, percebo que várias de suas mensagens recentes não foram fechadas. Poderia marcá-las como respondidas, por favor?

Saudações,

Anand Mandalika.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Espero que tenha resolvido o seu problema. Se precisar da mesma funcionalidade em um módulo que retorne um valor de tamanho 8

como você mostrou, ou seja, 192 -> 000000C0, então acredito que este código será útil.

FUNCTION Z_DECIMAL_TO_HEXA.

*"----


" "Interface local:

*" IMPORTING

*" VALUE(V_DECIMAL) TYPE I DEFAULT 0

*" EXPORTING

*" VALUE(V_HEXA_VALUE) TYPE CHAR8

*"----


data: v_hexa type x,

v_cnt type i.

v_hexa = v_decimal.

v_hexa_value = v_hexa.

v_cnt = strlen( v_hexa_value ).

v_cnt = 8 - v_cnt.

do v_cnt times.

concatenate '0' v_hexa_value into v_hexa_value.

enddo.

ENDFUNCTION.

Portanto, se sua necessidade for atendida, por favor, encerre este tópico.

Obrigado e cumprimentos,

Kathir~

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Kathir,

Há dois pontos que gostaria de mencionar aqui -

1. Em seu trecho de código, dado que v_deci é uma variável inteira, não deveria atribuir uma string a ela. Quando você diz

v_deci = '192'

Está tentando converter um literal do tipo caractere em um inteiro. Aqui não há problema, você não notará diferença e a conversão será realizada.

Mas o ponto é que não há necessidade desse tipo de conversão neste caso. Você deveria estar usando -

v_deci = 192.

2. Em seu código, se eu atribuir um valor, digamos, 600 a v_deci, então a conversão falhará. O equivalente hexadecimal que você obterá será 58. O que claramente está incorreto. Em seu caso, v_hexa é capaz de conter um equivalente inteiro de até 256. Para tornar as coisas mais genéricas, você deve usar...

data: v_hexa(4) type x,
      v_deci    type i.

A extensão é dada como 4, porque se assume que um inteiro ocupa 4 bytes.

Saudações,

Anand Mandalika.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Tente este código.

REPORT ZC1_NUMBER_CONVERSION .

data: v_hexa type x,

v_deci type i.

v_deci = '192'.

v_hexa = v_deci.

write:/ 'Decimal :' , v_deci , ' = Hexa Decimal :' , v_hexa.

Eu obtive o seguinte resultado,

Conversão de Números

Decimal : 192 = Hexa Decimal : C0

Espero que isso te ajude.

Saudações

Kathir~

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?