Hallo,
ich habe hier den Fall, dass ein Kurzdump im System A(282) auftritt und im System B(142) nicht.
Und zwar hat es was mit der Type länge zu tun.
So sieht der dump aus:
Fehleranalyse
Es ist eine Ausnahme aufgetreten, die weiter unten näher erläutert wird.
Die Ausnahme, der die Klasse 'CX_SY_RANGE_OUT_OF_BOUNDS' zugeordnet ist,
wurde in der Prozedur "GET_ACTION_OF_XVCLTOTAL" "(METHOD)" weder abgefangen,
noch durch eine RAISING-Klausel propagiert.
Da der Aufrufer der Prozedur nicht mit dem Auftreten der Ausnahme
rechnen konnte, wurde das laufende Programm abgebrochen.
Der Grund für die Ausnahme ist:
In dem laufenden Programm "/DZBW/SAPLFDI_IM" sollte auf das Feld "<0>", das den
Typ
"u" und die Länge 256 hat, mit dem Offset 284 zugegriffen werden.
Ein Teilfeldzugriff mit einer Offsetangabe, die nicht kleiner ist als
die Feldlänge, ist jedoch nicht erlaubt.
Code: Alles auswählen.
describe_length_byte IMPORTING i_data TYPE any OPTIONAL
i_datadescr TYPE REF TO cl_abap_datadescr OPTIONAL
PREFERRED PARAMETER i_data
RETURNING value(r_length) TYPE i,
Code: Alles auswählen.
METHOD describe_length_byte.
DATA l_d TYPE REF TO data.
*
FIELD-SYMBOLS <0> TYPE any.
*
IF i_datadescr IS BOUND.
CREATE DATA l_d TYPE HANDLE i_datadescr.
ASSIGN l_d->* TO <0>.
r_length = describe_length_byte( <0> ).
ELSE.
DESCRIBE FIELD i_data LENGTH r_length IN BYTE MODE.
ENDIF.
ENDMETHOD. "
r_length = describe_length_byte( <0> ) hat die Länge 284.
Woher nimmt er sich die Länge. Muss doch mit Customizing / Systemeinstellungen zu tun haben oder? Wo kann ich diese Einstellungen sehen?
Gruß
coco