一、生产订单入库

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生产订单入库写入批次特性增强的更多相关文章

  1. PP生产订单的BADI增强 WORKORDER_UPDATE

    METHOD if_ex_workorder_update~before_update. *---------------------->增强1 开始* "当生产订单类型为PP01时, ...

  2. S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析

    题目这个增强的输入参数很恐怖,长长的一串: CALL BADI l_badi->BEFORE_UPDATE EXPORTING IT_PIINSTRUCTIONVALUE = IT_PIINST ...

  3. 增强篇4 CO01生产订单屏幕增强

    Step1. 结构 CO_AUFK 里增加自定义字段:ZZZ_TRIAL 然后激活结构 查看AUFK是激活状态, 字段增强完成: Step2. CMOD  使用客户增强:PPCO0012    生产订 ...

  4. PP生产订单创建、下达、报工、收货、投料

    转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...

  5. SAP生产订单状态

    SAP系统的常见订单状态如下: ·        CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: ·        PREL (部分下达):当生产订单部分下达时,如仅下 ...

  6. SAP 生产订单变更管理 OCM Order Changement Management

    SAP OCM Order Changement Management  一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...

  7. 为什么S/4HANA的销售订单创建会触发生产订单的创建

    调用S/4HANA销售订单创建函数SD_SALES_DOCU_MAINTAIN创建一个销售订单时,会触发生产订单的创建. 销售订单的每个行项目对应一个独立的生产订单,SD_SALES_DOCU_MAI ...

  8. java高级特性增强

    第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...

  9. PP-判断生产订单状态(关闭)

    方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...

  10. SAP生产订单没有目标成本的原因解释

    首先,OKV6察看一下目标成本的配置,默认是当期成本估算,见下图: 其次,没有目标成本的原因还可能是下列原因导致: 1.该物料没有成本估算和发布2.工艺路线维护日期晚于这个物料估算日期3.没有做CO1 ...

随机推荐

  1. 由后缀表达式题目:stoi atoi 函数新发现

    洛谷上的题:有些·表示一个操作结束~假装没看到 1 #include<iostream> 2 #include<stack> 3 #include<string> ...

  2. 🔥🔥Java开发者的Python快速进修指南:文件操作

    Python提供的文件操作相对于Java来说,确实简单方便许多.不仅操作简单,代码可读性也相对较高.然而,我们需要注意的不仅仅是文件操作的简单性,还有文件操作的各种模式.在Java中,我们并不经常使用 ...

  3. Fragment动态添加与管理

    activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  4. Mybatis-Flex之基础搭建

    1.是什么? MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量.同时拥有极高的性能与灵活性.我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的Query ...

  5. 流媒体服务器ZLMediaKit与FFmpeg

    流媒体服务器ZLMediaKit与FFmpeg overview 关键字:ZLMediaKit.FFmpeg.srt.vlc 如果想快速拥有自己的流媒体服务器,那么可以使用开源项目自己搭建.开源的流媒 ...

  6. URL路径参数转换器

    作用和基本使用 作用: 用于校验请求的路由参数中的值是否符合符合指定的规则. 这个使用方法和django中的路由参数转换器是差不多的. 至于为什么用路径参数转换器,原因和django中的一样,虽然你可 ...

  7. libgdx摄像头的移动

    要知道,做一个游戏,摄像头是必不可少的.接下来,我将讲解libgdx里面摄像头的移动 2d摄像头OrthographicCamera也叫做正交相机 结果展示: 按上下左右是可以移动的 Orthogra ...

  8. 如何保障Cookie的信息安全

    一.支持策略 保障 Cookie 的安全性可以从以下几个方面进行: 使用 HttpOnly 属性:设置 HttpOnly 属性可以防止JavaScript Document.cookie API 无法 ...

  9. 聊聊ChatGLM6B的微调脚本及与Huggingface的关联

    本文首先分析微调脚本trainer.sh的内容,再剖析ChatGLM是如何与Huggingface平台对接,实现transformers库的API直接调用ChatGLM模型,最后定位到了ChatGLM ...

  10. ASR项目实战-交付过程中遇到的内核崩溃问题

    当前参与交付的语音识别产品服务,算法模块基于经典的Kaldi,算法中的一部分运行在GPU之上. 算法团队采用的是声学模型+语言模型的1-pass方案.这个方案的特点在于,语言模型数据文件(HCLG文件 ...