当前位置: 首页 > news >正文

MIGO 物料过账 创建物料凭证 BAPI_GOODSMVT_CREATE

文章目录

    • 1.前台操作
    • 2.需求分析
      • 2.1调用方式
      • 2.2分为两大概括:
      • 2.3业务逻辑细节图
    • 3.BAPI_GOODSMVT_CREATE
    • 4.RFC接口代码
    • 5.总结

1.前台操作

SAP CO01(创建生产订单)/MIGO(发货投料)前台操作
这里面有migo的前台操作,首先了解前台操作后再去写RFC接口是比较容易理解的.!!

2.需求分析

2.1调用方式

mesOS->SAPOS

2.2分为两大概括:

同一过账标识 10

  1. 0 的时候单一过账,无论行项目中有多少个物料号,都会对应生成多少个物料凭证号
  2. 1的时候同一过账,也就是无论行项目中有多少个物料号,都只生成一个物料凭证编号.
    这两个逻辑是是相反的.

2.3业务逻辑细节图

在这里插入图片描述

3.BAPI_GOODSMVT_CREATE

下面的这些参数我只介绍了此需求用过的.

EXPORTING部分
bapi2017_gm_head_01,   "凭证中的过帐日期等一些抬头信息
bapi2017_gm_code,        "这个是你要进行的是什么样的操作比如说是发货,收货,取消等都对应相应的编号比如01 02 03IMPORTING部分
bapi2017_gm_head_ret,  "物料凭证号,凭证年度
bapi2017_gm_head_ret-mat_doc, "物料凭证号
bapi2017_gm_head_ret-doc_year, "凭证年度TABLES部分bapi2017_gm_item_create, "行项目bapiret2, "返回值

4.RFC接口代码

代码感觉比较臃肿,欢迎大佬前来补充优化!!!

FUNCTION zmigo_carry_to.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN_NUM) TYPE  BAPI_MTYPE
*"  EXPORTING
*"     VALUE(MSG_TYPE) TYPE  BAPI_MTYPE
*"     VALUE(MESSAGE) TYPE  BAPI_MSG
*"  TABLES
*"      IT_TAB_IN STRUCTURE  ZCARRY_TO_INPUT OPTIONAL
*"      INT_TAB_OUT STRUCTURE  ZCARRY_TO_OUTPUT OPTIONAL
*"----------------------------------------------------------------------DATA:goodsmvt_header       LIKE  bapi2017_gm_head_01,goodsmvt_code         LIKE  bapi2017_gm_code,goodsmvt_headret      LIKE  bapi2017_gm_head_ret,materialdocument      TYPE  bapi2017_gm_head_ret-mat_doc,matdocumentyear       TYPE  bapi2017_gm_head_ret-doc_year,goodsmvt_item         TYPE TABLE OF  bapi2017_gm_item_create,goodsmvt_item_0       TYPE TABLE OF  bapi2017_gm_item_create,w_goodsmvt_item       TYPE           bapi2017_gm_item_create,goodsmvt_serialnumber LIKE  bapi2017_gm_serialnumber,it_return             TYPE TABLE OF  bapiret2,wa_return             TYPE           bapiret2.DATA gs_tab_in TYPE zcarry_to_input .DATA gt_tab_in TYPE TABLE OF zcarry_to_input .DATA gs_tab_out TYPE zcarry_to_output .IF in_num = 1 .MOVE-CORRESPONDING  it_tab_in[]  TO  gt_tab_in.SORT gt_tab_in BY bwart.LOOP AT gt_tab_in INTO DATA(ls_tab).DELETE ADJACENT DUPLICATES FROM gt_tab_in COMPARING bwart.ENDLOOP.IF lines( gt_tab_in ) > 1.CLEAR:gt_tab_in, ls_tab.msg_type = 'E'.message = '不同移动类型请分批出库!'.RETURN.ENDIF.LOOP AT it_tab_in[] INTO gs_tab_in.gs_tab_in-zeile = sy-tabix.MODIFY it_tab_in FROM gs_tab_in.goodsmvt_header-pstng_date = gs_tab_in-budat_mkpf. "过账日期goodsmvt_code-gm_code      = '03'.w_goodsmvt_item-material  = gs_tab_in-matnr. "物料号w_goodsmvt_item-plant     = gs_tab_in-werks. "工厂w_goodsmvt_item-stge_loc  = gs_tab_in-lgort.  "库位w_goodsmvt_item-costcenter     = it_tab_in-kostl. "成本中心w_goodsmvt_item-entry_qnt = gs_tab_in-menge.  "数量w_goodsmvt_item-ref_doc_it = gs_tab_in-zeile.  "物料参考项目w_goodsmvt_item-move_type = gs_tab_in-bwart. "移动类型(库存管理)APPEND w_goodsmvt_item TO goodsmvt_item.CLEAR: w_goodsmvt_item,gs_tab_in.ENDLOOP.IF goodsmvt_item[] IS  NOT INITIAL.CALL FUNCTION 'BAPI_GOODSMVT_CREATE'EXPORTINGgoodsmvt_header  = goodsmvt_headergoodsmvt_code    = goodsmvt_code
*         TESTRUN          = ' '
*         GOODSMVT_REF_EWM =IMPORTING
*         goodsmvt_headret = goodsmvt_headermaterialdocument = materialdocumentmatdocumentyear  = matdocumentyearTABLESgoodsmvt_item    = goodsmvt_item[]
*         GOODSMVT_SERIALNUMBER         =return           = it_return[]
*         GOODSMVT_SERV_PART_DATA       =
*         EXTENSIONIN      =.READ TABLE it_return INTO wa_return WITH KEY type = 'E'.IF sy-subrc = 0.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.msg_type = 'E'.message = wa_return-message.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.msg_type = 'S'." message = '物料凭证:' && materialdocument && '已过账!'.LOOP AT it_tab_in[] INTO gs_tab_in.int_tab_out-mjahr = matdocumentyear. "凭证年份int_tab_out-mblnr = materialdocument."物料凭证int_tab_out-zeile = gs_tab_in-zeile."物料参考项目int_tab_out-budat_mkpf = gs_tab_in-budat_mkpf. "过账日期int_tab_out-matnr  = gs_tab_in-matnr. "物料号int_tab_out-werks     = gs_tab_in-werks. "工厂int_tab_out-lgort  = gs_tab_in-lgort.  "库位int_tab_out-kostl     = it_tab_in-kostl. "成本中心int_tab_out-menge = gs_tab_in-menge.  "数量int_tab_out-bwart = gs_tab_in-bwart. "移动类型(库存管理)APPEND int_tab_out.ENDLOOP.ENDIF.ENDIF.ELSEIF in_num = 0.LOOP AT it_tab_in[] INTO gs_tab_in  .goodsmvt_header-pstng_date = gs_tab_in-budat_mkpf. "过账日期goodsmvt_code-gm_code      = '03'.w_goodsmvt_item-material  = gs_tab_in-matnr. "物料号w_goodsmvt_item-plant     = gs_tab_in-werks. "工厂w_goodsmvt_item-stge_loc  = gs_tab_in-lgort.  "库位w_goodsmvt_item-costcenter     = it_tab_in-kostl. "成本中心w_goodsmvt_item-entry_qnt = gs_tab_in-menge.  "数量w_goodsmvt_item-move_type = gs_tab_in-bwart. "移动类型(库存管理)w_goodsmvt_item-ref_doc_it = '1'.  "物料参考项目APPEND w_goodsmvt_item TO goodsmvt_item_0.IF goodsmvt_item_0[] IS  NOT INITIAL.CALL FUNCTION 'BAPI_GOODSMVT_CREATE'EXPORTINGgoodsmvt_header  = goodsmvt_headergoodsmvt_code    = goodsmvt_code
*           TESTRUN          = ' '
*           GOODSMVT_REF_EWM =IMPORTING
*           goodsmvt_headret = goodsmvt_headermaterialdocument = materialdocumentmatdocumentyear  = matdocumentyearTABLESgoodsmvt_item    = goodsmvt_item_0[]
*           GOODSMVT_SERIALNUMBER         =return           = it_return[]
*           GOODSMVT_SERV_PART_DATA       =
*           EXTENSIONIN      =.ENDIF.READ TABLE it_return INTO wa_return WITH KEY type = 'E'.IF sy-subrc = 0.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.msg_type = 'E'.message = wa_return-message.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.msg_type = 'S'."  message = '物料凭证已过账!'.int_tab_out-mjahr = matdocumentyear. "凭证年份int_tab_out-mblnr = materialdocument."物料凭证int_tab_out-zeile = w_goodsmvt_item-ref_doc_it ."物料参考项目int_tab_out-budat_mkpf = gs_tab_in-budat_mkpf. "过账日期int_tab_out-matnr  = gs_tab_in-matnr. "物料号int_tab_out-werks     = gs_tab_in-werks. "工厂int_tab_out-lgort  = gs_tab_in-lgort.  "库位int_tab_out-kostl     = it_tab_in-kostl. "成本中心int_tab_out-menge = gs_tab_in-menge.  "数量int_tab_out-bwart = gs_tab_in-bwart. "移动类型(库存管理)APPEND int_tab_out.ENDIF.CLEAR:goodsmvt_item_0[] ,goodsmvt_header,goodsmvt_code.CLEAR: w_goodsmvt_item.ENDLOOP.ENDIF.
ENDFUNCTION.

5.总结

RFC接口首先要明确的是,接口参数以及业务逻辑.(我尼玛,说的都是废话);如果调用bapi就需要研究一下bapi中的参数.

相关文章:

MIGO 物料过账 创建物料凭证 BAPI_GOODSMVT_CREATE

文章目录1.前台操作2.需求分析2.1调用方式2.2分为两大概括:2.3业务逻辑细节图3.BAPI_GOODSMVT_CREATE4.RFC接口代码5.总结1.前台操作 SAP CO01(创建生产订单)/MIGO(发货投料)前台操作 这里面有migo的前台操作,首先了解前台操作后再去写RFC接口是比较容易理解的.!! 2.需求分析…...

项目经理处理团队冲突 5大注意事项

1、在时间、场景、体验矩阵中的5种处理方式 第一种方式:强迫命令,即职位高的一方在不考虑对方感受的情况下,强迫职位低的一方接受自己的意见。这种处理方式的适用场景为重要且紧急,这种方式团队成员的体验感低。 第二种方式&#…...

Linux(Centos)安装TDengine

目录1:简介2:前期准备3:安装4:启动5:开机自启动6:安装客户端驱动(如果别的服务器需要链接TD则需要此步操作)7:基础命令1:简介 官网: https://www.taosdata.com/简介&…...

大数据处理技术导论(6) | Datawhale组队学习46期

文章目录1. hive 概述2. hive 与传统关系型数据库的对比3. hive 数据类型4. hive 数据模型5. hive 实战5.1 创建表5.2 修改表5.3 清空表、删除表5.4 其他命令项目地址 https://github.com/datawhalechina/juicy-bigdata,感谢项目团队的付出。本次主要学习 hive 相关…...

Java——异常

目录 什么是异常 异常处理主要的5个关键字 异常的体系结构 异常语法 异常的分类 异常的处理流程 异常的处理 防御式编程 异常的抛出 throw的注意事项 异常的捕获 异常声明throws try-catch捕获处理 finally 自定义异常类 throw和throws区别 什么是异常 程序在运行时出现错…...

Netty之io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future初解

目录 目标 Netty版本 Netty官方API 三者之间的关系 基本使用方法 java.util.concurrent.Future io.netty.util.concurrent.Future io.netty.util.concurrent.Promise 目标 了解io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future的基本使用方法。了解…...

【正点原子FPGA连载】第二十一章AXI DMA环路测试 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十一章AXI D…...

手把手搭建springboot项目06-springboot整合RabbitMQ及其原理和应用场景

目录前言工作流程-灵魂画手名词解释交换机类型一、安装1.1 [RabbitMQ官网安装](https://www.rabbitmq.com/download.html)1.2 Docker安装并启动二、食用教程2.1.导入依赖2.2 添加配置2.3 代码实现2.3.1 直连(Direct)类型2.3.2 引入消息手动确认机制2.3.2…...

如何根据IP地址判断是IPv4还是IPv6

IPv4地址的书写形式为:“192.168.0.1” IPv6地址的书写形式为:“2001:DB8:85A3:8D3:1319:8A2E:370:7344” 给你一个IP地址,它有三种可能:IPv4、IPv6、既不是IPv4也不是IPv6的无效地址。所以,如果用函数ipGetAddressAsNumber,只能判断是不是ipv4,编写如下函数: int R…...

山地车和公路车怎么选

公路车: 只能适应平坦的路面,骑行阻力小,速度快比较适合新手 山地车: 能适应所有路面,更注重操控性和舒适性 怎么选? 1、先决定用途 旅游:旅行车、山地车、 通勤:公路车 2、预…...

Zotero设置毕业论文/中文期刊参考文献格式

大家在使用zotero时很容易遇到的问题: 英文参考文献中有多个作者时出现“等”,而不是用"et al"引文最后面有不需要的DOI号,或者论文链接对于一些期刊分类上会出现OL字样,即[J/OL]作者名为全大写 本文主要解决以上几个…...

【人工智能与深度学习】自动编码器的简介

【人工智能与深度学习】自动编码器的简介 自动编码器的应用图片生成像素空间和潜在空间插值的差异图像超级分辨率图像修补由文字说明转成图片什么是自动编码器?为什么我们用自动编码器?重建损失完成过度降噪自动编码器:Denoising autoencoder压缩式自动编码器定义自动编码器…...

Isaac-gym(9):项目更新、benchmarks框架梳理

一、项目更新 近期重新git clone isaac gym的强化部分(具体见系列第5篇)时发现官方的github库有跟新,git clone下来后发现多了若干个task,在环境配置上也有一定区别。 例如新旧两版工程项目的setup.py区别如下: git …...

Linux 学习笔记(一):终端 和 Shell 的区别和联系

一、Linux 介绍 1、什么是 Linux Linux 就是一个操作系统,全称 GNU/Linux,是一种类 Unix 操作系统Linux 一开始是没有图形界面的,所有操作都靠 命令 完成。如 磁盘操作、文件存取、目录操作、进程管理、文件权限 等等,可以说 Li…...

cycleGAN算法解读

本文参考:https://blog.csdn.net/Mr_health/article/details/112545671 1 CycleGAN概述 CycleGAN:循环生成对抗神经网络,是一种非监督学习模型。 Pix2pix方法适用于成对数据的风格迁移,而大多数情况下对于A风格的图像&#xf…...

解读“方差”

其实,从这个标题就可以看出来,方差,这个问题不简单, 先给出定义: 方差其实应该叫,差方差,(差方)差,差的平方的差,与差的平方之间的误差&#xff0…...

记录面试问题

以下问题不分先后,按照印象深浅排序,可能一次记录不完成,后面想起来会及时补充,如有不对,恳请各位围观大佬多多指教🙏 印象最深的是一道很简单很简单的题目,我结束面试之后赶紧代码敲敲发现答错…...

(六十四)设计索引的时候,我们一般要考虑哪些因素呢?(上)

本周我们将要讲解一下设计索引的时候,我们通常应该考虑哪些因素,给哪些字段建立索引,如何建立索引,建立好索引之后应该如何使用才是最合适的。 可能有的朋友会希望尽快更新后面的内容,但是因为工作的原因的确非常忙&a…...

【蓝桥杯嵌入式】LCD屏的原理图解析与代码实现(第十三届省赛为例)——STM32

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...

论文学习——Reproducing Activation Function for Deep Learning

论文学习——Reproducing Activation Function Abstract RAFs将集中基础激活函数进行线性组合,构建出神经元级的、数据驱动的激活函数。使用RAFs为激活函数的神经网络可以重现传统的近似工具,也能相对于传统网络以更少的参数量拟合目标函数。训练过程中,RAFs可以以更好的条…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...