使用C#通过SAP DI API添加营销活动时遇Invalid Activity Type错误
解决SAP DI API创建营销活动时的Invalid Activity Type错误
错误原因分析
你遇到的Invalid Activity Type [OCLG.CntctType]错误,核心问题出在循环内添加业务伙伴的逻辑错误:每次循环中你连续调用了三次oCampaign.CampaignBusinessPartners.Add(),这会创建三个独立的业务伙伴条目:
- 第一个只设置了
BPCode - 第二个只设置了
CreateActivity - 第三个是完全空的条目
这种错误的条目构造方式会导致SAP系统在处理时,尝试读取未正确初始化的活动类型相关字段,从而抛出错误。
修复后的代码
将循环内的逻辑修改为每次创建一个完整的业务伙伴条目,再添加到集合中:
public bool CreateCampaign() { try { System.Data.DataTable dtdiz; SapSDK.SAP_DI.Queries.GetSQLRes("exec [dbo].[Getcards] ".ToString(), out dtdiz); if (dtdiz.Rows.Count == 0) { CustomLog.MyLogger.error("exec [dbo].[Getcards] : dtdiz not found"); return false; } SAPbobsCOM.CampaignsService oCampaignService = SapSDK.SapCon.getInstance.oCompany.GetCompanyService().GetBusinessService(SAPbobsCOM.ServiceTypes.CampaignsService); SAPbobsCOM.Campaign oCampaign = oCampaignService.GetDataInterface(SAPbobsCOM.CampaignsServiceDataInterfaces.csCampaign); SAPbobsCOM.CampaignParams oCampaignParams = (SAPbobsCOM.CampaignParams)oCampaignService.GetDataInterface(SAPbobsCOM.CampaignsServiceDataInterfaces.csCampaignParams); oCampaign.TargetGroupType = SAPbobsCOM.TargetGroupTypeEnum.tgtCustomer; oCampaign.StartDate = DateTime.Today; oCampaign.FinishDate = DateTime.Today.AddYears(1); oCampaign.Remarks = "This is a test for Campaign"; oCampaign.CampaignName = "TEST Campaign 111"; for (int i = 0; i < dtdiz.Rows.Count; i++) { // 创建单个业务伙伴条目,一次性设置所有必要属性 SAPbobsCOM.CampaignBusinessPartner bpEntry = oCampaign.CampaignBusinessPartners.Add(); bpEntry.BPCode = dtdiz.Rows[i][0].ToString(); bpEntry.CreateActivity = SAPbobsCOM.BoYesNoEnum.tNO; } //oCampaign.CampaignItems.Add().ItemCode = "A00001"; // oCampaign.AttachementsEntry = 2; // AbsEntry from the OATC Table oCampaignService.Add(oCampaign); return true; } catch (Exception ex) { CustomLog.MyLogger.error(ex); return false; } }
额外检查项
- 确认
Getcards存储过程返回的BPCode都是有效的客户类型(因为你设置了TargetGroupType = tgtCustomer),如果包含供应商或其他类型BP,需要调整目标组类型。 - 若后续需要为BP创建活动(
CreateActivity = tYES),则必须额外设置ActivityType字段,指定有效的活动类型代码(可从SAP的活动类型配置中获取)。
内容的提问来源于stack exchange,提问作者Esther
相关产品推荐
相关产品推荐

