As you can see from the following code, we have to get the primitive or container type for a given EDT. It comes from method AOTtpeStr() as an abbreviation. Then you should call an appropriate method to create a new field.
private void createFieldInTableInAOT() { TreeNode treeNode = treenode::findNode(#ExtendedDataTypesPath); TreeNode treeNodeEDT2extend = treeNode.AOTfindChild(edtType); AOTTableFieldList fieldNode; str typeStrCode = treeNodeEDT2extend.AOTtypeStr(); if(!treeNodeEDT2extend) { warning(funcName() + ".\n Extended data type "+ edtType + " not exists in AOT!"); return ; } switch (typeStrCode) { // string case 'UTS': treeNodeFields.addString(edtName); break; // real case 'UTR': treeNodeFields.addReal(edtName); break; // integer case 'UTI': treeNodeFields.addInteger(edtName); break; // int64 case 'UTW': treeNodeFields.addInt64(edtName); break; // date case 'UTD': treeNodeFields.addDate(edtName); break; // time case 'UTT': treeNodeFields.addTime(edtName); break; // datetime case 'UTZ': treeNodeFields.addDateTime(edtName); break; // enum case 'UTE': treeNodeFields.addEnum(edtName); break; // container case 'UTQ': treeNodeFields.addContainer(edtName); break; // GUID case 'UTG': treeNodeFields.addGuid(edtName); break; default: throw error(funcName()); } fieldNode = treeNodeFields.AOTfindChild(edtName); fieldNode.AOTsetProperty(#PropertyExtendeddatatype, edtType); fieldNode.AOTsave(); currentFieldGroupTreeNode.AOTadd(edtName); info(strfmt("Field '%1' of type '%2' created", edtName, edtType)); }
No comments:
Post a Comment