Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Haubi
Hallo a-dead-trousers,a-dead-trousers hat geschrieben: ↑23.06.2022 07:35Alternative:
Wenn man sich im selben Programmstack bewegt, ist der Datenaustausch auch über statische Klassenattribute möglich. Hier kann man dank PRIVATE und eingener PUBLIC GET- und SET-Methoden die Daten vor "unberechtigten" Zugriffen effektiver schützen sowie gegebenenfalls auch protokollieren.
Selbst wenn ich über den Programmstack hinweg Daten austauschen muss, verwende ich dieselbe Vorgehensweise auch wenn ich die Daten dann trotzdem ins Memory stellen muss. Sie sind zwar dann nicht mehr so gut geschützt, aber zumindest habe ich mit den GET- und SET-Methoden einen Anhaltspunkt für den Verwendungsnachweis.
Code: Alles auswählen.
CLASS zcl_global_customer DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS set_customer
IMPORTING
!is_customer TYPE kna1 OPTIONAL.
CLASS-METHODS get_customer
RETURNING VALUE(rs_customer) TYPE kna1.
CLASS-METHODS set_customer_memory
IMPORTING
!is_customer TYPE kna1 OPTIONAL.
CLASS-METHODS get_customer_memory
RETURNING VALUE(rs_customer) TYPE kna1.
PRIVATE SECTION.
CONSTANTS co_customer_memory TYPE memory_id VALUE 'ZCUSTOMER'. "#EC NOTEXT
CLASS-DATA ss_customer TYPE kna1.
ENDCLASS.
CLASS zcl_global_customer IMPLEMENTATION.
METHOD set_customer.
ss_customer = is_customer.
ENDMETHOD.
METHOD get_customer.
rs_customer = ss_customer.
ENDMETHOD.
METHOD set_customer_memory.
IF is_customer IS INITIAL.
FREE MEMORY ID co_customer_memory.
ELSE.
TRY.
EXPORT customer FROM is_customer TO MEMORY ID co_customer_memory.
CATCH cx_root INTO DATA(lx_root).
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD get_customer_memory.
TRY.
IMPORT customer TO rs_customer FROM MEMORY ID co_customer_memory.
CATCH cx_root INTO DATA(lx_root).
ENDTRY.
ENDMETHOD.
ENDCLASS.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
sap_enthusiast
Moin a-d-t,a-dead-trousers hat geschrieben: ↑23.06.2022 07:35Alternative:
Wenn man sich im selben Programmstack bewegt, ist der Datenaustausch auch über statische Klassenattribute möglich. Hier kann man dank PRIVATE und eingener PUBLIC GET- und SET-Methoden die Daten vor "unberechtigten" Zugriffen effektiver schützen sowie gegebenenfalls auch protokollieren.
Selbst wenn ich über den Programmstack hinweg Daten austauschen muss, verwende ich dieselbe Vorgehensweise auch wenn ich die Daten dann trotzdem ins Memory stellen muss. Sie sind zwar dann nicht mehr so gut geschützt, aber zumindest habe ich mit den GET- und SET-Methoden einen Anhaltspunkt für den Verwendungsnachweis.
Dass mein Ansatz "Angriffe" aushebelt, hab ich ja nicht behauptet 😉black_adept hat geschrieben: ↑23.06.2022 20:47Moin a-d-t,
ich frage mich die ganze Zeit wogegen du denn Daten bei "EXPORT/IMPORT TO MEMORY" schützt. Und was genau bei deinem Ansatz denn "Angriffe" aushebelt.
Hast du dafür auch ein Prosa-Beispiel?
Full ACKa-dead-trousers hat geschrieben: ↑23.06.2022 22:15Wenn man Daten nur innerhalb des selben Programmstacks austauschen muss, dann sollten statische Attribute das Mittel der Wahl sein.
Über Modi-Grenzen geht MEMORY eben nicht. Aber über "internal sessions" des gleichen Modus, die bei CALL TRANSACTION und SUBMIT aufgemacht werden. Das ist m.E. der einzige Fall, wo ich diese Technik als das Mittel der Wahl sehen würde.a-dead-trousers hat geschrieben: ↑23.06.2022 22:15Sobald der Datenaustausch auch über Modi-Grenzen hinweg funktionieren soll, hat man eh keine Wahl und muss auf das MEMORY (oder andere Dinge wie die Datenbank) zurückgreifen.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
a-dead-trousers
Ok, ich hatte grad eine Diskussion mit einem Kollegen und da haben wir das dann mit den Memory Grenzen auch nochmal getestet, weil jeder von uns was anderes behauptet bzw. geglaubt hatte.black_adept hat geschrieben: ↑24.06.2022 09:01Über Modi-Grenzen geht MEMORY eben nicht. Aber über "internal sessions" des gleichen Modus, die bei CALL TRANSACTION und SUBMIT aufgemacht werden. Das ist m.E. der einzige Fall, wo ich diese Technik als das Mittel der Wahl sehen würde.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
black_adept