SAP Business One - 添加 BPDI 错误:(-5002)

问题描述

我正在尝试向 BP 添加新地址。如果在 BP 中注册一个地址,一切正常,但现在如果是新地址,则返回错误 -5002 - 更新 BP 时出错:[OCRD.State2],“链接值”SP“不存在”

我使用 SAP Business 10 (10.00.140) FP 2011 进行测试

if (oBP.GetByKey(CardCode))
{
    oBP.Addresses.SetCurrentLine(oBP.Addresses.Count - 1);
    if (!string.IsNullOrEmpty(oBP.Addresses.AddressName))
    {
        oBP.Addresses.Add();
    }
    UF = json.data.endereco_uf;
    if (UF.Length > 2)
    {
        UF = "";
    }
    oBP.Addresses.SetCurrentLine(oBP.Addresses.Count - 1);
    oBP.Addresses.AddressName = "Novo 1";
    oBP.Addresses.Addresstype = BoAddresstype.bo_ShipTo;
    oBP.Addresses.Street = json.data.endereco_logradouro;
    oBP.Addresses.Block = json.data.endereco_bairro;
    oBP.Addresses.ZipCode = json.data.endereco_cep;
    oBP.Addresses.City = json.data.endereco_municipio;
    oBP.Addresses.State = UF;
    oBP.Addresses.County = county;
    oBP.Addresses.StreetNo = json.data.endereco_numero;
    oBP.Addresses.BuildingFloorRoom = json.data.endereco_complemento;
    oBP.Addresses.Add();


    oBP.Addresses.SetCurrentLine(oBP.Addresses.Count - 1);
    oBP.Addresses.AddressName = "Novo 2";
    oBP.Addresses.Addresstype = BoAddresstype.bo_BillTo;
    oBP.Addresses.Street = json.data.endereco_logradouro;
    oBP.Addresses.Block = json.data.endereco_bairro;
    oBP.Addresses.ZipCode = json.data.endereco_cep;
    oBP.Addresses.City = json.data.endereco_municipio;
    oBP.Addresses.State = UF;
    oBP.Addresses.County = county;
    oBP.Addresses.StreetNo = json.data.endereco_numero;
    oBP.Addresses.BuildingFloorRoom = json.data.endereco_complemento;
    oBP.Addresses.Add();
 
    int iRetVal = oBP.Update();
    if (iRetVal != 0)
    {
    Program.oApplication.StatusBar.SetText("Error updating BP: " + Program.oCompany.GetLastErrorDescription(),BoMessageTime.bmt_Short,BoStatusBarMessageType.smt_Error);
    return false;
}

解决方法

SAP 帮助我解决了这个问题。答案如下。

我尝试在 DemoUK(GB 本地化)数据库中重现此问题,并且也能够重现。

经过调查,发现您无法链接特定国家/地区不存在的州。

在您的情况下,系统会抛出错误,因为数据是基于以下查询进行验证的:

SELECT* FROM OCST WHERE  "Code" = 'SP' and "Country" = ''

同样,如果我尝试将 State 设置为“Arizona”,将 Country 设置为“United Kingdom”,它会给我同样的错误,因为正确的“Country”值应该是“USA”。

因此,为了解决此问题,您需要选择退出以下选项之一:

  1. 也在 DI 代码中设置国家/地区属性(国家/地区应属于您尝试设置的国家/地区):
oBP.Addresses.Country = "GB"
  1. 从 DI 代码中删除 State 属性:
oBP.Addresses.State = "SP"