FUNCTION zrfc_mm003.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(CALLNO) TYPE ZCALLNO
*" VALUE(BUDAT) LIKE BAPI2017_GM_HEAD_01-PSTNG_DATE DEFAULT
*" SY-DATUM
*" VALUE(BLDAT) LIKE BAPI2017_GM_HEAD_01-DOC_DATE DEFAULT SY-DATUM
*" EXPORTING
*" VALUE(FLAG) LIKE BAPIRET2-TYPE
*" VALUE(MESSAGE) LIKE BAPIRET2-MESSAGE
*" TABLES
*" ZGOODSMVT STRUCTURE ZGOODSMVT
*" ZMSEG STRUCTURE ZMSEG
*"----------------------------------------------------------------------
DATA:ls_goodsmvt_header LIKE bapi2017_gm_head_01,
ls_goodsmvt_code LIKE bapi2017_gm_code VALUE '',
lt_goodsmvt_item LIKE TABLE OF bapi2017_gm_item_create,
ls_goodsmvt_item LIKE LINE OF lt_goodsmvt_item,
lt_zgoodsmvt LIKE TABLE OF zgoodsmvt,
ls_zgoodsmvt LIKE LINE OF lt_zgoodsmvt,
ls_mvt_ind LIKE bapi2017_gm_item_create-mvt_ind VALUE 'B', "采购订单收货
ls_ex_headret LIKE bapi2017_gm_head_ret,
lv_mat_doc LIKE bapi2017_gm_head_ret-mat_doc,
lv_doc_year LIKE bapi2017_gm_head_ret-doc_year,
lv_message LIKE bapiret2-message,
lv_bwart LIKE mseg-bwart VALUE ''.
DATA: entry_qnt(),
lv_datano TYPE zdatano,
lt_zmms003 TYPE TABLE OF zmms003,
ls_zmms003 TYPE zmms003. DATA: lt_zmmt002 TYPE TABLE OF zmmt002, "记录会计凭证
ls_zmmt002 TYPE zmmt002,
lv_awkey TYPE awkey,
lv_bukrs TYPE bkpf-bukrs, "公司代码
lv_belnr TYPE bkpf-belnr, "会计凭证号
lv_gjahrs TYPE bkpf-gjahr, "会计年度号
lv_blart TYPE bkpf-blart. "会计凭证类型 ls_goodsmvt_header-pstng_date = budat. "过账日期
ls_goodsmvt_header-doc_date = bldat. "凭证日期 lt_zgoodsmvt = zgoodsmvt[].
LOOP AT lt_zgoodsmvt INTO ls_zgoodsmvt.
ls_goodsmvt_item-move_type = lv_bwart . "移动类型
ls_goodsmvt_item-entry_qnt = ls_zgoodsmvt-entry_qnt. "收货数量
ls_goodsmvt_item-po_number = ls_zgoodsmvt-po_number. "采购订单编号
ls_goodsmvt_item-po_item = ls_zgoodsmvt-po_item. "采购订单项目
ls_goodsmvt_item-mvt_ind = ls_mvt_ind. "
ls_goodsmvt_item-item_text = ls_zgoodsmvt-sgtxt. "项目文本,这边传输的是预算号
APPEND ls_goodsmvt_item TO lt_goodsmvt_item. ls_zmms003-bstnr = ls_zgoodsmvt-po_number. "采购订单编号
ls_zmms003-ebelp = ls_zgoodsmvt-po_item. "采购订单项目
ls_zmms003-xref2 = ls_zgoodsmvt-xref2. "参考码2(预算号)
ls_zmms003-zuonr = ls_zgoodsmvt-zuonr. "分配(ECM单号+username)
APPEND ls_zmms003 TO lt_zmms003.
CLEAR: ls_goodsmvt_item,ls_zmms003.
ENDLOOP. *--内存传输参考码2 和ECM单号
EXPORT zrfc_mm003 = lt_zmms003 TO MEMORY ID 'ZRFC_MM003'. *收货过账
CLEAR:gt_return,ls_ex_headret,lv_mat_doc,lv_doc_year.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_goodsmvt_header
goodsmvt_code = ls_goodsmvt_code
IMPORTING
goodsmvt_headret = ls_ex_headret
materialdocument = lv_mat_doc
matdocumentyear = lv_doc_year
TABLES
goodsmvt_item = lt_goodsmvt_item
return = gt_return. READ TABLE gt_return INTO gs_return WITH KEY type = 'E'.
IF sy-subrc NE .
flag = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'. * mat_doc = lv_mat_doc. "物料凭证
* doc_year = lv_doc_year. "年度
CONCATENATE '生成凭证号:' lv_mat_doc '年度:' lv_doc_year INTO message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. LOOP AT gt_return INTO gs_return WHERE type CA 'AEX'.
MESSAGE ID gs_return-id
TYPE gs_return-type
NUMBER gs_return-number
WITH gs_return-message_v1 gs_return-message_v2
gs_return-message_v3 gs_return-message_v4
INTO lv_message.
CONCATENATE message lv_message INTO message SEPARATED BY '|'.
ENDLOOP.
SHIFT message LEFT DELETING LEADING '|'.
flag = 'E'.
ENDIF. *--产生的物料凭证项目信息
IF flag = 'S'.
SELECT mblnr mjahr zeile INTO TABLE zmseg[] FROM mseg
WHERE mblnr = lv_mat_doc
AND mjahr = lv_doc_year.
ENDIF. *---记录暂估会计凭证
CLEAR: lv_awkey,lv_bukrs,lv_belnr,lv_gjahrs,lv_blart.
CONCATENATE lv_mat_doc lv_doc_year INTO lv_awkey. IF lv_awkey IS NOT INITIAL.
SELECT SINGLE bukrs belnr gjahr blart INTO (lv_bukrs,lv_belnr,lv_gjahrs,lv_blart)
FROM bkpf WHERE awtyp = 'MKPF'
AND awkey = lv_awkey.
ENDIF. SELECT bukrs belnr gjahr buzei zuonr sgtxt xref1 xref2 xref3
INTO CORRESPONDING FIELDS OF TABLE lt_zmmt002
FROM bseg
WHERE bukrs = lv_bukrs
AND belnr = lv_belnr
AND gjahr = lv_gjahrs. ls_zmmt002-blart = lv_blart.
MODIFY lt_zmmt002 FROM ls_zmmt002 TRANSPORTING blart WHERE blart IS INITIAL . INSERT zmmt002 FROM TABLE lt_zmmt002.
IF sy-subrc = .
COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
ENDIF. *----记录日志
CLEAR:gt_log,gs_log,ls_zgoodsmvt,entry_qnt. LOOP AT lt_zgoodsmvt INTO ls_zgoodsmvt.
lv_datano = lv_datano + .
gs_log-datano = lv_datano.
gs_log-name = 'ZRFC_MM003'.
gs_log-cdate = sy-datum.
GET TIME.
gs_log-ctime = sy-uzeit.
gs_log-callno = callno.
gs_log-flag = flag.
gs_log-log = message.
entry_qnt = ls_zgoodsmvt-entry_qnt.
CONCATENATE budat bldat
entry_qnt ls_zgoodsmvt-po_number ls_zgoodsmvt-po_item
ls_zgoodsmvt-sgtxt
ls_zgoodsmvt-xref2
ls_zgoodsmvt-zuonr
INTO gs_log-content SEPARATED BY '|'. CLEAR ls_goodsmvt_item.
CONDENSE gs_log-content NO-GAPS.
gs_log-length = STRLEN( gs_log-content ).
APPEND gs_log TO gt_log.
CLEAR:gs_log,ls_zgoodsmvt,entry_qnt.
ENDLOOP. IF gt_log IS NOT INITIAL.
INSERT zrfc_mm01in_log FROM TABLE gt_log.
IF sy-subrc = .
COMMIT WORK.
ENDIF.
ENDIF. ENDFUNCTION.

收货MIGO的更多相关文章

  1. 【MM系列】SAP MM模块-MIGO收货后自动打印收货单

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-MIGO收货后自动 ...

  2. SAP MM 标准采购组织的分配对于寄售采购订单收货的影响

    SAP MM 标准采购组织的分配对于寄售采购订单收货的影响 PO 4100004022 是一个寄售的采购订单, 采购组织是CSAS, 工厂代码SZSP.采购信息记录也是有的, MIGO试图对该采购订单 ...

  3. 微信共享收货地址 edit_address:fail 吐白沫级解决方案

    又被微信坑了一整天,看完官方文档怎么测试都不通过,我一直怀疑是新版本微信支付我没有设置“共享收货地址”开关造成的. 后来经过验证,新版本不需要做这件事了. 那么,我没错,是微信的文档没及时更新... ...

  4. PDA移动POS终端系统,实现专柜或店铺的收货、零售、盘点通过无线网络直接连接总部中央数据库,实现高效安全的移动供应链管理

    利用PDA移动终端,实现专柜或店铺的收货.零售.盘点等一体化操作,通过无线网络直接连接总部中央数据库,实现高效安全的移动供应链管理. · PDA订货会应用解决方案利用PDA或电脑系统,在订货会现场直接 ...

  5. 微信支付开发(7) 收货地址共享接口V2

    关键字:微信公众平台 JSSDK 发送给朋友 收货地址共享接口 openAddress 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-open ...

  6. PP生产订单创建、下达、报工、收货、投料

    转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...

  7. ecshop订单-》待付款,待发货,待收货,收货确认

    // 订单 待付款.待发货.待收货.确认收货 public function get_serch_order($type/*,$limit_statrt,$limit_end,$serch*/){ $ ...

  8. ecshop 订单-》设置默认收货地址,或者删除

    设置位置:ecs_users标的   country字段,默认是0,默认地址是 users_address 的address_id 设置默认收货地址 /** * 设置默认地址 * * @access ...

  9. 【地图API】收货地址详解2

    上次讲解的方法是: 在地图中心点添加一个标注,每次拖动地图就获取地图中心点,再把标注的位置设置为地图中心点.可参考教程:http://www.cnblogs.com/milkmap/p/6126424 ...

随机推荐

  1. Hdu 1301 Jungle Roads (最小生成树)

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=1301 很明显,这是一道“赤裸裸”的最小生成树的问题: 我这里采用了Kruskal算法,当然用Prim算法也 ...

  2. Objective-C基础教程读书笔记(7)

    第7章 深入了解Xcode Xcode是一个很好用的工具,有很多强大的功能,不过并不是所有的功能都易于发现.如果你打算长期使用这个强大的工具,就肯定要尽可能多了解它.本章将介绍一些Xcode编辑器的使 ...

  3. 西门子PLC学习笔记二-(工作记录)

    今天师傅给讲了讲做自己主动化控制的总体的思路,特进行一下记录,做个备忘. 1.需求分析 本次的项目是对楼宇循环供水的控制,整个项目须要完毕压力.压差.温度等的获取及显示.同一时候完毕电机的控制. 2. ...

  4. 你喜欢SOAP吗?反正我不喜欢!

    叫什么Simple Object Access Protocol,实际上一点都不Simple! 说什么轻量级协议,从它基于XML的编码就知道它有多臃肿! 说什么跨平台特性,其实各个语言需要自己实现一整 ...

  5. 漂亮竖向菜单 有缓存 javascript

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Android中activity保存数据和状态在哪个方法实现

    以前只知道在Activity销毁之前,要把数据保存在 onSaveInstanceState(Bundle)方法中,后来学习了别人的微博,学到了很多细节问题,所以整理了一下,希望能帮到大家. 如果看官 ...

  7. Xcode6中怎么添加空工程模板

    亲们!是不是还在为Xcode中不能创建空工程模板苦恼,轩哥为大家准备了一个脚本,可以在Xcode6中直接创建空工程,跟以前一样一样的! 按照以下要求就可以了!下载地址:里面有一个文档有详细的步骤htt ...

  8. excel列显示形式互换(字母与数字)

    以office2007为例: excel选项>公式>使用公式下的'R1C1引用样式' 打上钩显示形式为数字,不打钩显示形式为字母

  9. Spring IOC三种注入方式(接口注入、setter注入、构造器注入)(摘抄)

    IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转, Spring 框架的核心基于控制反转原理. 什么是控制反转?控制反转是一种将组件依赖关系的创建和管理置于程序外部的技 ...

  10. JAVA学习中好网站 - -

    http://www.54bk.com 我是博客 http://www.java-cn.com java中文网 http://java.sun.com sun官方网站 http://www.comej ...