*&---------------------------------------------------------------------*
*& Report  YTST_RAINY015_03
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ytst_rainy015_03.

*----------------------------------------------------------------------
*                          TYPES
*----------------------------------------------------------------------
TYPES: BEGIN OF ty_output,
         lifnr TYPE ekko-lifnr,             "供應商
         ebeln TYPE ekpo-ebeln,             "採購文件號碼
         ebelp TYPE ekpo-ebelp,             "採購文件的項目號碼
         txz01 TYPE ekpo-txz01,             "短文
         matnr TYPE ekpo-matnr,             "物料號碼
         werks TYPE ekpo-werks,             "地點
         lgort TYPE ekpo-lgort,             "庫存地點
         menge TYPE ekpo-menge,             "採購單數量
         meins TYPE ekpo-meins,             "單位
         wenge TYPE ekpo-menge,             "未清數量
         benge TYPE ekpo-menge,             "本次收料數量
       txt(50) TYPE c,                      "備註
           sel TYPE c,                      "選擇標誌
       END OF ty_output.
TYPES: ty_tab_output TYPE ty_output OCCURS 0.

TYPES: BEGIN OF ty_error,
    pstng_date TYPE budat,
      doc_date TYPE bldat,
       gm_code TYPE gm_code,
         plant TYPE werks_d,
      stge_loc TYPE lgort_d,
     move_type TYPE bwart,
     entry_qnt TYPE erfmg,
     entry_uom TYPE erfme,
     po_number TYPE bstnr,
       po_item TYPE ebelp,
       mvt_ind TYPE kzbew,
  message(100) TYPE c,
       txt(50) TYPE c,
           row TYPE bapi_line,
       END OF ty_error.
TYPES: ty_tab_error TYPE ty_error OCCURS 0.

DATA:gt_error TYPE ty_tab_error,
     wa_error TYPE ty_error.

DATA:gt_output TYPE ty_tab_output,
     wa_output TYPE ty_output.

DATA:l_tabix       TYPE sy-tabix,
     l_row         TYPE bapi_line,
     wa_output_tmp TYPE ty_output.

DATA:l_flag_create_success TYPE c.

DATA:lw_bapi_goodsmvt_header TYPE bapi2017_gm_head_01,
     lw_bapi_goodsmvt_code   TYPE bapi2017_gm_code,

lw_bapi_goodsmvt_headret TYPE bapi2017_gm_head_ret,
     l_bapi_materialdocument  TYPE bapi2017_gm_head_ret-mat_doc,
     l_bapi_matdocumentyear   TYPE bapi2017_gm_head_ret-doc_year,

lt_bapi_goodsmvt_item    TYPE STANDARD TABLE OF bapi2017_gm_item_create,
     wa_bapi_goodsmvt_item    TYPE bapi2017_gm_item_create,

lt_bapi_return           TYPE STANDARD TABLE OF bapiret2,
     wa_bapi_return           TYPE bapiret2.

*&G0.整理取得数据
SORT gt_output BY ebeln ebelp.

LOOP AT gt_output INTO wa_output.

wa_output_tmp = wa_output.
  AT NEW ebeln.

CLEAR:lw_bapi_goodsmvt_header,  lw_bapi_goodsmvt_code,
          lw_bapi_goodsmvt_headret, l_bapi_materialdocument,
          l_bapi_matdocumentyear,   lt_bapi_goodsmvt_item,
          lt_bapi_return.

*&G1.bapi_goodsmvt_hear 赋值(at new)
    lw_bapi_goodsmvt_header-pstng_date = sy-datum.
    lw_bapi_goodsmvt_header-doc_date   = sy-datum.

lw_bapi_goodsmvt_code-gm_code      = '01'.

ENDAT.

CLEAR wa_bapi_goodsmvt_item.
*&G2.bapi_goodsmvt_item 赋值()
  wa_bapi_goodsmvt_item-plant     = wa_output_tmp-werks.
  wa_bapi_goodsmvt_item-stge_loc  = wa_output_tmp-lgort.
  wa_bapi_goodsmvt_item-move_type = '101'.
  wa_bapi_goodsmvt_item-entry_qnt = wa_output_tmp-benge.
  wa_bapi_goodsmvt_item-entry_uom = wa_output_tmp-meins.
  wa_bapi_goodsmvt_item-po_number = wa_output_tmp-ebeln.
  wa_bapi_goodsmvt_item-po_item   = wa_output_tmp-ebelp.
  wa_bapi_goodsmvt_item-mvt_ind   = 'B'.
  APPEND wa_bapi_goodsmvt_item TO lt_bapi_goodsmvt_item.

AT END OF ebeln.

*&G3flag打上
    l_flag_create_success = 'Y'.

*&G4 CALL BAPI
    CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
      EXPORTING
        goodsmvt_header  = lw_bapi_goodsmvt_header
        goodsmvt_code    = lw_bapi_goodsmvt_code
*       TESTRUN          = ' '
*       GOODSMVT_REF_EWM =
      IMPORTING
        goodsmvt_headret = lw_bapi_goodsmvt_headret
        materialdocument = l_bapi_materialdocument
        matdocumentyear  = l_bapi_matdocumentyear
      TABLES
        goodsmvt_item    = lt_bapi_goodsmvt_item
        return           = lt_bapi_return.

*       GOODSMVT_SERIALNUMBER   =
*       GOODSMVT_SERV_PART_DATA =
*       EXTENSIONIN             =
*       AFS_GOODSMVT_SKU        =

*&G5.如果失败,改flag 为‘N’.
    LOOP AT lt_bapi_return INTO wa_bapi_return WHERE type = 'A'
                                                  OR type = 'E'.
      l_flag_create_success = 'N'.
      EXIT.

ENDLOOP.

*&G6 BAPI后处理
    IF l_flag_create_success = 'Y'.
*&G6.1成功commit work,并形成日志
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

LOOP AT lt_bapi_goodsmvt_item INTO wa_bapi_goodsmvt_item.

wa_error-pstng_date = lw_bapi_goodsmvt_header-pstng_date.
        wa_error-doc_date   = lw_bapi_goodsmvt_header-doc_date.
        wa_error-gm_code    = lw_bapi_goodsmvt_code-gm_code.

MOVE-CORRESPONDING wa_bapi_goodsmvt_item TO wa_error.
        CONCATENATE '生成物料凭证编号为:' l_bapi_materialdocument INTO wa_error-message.
        MOVE '更新成功!' TO wa_error-txt.
        APPEND wa_error TO gt_error.
        CLEAR wa_error.

ENDLOOP.

ELSE.
*&6.2 失败rollback,并形成日志GT_ERROR
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      CLEAR l_row.

LOOP AT lt_bapi_goodsmvt_item INTO wa_bapi_goodsmvt_item.

l_row = l_row + 1.
        wa_error-pstng_date = lw_bapi_goodsmvt_header-pstng_date.
        wa_error-doc_date   = lw_bapi_goodsmvt_header-doc_date.
        wa_error-gm_code    = lw_bapi_goodsmvt_code-gm_code.

MOVE-CORRESPONDING wa_bapi_goodsmvt_item TO wa_error.
        MOVE '更新失败!' TO wa_error-txt.
        wa_error-row = l_row.

READ TABLE lt_bapi_return INTO wa_bapi_return WITH KEY row = wa_error-row.
        IF sy-subrc = 0.
          wa_error-message = wa_bapi_return-message.
        ENDIF.
        APPEND wa_error TO gt_error.
        CLEAR wa_error.

ENDLOOP.

ENDIF.

IF l_flag_create_success = 'Y'.
*   IMPORTING
*     RETURN        =
    ELSE.
*   IMPORTING
*     RETURN        =

ENDIF.

ENDAT.

ENDLOOP.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'-(物料凭证创建)的更多相关文章

  1. BAPI_GOODSMVT_CREATE物料凭证增强字段

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

  2. 查看物料凭证MB03 /MIGO A04-显示,R02-物料凭证

    当货物移动操作后,可以使用事物码MB03.MIGO查询最近一次生成的物料凭证, 如果未知凭证号,Table:MKPF / AUFM/EKBE MKPF 抬头:物料凭证 KEY: MBLNR 物料凭证编 ...

  3. SAP MM 启用批次管理的物料MB21创建预留单据时批次号可以为空!

    SAP MM 启用批次管理的物料MB21创建预留单据时批次号可以为空! 如下预留, 批次号字段为空. 实际上该物料是有激活batch management的, For MB21, it is just ...

  4. 【MM系列】SAP 物料凭证增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法   前言部 ...

  5. 【ABAP系列】SAP ABAP 物料凭证增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 物料凭证增强 ...

  6. Object和Function谁先被创建

    http://bbs.csdn.net/topics/390772104#post-397284029

  7. SAP 订单状态跟踪

    *&--------------------------------------------------------------------- *& Program name:  *& ...

  8. SAP_FICO常用事务代码

    1.会计科目维护: FS00:总账科目主记录维护 FSP0:科目表中总账科目主记录维护 FSS0:公司代码中总账科目主记录维护 2.会计凭证创建 FB01:创建凭证 F-02:总账凭证创建(在FB01 ...

  9. 从new Function创建函数联想到MVC模式

    我们知道任何一个自定义函数都是Function构造器的实例,所以我们可以通过new Function的方式来创建函数,使用语法很简单, new Function(形参1, 形参2, ..., 形参N, ...

随机推荐

  1. mongodb培训

    写在前面 公司组织的技术培训,虽然刚接触mongodb没多久,算是入门吧,就组织一次mongodb的入门ppt培训.包括nosql的简单介绍,以及mongodb的一些优缺点,最后包括mongodb的一 ...

  2. Oracle rac配置Weblogic数据源(实例名及URL的选择)

    这几天,应用程序后台一直报无法取得连数据库接池.但之前从来没有这个问题,迁移到Weblogic后才发生. 之后据了解,我们服务器上的Oracle 10G 是 RAC 的,即有两个节点. 两个节点 IP ...

  3. CSS属性clip

    http://blog.sina.com.cn/s/blog_68a1582d0100kp59.html CSS属性中有个裁剪属性clip,其实我对这个属性一点都不感冒,因为我感觉它好像没啥用处,但是 ...

  4. (译)关于使用Eclipse Memory Analyzer的10点小技巧

    作者 Rave_Tian 2016.02.01 17:56* 字数 2988 阅读 520评论 0喜欢 0 分析和理解应用的内存使用情况是开发过程中一项不小的挑战.一个微小的逻辑错误可能会导致监听器没 ...

  5. 深入解析hostname

    结论:/etc/sysconfig/network 确实是hostname的配置文件,hostname的值跟该配置文件中的HOSTNAME有一定的关联关系,但是没有必然关系,hostname的值来自内 ...

  6. 11.【nuxt起步】-登录验证

    1.新建/pages/login.vue 2.安装cookie Cnpm install js-cookie --s 3.Login.vue增加 import Cookie from 'js-cook ...

  7. Linux内核中等待队列的几种用法

    Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助. 1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait ...

  8. sublime text常用快捷键(转)

    选择一个选中项的下一个匹配项: ctrl+d 把光标放在一个单词上,按下ctrl+ D,将选择这个单词.一直按住ctrl且按D多次,将选择当前选中项的下一个匹配项.通过按住ctrl,再按D三次,将选择 ...

  9. Flume NetCat Demo

    准备工作: 1.apache官网下载flume 2.解压flume 3.修改flume-env.sh,配置JAVA_HOME NetCat采集Demo: 1.在conf中创建netcat-logger ...

  10. *** Python版一键安装脚本

    本脚本适用环境:系统支持:CentOS 6,7,Debian,Ubuntu内存要求:≥128M日期:2018 年 02 月 07 日 关于本脚本:一键安装 Python 版 *** 的最新版.友情提示 ...