Anwendungsprotokoll in Cloud Entwicklung erstellen: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
M1ch3lde (Diskussion | Beiträge)
M1ch3lde (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Markierung: Manuelle Zurücksetzung
 
(32 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie: Codeschnipsel]]
[[Kategorie: Codeschnipsel]]
<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.
Hierfür biete die SAP mehrere freigegebende Klassen für die Cloud Entwicklung, s. [[SAP_Klassen#Application_Log]]
Hierfür biete die SAP mehrere freigegebende Klassen für die Cloud Entwicklung, s. [[SAP_Klassen#Application_Log]]
Zeile 5: Zeile 6:


= Anwendung der Klassen =
= Anwendung der Klassen =
<div class="adminonly" style="display:none; text-align:right;">https://pastebin.com/5punprFi</div>


== Neuen Anwendungsprotokoll erstellen ==
== Neuen Anwendungsprotokoll erstellen ==
<syntaxhighlight lang="python" copy>
<syntaxhighlight lang="php" line copy>
  TRY.
  TRY.
   DATA(lo_log) = cl_bali_log=>create( ).
   DATA(lo_log) = cl_bali_log=>create( ).
Zeile 29: Zeile 32:
   DATA(lo_free_text) = cl_bali_free_text_setter=>create( severity = if_bali_constants=>c_severity_error
   DATA(lo_free_text) = cl_bali_free_text_setter=>create( severity = if_bali_constants=>c_severity_error
                                                               text = 'Some Error Text' ).
                                                               text = 'Some Error Text' ).
   lo_log->add_item( item = l_free_text ).
   lo_log->add_item( item = lo_free_text ).
    
    
   DATA(lo_exception) = cl_bali_exception_setter=>create( severity = if_bali_constants=>c_severity_error
   DATA(lo_exception) = cl_bali_exception_setter=>create( severity = if_bali_constants=>c_severity_error
                                                        exception = lo_ref ).
                                                        exception = lo_ref ).
   lo_log->add_item( item = l_exception ).
   lo_log->add_item( item = lo_exception ).
   CATCH cx_bali_runtime INTO DATA(lx_runtime_exception).
   CATCH cx_bali_runtime INTO DATA(lx_runtime_exception).
  ENDTRY.
  ENDTRY.
Zeile 58: Zeile 61:
== Anwendungsprotokoll löschen ==
== Anwendungsprotokoll löschen ==
  TRY.
  TRY.
   cl_bali_log_db=>get_instance( )->delete_log( log = l_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.

Aktuelle Version vom 26. Dezember 2024, 20:51 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 biete 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.