MIGO生产订单入库写入批次特性增强
一、生产订单入库
MIGO根据生产订单入库时,将生产订单中的字段,写入到批次特性中
二、BADI:MB_MIGO_BADI
调用BADI中的IF_EX_MB_MIGO_BADI~POST_DOCUMENT方法
"-----------------------------------------@斌将军--------------------------------------------
METHOD if_ex_mb_migo_badi~post_document.
"MIGO生产订单入库时产品编号写入批次特性 DATA: ls_mseg TYPE mseg.
DATA: lv_object TYPE bapi1003_key-object.
DATA:gv_objek TYPE cuobn,
gs_objek TYPE bapi1003_key-object,
gv_obtab TYPE tabelle,
gv_klart TYPE klassenart,
gv_class TYPE klasse_d, objectkey TYPE bapi1003_key-object,
gs_objectkeytable TYPE bapi1003_object_keys,
gt_objectkeytable TYPE STANDARD TABLE OF bapi1003_object_keys, gt_values_char TYPE TABLE OF bapi1003_alloc_values_char,
gs_values_char TYPE bapi1003_alloc_values_char,
gt_values_num TYPE TABLE OF bapi1003_alloc_values_num,
gs_values_num TYPE bapi1003_alloc_values_num,
gt_values_curr TYPE TABLE OF bapi1003_alloc_values_curr,
gs_values_curr TYPE bapi1003_alloc_values_curr,
gs_status TYPE bapi1003_key-status, gt_return TYPE STANDARD TABLE OF bapiret2,
gt_return2 TYPE STANDARD TABLE OF bapiret2,
gt_return3 TYPE STANDARD TABLE OF bapiret2,
gt_return4 TYPE STANDARD TABLE OF bapiret2,
gs_return TYPE bapiret2. DATA:return_message TYPE char200, "返回消息
lv_value TYPE char70,
lv_check TYPE char2. IF it_mseg[] IS NOT INITIAL.
SELECT
aufnr,
zgh,
zxz
FROM aufk
INTO TABLE @DATA(lt_aufk)
FOR ALL ENTRIES IN @it_mseg
WHERE aufnr = @it_mseg-aufnr.
ENDIF. LOOP AT it_mseg INTO ls_mseg WHERE charg IS NOT INITIAL
AND aufnr IS NOT INITIAL AND bwart = '101'
AND ( werks = 'XXXX' OR werks = 'XXXX' ). READ TABLE lt_aufk INTO DATA(ls_aufk) WITH KEY aufnr = ls_mseg-aufnr.
IF sy-subrc EQ 0.
CLEAR:gv_objek,gv_obtab,gv_klart,gv_class.
CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
EXPORTING
i_matnr = ls_mseg-matnr
i_charg = ls_mseg-charg "批次
i_werks = ls_mseg-werks
IMPORTING
e_objek = gv_objek
e_obtab = gv_obtab
e_klart = gv_klart
e_class = gv_class. IF gv_objek IS INITIAL AND gv_obtab IS INITIAL AND gv_klart IS INITIAL AND gv_class IS INITIAL.
return_message = '批次维护失败:未查询到相关类别'.
MESSAGE e001(00) WITH return_message.
ENDIF. "当批次创建成功,获取物料和批次,获取key值
FREE:gt_objectkeytable.
CLEAR : gs_objectkeytable.
gs_objectkeytable-key_field = 'MATNR'.
gs_objectkeytable-value_int = ls_mseg-matnr."物料
APPEND gs_objectkeytable TO gt_objectkeytable. CLEAR : gs_objectkeytable.
gs_objectkeytable-key_field = 'WERKS'.
gs_objectkeytable-value_int = ls_mseg-werks.
APPEND gs_objectkeytable TO gt_objectkeytable. CLEAR : gs_objectkeytable.
gs_objectkeytable-key_field = 'CHARG'.
gs_objectkeytable-value_int = ls_mseg-charg.
APPEND gs_objectkeytable TO gt_objectkeytable. FREE gt_return.
CLEAR:objectkey.
CALL FUNCTION 'BAPI_OBJCL_CONCATENATEKEY'
EXPORTING
objecttable = gv_obtab "表名
IMPORTING
objectkey_conc = objectkey
TABLES
objectkeytable = gt_objectkeytable
return = gt_return. LOOP AT gt_return INTO gs_return WHERE type CA 'EAX'.
return_message = '批次维护失败:未查询到分类密钥'.
MESSAGE e001(00) WITH return_message.
ENDLOOP. "获取特征
REFRESH:gt_values_num[], gt_values_char[], gt_values_curr[],gt_return[].
gs_objek = objectkey.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = gs_objek
objecttable = gv_obtab
classnum = gv_class
classtype = gv_klart
* IMPORTING
* status = gs_status
TABLES
allocvaluesnum = gt_values_num
allocvalueschar = gt_values_char
allocvaluescurr = gt_values_curr
return = gt_return. READ TABLE gt_values_char ASSIGNING FIELD-SYMBOL(<fs_char>) WITH KEY charact = 'ZPP_ZGH'.
IF sy-subrc EQ 0.
CLEAR:lv_value.
lv_value = ls_aufk-zgh.
<fs_char>-value_char = lv_value.
<fs_char>-value_neutral = lv_value.
<fs_char>-value_char_long = lv_value.
<fs_char>-value_neutral_long = lv_value.
ELSE.
CLEAR gs_values_char.
gs_values_char-charact = 'ZPP_ZGH'."产品编号
gs_values_char-value_char = ls_aufk-zgh.
APPEND gs_values_char TO gt_values_char.
ENDIF. READ TABLE gt_values_char ASSIGNING <fs_char> WITH KEY charact = 'ZPP_ZXZ'.
IF sy-subrc EQ 0.
CLEAR:lv_value.
lv_value = ls_aufk-zxz.
<fs_char>-value_char = lv_value.
<fs_char>-value_neutral = lv_value.
<fs_char>-value_char_long = lv_value.
<fs_char>-value_neutral_long = lv_value.
ELSE.
CLEAR gs_values_char.
gs_values_char-charact = 'ZPP_ZXZ'."行走机构编号
gs_values_char-value_char = ls_aufk-zxz.
APPEND gs_values_char TO gt_values_char.
ENDIF. "更新特征值
FREE:gt_return.
CALL FUNCTION 'BAPI_OBJCL_CHANGE'
EXPORTING
objectkey = objectkey
objecttable = gv_obtab
classnum = gv_class
classtype = gv_klart
* status = gs_status
TABLES
allocvaluesnumnew = gt_values_num
allocvaluescharnew = gt_values_char
allocvaluescurrnew = gt_values_curr
return = gt_return. lv_check = 'S'.
return_message = '批次维护失败:'.
LOOP AT gt_return INTO gs_return WHERE type CA 'AEX'.
CONCATENATE return_message gs_return-message INTO return_message.
lv_check = 'E'.
CLEAR:gs_return.
ENDLOOP. IF lv_check = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE e001(00) WITH return_message.
ENDIF.
ENDIF.
ENDLOOP. ENDMETHOD.
"-----------------------------------------@斌将军--------------------------------------------
MIGO生产订单入库写入批次特性增强的更多相关文章
- PP生产订单的BADI增强 WORKORDER_UPDATE
METHOD if_ex_workorder_update~before_update. *---------------------->增强1 开始* "当生产订单类型为PP01时, ...
- S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析
题目这个增强的输入参数很恐怖,长长的一串: CALL BADI l_badi->BEFORE_UPDATE EXPORTING IT_PIINSTRUCTIONVALUE = IT_PIINST ...
- 增强篇4 CO01生产订单屏幕增强
Step1. 结构 CO_AUFK 里增加自定义字段:ZZZ_TRIAL 然后激活结构 查看AUFK是激活状态, 字段增强完成: Step2. CMOD 使用客户增强:PPCO0012 生产订 ...
- PP生产订单创建、下达、报工、收货、投料
转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...
- SAP生产订单状态
SAP系统的常见订单状态如下: · CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: · PREL (部分下达):当生产订单部分下达时,如仅下 ...
- SAP 生产订单变更管理 OCM Order Changement Management
SAP OCM Order Changement Management 一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...
- 为什么S/4HANA的销售订单创建会触发生产订单的创建
调用S/4HANA销售订单创建函数SD_SALES_DOCU_MAINTAIN创建一个销售订单时,会触发生产订单的创建. 销售订单的每个行项目对应一个独立的生产订单,SD_SALES_DOCU_MAI ...
- java高级特性增强
第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...
- PP-判断生产订单状态(关闭)
方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...
- SAP生产订单没有目标成本的原因解释
首先,OKV6察看一下目标成本的配置,默认是当期成本估算,见下图: 其次,没有目标成本的原因还可能是下列原因导致: 1.该物料没有成本估算和发布2.工艺路线维护日期晚于这个物料估算日期3.没有做CO1 ...
随机推荐
- freeswitch设置多个execute_on_media
概述 freeswitch是一款简单好用的VOIP开源软交换平台. fs中有非常多的接口和通道变量,使用方式多变. 官方文档有时候也仅仅是介绍了最基本的使用方法和格式. 环境 centos:CentO ...
- Cadence SPB 22.1 -- 元件库的创建02Day
一.原理图元件库工程 (1).新建工程:执行菜单命令"File"→"New"→"Project",输入工程名字.存储位置等基本信息保存即可: ...
- .NET中如何实现高精度定时器
.NET中有多少种定时器一文介绍过.NET中至少有6种定时器,但精度都不是特别高,一般在15ms~55ms之间.在一些特殊场景,可能需要高精度的定时器,这就需要我们自己实现了.本文将讨论高精度定时器实 ...
- 3D网站LOGO动画
相关技术和实现分析 3D模型 帧动画 threejs 推荐用blender创建3d模型,k帧实现从上到下翻转的帧动画 threejs 中执行帧动画,并关联滚动条 threejs 模型材质 Blende ...
- NLP复习之朴素贝叶斯
朴素贝叶斯分类器和加一平滑计算每个单词的似然值 贝叶斯规则:c表示类别,d表示数据 \[P(c|d) = \frac{P(d|c)P(c)}{P(d)} \] 例题1 假设句子"I alwa ...
- C++ Qt开发:SqlRelationalTable关联表组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlRela ...
- MySQL|MySQL事物以及隔离级别
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如开单,需要添加给订单表增加记录,还需要增加订单的各种相关明细,操作复杂度高,这些操作语句需要构成一个事务.在 MySQL 命令行的默认设置下, ...
- Java的特性、内容和环境的配置
Java的特性和优势 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 JDK包含JRE包含JVM JDK:Java Development Kit JRE:Java Run ...
- Redis 分片集群
1.Redis分片集群 1.1.搭建分片集群 主从和哨兵可以解决高可用.高并发读的问题.但是依然有两个问题没有解决: 海量数据存储问题 高并发写的问题 使用分片集群可以解决上述问题,如图: 分片集群特 ...
- JavaFx之整合JFoenix(十四)
JavaFx之整合JFoenix JFoenix是JavaFx流行的UI框架之一 github:https://github.com/sshahine/JFoenix 整合Maven <!--h ...