Link Search Menu Expand Document

Класс ZCL_EUI_CRC64

Исходный код в github

Зачем нужен еще один класс? ABAP имеет множество методов для вычисления хэшей md5, sha1 или sha256. Но есть некоторые ограничения связанные с:

  • Ссылками на данные
  • Объектами
  • Строками и xStrings
  • Таблицами со сложными типами данных

Основные методы

image

Использование

    DATA(lo_crc64) = NEW  zcl_eui_crc64( ).
    lo_crc64->add_to_hash( zsaqo3_general_info ).
    lo_crc64->add_to_hash( mt_fld_value ).

    rv_hash = lo_crc64->get_hash( ).

Ссылки на данные

По умолчанию mc_dref-data_value, вы можете рассчитать и добавить ссылочные данные к итоговому хешу. Также вы можете пропустить ссылочные данные mc_dref-no_info или просто сравните типы mc_dref-type_info.

image

Объекты

По умолчанию к результирующему хешу добавляются значения public атрибутов. Если вы также хотите вычислить хэши private атрибутов, просто добавьте ZCL_EUI_CRC64 в друзья. image


Строки и xStrings

Обработка этих типов данных немного каверзна. Прежде всего, хеши SHA1 вычисляются с помощью CALL FUNCTION ‘CALCULATE_HASH_FOR_CHAR’ и CALL FUNCTION ‘CALCULATE_HASH_FOR_RAW’ соответственно. И затем эти хеши добавляются к окончательному результату


Таблицы со сложными типами данных

Поскольку поля структур и строки таблицы могут содержать все вышеупомянутые типы данных, они обрабатываются отдельно, а полученные хэши добавляются к окончательному результату.

image


Демонстрирование журнала

Если вы хотите сравнить очень сложные структуры данных, вы можете передать iv_log = abap_true в конструктор ZCL_EUI_CRC64 класса, и посмотреть, какие поля отличаются. image

Пример SE38 -> ZEUI_TEST_CRC64