问题场景
有一个送货单选择的屏幕,按项目维度显示,用户想要选择其中任一个项目自动添加该送货单下面的所有项目
实现代码
g_it_dn[] 是展示的送货单内表
"检查相同单据的行项目是否都选中
lt_dn[] = g_it_dn[].
LOOP AT lt_dn WHERE box NE 'X'.
DELETE lt_dn INDEX sy-tabix.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM lt_dn COMPARING vbeln.
LOOP AT lt_dn.
CLEAR:lv_tabix.
READ TABLE g_it_dn WITH KEY vbeln = lt_dn-vbeln.
IF sy-subrc = 0.
lv_tabix = sy-tabix.
LOOP AT g_it_dn FROM lv_tabix.
IF g_it_dn-vbeln NE lt_dn-vbeln.
EXIT.
ENDIF.
g_it_dn-box = 'X'.
MODIFY g_it_dn TRANSPORTING box WHERE vbeln = lt_dn-vbeln.
ENDLOOP.
ENDIF.
ENDLOOP.
记录原因
- 思路跟我平时的不一样,记录下来,开放思维:比如第一个LOOP,我正常思维都是获取选中的,这里是去除未选中的。
- 下面的双重循环使用了快速查找的思维。