一、业务要求

按订单类型、客户、每300行拆单

首先按照订单类型和客户拆单,当相同的订单类型和客户超过300行,就拆单成两单。如果不够300行,下一单要变成其他订单类型和客户,那就直接拆成一单,下一种订单类型和客户,另起一单。

二、解决思路

首先根据订单类型和客户拆单,根据行数判断是否为同一单或另起一单。相同的一单,单号要用流水号进行区分。(即拆后的单每单的单号不同)

因为每300行拆单数量较大,不易测试,因此可将数量暂时改为按照2行拆单,之后将2改为300即可。

三、代码实现

  1 *首先将内表数据赋值给临时内表,之后按照订单类型和客户挑选出相同的订单类型和客户。
  2
  3   SORT it_alv BY zzsfth kunwe.
  4
  5   gt_alv = it_alv.
  6
  7   DELETE gt_alv WHERE check = ''.
  8
  9   lt_alv = gt_alv.//并将临时内表再复制给另一个临时内表
 10
 11   DELETE ADJACENT DUPLICATES FROM gt_alv COMPARING zzsfth kunwe.
 12
 13
 14
 15 *之后循环临时内表,按照同一种订单类型和客户进行拆单并为其单号赋流水号。
 16
 17   CLEAR : gw_alv,l_newno.
 18
 19   LOOP AT gt_alv INTO gw_alv.
 20
 21     xd_index = 0.  //同一单内的数量标记,凭此判断是否超过300行。
 22
 23     CALL FUNCTION 'NUMBER_GET_NEXT'//生成流水号
 24
 25       EXPORTING
 26
 27         nr_range_nr             = '10'
 28
 29         object                  = 'ZSD013'
 30
 31       IMPORTING
 32
 33         number                  = l_newno
 34
 35       EXCEPTIONS
 36
 37         interval_not_found      = 1
 38
 39         number_range_not_intern = 2
 40
 41         object_not_found        = 3
 42
 43         quantity_is_0           = 4
 44
 45         quantity_is_not_1       = 5
 46
 47         interval_overflow       = 6
 48
 49         buffer_overflow         = 7
 50
 51         OTHERS                  = 8.
 52
 53     IF sy-subrc <> 0.
 54
 55 * Implement suitable error handling here
 56
 57     ENDIF.
 58
 59 *在第一个临时内表的循环中放入第二个临时内表的循环,将相同订单类型和客户的行项目抽出
 60
 61     CLEAR : lw_alv.
 62
 63     LOOP AT lt_alv INTO lw_alv WHERE zzsfth = gw_alv-zzsfth AND kunwe = gw_alv-kunwe.
 64
 65       xd_index = xd_index + 1.//每次行项目循环时就将数量加1,当大于300单后拆成另一单。
 66
 67       IF xd_index > 300.
 68
 69         xd_index = 1.//如果行项目数量大于300,计数器归1,重新加入循环。
 70
 71         CALL FUNCTION 'NUMBER_GET_NEXT'//当行项目大于300,再次获取流水号,为另起一单赋单号
 72
 73           EXPORTING
 74
 75             nr_range_nr             = '10'
 76
 77             object                  = 'ZSD013'
 78
 79           IMPORTING
 80
 81             number                  = l_newno
 82
 83           EXCEPTIONS
 84
 85             interval_not_found      = 1
 86
 87             number_range_not_intern = 2
 88
 89             object_not_found        = 3
 90
 91             quantity_is_0           = 4
 92
 93             quantity_is_not_1       = 5
 94
 95             interval_overflow       = 6
 96
 97             buffer_overflow         = 7
 98
 99             OTHERS                  = 8.
100
101         IF sy-subrc <> 0.
102
103 * Implement suitable error handling here
104
105         ENDIF.
106
107       ENDIF.
108
109 *根据要求根据流水号拼接单号。
110
111       CONCATENATE l_newno lw_alv-zdrply '2' INTO lw_alv-zdrpdjly.
112
113       lw_alv-zzposno1 = l_newno.
114
115 *      lw_alv-zdrpdjly = l_newno.
116
117       lw_alv-zpxmbm = xd_index.
118
119       MODIFY lt_alv FROM lw_alv TRANSPORTING zdrpdjly zzposno1 zpxmbm. //更新内表的单号,拆单完成,之后进行按单存储等其他操作。
120
121       CLEAR : lw_alv.
122
123     ENDLOOP.
124
125   ENDLOOP.

转载于:https://www.cnblogs.com/BinGeneral/p/7659432.html

按字段和行项目数量拆单相关推荐

  1. Cloud for Customer custom BO创建时间随着行项目数量增加而增加的关系

    Custom BO definition: 19 fields on header level and 12 fields on item level Items Duration(s) 100 0. ...

  2. 【ABAP】采购订单行项目 税码 自动默认

    [业务背景]唉,怎么说呢.采购订单的定价策略是个相对复杂一点的事情,但是,根据企业的业务实践,也可以做的相对简单一些. 我们这个案例呢,就是采购定价策略做的比较简单,但是有一点不便捷的地方,就是采购订 ...

  3. 如何用代码填充S/4HANA销售订单行项目的数量字段

    我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...

  4. vc 通过句柄修改窗口大小_VC应用(1)通过VC修改销售订单行项目的字段

    VC是SAP中非常重要的功能,过去多年来,我参与了不少使用VC的项目,我将通过多篇文章介绍VC的一些应用,本文介绍通过VC修改销售订单行项目的字段 01 概览 在销售订单创建时,对于可配置物料来说,不 ...

  5. 销售订单行项目的装运点字段确认规则

    销售订单行项目的装运点字段确认规则: 首先 系统有时用装运点有时用发运点,"装运点"与"发运点"是一样的 装运点的确认依据为: 装运条件 - 装载组 - 交货工 ...

  6. MIGO 行项目屏幕自定义字段增强示例

    继上次抬头屏幕增强(MIGO 抬头屏幕自定义字段增强示例),本文章演示行项目增强示例 实现思路参考标准 MB_MIGO_BADI 增强示例类:CL_EXM_IM_MB_MIGO_BADI 1.创建增强 ...

  7. 资产或在建工程资本化时报错,消息号GLT2201 “未填写行项目002中平衡字段“利润中心”” - ACSET

    文章目录 一.错误概述 二.问题解决 - ACSET 三.资本化验证 一.错误概述 在建工程:800000000000 资本化,出现报错:"未填写行项目002中平衡字段"利润中心& ...

  8. SAP BAPI创建交货单拆单原因调查

    基础知识 创建交货单有如下场景以及对应BAPI,如下: 1)根据销售订单 / 销售计划协议创建外向交货单,对应Tcode VL01N,调用BAPI_OUTB_DELIVERY_CREATE_SLS 或 ...

  9. 【电商】订单拆单的流程中,系统需要做哪些工作?

    什么是拆单? 在网上购买商品下单成功后,过一段时间再次浏览时,有时会发现你的订单会变成两个或多个,这就是系统做了拆单而导致的. 拆单,就是将一个大的订单依据某些规则的集合,将其分解成两个或多个子订单的 ...

最新文章

  1. Java并发系列—工具类:CountDownLatch
  2. 分布式消息队列知识图谱
  3. python 排序 sorted 如果第一个条件 相同 则按第二个条件排序
  4. 从JVM的常见异常来看Tomcat中内存的设置
  5. Luogu P4708 画画 (Burnside引理、组合计数)
  6. 2020年_Jsp Jstl 学习笔记
  7. svn clean up 出错解决方案
  8. GDCM:处理DICOM文件的示例
  9. LeetCode-206 反转链表
  10. discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效
  11. 误删表数据,如何恢复过来
  12. olcd12864的u8g2库_Arduino为什么无法用u8g2驱动12864OLED屏?求找出错误
  13. html浏览器兼容测试工具,13个不同浏览器兼容性测试的免费软件工具
  14. OSG 实现跟随节点的相机(转)
  15. c语言编程八卦方位,易经手掌八卦图,如何C语言编程画一个彩色的周易八卦图...
  16. 酷的计算机名字,最酷的名字大全,酷一点的QQ名字:愛伱沒商量
  17. overleaf 中相关的问题
  18. ImageIO.read(inputStream)读取.webp格式图片报错
  19. 【2012年,当我回首来时路】
  20. windows垃圾清理脚本

热门文章

  1. 如何将鼠标和键盘连接到PlayStation 4
  2. 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)
  3. 设备功耗计算专题《低功耗实战篇,ESP8266睡眠模式1@深度睡眠Deep-sleep》
  4. win7与VMware/VBox下linux共享文件夹方法
  5. 微信小程序个人中心页面开发
  6. 实现安全登录的两种方法
  7. 蚂蚁金服杨军:蚂蚁数据分析平台的演进及数据分析方法的应用
  8. HDU 5441并查集 by cyl
  9. 推荐一本好书《 Java程序员 上班那点事儿》
  10. ORAN专题系列-29:运营商O-RAN扩展皮站测试的硬件架构