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

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

嗨Franziskus,

几种方法可以做到这一点。 我只是简单地介绍一下,假设您提到"表格"后就使用"经典" ABAP。

 *假设内部输入数据表类似于:
 类型:开始于tys_val_buk,
          TYPE BUKRS,
          val TYPE p十进制2,
        结束于tys_val_buk,
        tyt_val_buk tys_val_buk的类型标准表。
 
*您可以定义一个结果集: 类型:tyt_res_buk类型分类表 与关键bukrs。 数据:lt_val_buk TYPE tyt_val_buk, lt_res_buk类型tyt_res_buk。 *您可以这样拨打您的表格: 使用lt_val_buk执行check_buk_val 更改lt_res_buk。 *做您想评估BUKRS/FLAG组合的结果列表的任何事情。 *您的表格可能如下所示: FORM check_buk使用it_val_buk TYPE tyt_val_buk 更改ct_res_buk TYPE tyt_res_buk。 数据lt_val类型tyt_val_buk。 数据lf_val TYPE p十进制数2。 FIELD-SYMBOLS:类型tys_val_buk。 *确保所有公司代码都在一起 lt_val = it_val_buk。 排序lt_val BY Bukrs。 *在lt_val评估时评估
循环。 *组更改。 记住所有总和> = 1的公司的结果。 在新的bukrs。 如果lf_val> = 1.
插入 -bukrs INTO ct_res_buk。
ENDIF。
清除lf_val。 ENDAT。 *累积值 lf_val = lf_val + -val。 结局。 ENDFORM。

当然,可以使用ABAP OO更好地解决此问题,但是我们还没有解决。。。。。。。。。。

此外,为了将来参考,并且为了更好地熟悉ABAP概念,请查看ABAP帮助,例如:

https://help.sap.com/saphelp_47x200/ helpdata/zh-CN/d3/2e974d35c511d1829f0000e829fbfe/frameset.htm

希望让您入门,
迈克

一周热门 更多>