物料供需明细表添加自定义字段“生产订单号”

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

物料供需明细表添加自定义字段“生产订单号”

问题描述:

物料供需明细表是基于MRP运算数据得出,想在单据标识或生产用料清单的记录上显示上级单号(即生产订单号)

解决方案:

物料供需明细表属于简单账表,要添加自定义字段,并且该字段数据来源有一定业务逻辑,就需要对该报表进行二开,本例实现了物料供需明细表的用料清单行显示生产订单号,步骤如下:


一、给物料供需明细表过滤界面显示隐藏列添加字段,如下图:


二、给物料供需明细表表体添加字段,如下图:


三、写自定义服务器插件,继承标准的物料供需明细表服务器插件,并取消标准插件,如下图:


四、自定义服务器插件示例代码,仅示例使用:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel;

using Kingdee.BOS.Util;

using Kingdee.BOS.App.Core;

using Kingdee.K3.MFG.PLN.App.ReportPlugIn.SupplyDemand;

using Kingdee.K3.MFG.App;

using Kingdee.K3.Core.MFG.EntityHelper;


namespace ABC.K3.MFG.PLN.App.ReportPlugIn

{

    /// <summary>    

    /// 物料供需明细表二开服务插件_计划管理

    /// </summary>    

    [Description("物料供需明细二开服务插件"), HotUpdate]

    public class ABC_CUST_WLGXMXB : MtrlSupplyDemandDetailRpt

    {

        /// <summary>    

        /// 该事件是本报表服务器插件的核心事件,最终发送给报表平台的临时表即是该事件的第二个参数:tableName

        /// </summary>

        public override void BuilderReportSqlAndTempTable(Kingdee.BOS.Core.Report.IRptParams filter, string tableName)

        {

            //先申请一个过渡表名,用于临时替代标准插件生成的临时表

            string tmpTblName = AppServiceContext.DBService.CreateTemporaryTableName(this.Context);


            //将过渡表名传入基类事件去生成过渡临时表

            base.BuilderReportSqlAndTempTable(filter, tmpTblName);


            //F_ABC_MOBILLNO为要增加的字段,取值如以下SQL完成,SQL逻辑取决于实际业务场景

            //string computeId = filter.FilterParameter.CustomFilter.GetDynamicValue<string>("ComputeId"); //这是取得本报表过滤界面的运算标识,在本插件中未用到只是写出来展示如何取运算标识

            string sql = string.Format(@"/*dialect*/ 

SELECT T1.*, 

ISNULL(T2.FMOBILLNO, ' ') AS F_ABC_MOBILLNO 

INTO {0} 

FROM {1} T1 

LEFT JOIN T_PRD_PPBOM T2 ON T2.FID=T1.DSBILLID AND T1.DSFORMID='PRD_PPBOM'  


", tableName, tmpTblName);

            //执行select ... into tableName from tmpTblName join ...形式的SQL用于将过渡表的数据生成报表平台所需的临时表tableName

            AppServiceContext.DBService.Execute(this.Context, sql);


            //清空过渡表,先清空以便后续DROP删除时性能加快

            sql = string.Format(@"/*dialect*/ TRUNCATE TABLE {0} ", tmpTblName);

            AppServiceContext.DBService.Execute(this.Context, sql);


            //删除过渡表,因本事件主要作用就是替换标准插件生成临时表tableName,因此过渡表最后已无用处,须及时删除释放资源

            sql = string.Format(@"/*dialect*/ DROP TABLE {0} ", tmpTblName);

            AppServiceContext.DBService.Execute(this.Context, sql);

        }

    }

}



物料供需明细表添加自定义字段“生产订单号”

问题描述:物料供需明细表是基于MRP运算数据得出,想在单据标识或生产用料清单的记录上显示上级单号(即生产订单号)解决方案:物料供需明...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息