You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比SAP Business One中未结销售订单与BP主数据的地址?

在SAP Business One中实现BP主数据与未结订单地址校验的SQL关联方案

核心关联逻辑

通过**业务伙伴代码(CardCode)和地址类型(AddressType)**将两个数据集关联,确保对比的是同一BP的同一类地址(如送货地址/账单地址),再逐个字段校验一致性。

合并后的校验SQL查询

将你已有的两个查询合并为一个,直接筛选出地址字段不一致的未结订单记录:

-- 校验BP主数据地址与未结销售/交货订单地址的一致性
SELECT
    ord.CardCode AS 业务伙伴代码,
    ord.CardName AS 业务伙伴名称,
    ord.DocNum AS 订单编号,
    ord.DocType AS 单据类型,
    -- 标记具体不一致的字段
    CASE WHEN ISNULL(bp.Street, '') <> ISNULL(ord.Street, '') THEN '街道' ELSE '' END AS 不一致字段,
    bp.ZipCode AS BP主数据邮编,
    ord.ZipCode AS 订单邮编,
    bp.Country AS BP主数据国家,
    ord.Country AS 订单国家
FROM
    -- 未结销售/交货订单地址数据集(替换为你的原有查询)
    (
        -- 未结销售订单
        SELECT
            T0.CardCode,
            T0.CardName,
            T0.DocNum,
            '销售订单' AS DocType,
            T0.Street,
            T0.ZipCode,
            T0.Country,
            T0.AddressType
        FROM ORDR T0
        WHERE T0.DocStatus = 'O'
        UNION ALL
        -- 未结交货单
        SELECT
            T0.CardCode,
            T0.CardName,
            T0.DocNum,
            '交货单' AS DocType,
            T0.Street,
            T0.ZipCode,
            T0.Country,
            T0.AddressType
        FROM ODLO T0
        WHERE T0.DocStatus = 'O'
    ) ord
-- 关联BP主数据对应类型的地址
INNER JOIN
    (
        SELECT
            T0.CardCode,
            T1.Street,
            T1.ZipCode,
            T1.Country,
            T1.AddressType
        FROM OCRD T0
        INNER JOIN CRD1 T1 ON T0.CardCode = T1.CardCode
    ) bp
    ON ord.CardCode = bp.CardCode
    AND ord.AddressType = bp.AddressType
-- 筛选存在不一致的记录(处理空值避免误判)
WHERE
    ISNULL(bp.Street, '') <> ISNULL(ord.Street, '')
    OR ISNULL(bp.ZipCode, '') <> ISNULL(ord.ZipCode, '')
    OR ISNULL(bp.Country, '') <> ISNULL(ord.Country, '')

关键说明

  1. 地址类型匹配:通过AddressType关联,确保对比的是BP的送货地址和订单的送货地址,避免跨类型对比导致的错误。
  2. 空值处理:用ISNULL将空值转为空字符串,防止空值与非空值对比时被误判为不一致(可根据实际业务调整)。
  3. 字段标记:通过CASE语句明确指出哪个字段不一致,便于在B1验证提示中给出精准信息。

B1验证配置要点

  • 在B1的验证规则中,将上述SQL作为校验查询,当查询返回结果时触发错误提示。
  • 错误提示可动态引用查询字段,例如:业务伙伴${业务伙伴代码}的订单${订单编号}的${不一致字段}与主数据不一致,请检查。

内容的提问来源于stack exchange,提问作者user12422846

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:39:53