根据物料自定义文本字段更新单据明细中的文本字段原创
金蝶云社区-王富贵
王富贵
10人赞赏了该文章 133次浏览 未经作者许可,禁止转载编辑于2024年07月12日 13:44:55




销售订单明细、发货通知单明细、销售出库单明细、以及应收单明细,需要根据物料中的自定义文本字段,更新单据明细中的自定义文本字段,

参考SQL如下:

其中,

F_ORA_TEXT_MA 指物料中的文本字段,F_ORA_TEXT_ENTRY 指单据中的文本字段,写SQL时,需要根据实际情况替换,更新时执行update语句即可


注意:

1.语句适用于SQLServer数据库

2.如果多次执行,请注意修改备份表后缀

3.默认情况下,单据体拖自定义字段默认存在明细表中(不带_F、_R等后缀),物料中的字段托在物料表中(T_BD_MATERIAL,非T_BD_MATERIALBASE、T_BD_MATERIALSTOCK等),如果拖入在其他位置,需要按实际情况修改表名

4.SQL语句仅供参考,务必按照实际情况进行检查,更新前建议做好测试和全表备份

5.字段长度需要留意下,单据中的文本字段长度,务必要大于等于物料中文本字段长度


--备份语句
SELECT * INTO T_SAL_ORDERENTRY_SQLBAK20240711 FROM T_SAL_ORDERENTRY;
SELECT * INTO T_SAL_DELIVERYNOTICEENTRY_SQLBAK20240711 FROM T_SAL_DELIVERYNOTICEENTRY;
SELECT * INTO T_SAL_OUTSTOCKENTRY_SQLBAK20240711 FROM T_SAL_OUTSTOCKENTRY;
SELECT * INTO T_AR_RECEIVABLEENTRY_SQLBAK20240711 FROM T_AR_RECEIVABLEENTRY;

--销售订单
SELECT SO.FBILLNO 单据编号,SOE.FSEQ 单据行号,SOE.F_ORA_TEXT_ENTRY 单据明细中文本字段,TB.F_ORA_TEXT_MA 物料中文本字段
--UPDATE SOE SET F_ORA_TEXT_ENTRY = TB.F_ORA_TEXT_MA
FROM T_SAL_ORDER SO 
INNER JOIN T_SAL_ORDERENTRY SOE ON SO.FID = SOE.FID 
INNER JOIN T_BD_MATERIAL TB ON SOE.FMATERIALID = TB.FMATERIALID
WHERE SOE.F_ORA_TEXT_ENTRY <> TB.F_ORA_TEXT_MA

--发货通知单
SELECT SO.FBILLNO 单据编号,SOE.FSEQ 单据行号,SOE.F_ORA_TEXT_ENTRY 单据明细中文本字段,TB.F_ORA_TEXT_MA 物料中文本字段
--UPDATE SOE SET F_ORA_TEXT_ENTRY = TB.F_ORA_TEXT_MA
FROM T_SAL_DELIVERYNOTICE SO 
INNER JOIN T_SAL_DELIVERYNOTICEENTRY SOE ON SO.FID = SOE.FID 
INNER JOIN T_BD_MATERIAL TB ON SOE.FMATERIALID = TB.FMATERIALID
WHERE SOE.F_ORA_TEXT_ENTRY <> TB.F_ORA_TEXT_MA


--销售出库单
SELECT SO.FBILLNO 单据编号,SOE.FSEQ 单据行号,SOE.F_ORA_TEXT_ENTRY 单据明细中文本字段,TB.F_ORA_TEXT_MA 物料中文本字段
--UPDATE SOE SET F_ORA_TEXT_ENTRY = TB.F_ORA_TEXT_MA
FROM T_SAL_OUTSTOCK SO 
INNER JOIN T_SAL_OUTSTOCKENTRY SOE ON SO.FID = SOE.FID 
INNER JOIN T_BD_MATERIAL TB ON SOE.FMATERIALID = TB.FMATERIALID
WHERE SOE.F_ORA_TEXT_ENTRY <> TB.F_ORA_TEXT_MA

--应收单
SELECT SO.FBILLNO 单据编号,SOE.FSEQ 单据行号,SOE.F_ORA_TEXT_ENTRY 单据明细中文本字段,TB.F_ORA_TEXT_MA 物料中文本字段
--UPDATE SOE SET F_ORA_TEXT_ENTRY = TB.F_ORA_TEXT_MA
FROM T_AR_RECEIVABLE SO 
INNER JOIN T_AR_RECEIVABLEENTRY SOE ON SO.FID = SOE.FID 
INNER JOIN T_BD_MATERIAL TB ON SOE.FMATERIALID = TB.FMATERIALID
WHERE SOE.F_ORA_TEXT_ENTRY <> TB.F_ORA_TEXT_MA


赞 10