冲销收货

FUNCTION zrfc_mm004.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CALLNO) TYPE  ZCALLNO
*"     VALUE(MAT_DOC) TYPE  BAPI2017_GM_HEAD_02-MAT_DOC
*"     VALUE(DOC_YEAR) TYPE  BAPI2017_GM_HEAD_02-DOC_YEAR
*"     VALUE(PSTNG_DATE) TYPE  BAPI2017_GM_HEAD_02-PSTNG_DATE DEFAULT
*"       SY-DATUM
*"     VALUE(PR_UNAME) TYPE  BAPI2017_GM_HEAD_01-PR_UNAME OPTIONAL
*"  EXPORTING
*"     VALUE(MBLNR) LIKE  BAPI2017_GM_HEAD_RET-MAT_DOC
*"     VALUE(MJAHR) LIKE  BAPI2017_GM_HEAD_RET-DOC_YEAR
*"     VALUE(FLAG) LIKE  BAPIRET2-TYPE
*"     VALUE(MESSAGE) LIKE  BAPIRET2-MESSAGE
*"----------------------------------------------------------------------
DATA:ls_goodsmvt_headret LIKE bapi2017_gm_head_ret,
     lv_message          LIKE bapiret2-message.
DATA lv_datano           TYPE zdatano.
CLEAR:gt_return,gs_return,mblnr,mjahr,flag,ls_goodsmvt_headret,message.

CALL FUNCTION ‘BAPI_GOODSMVT_CANCEL‘
  EXPORTING
    materialdocument          = mat_doc
    matdocumentyear           = doc_year
   goodsmvt_pstng_date        = pstng_date
   goodsmvt_pr_uname          = pr_uname
 IMPORTING
   goodsmvt_headret           = ls_goodsmvt_headret
  TABLES
    return                    = gt_return.

  READ TABLE gt_return INTO gs_return WITH KEY type = ‘E‘.
  IF sy-subrc NE 0.
    flag = ‘S‘.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘
      EXPORTING
        wait = ‘X‘.

    mblnr  = ls_goodsmvt_headret-mat_doc.                                              "物料凭证
    mjahr  = ls_goodsmvt_headret-doc_year.                                             "年度
    CONCATENATE ‘生成凭证号:‘  mblnr ‘年度:‘ mjahr 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.

*记录日志
  CLEAR:gt_log,gs_log.
   gs_log-name   = ‘ZRFC_MM004‘.
   gs_log-cdate  = sy-datum.
   lv_datano     = lv_datano + 1.
   gs_log-datano = lv_datano.
   GET TIME.
   gs_log-ctime  = sy-uzeit.
   gs_log-callno = callno.
   gs_log-flag   = flag.
   gs_log-log    = message.
   CONCATENATE mat_doc doc_year pstng_date pr_uname
   mblnr mjahr
   INTO gs_log-content SEPARATED BY ‘|‘.

   CONDENSE gs_log-content NO-GAPS.
   gs_log-length = STRLEN( gs_log-content ).
   APPEND gs_log TO gt_log.

 IF gt_log IS NOT INITIAL.
   INSERT zrfc_mm01in_log FROM TABLE gt_log.
   IF sy-subrc = 0.
     COMMIT WORK.
   ENDIF.
 ENDIF.

ENDFUNCTION.
时间: 2024-10-22 15:33:55

冲销收货的相关文章

【小程序】获取微信 自带的 收货地址获取和整理

1.wx.chooseAddress(OBJECT) if(wx.chooseAddress){ wx.chooseAddress({ success: function (res) { console.log(JSON.stringify(res)) }, fail: function(err){ console.log(JSON.stringify(err)) } }) }else{ console.log('当前微信版本不支持chooseAddress'); } 2.数据处理,仅供参考 /

PHP电商订单自动确认收货redis队列

一.场景 之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货.所谓的订单自动确认收货,就是在在特定的时间,执行一条update语句,改变订单的状态. 二.思路 最笨重的做法,通过linux后台定时任务,查询符合条件的订单,然后update.最理想情况下,如果每分钟都有需要update的订单,这种方式也还行.奈何平台太小,以及卖家发货时间大部分也是密集的,不会分散在24小时的每分钟.那么,

ECSHOP自动收货解决方案 【附代码】

ecshop系统,本身不带自动确认收货的,网上也找了一下,很多很复杂,且需要在服务器端设置定时任务,如果是虚拟主机,基本上就歇菜了. 某宝有一些卖自动收货的插件,不太了解其机制,不过也比较贵,要1-200一个.没办法,就自己开发吧.以下为解决方案. 解决思路: 跟淘宝的类似,默认设置7天后还没有自动确认收货,那么就会系统强制确认收货.只不过这个强制确认收货,没有在系统里设置常驻内存的程序,也没有设置系统自动任务,为变通的方案.设定为用户在登录成功后,进入用户中心页面,就会扫描自己名下,有没有超过

wex5实战之管理收货地址(一)

今天要与大家分享的是实战项目之管理收货地址,现在各种电商app管理收货地址样式越来越多,效果也越来越好.本次项目步骤有这么几个: 1.list迭代json数据,初始化默认收货地址. 2.list数据增.删.改.查. 首先展示效果图,如下: 图一为管理地址页 图二为新增收货地址页 图三为选择城市地区 下面进行详细代码讲解: 1.初始化list数据 Model.prototype.addressDataCustomRefresh = function(event){ var addressData

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

wex5实战之管理收货地址(二)

接着上一张管理收货地址,这章主要讲解新增,编辑,选择省市区功能,主要有windowReceiver.windowDialog.tree组件的使用. 1.新增.编辑地址,页面. 在页面中放入windowReceiver.windowDialog组件 windowReceiver:用于接收地址参数,判断是否为新增或编辑. windowDialog:用于打开选择省市区弹窗,返回选择数据. Model.prototype.windowReceiver1Receive = function(event){

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

又被微信坑了一整天,看完官方文档怎么测试都不通过,我一直怀疑是新版本微信支付我没有设置“共享收货地址”开关造成的. 后来经过验证,新版本不需要做这件事了. 那么,我没错,是微信的文档没及时更新... 查了几个技术博客得知,这个接口在2016年的年中已经升级了,旧版的那个接口不能使了. 于是那个什么Addrsign就去见鬼了. 真的无力吐槽微信团队的文档水平和工作态度,这一家独大的优越感.. 好了好了,说正事儿: 首先,你得开通微信支付,其次,要在微信公众后台配置个安全域名的URL,设置下微信支付

ios仿收货地址管理

最近公司项目增加了一个需求,然后要有收货地址的管理,有单选框的设置,我昨晚也是写了很晚才写出来的,然偶今天就分享一下吧,同时也是我自己积累的过程,当然了,我今天给的是一个demo的例子,我不可能把自己的项目搬进来.下面就不说废话了,直接上代码. 我现在写的是一个简单的demo,至于后面可能会加上难的吧,然后我也会更新的. #import "ViewController.h" #define rowCount        5 @interface ViewController ()&l

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

在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现获取收货地址的功能. 收货地址共享接口 在2016年4月13日 进行过升级,2016年5月20日之后只能使用新接口,本教程为新版接口的教程! 本文分为以下二个部分: 生成JS-SDK权限验证签名 实现获取共享收货地址 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,详情见 微信公众平台开发(26) ACCESS TOKEN 2. 获取jsapi_ticket 生成签名之前必须先了解一