Класс ZCL_EUI_CRC64
Зачем нужен еще один класс? ABAP имеет множество методов для вычисления хэшей md5, sha1 или sha256. Но есть некоторые ограничения связанные с:
- Ссылками на данные
- Объектами
- Строками и xStrings
- Таблицами со сложными типами данных
Основные методы
Использование
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.
Объекты
По умолчанию к результирующему хешу добавляются значения public атрибутов. Если вы также хотите вычислить хэши private атрибутов, просто добавьте ZCL_EUI_CRC64 в друзья.
Строки и xStrings
Обработка этих типов данных немного каверзна. Прежде всего, хеши SHA1 вычисляются с помощью CALL FUNCTION ‘CALCULATE_HASH_FOR_CHAR’ и CALL FUNCTION ‘CALCULATE_HASH_FOR_RAW’ соответственно. И затем эти хеши добавляются к окончательному результату
Таблицы со сложными типами данных
Поскольку поля структур и строки таблицы могут содержать все вышеупомянутые типы данных, они обрабатываются отдельно, а полученные хэши добавляются к окончательному результату.
Демонстрирование журнала
Если вы хотите сравнить очень сложные структуры данных, вы можете передать iv_log = abap_true в конструктор ZCL_EUI_CRC64 класса, и посмотреть, какие поля отличаются.
Пример SE38 -> ZEUI_TEST_CRC64