点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, SAP ECC 6...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, SAP ECC 6...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
SAP ECC 6.0(SAP_ABA 701),因此不能在内部表中使用辅助键...:(
我们有一个报告来维护表MLEA的数据。
其中一项要求是,该表中的EAN11字段必须唯一,不允许在其他任何记录中使用相同的值。
该报告具有一个选择屏幕,因此可能不会显示所有数据库记录。
我们需要检查ALV的任何行在EAN11字段中是否具有相同的值,然后出错。
如果不是,我们需要检查数据库中的任何记录在EAN11字段中是否具有相同的值,但是在标记为错误之前,我们需要检查同一记录是否在ALV中并且在EAN11中具有其他值( 用户可以修改报告中的值...)
---
我不喜欢解决问题的方法。
有什么帮助改进代码的地方吗?
数据: lt_alv mlea类型标准表, lt_alv_sort_keys具有唯一键的mlea的类型排序表matnr meinh lifnr lfnum, lt_alv_sort_ean带有唯一键ean11的mlea类型排序表 lt_ean_db具有非唯一键ean的mlea的类型排序表。 将lt_alv的行插入表lt_alv_sort_keys。 将lt_alv的行插入表lt_alv_sort_ean。 *选择具有相同EAN的数据库记录 如果lt_alv不是INITIAL。 选择Matnr Meinh Lifnr lfnum ean11 表lt_mlea_db的对应字段 来自mlea 对于lt_alv中的所有条目 在ean11 EQ lt_alv-ean11中。 万一。 循环至lt_alv分配。 *检查ALV中的其他行是否具有相同的EAN 循环播放lt_alv_sort_ean 分配 在ean11 EQ -ean11中," EAN11中的值相同 AND(matnr NE -matnr"不同的关键字段 或meinh NE -meinh 或lifnr NE -lifnr 或lfnum NE -lfnum)。 "错误 出口。 结局。 IF sy-subrc NE 0。 *检查任何数据库记录是否具有相同的EAN 循环播放lt_ean_db 分配 在ean11 EQ -ean11中。 *检查记录是否相同 检查 -matnr NE -matnr 或 -meinh NE -meinh 或 -lifnr NE -lifnr 或 -lfnum NE -lfnum。 *检查ALV中是否存在其他值 读取表lt_alv_sort_keys 分配 WITH KEY matnr = -matnr meinh = -meinh lifnr = -lifnr lfnum = -lfnum。 如果sy-subrc NE 0 或sy-subrc EQ 0和 -ean11 EQ -ean11。 "错误 出口。 万一。 结局。 万一。 ENDLOOP。
谢谢。
从ABAP 7.4开始 您可以尝试用LOOP ... GROUP BY直到ean11来查找组大小,然后从那里知道哪些记录是重复的。
因此,对于相同的理想情况,对于较旧的版本,也许在NEW ... AT END 可以做同样的事情。 理想的情况是,您可以通过在AT END事件中检查收集的记录来首先检查ALV的重复记录,将其删除或执行任何操作。
一周热门 更多>