@@ -13,7 +13,7 @@ CLASS /apmg/cl_strust DEFINITION
1313************************************************************************
1414 PUBLIC SECTION .
1515
16- CONSTANTS c_version TYPE string VALUE '2.0.2 ' ##NEEDED .
16+ CONSTANTS c_version TYPE string VALUE '2.1.0 ' ##NEEDED .
1717
1818 CONSTANTS :
1919 BEGIN OF c_context ##NEEDED ,
@@ -113,14 +113,17 @@ CLASS /apmg/cl_strust DEFINITION
113113 METHODS remove
114114 IMPORTING
115115 !subject TYPE string
116+ !comment TYPE string OPTIONAL
116117 RETURNING
117118 VALUE (result ) TYPE REF TO /apmg/cl_strust
118119 RAISING
119120 /apmg/cx_error.
120121
121122 METHODS update
122123 IMPORTING
124+ !comment TYPE string OPTIONAL
123125 !remove_expired TYPE abap_bool DEFAULT abap_false
126+ PREFERRED PARAMETER comment
124127 RETURNING
125128 VALUE (result ) TYPE ty_certattr_tt
126129 RAISING
@@ -143,6 +146,7 @@ CLASS /apmg/cl_strust DEFINITION
143146 certs_new TYPE ty_certattr_tt,
144147 cert_current TYPE ty_certattr,
145148 certs_current TYPE ty_certattr_tt,
149+ logs TYPE STANDARD TABLE OF /apmg/strust_log WITH KEY timestamp counter,
146150 is_dirty TYPE abap_bool .
147151
148152 METHODS _create
@@ -168,6 +172,23 @@ CLASS /apmg/cl_strust DEFINITION
168172 RAISING
169173 /apmg/cx_error.
170174
175+ METHODS _log_add
176+ IMPORTING
177+ !subject TYPE ty_certattr-subject
178+ !issuer TYPE ty_certattr-issuer
179+ !date_from TYPE ty_certattr-date_from
180+ !date_to TYPE ty_certattr-date_to
181+ !status TYPE /apmg/strust_log-status
182+ !message TYPE /apmg/strust_log-message
183+ RAISING
184+ /apmg/cx_error.
185+
186+ METHODS _log_save
187+ IMPORTING
188+ !comment TYPE string
189+ RAISING
190+ /apmg/cx_error.
191+
171192ENDCLASS .
172193
173194
@@ -434,7 +455,7 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
434455
435456 _profile( ).
436457
437- " Remove certificate
458+ " Remove certificates
438459 LOOP AT certs_current ASSIGNING FIELD-SYMBOL (<cert> ) WHERE subject = subject.
439460
440461 CALL FUNCTION 'SSFC_REMOVECERTIFICATE'
@@ -456,13 +477,21 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
456477 RAISE EXCEPTION TYPE /apmg/cx_error_t100.
457478 ENDIF .
458479
480+ _log_add(
481+ subject = <cert> -subject
482+ issuer = <cert> -issuer
483+ date_from = <cert> -date_from
484+ date_to = <cert> -date_to
485+ status = icon_led_green
486+ message = 'Removed' ).
487+
459488 is_dirty = abap_true .
460489
461490 ENDLOOP .
462491
463492 _save( ).
464493
465- _unlock( ).
494+ _log_save( comment ).
466495
467496 result = me .
468497
@@ -501,6 +530,14 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
501530 RAISE EXCEPTION TYPE /apmg/cx_error_t100.
502531 ENDIF .
503532
533+ _log_add(
534+ subject = <cert> -subject
535+ issuer = <cert> -issuer
536+ date_from = <cert> -date_from
537+ date_to = <cert> -date_to
538+ status = icon_led_green
539+ message = 'Removed' ).
540+
504541 is_dirty = abap_true .
505542 ELSE .
506543 " Certificate already exists, no update necessary
@@ -512,7 +549,7 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
512549 ENDLOOP .
513550 ENDIF .
514551
515- " Add new certificates to PSE
552+ " Add new certificates
516553 LOOP AT certs_new ASSIGNING <cert_new> .
517554
518555 CALL FUNCTION 'SSFC_PUT_CERTIFICATE'
@@ -539,12 +576,21 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
539576 RAISE EXCEPTION TYPE /apmg/cx_error_t100.
540577 ENDIF .
541578
579+ _log_add(
580+ subject = <cert_new> -subject
581+ issuer = <cert_new> -issuer
582+ date_from = <cert_new> -date_from
583+ date_to = <cert_new> -date_to
584+ status = icon_led_green
585+ message = 'Added' ).
586+
542587 is_dirty = abap_true .
588+
543589 ENDLOOP .
544590
545591 _save( ).
546592
547- _unlock( ).
593+ _log_save( comment ).
548594
549595 result = certs_new.
550596
@@ -621,6 +667,40 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
621667 ENDMETHOD .
622668
623669
670+ METHOD _log_add .
671+
672+ DATA (log ) = VALUE /apmg/strust_log(
673+ cert_subject = subject
674+ cert_issues = issuer
675+ date_from = date_from
676+ date_to = date_to
677+ status = status
678+ message = message ).
679+
680+ INSERT log INTO TABLE logs.
681+
682+ ENDMETHOD .
683+
684+
685+ METHOD _log_save .
686+
687+ GET TIME STAMP FIELD DATA (timestamp ).
688+
689+ LOOP AT logs ASSIGNING FIELD-SYMBOL (<log> ).
690+ <log> -timestamp = timestamp.
691+ <log> -counter = sy -tabix .
692+ <log> -username = sy -uname .
693+ <log> -comments = comment .
694+ ENDLOOP .
695+
696+ INSERT /apmg/strust_log FROM TABLE logs.
697+ IF sy -subrc <> 0 .
698+ RAISE EXCEPTION TYPE /apmg/cx_error_text EXPORTING text = 'Error saving comments to log table' (012 ).
699+ ENDIF .
700+
701+ ENDMETHOD .
702+
703+
624704 METHOD _profile .
625705
626706 IF tempfile IS NOT INITIAL .
@@ -680,6 +760,8 @@ CLASS /apmg/cl_strust IMPLEMENTATION.
680760 MESSAGE 'Certificate was saved successfully' TYPE 'S' .
681761 ENDIF .
682762
763+ _unlock( ).
764+
683765 ENDMETHOD .
684766
685767
0 commit comments