View 用于检查字段是否为初始字段的维护视图事件

View 用于检查字段是否为初始字段的维护视图事件,view,abap,sap-data-dictionary,View,Abap,Sap Data Dictionary,我试图检查sm30中的字段是否保留了首字母,以及我创建的表。我进入了table maintenance generator,然后进入Environment->Modifications->Events,创建了一个名为check_class的入口,类型为01(在将数据保存到数据库之前),代码如下: FORM CHECK_CLASS. IF z10ficlassfica-z_class IS INITIAL. MESSAGE text-001 TYPE 'E'. ENDIF. ENDFORM

我试图检查sm30中的字段是否保留了首字母,以及我创建的表。我进入了table maintenance generator,然后进入Environment->Modifications->Events,创建了一个名为check_class的入口,类型为01(在将数据保存到数据库之前),代码如下:

FORM CHECK_CLASS.

IF z10ficlassfica-z_class IS INITIAL.
  MESSAGE text-001 TYPE 'E'.
ENDIF.

ENDFORM.
除了z10ficlassfica为初始值时,它不会停留在表的维护中,而是进入sm30的第一个屏幕外,它工作正常。如何让它停留在sm30的维护屏幕上?希望我已经说清楚了。谢谢。

请编辑,而不是添加另一个。我已经回答了这个问题:不要使用事件,而是修改生成的屏幕。事件在此不适用,因为您必须在屏幕
循环
语句中引发
消息

请参见以下内容:

  • 您可以使用事件,并且应该使用它们,不要修改生成的屏幕,这就是SAP提供事件的原因
  • 您只需要两件事就可以停止保存并停留在屏幕上
    • 消息“货币必须为美元或印尼盾”类型“S”显示为“E”。
    • vim\u abort\u saving='X'。
  • 阅读这个链接,里面有很多你需要的信息
  • 作为一种良好的做法,使用错误消息中出错记录的键,这样用户在输入数千条新记录时可以找到该记录

如果使用messagetype“E”,则当前上下文将中止。请尝试其他更适合您的情况的消息类型,例如“S”或“I”。请参见此处,了解不同的消息类型及其对正在运行的程序的影响:是的,但我不希望它在填充该字段时保存条目。S代表成功,所以不太合适。我只是想了解一下,也不知道是不是对的。但我会试试的。谢谢。请编辑原始问题,而不是添加另一个问题。我已经回答了这个问题:不要使用事件,而是修改生成的屏幕。事件不适用于此处,因为您必须在screen LOOP语句中引发消息。的可能重复如果您只是想使该字段成为必填字段,则可以修改维护屏幕并将该字段更改为必填字段。在桌子上。生成器,转到环境->修改->维护屏幕,选择详细信息屏幕,转到元素列表并检查“输入”列。我不确定该事务是否仍将执行您的check_类,因此如果字段为初始值,您可能会收到一条标准消息。谢谢,这也有效,而且比我实现的更优雅。从我的角度来看,这是一种低劣的方法:您失去了突出显示包含无效值的字段的选项。想象一个有数千行的表——你必须自己搜索无效的条目。这是一种糟糕的飞行方式。@vwegert,这只适用于新条目,在SM30中单击“添加新条目”时没有数千行,所有现有条目都被隐藏。@tomdemyt,因此在添加条目时不允许输入值FOO,但您可以使用新的值栏添加条目,然后将其更改为禁止值FOO?这对我来说就更没有意义了。