Hallo Meinrad,
ich schreibe nur ein paar Zeilen weil ich nicht weiß ob es Dich noch über dieses Forum gibt?
Hätte ein paar sehr Intressante Fragen.
Gruß dks
Wenn Du eine Ahnung hast, welches Hexa-zeichen Du erwartest und Du einen String splitten willst, dann geht das recht einfach.
Die enzelne ZEile der internen Tablee muss nur groß genug gewählt werden.
DATA TAB_STOP TYPE X VALUE '09'.
SPLIT T01-ZEILE AT TAB_STOP INTO SPLIT_FELD1
SPLIT_FELD2 ... .
Nun noch eine Ausführung zu Hexa-werten:
(Release 4.5B )
Mir ist keine Möglichkeit bekannt,ohne Aufwand Felder vom irgendeinem Typ in Hexa-Felder (und umgekehrt) zu zerlegen/zu übertragen ohne dass die SAP-Konvertieungsregeln greifen. d.h.
DATA: C_FELD(2) TYPE C Value 'G',
X_FELD(2) TYPE X.
X_FELD = C_FELD. "geht nicht !
Da muss man den Hexawert "4720" mit Tricks reinbringen.
Ich habe mir im Rahmen eines Test mit Float-Zahlen zuerst eine ASCII-Code-Tabelle selbst-aufgebaut.
DATA: BEGIN OF ASCII_TAB OCCURS 256,
NUMC(3) TYPE N, "Werte 000-255
DEC(2) TYPE P, "Werte 000-255 , voranstehendes in Grün
HEX_VIS(2) TYPE C, "Hexa-wert sichtbar/ausdruckbar mit MOD /DIV
HEX_C(1) TYPE C, "Hexawert vom TYP C für Vergleich: IF
HEX(1) TYPE X, "Hexawert
CONTROL(3) TYPE C, "Für ACK, BEL, CR, LF FF (Zukunft)
GRAPHIC(1) TYPE C, "Buchstaben Ziffern Sonderzeichen (Zukunft)
END OF ASCII_TAB.
DATA: ...
* TRICK !! Strucktur über den zu untersuchenden Bereich legen !!!
BEGIN OF ERGEBNIS_STRUC,
FLOAT TYPE F,
END OF ERGEBNIS_STRUC,
* Tabelle, in der das zu Untersuchende Feld als Array von Bytes liegt
BEGIN OF ERGEBNIS_BYTE OCCURS 8,
BYTE,
END OF ERGEBNIS_BYTE.
*Aufbau einer ASCII-CODE-TABELLE
DO 256 TIMES.
ASCII_TAB-DEC = SY-INDEX - 1.
ASCII_TAB-HEX = SY-INDEX - 1.
ASCII_TAB-NUMC = SY-INDEX - 1.
X_DIV = ASCII_TAB-DEC DIV 16.
X_MOD = ASCII_TAB-DEC MOD 16.
BYTE_C = X_DIV.
IF X_DIV > 9.
CASE X_DIV.
WHEN 10.
BYTE_C = 'A'.
WHEN 11.
BYTE_C = 'B'.
WHEN 12.
...
WHEN 15.
BYTE_C = 'F'.
ENDCASE.
ENDIF.
ASCII_TAB-HEX_VIS(1) = BYTE_C. "1. Halbyte sichtbar in 1. Byte
BYTE_C = X_MOD.
IF X_MOD > 9.
CASE X_MOD.
WHEN 10.
BYTE_C = 'A'.
...
WHEN 15.
BYTE_C = 'F'.
ENDCASE.
ENDIF.
ASCII_TAB-HEX_VIS+1(1) = BYTE_C. "2. Halbyte sichtbar in 2. Byte
ASCII_TAB-HEX_C(1) = ASCII_TAB+8(1).
APPEND ASCII_TAB.
ENDDO.
* Übertragung in Struktur, um mit OFFSET Zugriff auf ein einzelnes Byte
* zu ermöglich
ERGEBNIS_STRUC-FLOAT = ERGEBNIS_FLOAT.
DO 8 TIMES. "FELDLÄNGE TIMES hier 8
H_IX = SY-INDEX - 1.
ERGEBNIS_BYTE-BYTE = ERGEBNIS_STRUC+H_IX(1).
APPEND ERGEBNIS_BYTE. "Tabelle von 1-Byte-Feldern
ENDDO.
---
WRITE:/
'Float Intern Hexadecimal per Programm byteweise aufbereitet:',
' "'.
LOOP AT ERGEBNIS_BYTE. "Loop über Jedes einzelne Byte (hier

LOOP AT ASCII_TAB WHERE
* Vergleich von Characterfeldern, aber jedes möglicher BIT-Muster (256)
HEX_C = ERGEBNIS_BYTE-BYTE.
ENDLOOP.
IF SY-SUBRC NE 0.
WRITE 'FUNZT NICHT'.
ELSE.
WRITE ASCII_TAB-HEX_VIS.
ENDIF.
ENDLOOP.
So kann man jedes beliebige Feld auf Hexa-werte hin untersuchen.
(Geringe Anpassung)
Gruß Meinrad[/quote]