物料供需明细表添加自定义字段“生产订单号”
问题描述:
物料供需明细表是基于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);
}
}
}
物料供需明细表添加自定义字段“生产订单号”
本文2024-09-23 03:16:01发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-157762.html