OK. I am getting somewhere :-)
//Viewname
tablename viewname = tableStr(ELCWDOrderMismatchView);
//Dates
str actualconfirmeddate = SysComputedColumn::returnField(viewname, identifierStr(SalesLine), fieldStr(SalesLine, ELCWDActualConfirmedToCustomerDate));
str confirmedreceiptdate = SysComputedColumn::returnField(viewname, identifierStr(SalesLine), fieldStr(SalesLine, ReceiptDateConfirmed));
return SysComputedColumn::getDateDiff(actualconfirmeddate,confirmedreceiptdate);
Returns the difference in days.
The only challenge left is to exclude empty dates. I made this code to achieve this:
SysComputedColumn::if( SysComputedColumn::notEqualExpression(
SysComputedColumn::comparisonField(viewname, identifierStr(SalesLine), fieldStr(SalesLine, ELCWDActualConfirmedToCustomerDate)),
SysComputedColumn::comparisonLiteral('1900-01-01 00:00:00.000'))
)
However, I need an "Or" in my If, because if ELCWDActualconfirmedToCustomerDate is empty OR ReceiptDateConfirmed is empty it should return "0".
I tried this, but with no luck:
return
SysComputedColumn::if(SysComputedColumn::EqualExpression( SysComputedColumn::comparisonField(viewname, identifierStr(SalesLine), fieldStr(SalesLine, ELCWDActualConfirmedToCustomerDate)),
SysComputedColumn::comparisonLiteral('1900-01-01 00:00:00.000')),
SysComputedColumn::returnField(viewname, identifierStr(SalesLine), fieldstr(SalesLine, ELCWDActualConfirmedToCustomerDate)),
SysComputedColumn::returnLiteral(0));
SysComputedColumn::if(SysComputedColumn::EqualExpression( SysComputedColumn::comparisonField(viewname, identifierStr(SalesLine), fieldStr(SalesLine, ReceiptDateConfirmed)),
SysComputedColumn::comparisonLiteral('1900-01-01 00:00:00.000')),
SysComputedColumn::returnField(viewname, identifierStr(SalesLine), fieldstr(SalesLine, ReceiptDateConfirmed)),
SysComputedColumn::returnLiteral(0));
SysComputedColumn::getDateDiff(actualconfirmeddate,confirmedreceiptdate);