Das Textlog enthält viele unnütze technische Einträge. Die kann man ausblenden.

Hintergrund:

Zahlreiche Aktivitäten im ChaRM fügen Einträge im Textprotokoll hinzu. Nicht alle Einträge sind sinnvoll/hilfreich. Bei zu vielen Einträge leidet jedoch die Übersichtlichkeit.

Anforderung:

Ausblenden von ausgewählten Einträgen. Z.B. Erzeugen von ToCs.

Beispiele:

  • Leerer Auftrag DEVK908714 in Aufgabenplan M000000082 wurde gelöscht
  • Aktion Aufträge freigeben ohne offene Transportaufträge ausgeführt!
  • Aufträge werden gelöscht
  • Für die Aufträge DEVK908722 wurden Kopien DEVK908725 transportiert

Lösung 1:

Das Schreiben von Textprotokolleinträgen erfolgt mittels Methode „cl_hf_helper=>insert_notice“. Übergabeparameter ist die vollständige Textzeile.
Hier kann mittels Mustererkennung (z.B. regulärer Ausdruck) nach bestimmten Einträgen gesucht und das Schreiben unterbunden werden. Nachteil: Mustererkennung ist teilweise aufwendig und sprachabhängig.
Vorteil: Diese Lösung klappt für fast alle Einträge.

Lösung 2:

Das Schreiben von Textprotokolleinträgen erfolgt in den meisten Fällen mit „cl_chm1_instance->handle_message“ welche wiederum u.a. cl_hf_helper=>insert_notice ruft. Übergabeparameter sind hier Nachrichtenklasse, Nachrichtennummer und Nachrichtenparameter.
Hier kann somit die Filterung mittels Nachrichtenklasse/-nummer erfolgen. Nachteil: Funktioniert nicht für Fälle in denen cl_hf_helper=>insert_notice direkt benutzt wird (z.B. Statuswechsel, Protokollierungen des Aufgabenplans). Vorteil: Sehr einfach und sprachunabhängig.

Lösung 3:

Für transportbasierte ChaRM-Aktionen (z.B. Transportauftrag anlegen, freigeben, …) aus dem Transportverwaltung-Zuordnungsblock wird Methode CL_AI_CRM_ACTION_UTILITY->HANDLE_ACTION_LOG verwendet um Nachrichten ins Textlog zu schreiben. Der Text wird hier abhängig vom Aktionsnamen dem Customizing TSOCM_ACT_DEF entnommen. Sind hier keine Nachrichten für die betreffende Aktion gepflegt, wird keine Nachricht geschrieben. Folglich können Nachrichten durch entsprechendes Customizing ausgeblendet oder geändert werden. Beispieltext: „Aufträge DEVK908729 angelegt“

Lösung 4:

In der Regel lösen alle Aktionen des Aufgabenplanes eine Protokollierung im Textlog aus. Um hier Nachrichten auszufiltern oder zu ändern, ist Funktionsbaustein /TMWFLOW/APPL_STAT_MESSAGE am Ende zu erweitern. Es ist hierbei zu beachten, dass Nachrichtenklasse und –nummer der Pseudo-Konsistenzbedingung 0POSITIVE_FEEDBACK oder 0NEGATIVE_FEEDBACK aus Tabelle TSOCM_COND_DEF entnommen werden und für alle Aktionen gleich sind. Hier muss also eine Einbeziehung des Aktionsnamens (L_ACTION_MESSAGE-TASK_ID) sowie ggf. weiterer Parameter erfolgen, um eine sinnvolle Filterung zu ermöglichen. Funktionsbaustein /TMWFLOW/APPL_STAT_MESSAGE wird von Methode CL_AI_CRM_ACTION_UTILITY-> HANDLE_ACTION_LOG für Aktionen des Tansportmanagement-ABs und von Methode IF_EX_SOCM_PROCESS_ACTION~PROCESS_ACTION der ChaRM-Proxy-Klassen für ChaRM-Aktionen mit Aufgabenplaninteraktionen gerufen. Methode IF_EX_SOCM_PROCESS_ACTION~PROCESS_ACTION nutzt wiederum cl_chm1_instance->handle_message aus Lösung 2. Beispieltext: „Die Aktion Transportauftrag anlegen in System DEV 100 des Typs Ausgangssysteme ist erfolgreich abgeschlossen.“

Lösung 5:

Es gibt noch einzelne weitere Stellen, die eine Protokollierung im Textlog vornehmen. Beispielhaft sei auf CL_AIC_CM_S_SYSTEMLANDSCA_IMPL->LOGON_SYSTEM beim Anmelden am System verwiesen. Ein Eingriff ist hier in der Regel nur mittels spezifischer Modifikation möglich. Beispieltext: „Systemanmeldungsprotokoll. Zielsystem: DEV 100“

Vorschlag A: Lösung 2 mit selbstpflegender Customizingtabelle

  • Aufwand: 4h
  • Customizingtabelle mit Pflegedialog (Klasse, Type, Nummer, Parameter 1-4, Text, Flag [Aktiv, Inaktiv, Unbestimmt])
  • Enhancement in cl_chm1_instance->handle_message am Anfang
  • Algorithmus zum automatischen Befüllen mit bisher unbekannten Nachrichten
  • Logik zum ausblenden/ausfiltern von Nachrichten gemäß Customizingtabelle
  • Test

Vorschlag B: Zusätzlich Lösung 4 implementieren 

  • Aufwand 1h (zusätzlich)
  • Customizingtabelle um Feld TASK_ID ergänzen
  • Lösung aus cl_chm1_instance->handle_message in leicht abgewandelter Form auch am Ende von FUBA /TMWFLOW/APPL_STAT_MESSAGE implementieren.

Code-Schnipsel:

METHOD CL_CHM1_INSTANCE->HANDLE_MESSAGE .

ENHANCEMENT 1  ZSM_TEXT_LOG_FILTER.    "active version

DATA:
ls_tlf TYPE ZSM_TLF.

*Build message text.
MESSAGE ID im_message-msgid
TYPE     im_message-msgty
NUMBER   im_message-msgno

INTO     me->msg_text

WITH     im_message-msgv1
im_message-msgv2
im_message-msgv3
im_message-msgv4.

*Get customizing entry.
*We are not looking at message parameters actually...maybe in future.
SELECT SINGLE *
INTO ls_tlf
FROM ZSM_TLF
WHERE MSGID = im_message-msgid AND
MSGNO = im_message-msgno AND
MSGTY = im_message-msgty.

*Create customizing entry if not existing yet.
IF sy-subrc <> 0.
ls_tlf-MSGID = im_message-msgid.
ls_tlf-MSGNO = im_message-msgno.
ls_tlf-MSGTY = im_message-msgty.
ls_tlf-ACTIVE_FLAG = ''.
ls_tlf-MSGV1 = im_message-msgv1.
ls_tlf-MSGV2 = im_message-msgv2.
ls_tlf-MSGV3 = im_message-msgv3.
ls_tlf-MSGV4 = im_message-msgv4.
ls_tlf-langu = sy-langu.
ls_tlf-MSGTX = me->msg_text.
INSERT INTO ZSM_TLF values ls_tlf.
ENDIF.

*Check whether message should be filtered out.
IF ls_tlf-active_flag = '-'.

*   write message into ppf-log
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass = '4'
ip_handle       = im_appl_log.

*  Exit routine without writing message to text log.
RETURN.

ENDIF.

ENDENHANCEMENT.

MESSAGE ID     im_message-msgid
TYPE   im_message-msgty
NUMBER im_message-msgno

INTO me->msg_text

WITH   im_message-msgv1
im_message-msgv2
im_message-msgv3
im_message-msgv4.

*   write message into ppf-log
CALL METHOD cl_log_ppf=>add_message
EXPORTING
ip_problemclass = '4'
ip_handle       = im_appl_log.

DATA  l_text255 TYPE char255.
l_text255 = me->msg_text.
*   write message into action-log (text in change document)
CALL METHOD cl_hf_helper=>insert_notice
EXPORTING
im_text = l_text255
im_guid = me->if_socm_instance_attributes~change_document_id.

ENDMETHOD.