BOTP 自定义公式
运用 BOTP 公式平台进行单据转换规则配置,当遇到系统提供的公式不能够满足当前
业务配置需求时,用户可以自定义公式。本文档以一个案例来介绍如何在 BTOP 中自定义公
式,并应用自定义的公式进行规则配置。
案 例 说 明 : 计 划 订 单 投 放 生 成 离 散 生 产 订 单 , 该 过 程 运 用 的 单 据 转 换 规 则 是
“MM_PLAN005 计划订单-离散生产订单”。该规则中,没有为生产订单的“成本对象”赋
值,所以生成的生产订单“成本对象”内容为空。
现需要为生产订单的“成本对象”赋值,要求:成本对象取值是计划订单的物料关联的
成本对象。查看公式平台中系统提供的公式发现,公式不能满足需求,所以手工添加一个公
式。
操作步骤:
一、 打开规则编辑界面
使用具有“规则配置”权限的用户登录 EAS 系统,切换组织,切换到能够修改 BTOP
规则配置的组织下,打开“规则配置”,找到该规则。
打开规则编辑界面,如下图
二、 打开“BOTP 自定义公式”界面
在“单据转换规则”界面,按 F9,输入管理员密码,
验证成功后,系统自动打开“BOTP 自定义公式”编辑界面,如下图
三、 新增自定义公式
按下图,填写内容后保存。
公式名
__DYNBOTGetaCostObjByMaterialAndOrg,其中__DYNBOT 是系统自
动添加的前缀。
公式介绍 根据物料编码和组织 ID 获取成本对象;__DYNBOT
GetaCostObjByMaterialAndOrg(String materialNum, String
OrgUnitId),返回值为成本对象;
是否全局共享 勾选表示在所有的单据转换规则配置该公式均可用,否则只有在当前单据
是否启用
转换规则配置界面可用。
勾选表示启用。
脚本内容
公式参数
java.lang.StringBuffer sql = new java.lang.StringBuffer();
sql.append( " select t.fid from t_bd_costobject t where
t.fnumber='");
sql.append(materialNum);
sql.append( "'");
sql.append(" and t.fcontrolunitid='");
sql.append(orgId);
sql.append( "'");
java.sql.Connection con =
com.kingdee.bos.framework.ejb.EJBFactory.getConnection(_
_bosContext);
java.sql.Statement batchStatement =
con.createStatement( );
java.sql.ResultSet rst =
batchStatement.executeQuery(sql.toString( ));
String text = "";
if (rst.next( )) { text =
rst.getString("fid").toString();
} com.kingdee.util.db.SQLUtils.cleanup(batchStatement ,
con );
com.kingdee.util.db.SQLUtils.cleanup( con );
return text;
1、 materialNum(物料编码)物料编码
2、 orgId(管理单元 ID)
四、 应用自定义公式
打开单据转换规则配置界面,找到生产订单中的“成本对象”,单击后方编
辑按钮
系统打开“成本对象取值”,单击“脚本编辑”按钮,
系统打开“公式平台”编辑界面,公式内容如下
公式结果 = __BOTgetObjectFromCostObject(__DYNBOTGetaCostObjByMaterialAndOrg(计
划订单.物料.编码, 计划订单.控制单元.ID));