Adding Part to ECO TABLE_REDLINEBOM: Exception: “ECO does not have table”.

Hello & thanks in advance and for your time.

I can see from the docs and on this forum that a lot of information has already been provided about adding items to tables within an ECO, such as the TABLE_REDLINEBOM.

In the SDK Developer’s Guide, I see that info is provided in Section 4-22 on Redlining.  (‘m using the “jaxws” classes, not the com.agile.api interfaces, but that is okay enough, unless there are better docs for my use.

 

My issue:  Attempting to add a Part to the TABLE_REDLINEBOM associated with a different part that I have already added to an ECO’s Affected Items table.  I get an exception that says:

 

Agile Exceptions:Exception Id: -WS_21- Exception Message: -The object type : ECO does not have table : -803- Exception Cause: -null-

 

Yet, after getting the exception, I can use the Agile PLM java client to select the part number in the Affected Items table of the ECO, then click the BOM table at the bottom of the UI, and proceed to successfully add a different, existing part number, to the Redline table.

 

I’ve read as much as I could find and experimented a lot to try to resolve this, but failed.  Any guidance would be greatly appreciated.  My code and logs below.

================================================

public void addToBomTable(BOMEntry bomEntry, String partNumber, String ecoNumber, String revision, Map<String,String> paramsMap) {

Log(“addToBomTable begin”);

String log = null;
try {

// Update ECO
Log(“Updating ECO ” + ecoNumber);
Map<String, String> objectParams = new HashMap<>();
objectParams.put(WORKFLOW, WORKFLOW_CA_DEFAULT);
UpdateObjectRequest request = new UpdateObjectRequest();
request.setParams(objectParams);
request.setObjectType(ChangeConstants.CLASS_ECO.toString());
request.setDisableAllWarnings(true);
request.setObjectNumber(ecoNumber);
updateObject(request);
Log(“Updated ECO ” + ecoNumber);

// Update Phantom part number
Log(“Updating PartNumber ” + bomEntry.getObjectNumber());
objectParams = new HashMap<>();
objectParams.put(“rev”, revision);
request = new UpdateObjectRequest();
request.setParams(objectParams);
request.setObjectType(ItemConstants.CLASS_PARTS_CLASS.toString());
request.setDisableAllWarnings(true);
request.setObjectNumber(bomEntry.getObjectNumber());
Log(“Updated PartNumber ” + bomEntry.getObjectNumber());

Log(“Check existance of table: eco=” + ecoNumber + ” revision=” + revision + ” class_eco=” + ChangeConstants.CLASS_ECO.toString()
+ ” redline=” + ItemConstants.TABLE_REDLINEBOM.toString() + ” partnum=” + bomEntry.getObjectNumber());

RequestTableType requestTableType = new RequestTableType();
requestTableType.setClassIdentifier(ChangeConstants.CLASS_ECO.toString());
requestTableType.setObjectNumber(ecoNumber);
requestTableType.setTableIdentifier(ItemConstants.TABLE_REDLINEBOM.toString());
PropertyType propertyType = new PropertyType();
propertyType.setPropertyName(SchemaConstants.REVISION.value());
propertyType.setPropertyValue(revision);
requestTableType.getOptions().add(propertyType);
LoadTableRequestType loadTableRequestType = new LoadTableRequestType();
loadTableRequestType.getTableRequest().add(requestTableType);
createTableProxy();
LoadTableResponseType resp = agileStubTable.loadTable(loadTableRequestType);
if (resp != null && resp.getTableContents() != null) {
Integer n = new Integer(resp.getTableContents().size());
Log(“my getTables got ” + n.toString() + ” tables”);

log = ToStringBuilder.reflectionToString(resp, ToStringStyle.MULTI_LINE_STYLE);
Log(“my getTables resp: ” + log);
}

LoadTableResponseType loadTableResponseType = getTables(ecoNumber,
revision,
ChangeConstants.CLASS_ECO.toString(),
ItemConstants.TABLE_REDLINEBOM.toString()
);
if (loadTableResponseType == null) {
throw new AgileException(“Response is null while retrieving Table for ” + bomEntry.getObjectNumber() +
” Rev ” + revision);
}
checkStatus(loadTableResponseType.getStatusCode(), loadTableResponseType.getExceptions());
for (AgileTableType agileTableType : loadTableResponseType.getTableContents()) {
Log(“got table here…”);
}

requestTableType = new RequestTableType();

// This is read-only
//requestTableType.setClassIdentifier(“GoldenSoftwareConfiguration”);
//requestTableType.setObjectNumber(bomEntry.getObjectNumber()); // the Phantom
//requestTableType.setTableIdentifier(ItemConstants.TABLE_BOM.toString());

requestTableType.setClassIdentifier(ChangeConstants.CLASS_ECO.toString());
requestTableType.setObjectNumber(ecoNumber);
requestTableType.setTableIdentifier(ItemConstants.TABLE_REDLINEBOM.toString());

AgileRowType row = new AgileRowType();
Map<String, String> requestParams= new HashMap<String,String>();
requestParams.put(ITEM_NUMBER, partNumber); // the LSP
addMandatoryParams(requestParams, EFFECTIVE_DATE, Long.toString(new Date().getTime()));
row.getAny().addAll(buildMessageElements(requestParams));

AgileAddRowsRequest addRowsRequest= new AgileAddRowsRequest();
addRowsRequest.setObjectInfo(requestTableType);
addRowsRequest.getRow().add(row);

AddRowsRequestType addRowsRequestType = new AddRowsRequestType();
addRowsRequestType.getData().add(addRowsRequest);

createTableProxy();

AddRowsResponseType addRowsResponseType = agileStubTable.addRows(addRowsRequestType);

if (addRowsResponseType == null)
throw new AgileException(“AddRowsResponseType is null”);
else {
log = ToStringBuilder.reflectionToString(addRowsResponseType, ToStringStyle.MULTI_LINE_STYLE);
Log(“AddRowsResponseType: ” + log);
}
checkStatus(addRowsResponseType.getStatusCode(), addRowsResponseType.getExceptions());
} catch (AgileException e) {
System.out.println(“ERROR, caught exception: ” + e.getMessage());
}
}

 

======================================

 

Calling for Next ECO Rev: A
Next ECO Rev: B
Created new ECO: C52304 on PH-1KET-L0-ESD-B38M
Add Phantom to ECO AffectedItems table C52304 PH-1KET-L0-ESD-B38M
AddRowsResponseType: com.agile.ws.schema.table.v1.jaxws.AddRowsResponseType@56e07a08[
tableContents=<null>
messageId=<null>
messageName=<null>
statusCode=SUCCESS
sessionParameters=<null>
generalParameters=<null>
notes=<null>
exceptions=<null>
warnings=<null>
]
Add LSP to BOM table of Phantom part number of ECO AffectedItems table. C52304 PH-1KET-L0-ESD-B38M GGO51-1KET-L009
addToBomTable begin
Updating ECO C52304
Updated ECO C52304
Updating PartNumber PH-1KET-L0-ESD-B38M
Updated PartNumber PH-1KET-L0-ESD-B38M
Check existance of table: eco=C52304 revision=B class_eco=6141 redline=-803 partnum=PH-1KET-L0-ESD-B38M
my getTables got 1 tables
my getTables resp: com.agile.ws.schema.table.v1.jaxws.LoadTableResponseType@47428937[
tableContents=[com.agile.ws.schema.common.v1.jaxws.AgileTableType@3b9d6699]
outputParameters=<null>
messageId=<null>
messageName=<null>
statusCode=FAILURE
sessionParameters=<null>
generalParameters=<null>
notes=<null>
exceptions=[com.agile.ws.schema.common.v1.jaxws.AgileExceptionListType@21694e53]
warnings=<null>
]

ERROR, caught exception: Agile Exceptions:Exception Id: -WS_21- Exception Message: -The object type : ECO does not have table : -803- Exception Cause: -null-

 

 

 

 

 

 

 

 

Agile User Asked on February 7, 2020 in Agile PLM (v9).
Add Comment
3 Answer(s)

Randy – You need to add the part to the Affected Items Table  and update the values.  When updating the attributes it automatically populate the Redline Table.  The RedlineBOM table is normally used to identify what changes were done from earlier revision. and it is not used to manipulate the values directly.

Hope this helps.

Thanks,

Sankar.

Agile Angel Answered on February 10, 2020.
Add Comment

Thanks Sankar.

I would like my Part Number GGO51-1KET-L009 show up in the Redline BOM table.    When I tried to follow you suggestion of adding GGO51-1KET-L009 to the Affected Items table of my ECO (C52312) of Part Number PH-1KET-L0-ESD-B38M, my part number GGO51-1KET-L009 does not appear in the Redline BOM table.   Thanks in advance for more guidance.

I have a screen image of the Agile PLM user-interface, but upload of images seems to be disabled.  If needed, send me DM, and I can send the screen image.

 

Thanks in advance.

 

Agile User Answered on February 10, 2020.
Add Comment

Hi again Sankar.

Since the Agile PLM user interface allows entry of a part number into the ECO BOM Redlines table, I would like to the same thing with my program and the API.  Is that possible?  I would think that API allows this somehow, since the User Interface already allows this.  Please advise, and thanks in advance.

Randy

Agile User Answered on February 10, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.