[ABAP] Message Authentication Code (MAC) mit verschiedenen HASH-Algorithmen (MD5, SHA1, SHA256, SHA384, SHA512) berechnen

Variante 1 (Strings)

* MD5, SHA1, SHA256, SHA384, SHA512
DATA(lv_algo) = |SHA256|.
* Key
DATA(lv_key) = |MyKey1|.
* Key als XSTRING
DATA(lv_keyx) = cl_abap_hmac=>string_to_xstring( lv_key ).
* zu kodierende String-Daten
DATA(lv_data) = |Teststring|.

* HMAC-Wert als Hex-Encoded String
DATA: lv_hmacstring TYPE string.
* HMAC-Wert binär als XString
DATA: lv_hmacxstring TYPE xstring.
* HMAC-Wert als Base64-Encoded String
DATA: lv_hmacb64string TYPE string.

TRY.
* Generische HMAC-Funktion (Char-Input)
    cl_abap_hmac=>calculate_hmac_for_char( EXPORTING
                                             if_algorithm     = lv_algo
                                             if_key           = lv_keyx
                                             if_data          = lv_data
                                           IMPORTING
                                             ef_hmacstring    = lv_hmacstring
                                             ef_hmacxstring   = lv_hmacxstring
                                             ef_hmacb64string = lv_hmacb64string ).
    cl_demo_output=>write_data( lv_algo ).
    cl_demo_output=>write_data( lv_key ).
    cl_demo_output=>write_data( lv_keyx ).
    cl_demo_output=>write_data( lv_data ).
    cl_demo_output=>write_data( lv_hmacstring ).
    cl_demo_output=>write_data( lv_hmacxstring ).
    cl_demo_output=>write_data( lv_hmacb64string ).
    cl_demo_output=>display( ).
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

Variante 2 (Bytefolgen / RAW)

* MD5, SHA1, SHA256, SHA384, SHA512
DATA(lv_algo) = |SHA256|.
* Key
DATA(lv_key) = |MyKey1|.
* Key als XSTRING
DATA(lv_keyx) = cl_abap_hmac=>string_to_xstring( lv_key ).
* zu kodierende String-Daten
DATA(lv_data) = |Teststring|.
* zu kodierende String-Daten als XSTRING
DATA(lv_datax) = cl_abap_message_digest=>string_to_xstring( lv_data ).

* HMAC-Wert als Hex-Encoded String
DATA: lv_hmacstring TYPE string.
* HMAC-Wert binär als XString
DATA: lv_hmacxstring TYPE xstring.
* HMAC-Wert als Base64-Encoded String
DATA: lv_hmacb64string TYPE string.

TRY.
* Generische HMAC-Funktion (XString)
    cl_abap_hmac=>calculate_hmac_for_raw( EXPORTING
                                            if_algorithm     = lv_algo
                                            if_key           = lv_keyx
                                            if_data          = lv_datax
                                          IMPORTING
                                            ef_hmacstring    = lv_hmacstring
                                            ef_hmacxstring   = lv_hmacxstring
                                            ef_hmacb64string = lv_hmacb64string ).
    cl_demo_output=>write_data( lv_algo ).
    cl_demo_output=>write_data( lv_key ).
    cl_demo_output=>write_data( lv_keyx ).
    cl_demo_output=>write_data( lv_data ).
    cl_demo_output=>write_data( lv_datax ).
    cl_demo_output=>write_data( lv_hmacstring ).
    cl_demo_output=>write_data( lv_hmacxstring ).
    cl_demo_output=>write_data( lv_hmacb64string ).
    cl_demo_output=>display( ).
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

[ABAP] AUTHORITY-CHECK – Objekte in OpenSQL-WHERE-Condition wandeln

* ab ABAP 7.50

* Koverter-Objekt erzeugen
DATA(o_auth) = cl_auth_objects_to_sql=>create_for_open_sql( ).

* Objekte für AUTHORITY-CHECK hinzufügen
o_auth->add_authorization_object( iv_authorization_object = 'S_CARRID'
                                  it_activities = VALUE #( ( auth_field = 'ACTVT' value = '03' ) )
                                  it_field_mapping = VALUE #( ( auth_field = 'CARRID'
                                                                view_field = VALUE #( table_ddic_name = 'SFLIGHT'
                                                                                      field_name      = 'CARRID'
                                                                                    )
                                                              )
                                                            )
                                ).

* Ist der Benutzer berechtigt?
IF abap_true = o_auth->is_authorized( ).

* WHERE-Condition erzeugen
  DATA(lv_where_cond) = o_auth->get_sql_condition( ).

* Wenn leer, dann hat der Benutzer alle Berechtigungen
  IF lv_where_cond IS INITIAL.
    cl_demo_output=>write_data( 'Alle Berechtigungen.' ).
  ELSE.
* Ansonsten eingeschränkte Berechtigungen
    cl_demo_output=>write_data( |Eingeschränkte Berechtigungen: { lv_where_cond }| ).
  ENDIF.

* SELECT mit WHERE-Condition durchführen
  SELECT *
    INTO TABLE @DATA(it_sflight)
    FROM sflight
    WHERE (lv_where_cond).

* Datenausgabe
  cl_demo_output=>write_data( it_sflight ).
  cl_demo_output=>display( ).

ENDIF.

Links

[SAP] ICM / HTTP Cache löschen

SMICM (ICM Monitor)

  • Menü -> Springen -> HTTP Plugin -> Server Cache -> Lokal und global invalidieren

/UI2/INVAL_CACHES (Invalidierung des globalen Cache)

  • Dieser Report invalidiert sämtliche serverseitigen Caches in den User-Interface-Services von SAP NetWeaver
  • UI2-Cache: hinterlegt angeforderte Entitäten und Entitätsmengen.Umfang: alle Mandanten
  • UI2-NWBC Navigationsbaum-Cache: sichert Navigationsdaten. Umfang: nur aktueller Mandant
  • Shared-Memory für UI2-Web-Dynpro-Komponentenkonfiguration. Umfang: alle Mandanten
  • Shared-Memory für Ziel-Mapping-Index. Umfang: alle Mandanten
  • UI2-Web-Dynpro-Katalog-Cache. Umfang: Konfiguration und Customizing
  • UI2-CHIP-Cache. Umfang: alle Mandanten

Logobjekt

  • /UI2/BE

Links

[SAP] Geschäftspartner/Businesspartner im S/4HANA

Transaktionen

BUPT (Geschäftspartner: Arbeitsmenü)
BP (Geschäftspartner bearbeiten)
BUPMASS (Geschäftspartner-Customizing: Massenänderungen)
BUPA_PRE_DA (Geschäftspartner zum Löschen vormerken)
BUPA_PRE_EOP (Geschäftspartner sperren)
BUCF (Geschäftspartner-Customizing: Nummernkreise)
BUS23 (Geschäftspartner-Steuer: Datensets)

Tabellen

BUT000 (Geschäftspartner: Allgemeine Daten I)
BUT001 (Geschäftspartner: Allgemeine Daten II)
BUT020 (Geschäftspartner: Adressen)
BUT021 (Geschäftspartner: Adressverwendungen)
BUT100 (Geschäftspartner: Rollen)
ADRC (Adressen (Business Address Services))
ADCP (Zuordnung Person/Adresse (Business Address Services))

Funktionsbausteine

BAPI_BUPA_ADDRESS_GETDETAIL (SAP-GP, BAPI: Adresse lesen)
BUPA_EXISTENCE_CHECK (SAP-GP, API: Geschäftspartner auf Existenz prüfen)

Fiori-Apps

F0850A (Kundenstamm, Kundenstammdaten verwalten)
F1053A (Lieferantenstammdaten verwalten, Lieferantenstamm)
F3163 (Geschäftspartnerstammdaten verwalten)

Links