模拟VL02N交货单批次拆分
昨天听到一个好玩的需求,自开发交货单批次拆分的界面和实现批次拆分。
批次拆分的函数就不提了,这里来说说自开发程序怎么模拟出批次拆分的那种样子。、
效果图:
1,首先定义一个交货行项目表和拆分出来的批次表:


REPORT zvl02n. TYPES:BEGIN OF ty_item,
vbeln TYPE vbeln_vl, "Delivery
posnr TYPE posnr_vl, "Delivery Item
matnr TYPE matnr, "Material Number
charg TYPE charg_d, "Batch Number
icon TYPE icon_d, "
hi_item TYPE posnr_vl, "
END OF ty_item. DATA:gt_item TYPE TABLE OF ty_item,"交货主行
gt_fitem TYPE TABLE OF ty_item,"交货拆分行
gw_item LIKE LINE OF gt_item,
ls_item LIKE LINE OF gt_item,
gv_field TYPE string,"光标列
gv_line TYPE i,"光标行
ok_code TYPE sy-ucomm.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_9000' ITSELF
CONTROLS: tc_9000 TYPE TABLEVIEW USING SCREEN 9000. *&SPWIZARD: LINES OF TABLECONTROL 'TC_9000'
DATA: g_tc_9000_lines LIKE sy-loopc. INITIALIZATION.
"初始化内表
gw_item-vbeln = '1000000000'.
gw_item-posnr = '10'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '20'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '30'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '40'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '50'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '60'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '70'.
gw_item-matnr = 'A1'.
gw_item-icon = '@3S@'.
APPEND gw_item TO gt_item.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '900001'.
gw_item-matnr = 'A1'.
gw_item-hi_item = '10'.
gw_item-icon = ''.
APPEND gw_item TO gt_fitem.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '900002'.
gw_item-matnr = 'A1'.
gw_item-hi_item = '10'.
gw_item-icon = ''.
APPEND gw_item TO gt_fitem. gw_item-vbeln = '1000000000'.
gw_item-posnr = '900001'.
gw_item-matnr = 'A1'.
gw_item-hi_item = '20'.
gw_item-icon = ''.
APPEND gw_item TO gt_fitem.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '900002'.
gw_item-matnr = 'A1'.
gw_item-hi_item = '20'.
gw_item-icon = ''.
APPEND gw_item TO gt_fitem. gw_item-vbeln = '1000000000'.
gw_item-posnr = '900001'.
gw_item-matnr = 'A1'.
gw_item-hi_item = '70'.
gw_item-icon = ''.
APPEND gw_item TO gt_fitem.
gw_item-vbeln = '1000000000'.
gw_item-posnr = '900002'.
gw_item-matnr = 'A1'.
gw_item-hi_item = '70'.
gw_item-icon = ''.
APPEND gw_item TO gt_fitem. START-OF-SELECTION.
CALL SCREEN 9000.
其中添加了7个主行项目,10,20,70分别加了2个次行项目
2,PAI开头获取光标行,这里获取的行号存到全局变量里,为了后面折叠展开事件使用
MODULE get_field INPUT. GET CURSOR FIELD gv_field
LINE gv_line.
IF ( gv_line + tc_9000-top_line - 1 ) > tc_9000-lines.
gv_line = tc_9000-lines.
ELSE.
gv_line = gv_line + tc_9000-top_line - 1.
ENDIF.
ENDMODULE.
3,根据点击的按钮图标添加次行
FORM show_fitem .
DATA:lv_index TYPE i.
lv_index = gv_line.
READ TABLE gt_item INTO gw_item INDEX lv_index.
IF sy-subrc = 0.
IF gw_item-icon = '@3S@'.
gw_item-icon = '@3T@'.
LOOP AT gt_fitem INTO ls_item WHERE hi_item = gw_item-posnr.
lv_index = lv_index + 1.
INSERT ls_item INTO gt_item INDEX lv_index.
ENDLOOP.
ELSEIF gw_item-icon = '@3T@'.
gw_item-icon = '@3S@'.
DELETE gt_item WHERE hi_item = gw_item-posnr.
ENDIF.
MODIFY gt_item FROM gw_item INDEX gv_line TRANSPORTING icon.
ENDIF. ENDFORM.
最后说明下,TC里怎么把文本转成ICON
1,取消输入:
2,右键TC里的列转换BUTTON
并添加事件FOD
MODULE user_command_9000 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'FOD'.
PERFORM show_fitem.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
模拟VL02N交货单批次拆分的更多相关文章
- 「SAP技术」SAP VL02N 执行批次拆分报错,说不允许批次拆分?
1,如下新建的DN 80017843,storage location 字段值为空.VL02N 试图去做批次拆分失败,系统报错说,Batch split is not permitted for ma ...
- 读取交货单拣配数量PIKMG(转)
原文链接:https://www.591sap.com/thread-953-1-1.html SAP交货单交货数量在lips中直接读取,但是拣配数量lfimg,只存在vbfa中,且如果基本计量单位和 ...
- SAP 订单状态跟踪
*&--------------------------------------------------------------------- *& Program name: *& ...
- SAP销售模块塑工常见问题和解决方案(自己收藏)
当创建订单时出现提示不存在该产品层次,如图: 解决方案:将该物料正确的产品层次提供给创建物料主数据的相关人员,将其改正. 对于包装膜类物料,在创建完销售订单进行后续的动作时,如开票,发现没有带出相应的 ...
- ABAP 拆批拣货交货bapi以及实例
使用函数 BAPI_OUTB_DELIVERY_CHANGE:拆批bapi WS_DELIVERY_UPDATE:拣货函数 BAPI_OUTB_DELIVERY_CONFIRM_DEC:过账函数 样例 ...
- 用C语言做一个横板过关类型的控制台游戏
前言:本教程是写给刚学会C语言基本语法不久的新生们. 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发. 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游 ...
- Filebeat配置参考手册
Filebeat的配置参考 指定要运行的模块 前提: 在运行Filebeat模块之前,需要安装并配置Elastic堆栈: 安装Ingest Node GeoIP和User Agent插件.这些插件需要 ...
- 一文看懂Transformer内部原理(含PyTorch实现)
Transformer注解及PyTorch实现 原文:http://nlp.seas.harvard.edu/2018/04/03/attention.html 作者:Alexander Rush 转 ...
- Spark学习之路(十四)—— Spark Streaming 基本操作
一.案例引入 这里先引入一个基本的案例来演示流的创建:获取指定端口上的数据并进行词频统计.项目依赖和代码实现如下: <dependency> <groupId>org.apac ...
- Spark 系列(十四)—— Spark Streaming 基本操作
一.案例引入 这里先引入一个基本的案例来演示流的创建:获取指定端口上的数据并进行词频统计.项目依赖和代码实现如下: <dependency> <groupId>org.apac ...
随机推荐
- 05 过拟合(over-fitting)与正则化(regularization)
1. 什么是Overfitting 我们希望神经网络模型能够找到数据集中的一般规律,从而帮助我们预测未知数据.这个过程是通过不断地迭代优化损失函数(也就是预测值和实际值的误差)而实现的.然而随着误差进 ...
- Hack The Box-Cap靶机
该靶机通过信息收集拿到大致信息,利用IDOR访问控制缺陷漏洞获得目标流量包,通过流量分析获取到ftp流量包存在用户名密码,可以ftp登录/ssh登录拿到第一个flag,利用linpeas.sh内网收集 ...
- unity prefab
1.修改prefab原始资源某组件为enabled或disabled,实例如果起初和原始资源是一样的状态那么修改原始资源会作用到实例上,如果发现不一样那么原始资源的修改不会作用到实例上,而且以后都不会 ...
- Spring Boot 根据配置决定服务(集群、单机)是否使用某些主件
比如:在集群模式下,我想用 Nacos 组件,单机版不想用它. server: name: VipSoft Server Dev port: 8193 cloud: nacos: discovery: ...
- Cpu 资源占用高排查
查看java进程 ps aux | grep java 或者 ps -ef | grep java 查看java进程 线程信息 使用top -p [PID] -H 观察该进程中所有线程的资源占用 to ...
- 掌握Tortoise-ORM高级异步查询技巧
title: 掌握Tortoise-ORM高级异步查询技巧 date: 2025/04/22 12:05:33 updated: 2025/04/22 12:05:33 author: cmdrago ...
- 解决chrome浏览器拓展插件颜色变成透明无法使用。
虚拟机装了chrome之后插件变成了透明的,没办法使用了. 解决办法如下: 1.卸载VMWARE tools 2.地址栏输入: chrome://flags 找到 "Choose ANGLE ...
- Spring基于注解的AOP事务控制
Spring基于注解的AOP事务控制 源码 代码测试 pom.xml <?xml version="1.0" encoding="UTF-8"?> ...
- 【记录】OpenAI|Python调用GPT API的开发环境及代码(2024/03/21实测)
本文默认读者已经有API Keys,并默认读者对Python环境较为熟悉,对相关内容不予介绍. 更新时间:2024/03/21 国内安装的时候偶尔会出现各种问题, 这篇记录是记录当下可用的一个方式. ...
- 【工具】JS脚本|网页任意视频倍速播放(包括MOOC、本地视频、其他的视频)
实际发布时间:2022-12-14 22:54:52. csdn禁止浏览器脚本相关博客了,就只能重新发到这儿了. 2024/12/14更新:更新了常见问题Q&A,可以配合食用. 只要浏览器 ...