Welche Methode ist das eigentlich?
Heute ein wirklich kurzer Trick, um den Klassen- und Methodennamen der Methode heraus zu bekommen, in der man sich gerade befindet. Diese Information ist sehr nützlich, um genauere Protokolle zu schreiben oder dem Anwender oder Entwickler bessere Informationen bei einem Programmfehler geben zu können.
Eine Einschränkung gibt es bei diesem Trick: Der Name der Methode kann leider bei einer lokalen Klasse nicht ermittelt werden.
Achtung! Hier kommt er:
Type-Pool BCB in den Eigenschaften der globalen Klasse bekannt geben:
In der Methode folgendes Coding aufrufen:
*== Klassennamen ermitteln bcb_constant_class_name. write: / 'Class:', class_name. *== Klassennamen->Methodenname ermitteln bcb_constant_method_name. write: / 'Method:', method_name.
Das Original
Hier der Vollständigkeit halber das zu Grunde liegende Coding der beiden Makros aus dem Type-Pool BCB:
bcb_constant_class_name
data __class_descr__ type ref to cl_abap_typedescr. __class_descr__ = cl_abap_classdescr=>describe_by_object_ref( me ). data class_name type string. class_name = __class_descr__->get_relative_name( ).
bcb_constant_method_name
data __exception__ type ref to cx_bcb_exception. try. * force an exception... raise exception type cx_bcb_exception exporting area_code = '0' error_code = '0' msg = '0'. catch cx_bcb_exception into __exception__. * ... caught right after data __include__ type syrepid. __exception__->get_source_position( importing include_name = __include__ ). * map include name to method name data __program_name__ type programm. __program_name__ = __include__. data __method__ type seocpdkey. call function 'SEO_METHOD_GET_NAME_BY_INCLUDE' exporting progname = __program_name__ importing mtdkey = __method__. * get class and method names * data class_name type string. * class_name = __method__-CPDNAME. data method_name type string. concatenate __method__-clsname '->' __method__-cpdname into method_name. endtry.
[notice type=’info’]Weiterhin funktionieren tut natürlich auch der Trick mit ABAP_CALLSTACK.[/notice]
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024