REPORT ZUNICODE_HVIEW.
parameters: p_file type char255 LOWER CASE." DEFAULT 'IEC/INTERFACE_S/CFOS/CFO_ZSDRPA009_NOTAS_ENTREGA'.
CONSTANTS fast_ascii type c LENGTH 128 VALUE
' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.
data: begin of ty_view,
c_off type c LENGTH 16,
i_off type i,
n_off type n LENGTH 5,
hexa type char50,
ascii type char16,
end of ty_view.
data: T_file type TABL32768,
l_hexa type x,
l_char type c,
i_seg type i.
at SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
IMPORTING
SERVERFILE = p_file
EXCEPTIONS
CANCELED_BY_USER = 1
OTHERS = 2.
end-of-SELECTION.
open DATASET p_file for INPUT in LEGACY BINARY MODE.
if sy-subrc eq 0.
do.
read DATASET p_file into T_file ACTUAL LENGTH sy-curow.
if sy-subrc ne 0 and sy-curow is INITIAL.
exit.
endif.
*--[ Preparamos el Offset
sy-cucol = 1 + sy-curow div 16.
do sy-cucol times.
perform DEC_2_HEX USING ty_view-i_off CHANGING ty_view-c_off.
clear: ty_view-ascii, ty_view-hexa.
*--[ Preparamos los hexadecimales.
do 16 times.
l_hexa = T_file+i_seg(1).
sy-pagno = l_hexa.
perform DEC_2_HEX USING sy-pagno CHANGING Sy-lisel.
Sy-lisel = Sy-lisel+14(2).
CONCATENATE ty_view-hexa Sy-lisel+0(2) into ty_view-hexa SEPARATED BY ' '.
if sy-pagno >= 33 and sy-pagno < 127.
l_char = fast_ascii+sy-pagno(1).
else.
l_char = '.'.
endif.
CONCATENATE ty_view-ascii l_char into ty_view-ascii.
add 1 to i_seg. "<-- Apunta al siguiente
enddo.
write: / '|', ty_view-c_off, '(', ty_view-n_off, ') |', ty_view-hexa, '|', ty_view-ascii, '|' .
add 16 to: ty_view-i_off,
ty_view-n_off.
enddo.
enddo.
close DATASET p_file.
endif.
form DEC_2_HEX using P_I
CHANGING p_o.
data: v_hexa type x LENGTH 5,
v_hexa_value type char16,
v_cnt type i.
v_hexa = p_i.
v_hexa_value = v_hexa.
v_cnt = strlen( v_hexa_value ).
v_cnt = 16 - v_cnt.
do v_cnt times.
concatenate '0' v_hexa_value into v_hexa_value.
enddo.
p_o = v_hexa_value.
endform.