Справочной информации:Отливки из насадочного (8) типа к TMSTMP (DEC15) типа в системе Unicode (и обратно)
У меня есть несколько таблиц, которые соединены для обеспечения в виде кластере (SE54) , Каждая из этих таблиц имеет стандартные созданные/измененные поля By/On. Для создания обновленных данных данные просты, и я использую событие 05 (On Create) в генераторе обслуживания таблиц. Для дефолта изменяющихся полей это немного более активно. Я должен использовать событие 01 (Before Save), а затем обновлять таблицы TOTAL[]
и EXTRACT[]
с необходимыми значениями полей.
При сохранении таблицы в SM30, формат TOTAL[]
и EXTRACT[]
такая же, как вид я, поддерживая с дополнительным флагом, чтобы определить, какой тип изменений производится (обновление/создание/удаление)
Однако при сохранении в SM54 (что является бизнес-требованием) формат TOTAL[]
и EXTRACT[]
- это всего лишь внутренняя таблица символьных строк.
Проблема:
Я могу понять, что тип таблицы, редактируемый. Но когда я пытаюсь переместить линию символов в строке типа я получаю следующие ошибки во время выполнения: (в зависимости от того, как я пытаюсь переместить/назначить его)
ASSIGN_BASE_TOO_SHORT
UC_OBJECTS_NOT_CONVERTIBLE
UC_OBJECTS_NOT_CHAR
Все мои структуры находятся в следующем формате:
*several generic (flat) types
CREATED TYPE TMSTMP, "not a flat type
CHANGED TYPE TMSTMP, "not a flat type
CREATED_BY TYPE ERNAM,
CHANGED_BY TYPE AENAM,
Корень проблемы состоит в том, что два поля метки не являются плоскими. Я вижу в символьной строке, что метки времени представлены 8 символами.
Редактировать: Только после обнаружения решения я могу определить поле Length (8) как упакованное.
Я попытался следующие напрасными:
"try the entire structure - which would be ideal
assign ls_table_line to <fs_of_the_correct_type> casting.
"try isolating just the timestamp field(s)
assign <just_the_8char_representation> to <fs_of_type_tmpstmp> casting.
Я попробовал несколько других вариантов на «одном поле только» вариант не повезло.
Любые идеи о том, как я могу использовать тип символа для ввода TMSTMP, а затем назад, чтобы обновить внутренние значения таблиц?
Есть ли причина, по которой вы выбрали временные метки для полей базы данных вместо широко используемых отдельных полей даты и времени (ERDAT/ERTIM, ...)? – vwegert
@vwegert Ничто, кроме меня, не продиктовало дизайн :(ERDAT/ERTIM было бы здорово, поскольку они были плоскими структурами, которые в свою очередь заставляют все это уйти. Мы взаимодействуем с Java-системой, но я сомневаюсь, что есть любая реальная техническая причина использовать временные метки (это даже не система с несколькими часовыми поясами). – Esti