X++ job to treverse AOT objects
static void CusLayerTableFieldAnalysis_Cus(Args _args)
{
#aot
#properties
Str projectName = "DataDictionary_CUS";
ProjectNode projectNode;
ProjectGroupNode ddProjectGroupNode;
ProjectGroupNode edtProjectGroupNode;
ProjectGroupNode tblProjectGroupNode;
ProjectListNode projectListNode;
TreeNode memberTreeNode;
TreeNode projectTreeNode;
TreeNodeIterator projectIterator;
SysDictTable dictTable ;//= new SysDictTable(tableNum(CustTable));
SysDictField dictField;
TreeNode treeNode;
FieldId fieldId ;//= dictTable.fieldNext(0);
//ProjectNode projectTreeNode = SysTreeNode::getPrivateProject().AOTfindChild('DataDictionary_CUS');
// find all Private projects
projectListNode = SysTreeNode::getPrivateProject();
// find project with a given name
projectNode = projectListNode.AOTfindChild(projectName);
// open it in a separate window in AOT
projectTreeNode = projectNode.getRunNode();
// this is the key point after which we can iterate group members
projectNode = projectNode.loadForInspection();
// get nested nodes for appropriate names
ddProjectGroupNode = projectNode.AOTfindChild('Data_Dictionary');
//edtProjectGroupNode = ddProjectGroupNode.AOTfindChild('Extended Data Types');
tblProjectGroupNode = ddProjectGroupNode.AOTfindChild('Tables');
// tables
projectIterator = tblProjectGroupNode.AOTiterator();
memberTreeNode = projectIterator.next();
while(memberTreeNode)
{
//FieldId = memberTreeNode.toString();
//dictTable = new SysDictTable(strFmt("%1", memberTreeNode.AOTname()));
info(strFmt("TABLE : %1 | Model : %2", memberTreeNode.AOTname(),memberTreeNode.AOTgetProperty("Model")));
dicttable = new SysDictTable(tableName2Id(memberTreeNode.AOTname()));
fieldId = dictTable.fieldNext(0);
while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSql() && !dictField.isSystem())
{
treeNode = dictField.treeNode();
if(treeNode.AOTgetProperty("Model") == "CUS Model")
{
info(strFmt("Field : %1 | Model : %2 | EDT : %3 | String size : %4",
dictField.name(), // Field name
treeNode.AOTgetProperty("Model"), // Model
treeNode.AOTgetProperty("ExtendedDataType"), // EDT
(treeNode.AOTgetProperty("Type") == "String" ? treeNode.AOTgetProperty("StringSize") : '')));
}
}
fieldId = dictTable.fieldNext(fieldId);
}
memberTreeNode = projectIterator.next();
}
}
{
#aot
#properties
Str projectName = "DataDictionary_CUS";
ProjectNode projectNode;
ProjectGroupNode ddProjectGroupNode;
ProjectGroupNode edtProjectGroupNode;
ProjectGroupNode tblProjectGroupNode;
ProjectListNode projectListNode;
TreeNode memberTreeNode;
TreeNode projectTreeNode;
TreeNodeIterator projectIterator;
SysDictTable dictTable ;//= new SysDictTable(tableNum(CustTable));
SysDictField dictField;
TreeNode treeNode;
FieldId fieldId ;//= dictTable.fieldNext(0);
//ProjectNode projectTreeNode = SysTreeNode::getPrivateProject().AOTfindChild('DataDictionary_CUS');
// find all Private projects
projectListNode = SysTreeNode::getPrivateProject();
// find project with a given name
projectNode = projectListNode.AOTfindChild(projectName);
// open it in a separate window in AOT
projectTreeNode = projectNode.getRunNode();
// this is the key point after which we can iterate group members
projectNode = projectNode.loadForInspection();
// get nested nodes for appropriate names
ddProjectGroupNode = projectNode.AOTfindChild('Data_Dictionary');
//edtProjectGroupNode = ddProjectGroupNode.AOTfindChild('Extended Data Types');
tblProjectGroupNode = ddProjectGroupNode.AOTfindChild('Tables');
// tables
projectIterator = tblProjectGroupNode.AOTiterator();
memberTreeNode = projectIterator.next();
while(memberTreeNode)
{
//FieldId = memberTreeNode.toString();
//dictTable = new SysDictTable(strFmt("%1", memberTreeNode.AOTname()));
info(strFmt("TABLE : %1 | Model : %2", memberTreeNode.AOTname(),memberTreeNode.AOTgetProperty("Model")));
dicttable = new SysDictTable(tableName2Id(memberTreeNode.AOTname()));
fieldId = dictTable.fieldNext(0);
while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSql() && !dictField.isSystem())
{
treeNode = dictField.treeNode();
if(treeNode.AOTgetProperty("Model") == "CUS Model")
{
info(strFmt("Field : %1 | Model : %2 | EDT : %3 | String size : %4",
dictField.name(), // Field name
treeNode.AOTgetProperty("Model"), // Model
treeNode.AOTgetProperty("ExtendedDataType"), // EDT
(treeNode.AOTgetProperty("Type") == "String" ? treeNode.AOTgetProperty("StringSize") : '')));
}
}
fieldId = dictTable.fieldNext(fieldId);
}
memberTreeNode = projectIterator.next();
}
}
Comments
Post a Comment