问题描述
我正在尝试向 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”。
因此,为了解决此问题,您需要选择退出以下选项之一:
- 也在 DI 代码中设置国家/地区属性(国家/地区应属于您尝试设置的国家/地区):
oBP.Addresses.Country = "GB"
- 从 DI 代码中删除 State 属性:
oBP.Addresses.State = "SP"