根据物料自定义文本字段更新单据明细中的文本字段原创
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