送货单选中其中一个项目自动带出其他项目

文章描述了一个在送货单选择界面的问题,用户希望一键选择单据中的所有项目。提供的代码首先清除未选中的行,然后通过双重循环处理,检查并选中相同单据的所有行项目,利用快速查找优化了这一过程。这种实现方式展示了不同的思考角度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题场景

有一个送货单选择的屏幕,按项目维度显示,用户想要选择其中任一个项目自动添加该送货单下面的所有项目

实现代码

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.

记录原因

  1. 思路跟我平时的不一样,记录下来,开放思维:比如第一个LOOP,我正常思维都是获取选中的,这里是去除未选中的。
  2. 下面的双重循环使用了快速查找的思维。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值