SAP移库接口实现(C#版)

 SAP移库接口C#版本实现代码如下:

 /// <summary>
        /// 移库接口(将仓库中的地址移到线边仓,线边仓的地址用模板文件名称作为参数传过来)
        /// </summary>
        /// <param name="prd"></param>
        /// <param name="OrderNum"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static int StorageMoveToLineSilo(RfcDestination prd, List<MaterialDetail> mdList, out string errMsg)
        {
            errMsg = "";
            try
            {
                RfcRepository SapRfcRepository = prd.Repository;
                IRfcFunction function = SapRfcRepository.CreateFunction("BAPI_GOODSMVT_CREATE");
                IRfcStructure strCode = function.GetStructure("GOODSMVT_CODE");
                strCode.SetValue("GM_CODE", "04");
                IRfcStructure strHeader = function.GetStructure("GOODSMVT_HEADER");
                strHeader.SetValue("PSTNG_DATE", DateTime.Today.ToString("yyyy-MM-dd"));
                strHeader.SetValue("DOC_DATE", DateTime.Today.ToString("yyyy-MM-dd"));
                IRfcFunction functioncmt = SapRfcRepository.CreateFunction("BAPI_TRANSACTION_COMMIT");
                IRfcTable tTable = function.GetTable("GOODSMVT_ITEM");
                functioncmt.SetValue("WAIT", "X");
                RfcSessionManager.BeginContext(prd);
                for (int i = 0; i < mdList.Count; i++)
                {
                    tTable.Append();
                    tTable.CurrentRow.SetValue("MATERIAL", mdList[i].MATERIAL);//物料编号
                    tTable.CurrentRow.SetValue("PLANT", mdList[i].PLANT);//工厂
                    tTable.CurrentRow.SetValue("STGE_LOC", mdList[i].STGE_LOC);//仓库
                    tTable.CurrentRow.SetValue("MOVE_TYPE", "311");//同一工厂不同库存移库
                    tTable.CurrentRow.SetValue("ENTRY_QNT", mdList[i].ENTRY_QNT);
                    //tTable.CurrentRow.SetValue("ENTRY_UOM", mdList[i].ENTRY_UOM);
                    //tTable.CurrentRow.SetValue("QUANTITY", mdList[i].iquantity);//单位
                    tTable.CurrentRow.SetValue("MOVE_PLANT", mdList[i].PLANT);
                    tTable.CurrentRow.SetValue("MOVE_STLOC", mdList[i].para1);//移库到线边仓(仓库SAP地址)用模板文件名称作为参数传过来
                }
                function.Invoke(prd);
                functioncmt.Invoke(prd);
                RfcSessionManager.EndContext(prd);
                IRfcTable Return = function.GetTable("RETURN");
                if (Return.RowCount > 0)
                {
                    if (Return.GetString("TYPE").ToString().Trim() == "I")
                    {
                        errMsg = "凭证号:" + function.GetString("NUMBER").Trim();
                        prd = null;
                        return 0;
                    }
                    else if (Return.GetString("TYPE").ToString().Trim() == "E")
                    {
                        errMsg = Return.GetString("MESSAGE").ToString();
                        prd = null;
                        return -1;
                    }
                    else
                        return -1;
                }
                else
                {
                    IRfcStructure strReturn = function.GetStructure("GOODSMVT_HEADRET");
                    errMsg = strReturn.GetValue("MAT_DOC").ToString();
                    return 0;
                }
                return 0;
            }
            catch (System.Exception ex)
            {

                errMsg = ex.Message;
                return -1;
            }
        }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Favor_Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值