点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个Ztable,其中有14个字段,其中前5个是关键字段。
我也有一个显示alv Grid的z程序。 我们可以通过工具栏上的(+)按钮,通过此Z程序在ztable中添加条目。
因此,当我通过网格输入一堆值(复制粘贴)时,我会通过内部表获得所有值。 预计该itab已经有1万行数据,加上我们通过alv网格添加的数据。
我有itab X,它有1000行,通过ALV GRID,我要插入20行。 因此,它没有1020行。 在提交即插入ztable之前,我应该检查重复项。 z表具有前6个字段作为主键。
键1、2和3是公司代码,销售组织以及通过选择屏幕显示的另一个值,这些值将通过验证得到保护。
我的代码是这样的,但是它允许重复。我想拥有最好的方法。
这是因为我已经按erdat进行了排序,但仍然允许重复。 任何想法都会大有帮助。
DESCRIBE TABLE datatab_y LINES lv_y。(已经存在,加上新的) 描述表datatab_x行lv_x。 (已存在于网格中) *插入的总行数 *以为我可以做多次检查 cnt = lv_y-lv_x。 由erdat DESCENDING排序SORT datatab_y。 循环到datatab_y。 如果datatab_y-key3不是INITIAL。 在新键上3。 new_row = sy-tabix。 Endat。 在key3的末尾。 检查sy-tabix> new_row。 lv_dupflg = datatab_y-key3。 使用lv_dupflg执行send_dupkey_msg。 Endat。 ELSEIF datatab_y-key4不是INITIAL。 在新钥匙上4。 new_row = sy-tabix。 Endat。 在key4的末尾。 检查sy-tabix> new_row。 lv_dupflg = datatab_y-key4。 使用lv_dupflg执行send_dupkey_msg。 Endat。 ENDIF。
您可以考虑在用户输入完新行后立即检查重复项(如果oo alv发生事件数据更改)。 只需比较关键字段即可,无需循环。
如果您仍然希望像现在一样进行一次签入,则应遍历插入的记录,然后使用这些键阅读原始的itab,不要知道为什么必须在AT NEW,AT END进行。
再次,您可以查看此示例报告以了解更多信息:BCALV_EDIT_04
Jelena Perfiljeva 您的见解将不胜感激。 我可以在我不想使用的循环中使用循环。 请分享您的想法。 这是检查重复项的代码。
如果您希望没有重复项的新数据,则可以执行以下步骤。
数据:lt_list。
数据:lt_list_final。
类似于lt_list_final行的字段符号。
浏览lt_list。
读取表lt_list,最后为分配键值= lt_list条目。
如果sy-subrc = 0。
"根据需要在中更改值。因为条目已经存在
其他。
"创建一个新结构并追加到lt_list_final。因为该条目不存在
endif。
endloop。
您应该转到ST22来检查有关该转储的更多详细信息,我只能使用" CL_GUI_ALV_GRID ============== CP" 告诉什么问题。
一周热门 更多>