1、MIGO过账BAPI新增字段

BAPI新增收货行号字段,保存外围系统的数据

1.1、MATDOC表新增收货行号

1.2、MSEG表新增收货行号

创建DDL视图用于扩展NSDM_E_MSEG

1.3、增强实施

BADI:MB_BAPI_GOODSMVT_CREATE

调用方法IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC

IMSEG结构中也要新增增强字段,用于传值

增强代码

"--------------------@斌将军--------------------
METHOD IF_EX_MB_BAPI_GOODSMVT_CREATE~EXTENSIONIN_TO_MATDOC. DATA:
c_lenstruc TYPE i VALUE 30,
wa_bapi_mb_header TYPE bapi_te_xmkpf,
wa_bapi_mb_item TYPE bapi_te_xmseg,
wa_extension_in TYPE bapiparex. FIELD-SYMBOLS:
<fs_imseg> TYPE imseg. CHECK NOT extension_in[] IS INITIAL. * Analyze IMSEG for document structure and assign LINE_IDs if necessary
CALL METHOD cl_mmim_line_id_manager=>analyze_mb_create
CHANGING
ct_imseg = ct_imseg[]
EXCEPTIONS
duplicate_line_id = 1
OTHERS = 2. LOOP AT extension_in INTO wa_extension_in.
CASE wa_extension_in-structure.
* extension of MKPF
WHEN 'BAPI_TE_XMKPF'.
MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_header.
MOVE-CORRESPONDING wa_bapi_mb_header TO cs_imkpf.
* extension of MSEG
WHEN 'BAPI_TE_XMSEG'.
MOVE wa_extension_in+c_lenstruc TO wa_bapi_mb_item.
READ TABLE ct_imseg
WITH KEY line_id = wa_bapi_mb_item-matdoc_itm
ASSIGNING <fs_imseg>.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING wa_bapi_mb_item TO <fs_imseg>.
ENDIF.
ENDCASE.
ENDLOOP. ENDMETHOD.
"--------------------@斌将军--------------------

2、MIGO各情况代码示例

对应的gm_code取值:

*    01:采购订单的收货
* 02:生产订单的收货
* 03:发货
* 04:转移发布
* 05:其他收货
* 06:货物移动的逆转
* 07:关于转包订单的后续调整

当遇到移动类型不知道选择GOODSMVT_CODE对应的CODE时,可以通过移动类型查询T158B表和T158G,找到对应的CODE值

2.1、带增强字段的BAPI传值-移动类型531

"--------------------@斌将军--------------------
DATA:ls_imseg TYPE bapi_te_xmseg.
DATA: ls_header TYPE bapi2017_gm_head_01,
ls_mode TYPE bapi2017_gm_code,
ls_goodsmvt_headret TYPE bapi2017_gm_head_ret,
lt_goodsmvt_item TYPE STANDARD TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
* lt_goodsmvt_serialnumber TYPE STANDARD TABLE OF bapi2017_gm_serialnumber WITH HEADER LINE,
lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE. DATA:lv_message TYPE char200,
l_line_id TYPE mseg-line_id VALUE '000000',
lv_check TYPE char1.
* 01:采购订单的收货
* 02:生产订单的收货
* 03:发货
* 04:转移发布
* 05:其他收货
* 06:货物移动的逆转
* 07:关于转包订单的后续调整 ls_header-pr_uname = sy-uname. "用户名
ls_header-doc_date = '20220315'."gs_template1-bldat."LV_DATE. "凭证日期
ls_header-pstng_date = '20220315'."gs_template1-budat."LV_DATE. "过账日期
ls_header-header_txt = ''."gs_template1-id."LV_DATE. "抬头文本 ls_mode-gm_code = '05'. lt_goodsmvt_item-material = '000000000000210103'."
lt_goodsmvt_item-plant = '2000'."
lt_goodsmvt_item-stge_loc = '2021'."存储地点
lt_goodsmvt_item-move_type = '531'."移动类型
lt_goodsmvt_item-entry_qnt = '1'."以录入项单位表示的数量
lt_goodsmvt_item-entry_uom = 'KPC'."单位
lt_goodsmvt_item-orderid = '000100000349'."订单号
* 凭证行的唯一标识
l_line_id = l_line_id + 1.
lt_goodsmvt_item-line_id = l_line_id.
APPEND lt_goodsmvt_item.

CLEAR:ls_imseg.
ls_imseg-matdoc_itm = l_line_id.
ls_imseg-zline = lwa_pcsx-zline. CLEAR:ls_exte.
ls_exte-structure = 'BAPI_TE_XMSEG'.
ls_exte-valuepart1 = ls_imseg.
APPEND ls_exte TO lt_exte. CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = ls_mode
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
goodsmvt_item = lt_goodsmvt_item[]
extensionin = lt_exte
* goodsmvt_serialnumber = lt_goodsmvt_serialnumber[]
return = lt_return. CLEAR:lv_message,lv_check. LOOP AT lt_return WHERE type CA 'EAX'.
lv_check = 'E'.
CONCATENATE lv_message lt_return-message INTO lv_message.
CLEAR lt_return.
ENDLOOP.
"BAPI调用成功
IF lv_check = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF. "--------------------@斌将军--------------------

2.2、采购退货-移动类型161

退货采购订单,执行101,生成161移动类型行项目

MIGO收货

代码要按照MIGO传值101移动类型,BAPI会自动产生161移动类型

"--------------------@斌将军--------------------
ls_mode-gm_code = '01'. CLEAR:ls_goodsmvt_item.
ls_goodsmvt_item-po_number = '4100001418'."采购订单
ls_goodsmvt_item-po_item = '00010'."采购订单行项目
ls_goodsmvt_item-move_type = '101'."移动类型
ls_goodsmvt_item-mvt_ind = 'B'. "移动标识
ls_goodsmvt_item-material = '000000010000000002'."物料
ls_goodsmvt_item-plant = '1011'."工厂
ls_goodsmvt_item-stge_loc = '1001'."存储地点
ls_goodsmvt_item-entry_qnt = '1'."数量
ls_goodsmvt_item-entry_uom = 'EA'."单位
ls_goodsmvt_item-batch = 'A'."批次
APPEND ls_goodsmvt_item TO lt_goodsmvt_item.
"--------------------@斌将军--------------------

2.3、委外加工-移动类型543

委外加工,物料首层移动类型101,子层级移动类型543

MIGO收货

代码要按照MIGO传值101移动类型,并将子层级物料也作为行项目,且移动类型543,此处注意不要传入虚拟件的行

"--------------------@斌将军--------------------
ls_mode-gm_code = '01'. lv_line_id = lv_line_id + 1. CLEAR:ls_goodsmvt_item.
ls_goodsmvt_item-line_id = lv_line_id."凭证行的唯一标识 0001
ls_goodsmvt_item-move_type = '101'."移动类型
ls_goodsmvt_item-mvt_ind = 'B'. "移动标识
ls_goodsmvt_item-po_number = '4600000020'."采购订单
ls_goodsmvt_item-po_item = '00010'."采购订单行项目
ls_goodsmvt_item-material = '000000010000000002'."物料
ls_goodsmvt_item-plant = '1011'."工厂
ls_goodsmvt_item-stge_loc = '1001'."存储地点
ls_goodsmvt_item-entry_qnt = '1'."数量
ls_goodsmvt_item-entry_uom = 'EA'."单位
ls_goodsmvt_item-batch = 'A'."批次
APPEND ls_goodsmvt_item TO lt_goodsmvt_item. CLEAR:ls_goodsmvt_item.
ls_goodsmvt_item-parent_id = lv_line_id."父行标识 0001
lv_line_id = lv_line_id + 1.
ls_goodsmvt_item-line_id = lv_line_id."凭证行的唯一标识 0002
ls_goodsmvt_item-move_type = '543'."移动类型
ls_goodsmvt_item-mvt_ind = 'O'. "移动标识
ls_goodsmvt_item-material = '000000010000000003'."物料
ls_goodsmvt_item-plant = '1011'."工厂
ls_goodsmvt_item-entry_qnt = '1'."数量
ls_goodsmvt_item-entry_uom = 'EA'."单位
ls_goodsmvt_item-batch = 'A'."批次
APPEND ls_goodsmvt_item TO lt_goodsmvt_item.
"--------------------@斌将军--------------------

2.4、传输过账-移动类型411/413/415

传输过账举例

前台如图

在BAPI传值时,注意转出和转入的参数,不要传反

"--------------------@斌将军--------------------
IF p_wa_upload-bwart = '413' AND p_wa_upload-sobkz = 'E'."销售订单到销售订单
ls_goodsmvt_item-val_sales_ord = p_wa_upload-vbeln."从销售订单
ls_goodsmvt_item-val_s_ord_item = p_wa_upload-posnr.
ls_goodsmvt_item-sales_ord = p_wa_upload-d_vbeln."到销售订单
ls_goodsmvt_item-s_ord_item = p_wa_upload-d_posnr.
ELSEIF p_wa_upload-bwart = '415' AND p_wa_upload-sobkz = 'Q'."项目转项目
ls_goodsmvt_item-val_wbs_elem = p_wa_upload-posid."从WBS
ls_goodsmvt_item-wbs_elem = p_wa_upload-d_posid."到WBS
ELSEIF p_wa_upload-bwart = '411' AND p_wa_upload-sobkz = 'E'."单转非限制
ls_goodsmvt_item-val_sales_ord = p_wa_upload-vbeln.
ls_goodsmvt_item-val_s_ord_item = p_wa_upload-posnr.
ELSEIF p_wa_upload-bwart = '411' AND p_wa_upload-sobkz = 'Q'."项目转非限制
ls_goodsmvt_item-val_wbs_elem = p_wa_upload-posid.
ENDIF.
"--------------------@斌将军--------------------

2.5、投料和退料

投料举例

参考代码

"--------------------@斌将军--------------------
DATA: ls_header TYPE bapi2017_gm_head_01,
ls_mode TYPE bapi2017_gm_code,
ls_goodsmvt_headret TYPE bapi2017_gm_head_ret,
lt_goodsmvt_item TYPE STANDARD TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE. DATA:lv_message TYPE char200,
l_line_id TYPE mseg-line_id,
lv_check TYPE char1.
* 01:采购订单的收货
* 02:生产订单的收货
* 03:发货
* 04:转移发布
* 05:其他收货
* 06:货物移动的逆转
* 07:关于转包订单的后续调整 ls_header-pr_uname = sy-uname. "用户名
ls_header-doc_date = sy-datum."gs_template1-bldat."LV_DATE. "凭证日期
ls_header-pstng_date = sy-datum."gs_template1-budat."LV_DATE. "过账日期
ls_header-header_txt = ''."gs_template1-id."LV_DATE. "抬头文本 ls_mode-gm_code = '03'. lt_goodsmvt_item-material = '000000000003000008'."
lt_goodsmvt_item-plant = 'P010'."工厂
lt_goodsmvt_item-stge_loc = '9101'."存储地点
lt_goodsmvt_item-move_type = 'Z62'."移动类型
lt_goodsmvt_item-entry_qnt = '1'."以录入项单位表示的数量
lt_goodsmvt_item-orderid = '000001000019'."订单号
lt_goodsmvt_item-val_type = 'ZIZHI'."评估类型
* 凭证行的唯一标识
l_line_id = l_line_id + 1.
lt_goodsmvt_item-line_id = l_line_id.
APPEND lt_goodsmvt_item. CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = ls_mode
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
goodsmvt_item = lt_goodsmvt_item[]
* extensionin = lt_exte
* goodsmvt_serialnumber = lt_goodsmvt_serialnumber[]
return = lt_return. CLEAR:lv_message,lv_check. LOOP AT lt_return WHERE type CA 'EAX'.
lv_check = 'E'.
lv_message = lv_message && lt_return-message.
ENDLOOP.
"BAPI调用成功
IF lv_check = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
"--------------------@斌将军--------------------

定期更文,欢迎关注

 
 
 
 
此页面的语言为英语
 
翻译为中文(简体)
 
 
 
 
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 
随时将英语翻译为中文(简体)PRO
一律不翻译英语
一律不翻译i.cnblogs.com

MIGO BAPI_GOODSMVT_CREATE创建及增强的更多相关文章

  1. 【HR系列】SAP HR PA信息类型的创建与增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HR系列]SAP HR PA信息类型的创建与增 ...

  2. BAPI_GOODSMVT_CREATE物料凭证增强字段

    项目MSEG 的 BAPI 表增强结构  BAPI_TE_XMSEG 抬头MKPF 的 BAIP 表增强 BAPI_TE_XMKPF 1. 在结构BAPI_TE_XMSEG中appending str ...

  3. SAP 常用增强记录文档

    转自:http://blog.csdn.net/budaha 20170215需要一个PR 修改保存时候的增强,目的是同步PR的处理状态 EBAN-STATU 到一个自建表ZTPRTOPO,记得有个P ...

  4. SAP-FI模块 如何处理自动生成会计凭证增强

    一. 相关问题概览 1. 固定资产业务过渡科目摘要增强功能-F-02     需用表BKPF.BSEG.T001.通过BUKRS.BELNR.GJAHR三个字段相等关联BKPF与BSEG.通过BKPF ...

  5. 《JavaScript高级程序设计》读书笔记--(4)对象的创建

    ECMAScript支持面向对象(OO)编程,但不使用类或者接口.对象可以在代码执行过程中创建或增强,因此具有动态性而非严格定义的实体.在没有类的情况下,可以采用下列模式创建对象. 对象的创建 工厂模 ...

  6. [SAP ABAP开发技术总结]增强Enhancement

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. SAP增强Enhancement

    第一代:基于源码增强(子过程subroutine) 第一代增强基于源代码,是SAP提供的一个空代码的子过程.在这个子过程中用户可以添加自己的代码,控制自己的需求.这类增强集中在一些文件名倒数第二个字符 ...

  8. SAP增强 和VA01相关增强点介绍

    -转 sap寻找用户出口方法 sap的用户出口总共有三代: 一.User EXIT 第一代的用户出口,它们include在SAP标准程序的源代码里,可以说他们是源代码的一部分,你改了这种出口就相当于改 ...

  9. 第四代增强 NEW BADI的定义及实现

    NEW BADI 是在第四代增强框架下创建的BADI,是相对于第三代增强Classic Badi 而言的. 根据第四代增强的基本概念,所有显式增强Enhancement options 都必须放在增强 ...

  10. 实现简单的AOP前置后置增强

    AOP操作是我们日常开发经常使用到的操作,例如都会用到的spring事务管理.今天我们通过一个demo实现对一个类的某一个方法进行前置和后置的增强. //被增强类 public class PetSt ...

随机推荐

  1. React、Umi、RN 整体理解

    可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么? React 1. React 起源和发展(是什么?) React 是用于构建用户界面的 Jav ...

  2. 总结---Django部分

    Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. Django内置的ORM跟框架内的其他模块耦合程 ...

  3. C#winform中使用SQLite数据库

    公众号「DotNet学习交流」,分享学习DotNet的点滴. SQLite简介 SQLite是一种轻量级的关系型数据库管理系统(RDBMS),它以一个C库的形式提供.以下是SQLite数据库的一些关键 ...

  4. 一次显著的性能提升,从8s到0.7s

    前言 最近我在公司优化了一些慢查询SQL,积累了一些SQL调优的实战经验. 我之前写过一些SQL优化相关的文章<聊聊SQL优化的15个小技巧>和<explain | 索引优化的这把绝 ...

  5. 【ASP.NET Core】MVC过滤器:常见用法

    前面老周给大伙伴们演示了过滤器的运行流程,大伙只需要知道下面知识点即可: 1.过滤器分为授权过滤.资源访问过滤.操作方法(Action)过滤.结果过滤.异常过滤.终结点过滤.上一次咱们没有说异常过滤和 ...

  6. mysql的用户管理和权限控制

    1.创建用户用 create user '用户名' @ 'localhost' identified by '密码'; 这串代码是创建当地用,是这台电脑的用户,因为有个localhost: creat ...

  7. 使用dtd定义属性

  8. 我的大数据之路 - 基于HANA构建实时方案的历程

    产品内部前期有一个共识,依据业务要求的时效性来选择技术平台,即: 实时类业务,时效性小于2小时,则使用HANA构建. 离线类业务,时效性大于2小时,则使用大数据平台构建. 经过五月.六月两月的努力,离 ...

  9. 一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)

    之前我们介绍了如何使用嵌入式 Python3 环境给项目制作一键整合包,在使用嵌入式 Python 环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的 ...

  10. 【Python】人工智能-机器学习——不调库手撕深度网络分类问题

    1. 作业内容描述 1.1 背景 数据集大小150 该数据有4个属性,分别如下 Sepal.Length:花萼长度(cm) Sepal.Width:花萼宽度单位(cm) Petal.Length:花瓣 ...