1. REPORT  ZUNICODE_HVIEW.
  2.  
  3. parameters: p_file type char255 LOWER CASE." DEFAULT 'IEC/INTERFACE_S/CFOS/CFO_ZSDRPA009_NOTAS_ENTREGA'.
  4.  
  5. CONSTANTS fast_ascii type c LENGTH 128 VALUE
  6. '                                 !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.
  7.  
  8. data: begin of ty_view,
  9.           c_off type c LENGTH 16,
  10.           i_off type i,
  11.           n_off type n LENGTH 5,
  12.           hexa type char50,
  13.           ascii type char16,
  14.       end of ty_view.
  15.  
  16. data: T_file type TABL32768,
  17.        l_hexa type x,
  18.        l_char  type c,
  19.        i_seg type i.
  20.  
  21. at SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
  22.  
  23.   CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
  24.    IMPORTING
  25.      SERVERFILE             = p_file
  26.    EXCEPTIONS
  27.      CANCELED_BY_USER       = 1
  28.      OTHERS                 = 2.
  29.  
  30.  
  31. end-of-SELECTION.
  32.  
  33.   open DATASET p_file for INPUT in LEGACY BINARY MODE.
  34.   if sy-subrc eq 0.
  35.     do.
  36.       read DATASET p_file into T_file ACTUAL LENGTH sy-curow.
  37.       if sy-subrc ne 0 and sy-curow is INITIAL.
  38.         exit.
  39.       endif.
  40.  
  41. *--[ Preparamos el Offset
  42.       sy-cucol = 1 + sy-curow div 16.
  43.       do sy-cucol times.
  44.         perform DEC_2_HEX USING ty_view-i_off CHANGING ty_view-c_off.
  45.         clear: ty_view-ascii, ty_view-hexa.
  46. *--[ Preparamos los hexadecimales.
  47.         do 16 times.
  48.           l_hexa = T_file+i_seg(1).
  49.           sy-pagno = l_hexa.
  50.  
  51.           perform DEC_2_HEX USING sy-pagno CHANGING Sy-lisel.
  52.           Sy-lisel = Sy-lisel+14(2).
  53.           CONCATENATE ty_view-hexa Sy-lisel+0(2) into ty_view-hexa SEPARATED BY ' '.
  54.           if sy-pagno >= 33 and sy-pagno < 127.
  55.             l_char = fast_ascii+sy-pagno(1).
  56.           else.
  57.             l_char = '.'.
  58.           endif.
  59.           CONCATENATE ty_view-ascii l_char into ty_view-ascii.
  60.           add 1 to i_seg. "<-- Apunta al siguiente
  61.         enddo.
  62.         write: / '|', ty_view-c_off, '(', ty_view-n_off, ') |', ty_view-hexa, '|', ty_view-ascii, '|' .
  63.         add 16 to: ty_view-i_off,
  64.                     ty_view-n_off.
  65.       enddo.
  66.  
  67.     enddo.
  68.     close DATASET p_file.
  69.   endif.
  70.  
  71. form DEC_2_HEX using P_I
  72.                 CHANGING p_o.
  73.   data: v_hexa type x LENGTH 5,
  74.         v_hexa_value type char16,
  75.         v_cnt type i.
  76.   v_hexa = p_i.
  77.   v_hexa_value = v_hexa.
  78.   v_cnt = strlen( v_hexa_value ).
  79.   v_cnt = 16 - v_cnt.
  80.   do v_cnt times.
  81.     concatenate '0' v_hexa_value into v_hexa_value.
  82.   enddo.
  83.   p_o = v_hexa_value.
  84.  
  85. endform.
"DEC_2_HEX