背景:
我有几个表在视图集群(SE54)中连接以进行维护。这些表中的每一个都有标准的创建/更改者/日期字段。对于创建的数据,更新字段很容易,我在表维护生成器中使用事件 05(创建时)。对于默认更改的字段,它涉及更多一点。我必须使用事件 01(保存前),然后根据需要更新表TOTAL[]
和EXTRACT[]
字段值。
在 SM30 中维护表时, 和 的格式TOTAL[]
与EXTRACT[]
我正在维护的视图相同,并带有一个附加标志来标识进行了哪种类型的更改(更新/创建/删除)
但是,在SM54中维护时(这是业务需求),TOTAL[]
and的格式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.
我已经尝试了“仅单个字段”选项的其他一些变体,但没有运气。
有什么想法可以从 Character 类型转换为 TSTMMP 类型,然后再返回以更新内部表值?