按字段和行项目数量拆单
一、业务要求
按订单类型、客户、每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
按字段和行项目数量拆单相关推荐
- Cloud for Customer custom BO创建时间随着行项目数量增加而增加的关系
Custom BO definition: 19 fields on header level and 12 fields on item level Items Duration(s) 100 0. ...
- 【ABAP】采购订单行项目 税码 自动默认
[业务背景]唉,怎么说呢.采购订单的定价策略是个相对复杂一点的事情,但是,根据企业的业务实践,也可以做的相对简单一些. 我们这个案例呢,就是采购定价策略做的比较简单,但是有一点不便捷的地方,就是采购订 ...
- 如何用代码填充S/4HANA销售订单行项目的数量字段
我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...
- vc 通过句柄修改窗口大小_VC应用(1)通过VC修改销售订单行项目的字段
VC是SAP中非常重要的功能,过去多年来,我参与了不少使用VC的项目,我将通过多篇文章介绍VC的一些应用,本文介绍通过VC修改销售订单行项目的字段 01 概览 在销售订单创建时,对于可配置物料来说,不 ...
- 销售订单行项目的装运点字段确认规则
销售订单行项目的装运点字段确认规则: 首先 系统有时用装运点有时用发运点,"装运点"与"发运点"是一样的 装运点的确认依据为: 装运条件 - 装载组 - 交货工 ...
- MIGO 行项目屏幕自定义字段增强示例
继上次抬头屏幕增强(MIGO 抬头屏幕自定义字段增强示例),本文章演示行项目增强示例 实现思路参考标准 MB_MIGO_BADI 增强示例类:CL_EXM_IM_MB_MIGO_BADI 1.创建增强 ...
- 资产或在建工程资本化时报错,消息号GLT2201 “未填写行项目002中平衡字段“利润中心”” - ACSET
文章目录 一.错误概述 二.问题解决 - ACSET 三.资本化验证 一.错误概述 在建工程:800000000000 资本化,出现报错:"未填写行项目002中平衡字段"利润中心& ...
- SAP BAPI创建交货单拆单原因调查
基础知识 创建交货单有如下场景以及对应BAPI,如下: 1)根据销售订单 / 销售计划协议创建外向交货单,对应Tcode VL01N,调用BAPI_OUTB_DELIVERY_CREATE_SLS 或 ...
- 【电商】订单拆单的流程中,系统需要做哪些工作?
什么是拆单? 在网上购买商品下单成功后,过一段时间再次浏览时,有时会发现你的订单会变成两个或多个,这就是系统做了拆单而导致的. 拆单,就是将一个大的订单依据某些规则的集合,将其分解成两个或多个子订单的 ...
最新文章
- Java并发系列—工具类:CountDownLatch
- 分布式消息队列知识图谱
- python 排序 sorted 如果第一个条件 相同 则按第二个条件排序
- 从JVM的常见异常来看Tomcat中内存的设置
- Luogu P4708 画画 (Burnside引理、组合计数)
- 2020年_Jsp Jstl 学习笔记
- svn clean up 出错解决方案
- GDCM:处理DICOM文件的示例
- LeetCode-206 反转链表
- discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效
- 误删表数据,如何恢复过来
- olcd12864的u8g2库_Arduino为什么无法用u8g2驱动12864OLED屏?求找出错误
- html浏览器兼容测试工具,13个不同浏览器兼容性测试的免费软件工具
- OSG 实现跟随节点的相机(转)
- c语言编程八卦方位,易经手掌八卦图,如何C语言编程画一个彩色的周易八卦图...
- 酷的计算机名字,最酷的名字大全,酷一点的QQ名字:愛伱沒商量
- overleaf 中相关的问题
- ImageIO.read(inputStream)读取.webp格式图片报错
- 【2012年,当我回首来时路】
- windows垃圾清理脚本