我已完成对API_PRODUCT_SRV
Service 的读取和更新操作。
现在在API_PRODUCT_SRV
(产品实体 - 有很多关联)上进行深度插入时,我收到以下错误。
“errordetails”: [
{
“code”: “API_PRD_MSG/004”,
“message”: “Provide atleast one description for the product.”,
“propertyref”: “”,
“severity”: “error”,
“target”: “”
}
]
我发现了这个深潜博客
它解释了使用 servlet 进行的深度插入。(即使用 HttpServletReq)它提供了其余的服务。
但我使用的CreateRequest
是 SAP Cloud Application Programming Model 中生成 odata 服务的类,因此我无法使用博客中提供的类似代码。
我已经添加了代码和有效负载供您阅读。
创建操作代码
@Create(serviceName = "ProductService", entity = "Products")
public CreateResponse create(CreateRequest req) throws ODataException {
Product toCreate = new ModelMapper().map(req.getMapData(), Product.class);
Product created = new DefaultProductMasterService().createProduct(toCreate)
.execute(new ErpConfigContext("K4XS4SDKDest"));
return CreateResponse.setSuccess().setData(created).response();
}
正在使用的有效载荷:
{
"Product" : "BALL",
"ProductType" : "ZHLB",
"CrossPlantStatus" : "",
"CrossPlantStatusValidityDate" : null,
"CreationDate" : "\/Date(1499731200000)\/",
"CreatedByUser" : "11279380",
"LastChangeDate" : "\/Date(1550448000000)\/",
"LastChangedByUser" : "HWV87616",
"IsMarkedForDeletion" : false,
"ProductOldID" : "",
"GrossWeight" : "0.000",
"PurchaseOrderQuantityUnit" : "",
"SourceOfSupply" : "",
"WeightUnit" : "KG",
"NetWeight" : "0.000",
"CountryOfOrigin" : "",
"CompetitorID" : "",
"ProductGroup" : "01",
"BaseUnit" : "EA",
"ItemCategoryGroup" : "",
"ProductHierarchy" : "",
"Division" : "",
"VarblPurOrdUnitIsActive" : "",
"VolumeUnit" : "",
"MaterialVolume" : "0.000",
"ANPCode" : "0",
"Brand" : "",
"ProcurementRule" : "",
"ValidityStartDate" : null,
"LowLevelCode" : "",
"ProdNoInGenProdInPrepackProd" : "",
"SerialIdentifierAssgmtProfile" : "",
"SizeOrDimensionText" : "",
"IndustryStandardName" : "",
"ProductStandardID" : "",
"InternationalArticleNumberCat" : "",
"ProductIsConfigurable" : false,
"IsBatchManagementRequired" : false,
"ExternalProductGroup" : "",
"CrossPlantConfigurableProduct" : "",
"SerialNoExplicitnessLevel" : "",
"ManufacturerPartProfile" : "",
"ChangeNumber" : "",
"MaterialRevisionLevel" : "",
"HandlingIndicator" : "",
"WarehouseProductGroup" : "",
"WarehouseStorageCondition" : "",
"StandardHandlingUnitType" : "",
"SerialNumberProfile" : "",
"AdjustmentProfile" : "",
"PreferredUnitOfMeasure" : "",
"IsPilferable" : false,
"IsRelevantForHzdsSubstances" : false,
"QuarantinePeriod" : "0",
"TimeUnitForQuarantinePeriod" : "",
"QualityInspectionGroup" : "",
"AuthorizationGroup" : "",
"HandlingUnitType" : "",
"HasVariableTareWeight" : false,
"MaximumPackagingLength" : "0.000",
"MaximumPackagingWidth" : "0.000",
"MaximumPackagingHeight" : "0.000",
"to_Description": {
"results": [
{
"Product" : "BALL",
"Language" : "EN",
"ProductDescription" : "Pipes for machines"
}
]
}
}
CreateRequest
您能否帮助我在使用 SAP Cloud Application Programming Model(类)时如何修改我的代码以使用 SAP S/4HANA Cloud SDK 进行深度插入?
日志文件:
Product(super=VdmObject(customFields={}, changedOriginalFields={LowLevelCode=null, ProductGroup=null, SizeOrDimensionText=null, CreatedByUser=null, CountryOfOrigin=null, Product=null, ProductStandardID=null, IsPilferable=null, VolumeUnit=null, WarehouseProductGroup=null, WarehouseStorageCondition=null, MaterialVolume=null, ManufacturerPartProfile=null, CrossPlantStatus=null, TimeUnitForQuarantinePeriod=null, GrossWeight=null, InternationalArticleNumberCat=null, SourceOfSupply=null, ProductType=null, ItemCategoryGroup=null, ProcurementRule=null, BaseUnit=null, ProductOldID=null, VarblPurOrdUnitIsActive=null, LastChangedByUser=null, Brand=null, MaximumPackagingWidth=null, QuarantinePeriod=null, PurchaseOrderQuantityUnit=null, ProductHierarchy=null, AuthorizationGroup=null, StandardHandlingUnitType=null, MaterialRevisionLevel=null, ExternalProductGroup=null, CrossPlantConfigurableProduct=null, MaximumPackagingLength=null, HasVariableTareWeight=null, ANPCode=null, ProdNoInGenProdInPrepackProd=null, WeightUnit=null, IsMarkedForDeletion=null, CompetitorID=null, QualityInspectionGroup=null, IsBatchManagementRequired=null, IsRelevantForHzdsSubstances=null, Division=null, SerialIdentifierAssgmtProfile=null, AdjustmentProfile=null, PreferredUnitOfMeasure=null, SerialNoExplicitnessLevel=null, HandlingIndicator=null, HandlingUnitType=null, NetWeight=null, ProductIsConfigurable=null, IndustryStandardName=null, SerialNumberProfile=null, ChangeNumber=null, MaximumPackagingHeight=null}), product=BELL, productType=ZHLB, crossPlantStatus=, crossPlantStatusValidityDate=null, creationDate=null, createdByUser=11279380, lastChangeDate=null, lastChangedByUser=HWV87616, lastChangeDateTime=null, isMarkedForDeletion=false, productOldID=, grossWeight=0.000, purchaseOrderQuantityUnit=, sourceOfSupply=, weightUnit=KG, netWeight=0.000, countryOfOrigin=, competitorID=, productGroup=01, baseUnit=EA, itemCategoryGroup=, productHierarchy=, division=, varblPurOrdUnitIsActive=, volumeUnit=, materialVolume=0.000, aNPCode=0, brand=, procurementRule=, validityStartDate=null, lowLevelCode=, prodNoInGenProdInPrepackProd=, serialIdentifierAssgmtProfile=, sizeOrDimensionText=, industryStandardName=, productStandardID=, internationalArticleNumberCat=, productIsConfigurable=false, isBatchManagementRequired=false, externalProductGroup=, crossPlantConfigurableProduct=, serialNoExplicitnessLevel=, productManufacturerNumber=null, manufacturerNumber=null, manufacturerPartProfile=, changeNumber=, materialRevisionLevel=, handlingIndicator=, warehouseProductGroup=, warehouseStorageCondition=, standardHandlingUnitType=, serialNumberProfile=, adjustmentProfile=, preferredUnitOfMeasure=, isPilferable=false, isRelevantForHzdsSubstances=false, quarantinePeriod=0, timeUnitForQuarantinePeriod=, qualityInspectionGroup=, authorizationGroup=, handlingUnitType=, hasVariableTareWeight=false, maximumPackagingLength=0.000, maximumPackagingWidth=0.000, maximumPackagingHeight=0.000, erpConfigContext=null, toDescription=null, toPlant=null, toProductBasicText=null, toProductInspectionText=null, toProductProcurement=null, toProductPurchaseText=null, toProductQualityMgmt=null, toProductSales=null, toProductSalesTax=null, toProductStorage=null, toProductUnitsOfMeasure=null, toSalesDelivery=null)
{ "written_at":"2019-03-11T03:56:27.923Z","written_ts":918343802814688,"component_id":"e8c99eff-1a4e-4266-ba2a-fc099399100c","component_name":"FNpy7mXtvln0dnT1-FinalTestApp-srv","DCComponent":"","organization_name":"-","component_type":"application","space_name":"dev","component_instance":"0","organization_id":"-","correlation_id":"-","CSNComponent":"","space_id":"a78252bf-72bf-479c-b761-8260de0c776e","Application":"FNpy7mXtvln0dnT1-FinalTestApp-srv","container_id":"10.0.138.113","type":"log","logger":"com.sap.cloud.sdk.service.prov.api.util.ProcessorHelper","thread":"http-nio-0.0.0.0-3000-exec-7","level":"ERROR","categories":[],"msg":"The endpoint responded with HTTP error code 400.\nProvide atleast one description for the product.\nFull error message: \n{\n \"error\": {\n \"code\": \"API_PRD_MSG/004\",\n \"message\": {\n \"lang\": \"en\",\n \"value\": \"Provide atleast one description for the product.\"\n },\n \"innererror\": {\n \"application\": {\n \"component_id\": \"LO-MD-MM\",\n \"service_namespace\": \"/SAP/\",\n \"service_id\": \"API_PRODUCT_SRV\",\n \"service_version\": \"0001\"\n },\n \"transactionid\": \"C16DD240C7520010E005C7E648BC12F5\",\n \"timestamp\": \"20190311035627.5989630\",\n \"Error_Resolution\": {\n \"SAP_Transaction\": \"For backend administrators: run transaction /IWFND/ERROR_LOG on SAP Gateway hub system and search for entries with the timestamp above for more details\",\n \"SAP_Note\": \"See SAP Note 1797736 for error analysis (https://service.sap.com/sap/support/notes/1797736)\"\n },\n \"errordetails\": [\n {\n \"code\": \"API_PRD_MSG/004\",\n \"message\": \"Provide atleast one description for the product.\",\n \"propertyref\": \"\",\n \"severity\": \"error\",\n \"target\": \"\"\n }\n ]\n }\n }\n}","stacktrace":["java.lang.reflect.InvocationTargetException","\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)","\tat
我的服务.cds
using API_PRODUCT_SRV from '../srv/external/csn/API_PRODUCT_SRV.json';
service ProductService {
entity Products as Projection on API_PRODUCT_SRV.A_ProductType {
key Product,
ProductType,
CreationDate,
CrossPlantStatus,
CrossPlantStatusValidityDate,
CreatedByUser,
LastChangeDate,
LastChangedByUser,
IsMarkedForDeletion,
ProductOldID,
GrossWeight,
PurchaseOrderQuantityUnit,
SourceOfSupply,
WeightUnit,
NetWeight,
CountryOfOrigin,
CompetitorID,
ProductGroup,
BaseUnit,
ItemCategoryGroup,
ProductHierarchy,
Division,
VarblPurOrdUnitIsActive,
VolumeUnit,
MaterialVolume,
ANPCode,
Brand,
ProcurementRule,
ValidityStartDate,
LowLevelCode,
ProdNoInGenProdInPrepackProd,
SerialIdentifierAssgmtProfile,
SizeOrDimensionText,
IndustryStandardName,
ProductStandardID,
InternationalArticleNumberCat,
ProductIsConfigurable,
IsBatchManagementRequired,
ExternalProductGroup,
CrossPlantConfigurableProduct,
SerialNoExplicitnessLevel,
ProductManufacturerNumber,
ManufacturerPartProfile,
ChangeNumber,
MaterialRevisionLevel,
HandlingIndicator,
WarehouseProductGroup,
WarehouseStorageCondition,
StandardHandlingUnitType,
SerialNumberProfile,
AdjustmentProfile,
PreferredUnitOfMeasure,
IsPilferable,
IsRelevantForHzdsSubstances,
QuarantinePeriod,
TimeUnitForQuarantinePeriod,
QualityInspectionGroup,
AuthorizationGroup,
HandlingUnitType,
HasVariableTareWeight,
MaximumPackagingLength,
MaximumPackagingWidth,
MaximumPackagingHeight,
to_Description
}
entity A_ProductDescriptionType as Projection on API_PRODUCT_SRV.A_ProductDescriptionType
{
key Product,
key Language,
ProductDescription
}
}
你能告诉我如何在其中添加关联吗? 我的服务.cds
using API_BUSINESS_PARTNER as bp from './external/csn/API_BUSINESS_PARTNER';
service CrudService{
@cds.persistence.skip
Entity BusinessPartner as projection on bp.A_BusinessPartnerType{
BusinessPartner,
LastName,
FirstName,
BusinessPartnerCategory
};
}
温暖的问候,
米纳克什