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. 递归与分治思想:汉诺塔(递归 && 分治思想)

    1 //64个盘子 2 //划分成小问题:1.将上面的63个盘子从x借助z移动到y上 3 2.将第64个盘子从x移动到z上 4 3.将y上的63个盘子借助x移动到z上 5 详解:https://www ...

  2. [Flink] Flink(CDC/SQL)Job在启动时,报“ConnectException: Error reading MySQL variables: Access denied for user 'xxxx '@'xxxx' (using password: YES)”(1个空格引发的"乌龙")

    1 问题描述 1.1 基本信息 所属环境:CN-PT 问题时间:2023-11-21 所属程序: Flink Job(XXXPT_dimDeviceLogEventRi) 作业类型: Flink SQ ...

  3. MongoDB 中的事务

    MongoDB 事务 前言 如何使用 事务的原理 事务和复复制集以及存储引擎之间的关系 WiredTiger 中的事务隔离级别 WiredTiger 事务过程 事务开启 事务执行 事务提交 事务回滚 ...

  4. In 查询及其优化

      translator Afrikaans Albanian - shqipe Arabic - ‎‫العربية‬‎ Armenian - Հայերէն Azerbaijani - azərb ...

  5. MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置

    2.2 MySQL下载安装与配置 2.2.1 MySQL下载 MySQL中文官网:https://www.mysql.com/cn/ MySQL英文官网:https://www.mysql.com/ ...

  6. crictl命令

    containerd提供了ctr命令行用于镜像管理容器,但功能比较简单 所以一般会用k8s提供的crictl命令. 该命令的特点是:只要符合K8S的CRI接口的,都可以使用. 另外一点就是,cricr ...

  7. 三维GIS引擎用什么好?结合目前市面上的主流引擎进行分析

    相信大多数人在谈到三维GIS引擎时,第一个想到的首先是CesiumJS,CesiumJS以其免费开源的特点,快速占领了三维GIS这个领域,同时也催生了许多以CesiumJS为基础的衍生产品.Cesiu ...

  8. JMeter变量和调试取样器

    变量 可以在测试计划中定义变量 可以通过${变量名}进行调用 调试取样器可以看到变量参数

  9. 2023.2 IDEA安装激活教程

    1.下载安装IntelliJ IDEA 先去官网下载,我这里下载的是最新版本的2023.2,测试过2023最新版本以及2022版本以上的版本没问题. 安装然后打开 提示要输入激活码,先关闭应用,等下再 ...

  10. proxy代理实现接口调用处理

    proxy代理实现接口调用处理 我们知道,要调用接口必须要实例化才能调用. 那么我们能不能不实例化调用呢?像mybatis.hibernate那样定义一个接口就能注入调用.其实他们的底层实现就是用代理 ...