保存之前在表维护生成器中进行字段验证

2020-08-30 17:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

对于ABAP来说还很陌生,并且想要实现以下内容:

在可以输入数据的维护视图中,我想检查组成特定公司代码的sum()是否为=> 1.00(100%)。

该表如下所示:


公司; 代码值
01; 0.3
01; 0.4
01; 0.3
02; 0.2
02; 0.2
02; 0.2
02; 0.2
02; 0,199

用户只能填写由一个公司代码组成的值,最大为1.00。 例如,如果现在尝试输入公司代码为2的行; 0.3->不应保存,并且错误应表明该值只能为1。

我正在考虑向维护视图中添加一个before_save检查,如下所示:


FORM form_03_CHECK_VALUES。

数据:l_value TYPE值。
选择总和(值)
FROM表
INTO l_value
按公司代码分组

IF l_value> 1.
消息'错误'类型'E'显示为'S'。
ENDIF。

ENDFORM。



但是,由于我不是ABAP的新手,所以我想我在这里误解了一些概念。 有人可以帮我吗?

高度赞赏,

4条回答
骆驼绵羊
2020-08-30 18:05

您可以实现事件01(在保存之前),但是数据尚未保存在数据库中,而是在内部表TOTAL中。 它具有一种特殊的格式,您必须首先将其转换为具有可用格式的内部表,如下所示。 我使用的名称与Mike提议的名称相同(LT_VAL_BUK)。

 FORM z_before_saving。
  字段符号键入name_of_your_table。
  数据lt_val_buk类型name_of_your_table。

  合计。
    将总计分配给转换。
    将附加到lt_val_buk。
  结局。

  "找到错误的算法-按照迈克说的或您想要的算法进行

  如果错误= abap_true。
    消息"错误"类型为" S",显示为" E"。
    VIM_ABORT_SAVING ='X'。  "万一出错,请不要离开
  万一。

  sy-subrc =0。"仅在sy-subrc = 0时保存
 ENDFORM。

一周热门 更多>