adesso business consulting Stellenangebote
Software Engineer Senior
| (Senior) Cloud Software Engineer BTP | Senior Frontend Software Engineer SAP BTP
| (Senior) Consultant Technologie
Werkstudent Softwareentwicklung · Consulting
Anwendungsprotokoll in Cloud Entwicklung erstellen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
[[Kategorie: Codeschnipsel]] | [[Kategorie: Codeschnipsel]] | ||
[[Kategorie:Clean-Core-Level_A]] | |||
<div class="adminonly" style="display:none; text-align:right;" hreflang="en">https://unirab.org/Create_application_log_in_cloud_development</div> | <div class="adminonly" style="display:none; text-align:right;" hreflang="en">https://unirab.org/Create_application_log_in_cloud_development</div> | ||
Für T1 / Cloud Entwicklungen können die bekannten FuBas oder klassischen Klassen für Erstellungen von Application Logs nicht mehr genutzt werden. | Für T1 / Cloud Entwicklungen können die bekannten FuBas oder klassischen Klassen für Erstellungen von Application Logs nicht mehr genutzt werden. | ||
| Zeile 10: | Zeile 11: | ||
== Neuen Anwendungsprotokoll erstellen == | == Neuen Anwendungsprotokoll erstellen == | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="abap" line copy> | ||
TRY. | TRY. | ||
DATA(lo_log) = cl_bali_log=>create( ). | DATA(lo_log) = cl_bali_log=>create( ). | ||
| Zeile 18: | Zeile 19: | ||
== Kopfdaten zum Anwendungsprotokoll erstellen == | == Kopfdaten zum Anwendungsprotokoll erstellen == | ||
<syntaxhighlight lang="abap" line copy> | |||
lo_log->set_header( header = cl_bali_header_setter=>create( object = 'YOBJECT' | lo_log->set_header( header = cl_bali_header_setter=>create( object = 'YOBJECT' | ||
subobject = 'YSUBOBJECT' | subobject = 'YSUBOBJECT' | ||
external_id = 'Ext ID' ) ). | external_id = 'Ext ID' ) ). | ||
</syntaxhighlight> | |||
== Nachrichten zum Anwendungsprotokoll hinzufügen == | == Nachrichten zum Anwendungsprotokoll hinzufügen == | ||
<syntaxhighlight lang="abap" line copy> | |||
TRY. | TRY. | ||
DATA(lo_message) = cl_bali_message_setter=>create( severity = if_bali_constants=>c_severity_error | DATA(lo_message) = cl_bali_message_setter=>create( severity = if_bali_constants=>c_severity_error | ||
| Zeile 39: | Zeile 44: | ||
CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). | CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). | ||
ENDTRY. | ENDTRY. | ||
</syntaxhighlight> | |||
== Anwendungsprotokoll auf die Datenbank speichern == | == Anwendungsprotokoll auf die Datenbank speichern == | ||
Es gibt zwei Methoden zum Speichern des Logs: | Es gibt zwei Methoden zum Speichern des Logs: | ||
* SAVE_LOG: verwendet die Standarddatenbankverbindung. Dies bedeutet, dass das Protokoll nur dann auf die Datenbank geschrieben wird, wenn die Anwendung COMMIT_WORK aufruft. | * SAVE_LOG: verwendet die Standarddatenbankverbindung. Dies bedeutet, dass das Protokoll nur dann auf die Datenbank geschrieben wird, wenn die Anwendung COMMIT_WORK aufruft. | ||
* SAVE_LOG_2ND_DB_CONNECTION: verwendet zum Speichern ein Service, der das Protokoll direkt auf die Datenbank commited | * SAVE_LOG_2ND_DB_CONNECTION: verwendet zum Speichern ein Service, der das Protokoll direkt auf die Datenbank commited | ||
<syntaxhighlight lang="abap" line copy> | |||
TRY. | TRY. | ||
cl_bali_log_db=>get_instance( )->save_log( log = lo_log ). | cl_bali_log_db=>get_instance( )->save_log( log = lo_log ). | ||
| Zeile 49: | Zeile 56: | ||
CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). | CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). | ||
ENDTRY. | ENDTRY. | ||
</syntaxhighlight> | |||
== Anwendungsprotokoll aus dem Speicher löschen / Prüfung Speicher gelöscht == | == Anwendungsprotokoll aus dem Speicher löschen / Prüfung Speicher gelöscht == | ||
<syntaxhighlight lang="abap" line copy> | |||
TRY. | TRY. | ||
lo_log->release_memory( ). | lo_log->release_memory( ). | ||
| Zeile 58: | Zeile 66: | ||
lo_runtime_exception->get_text( ). | lo_runtime_exception->get_text( ). | ||
ENDTRY. | ENDTRY. | ||
</syntaxhighlight> | |||
== Anwendungsprotokoll löschen == | == Anwendungsprotokoll löschen == | ||
<syntaxhighlight lang="abap" line copy> | |||
TRY. | TRY. | ||
cl_bali_log_db=>get_instance( )->delete_log( log = lo_log ). | cl_bali_log_db=>get_instance( )->delete_log( log = lo_log ). | ||
CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). | CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). | ||
ENDTRY. | ENDTRY. | ||
</syntaxhighlight> | |||
== Anwendungsprotokoll in Fiori-Anwendungsjob anhängen == | == Anwendungsprotokoll in Fiori-Anwendungsjob anhängen == | ||
Der Vorteil der o.g. verwendeten Klassen beim Speichern des Logs ist, dass diese direkt dem Anwendungsjob, die via Fiori App "Anwendungsjob" erstellt wurden, angehangen werden, wenn der entsprechende Parameter "ASSIGN_TO_CURRENT_APPL_JOB" bei cl_bali_log_db=>get_instance( )->save_log( log = lo_log ). auf abap_true gesetzt wird. | Der Vorteil der o.g. verwendeten Klassen beim Speichern des Logs ist, dass diese direkt dem Anwendungsjob, die via Fiori App "Anwendungsjob" erstellt wurden, angehangen werden, wenn der entsprechende Parameter "ASSIGN_TO_CURRENT_APPL_JOB" bei cl_bali_log_db=>get_instance( )->save_log( log = lo_log ). auf abap_true gesetzt wird. | ||
Aktuelle Version vom 30. Januar 2026, 12:54 Uhr
Für T1 / Cloud Entwicklungen können die bekannten FuBas oder klassischen Klassen für Erstellungen von Application Logs nicht mehr genutzt werden. Hierfür bietet die SAP mehrere freigegebende Klassen für die Cloud Entwicklung, s. SAP_Klassen#Application_Log Das Objekt und Subobjekt sollte nicht via SLG0, sondern via Eclipse mit ABAP Development Tools angelegt werden.
Anwendung der Klassen
Neuen Anwendungsprotokoll erstellen
TRY. DATA(lo_log) = cl_bali_log=>create( ). CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). ENDTRY.
Kopfdaten zum Anwendungsprotokoll erstellen
lo_log->set_header( header = cl_bali_header_setter=>create( object = 'YOBJECT'
subobject = 'YSUBOBJECT'
external_id = 'Ext ID' ) ).
Nachrichten zum Anwendungsprotokoll hinzufügen
TRY.
DATA(lo_message) = cl_bali_message_setter=>create( severity = if_bali_constants=>c_severity_error
id = 'YMC_ABC'
number = '000' ).
lo_log->add_item( item = lo_message ).
lo_log->add_item( item = cl_bali_message_setter=>create_from_sy( ) ).
DATA(lo_free_text) = cl_bali_free_text_setter=>create( severity = if_bali_constants=>c_severity_error
text = 'Some Error Text' ).
lo_log->add_item( item = lo_free_text ).
DATA(lo_exception) = cl_bali_exception_setter=>create( severity = if_bali_constants=>c_severity_error
exception = lo_ref ).
lo_log->add_item( item = lo_exception ).
CATCH cx_bali_runtime INTO DATA(lx_runtime_exception).
ENDTRY.
Anwendungsprotokoll auf die Datenbank speichern
Es gibt zwei Methoden zum Speichern des Logs:
- SAVE_LOG: verwendet die Standarddatenbankverbindung. Dies bedeutet, dass das Protokoll nur dann auf die Datenbank geschrieben wird, wenn die Anwendung COMMIT_WORK aufruft.
- SAVE_LOG_2ND_DB_CONNECTION: verwendet zum Speichern ein Service, der das Protokoll direkt auf die Datenbank commited
TRY. cl_bali_log_db=>get_instance( )->save_log( log = lo_log ). cl_bali_log_db=>get_instance( )->save_log_2nd_db_connection( log = lo_log ). CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). ENDTRY.
Anwendungsprotokoll aus dem Speicher löschen / Prüfung Speicher gelöscht
TRY. lo_log->release_memory( ). IF lo_log->is_invalidated( ). ENDIF CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). lo_runtime_exception->get_text( ). ENDTRY.
Anwendungsprotokoll löschen
TRY. cl_bali_log_db=>get_instance( )->delete_log( log = lo_log ). CATCH cx_bali_runtime INTO DATA(lx_runtime_exception). ENDTRY.
Anwendungsprotokoll in Fiori-Anwendungsjob anhängen
Der Vorteil der o.g. verwendeten Klassen beim Speichern des Logs ist, dass diese direkt dem Anwendungsjob, die via Fiori App "Anwendungsjob" erstellt wurden, angehangen werden, wenn der entsprechende Parameter "ASSIGN_TO_CURRENT_APPL_JOB" bei cl_bali_log_db=>get_instance( )->save_log( log = lo_log ). auf abap_true gesetzt wird.