DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.      "物料凭证编号



  DATA: GMHEAD LIKE BAPI2017_GM_HEAD_01.



  DATA: BEGIN OF GMCODE.

          INCLUDE STRUCTURE BAPI2017_GM_CODE.

  DATA: END OF GMCODE.



  GMCODE-GM_CODE = '03'.

***********gmcode-gm_code取值含义*******
********01     MB01
********02     MB31
********03     MB1A
********04     MB1B
********05     MB1C
********06     MB11
********07     MB04



  DATA: BEGIN OF MTHEAD.

          INCLUDE STRUCTURE BAPI2017_GM_HEAD_RET.

  DATA: END OF MTHEAD.



  DATA: BEGIN OF ITAB OCCURS 100.

          INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.

  DATA: END OF ITAB.



  DATA: BEGIN OF ERRMSG OCCURS 10.

          INCLUDE STRUCTURE BAPIRET2.

  DATA: END OF ERRMSG.



  "CLEAR: MAT_DOC, GMHEAD, GMCODE, MTHEAD, ITAB[], ERRMSG[].



  GMHEAD-PSTNG_DATE = SY-DATUM.                 "凭证中的过帐日期

  GMHEAD-DOC_DATE = SY-DATUM.                   "凭证中的凭证日期

  GMHEAD-PR_UNAME = SY-UNAME.



  LOOP AT SHOW_TAB WHERE SEL_COL = 'X'.



    ITAB-MATERIAL = SHOW_TAB-MATNR.          "物料号

    ITAB-PLANT = SHOW_TAB-WERKS.             "工厂

    ITAB-STGE_LOC = SHOW_TAB-ZLGORTO.        "库存地点

    ITAB-COSTCENTER = SHOW_TAB-KOSTL.       "成本中心      比311多了个成本中心

    ITAB-BATCH = SHOW_TAB-CHARG.             "批次

    ITAB-ENTRY_QNT = SHOW_TAB-MENGE.         "实领数量

    ITAB-ENTRY_UOM = SHOW_TAB-MEINS.         "单位

    ITAB-MOVE_TYPE = SHOW_TAB-ZLLTYPE.        "移动类型

*  ITAB-mvt_ind = 'O'.

    ITAB-MOVE_MAT = SHOW_TAB-MATNR.            "收货/发货物料号

    ITAB-MOVE_PLANT = SHOW_TAB-WERKS.          "收货/发货工厂

    ITAB-MOVE_STLOC = SHOW_TAB-ZLGORTI.        "收货/发货物料仓库

*  ITAB-no_more_gr = 'X'.        "交货完成标识

    APPEND ITAB.

  ENDLOOP.





  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

    EXPORTING

      GOODSMVT_HEADER  = GMHEAD

      GOODSMVT_CODE    = GMCODE

*     TESTRUN          = ' '

*     GOODSMVT_REF_EWM =

    IMPORTING

      GOODSMVT_HEADRET = MTHEAD

      MATERIALDOCUMENT = MAT_DOC

*     MATDOCUMENTYEAR  =

    TABLES

      GOODSMVT_ITEM    = ITAB

*     GOODSMVT_SERIALNUMBER         =

      RETURN           = ERRMSG

*     GOODSMVT_SERV_PART_DATA       =

*     EXTENSIONIN      =

    .





  READ TABLE ERRMSG WITH KEY TYPE = 'E'.

  IF  SY-SUBRC = 0.

    MESSAGE ERRMSG-MESSAGE TYPE 'S' DISPLAY LIKE 'E'.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .

    "SHOW_TAB-POST = ''.

  ELSE.

    "必须成功执行 BAPI_GOODSMVT_CREATE    不然会在MIGO查不到  生成的凭证号  MAT_DOC

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

      EXPORTING

        WAIT = 'X'.

    DATA: L_MESS(100).

    CONCATENATE '过账成功,凭证号:' MAT_DOC INTO L_MESS.

    MESSAGE L_MESS TYPE 'S' .

    "SHOW_TAB-POST = 'X'.

  ENDIF.

BAPI_GOODSMVT_CREATE 移动类型201 CODE = '03' 代码的更多相关文章

  1. BAPI_GOODSMVT_CREATE 移动类型311 CODE = '04' 代码

    DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.      "物料凭证编号   DATA: GMHEAD LIKE BAPI2017_GM_H ...

  2. 自动生成Code First代码

    自动生成Code First代码 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Fram ...

  3. VS code调试代码快速上手必备知识

    一.通过简单的配置运行一个JavaScript程序 1.打开(创建)一个新的工作空间(文件夹),并创建一个js文件: var name='world'; var s='Hello,${name}!'; ...

  4. Code Snippets 代码片段

    Code Snippets 代码片段       1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...

  5. Effective Java提升Code Coverage代码涵盖率 - 就是爱Java

    虽然我们已经有了测试程序,但是如何得知是否已完整测试了主程序?,透过Code Coverage代码涵盖率,我们可以快速地得知,目前系统中,有多少程序中被测试过,不考虑成本跟投资效益比,涵盖率越高,代表 ...

  6. 第五次作业2、请将该code进行代码重构,使之模块化,并易于阅读和维护;

    1.请运行下面code,指出其功能: (需附运行结果截图,并用简短文字描述其功能) 显示了人的姓名.年龄 2.请将该code进行代码重构,使之模块化,并易于阅读和维护: 3.观看视频The Exper ...

  7. Code::Blocks代码自动提示设置及常用快捷键

    Code::Blocks代码自动提示设置及常用快捷键(适用windows和linux) 1)以下需要设置的地方均在Settings->Editor...弹出的对话框中. 2)不少命令都可针对当前 ...

  8. VS Code 用户自定义代码片段(React)

    VS Code 用户自定义代码片段(React) .jsxReact组件模板:javascriptreact.json { "Import React": { "pref ...

  9. dead code 死代码 无作用的代码

               DatasetVector datasetvector=(DatasetVector)dataset;           if (datasetvector == null) ...

随机推荐

  1. asp.net mvc Route 使用自定义条件(constraints)禁止某ip登陆

    asp.net mvc Route 使用自定义条件(constraints)禁止某ip登陆 前言 本文的目的是利用Mvc route创建一个自定义约束来控制路由跳转实现禁止ip登陆,当然例子可能不合理 ...

  2. Mongodb 集群搭建以及常见错误

    Mongodb 集群搭建以及常见错误 1 关于Replica Sets +Sharding(主从复制加分片)搭建,不这详细去说,网上有很多,大部分的例子就三台服务器之间做主从复制,分2个shard,架 ...

  3. 当Erlang遇到Solr

    当Erlang遇到Solr   Joe Armstrong的访谈中有一段关于"打开黑盒子"的阐述,给我留下很深的印象:Joe Armstrong在做XWindows开发时没有使用对 ...

  4. 搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境

    搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境 最近有很多人不知道如何搭建基于SSI(struts2,spring,ibatis)的J2EE开发环境,这里给大家一个 ...

  5. CENTOS下Python 升级后YUM无法使用的解决办法

    Python有很多实用的工具,安装依赖python版本较高,升级Python后导致yum无法使用. 原因: 系统自带的yum依赖Python老版本,升级后不兼容 解决办法: 1. 列出所有版本,确定老 ...

  6. iOS学习笔记(十六)——数据库操作(使用FMDB)

    iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...

  7. hdu 1253 胜利大逃亡(BFS)

    题目链接:点击链接 三维的BFS,刚开始一直超内存,超无语......  改了n多次终于AC了 #include <iostream> #include <stdio.h> # ...

  8. JBPM之JPdl小叙

    JPdl:jbpm流程定义文件,下面是一个简单的流程定义文件: <?xml version="1.0" encoding="UTF-8"?> < ...

  9. 创建基本的2D场景(part2)

    让我们继续来学习Unity2D游戏场景的制作,本文分为以下3个部分: · 添加角色和控制 . 添加2D物理阻挡 · 添加2D效果 通过制作一个移动帽子接保龄球的小游戏,我们可以学习到任何创建游戏对象, ...

  10. azkaben任务调度器

    azkaban学习笔记总结 01.工作流调度器azkaban 1. 任务调度概述 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive ...