public Object doCmd(DefaultContext context, ArrayList<Object> paras) throws Throwable { String IDs = TypeConvertor.toString(paras.get(0)); // 指定的訂單ID,用逗號分割 Boolean merge = TypeConvertor.toBoolean(paras.get(1)); //是否跨物料合併 IMetaFactory metaFactory = context.getVE().getMetaFactory(); MetaDataObject mo = metaFactory.getDataObject("LRP_WMTx"); // 首先讀取出庫訂單並將單據直接下推 DefaultContext ncontext = new DefaultContext(context); LoadData l = new LoadData("LRP_OutboundNotice", OID); Document srcdoc = l.load(ncontext, null); MidDataMapUtil Util = new MidDataMapUtil(); Document tgtDoc = Util.mapWithoutSave(ncontext, "OutboundNotice-Tx201", srcdoc, ""); DataTable dtHead = tgtDoc.get("LRP_WMTx_H"); DataTable dtDetail = tgtDoc.get("LRP_WMTx_L"); // 將生成的單據保存 ncontext = new DefaultContext(context); SaveData save = new SaveData(mo, null, tgtDoc); save.save(ncontext); return result; }
二開下推的解題思路:
根據參數拿出當前環境下的OID
另置環境DefaultContext nctx=new DefaultContext(context);
根據LoadData l=new LoadData("數據對象標識Key",OID);
獲取上游單據數據Document srcdoc=l.load(nctx,null);
獲取下推工具類MidDataMapUtil Util=new MidDataMapUtil();
下推操做Document tgtdoc=Util.mapwithoutSave(nctx,'數據映射',srcdoc,'');
保存 MetaDataObject mo=ctx.getVE().getMetaFactory()..getDataObject("LRP_WMTx");
nctx=new DefaultContext(ctx);
SaveData save=new SavaData(mo,null,tgtdoc);
save.save(nctx);java