How to get all Field EDT Names of InventTable?

I want to display all the field labels of invent table. If the field doesn’t have any label, i have to find the field EDT and i have to print that label. Please any one can help me.

Please add a tag with your version of AX; different versions have different capabilities.

Hi Sekhar
I hope it will helpful for u as per ur req

TreeNode treenode = treeNode::findNode(@"\Data Dictionary\Tables\InventTable\Fields");
TreeNodeIterator treeNodeIterator;
TreeNode Flds;
NoYes visibleProp;
str properties;
str extendedDataType;
;
treeNodeIterator = treenode.AOTiterator();
Flds = treeNodeIterator.next();
while(Flds)
{
if(Flds.AOTgetProperty(‘Label’) != ‘’)
{
info(strfmt(“Field with Label %1”, Flds.treeNodeName()));
}
else
{
properties = Flds.AOTgetProperties();
extendedDataType = findProperty(properties, “ExtendedDataType”);
info(strfmt("Field without label = %1 and EDT = %2 ", Flds.treeNodeName(),extendedDataType));
}
Flds = treeNodeIterator.next();
}

2012 R2

You can use DictTable / DictField classes. Like this:

SysDictTable    dictTable = new SysDictTable(tableNum(InventTable));
SysDictField    dictField;
FieldId         fieldId = dictTable.fieldNext(0);

while (fieldId)
{
	dictField = dictTable.fieldObject(fieldId);

	// Get label
	dictField.label();
	
	fieldId = dictTable.fieldNext(fieldId);
}

Hi Rajendra,

Thank you for your kind reply.

In the above code i’m getting EDT name if label is not there. but i want EDT label name.

Thank you!

Check once

TreeNode treenode = treeNode::findNode(@"\Data Dictionary\Tables\InventTable\Fields");
TreeNodeIterator treeNodeIterator;
TreeNode edtTreeNode;
TreeNode Flds;
NoYes visibleProp;
str properties,edtProperties;
str extendedDataType,edtLabelName;
;
treeNodeIterator = treenode.AOTiterator();
Flds = treeNodeIterator.next();
while(Flds)
{
if(Flds.AOTgetProperty(‘Label’) != ‘’)
{
info(strfmt(“Field with Label %1”, Flds.treeNodeName()));
}
else
{
properties = Flds.AOTgetProperties();
extendedDataType = findProperty(properties, “ExtendedDataType”);
edtTreeNode = treeNode::findNode(@"\Data Dictionary\Extended Data Types"+extendedDataType+"");
edtProperties = edtTreeNode.AOTgetProperties();
edtLabelName = findProperty(edtProperties, “Label”);

info(strfmt(“Field without label = %1 and EDT = %2 EDT Label Name =%3”, Flds.treeNodeName(),extendedDataType,edtLabelName));
}
Flds = treeNodeIterator.next();
}

Dear Rajendra
It’s working. Thank you so much. :slight_smile:

Click on ,this helped me on the solution

Can you please mark which reply/replies answered your question? (“This helped me” link.)
It will help others looking at this thread.

static void labelName(Args _args)

{

SysDictTable dictTable = new SysDictTable(tableNum(InventTable));

SysDictField dictField;

TreeNode treeNode,edtTree;

treeNode fields,field;

str label,extendedDataType,properties,fieldName,edtProperties;

TreeNode t = TreeNode::findNode(@"\Data Dictionary\Tables").AOTfindChild(“InventTable”);

TreeNode edt = TreeNode::findNode(@"\Data Dictionary\Extended Data Types");

FieldId fieldId = dictTable.fieldNext(0);

while (fieldId)

{

dictField = dictTable.fieldObject(fieldId);

if (dictField.isSql() && !dictField.isSystem())

{

fieldName = dictField.name();

treeNode = dictField.treeNode();

label = SysLabel::labelId2String(treeNode.AOTgetProperty(strFmt(“Label”)));

if(label)

{

info(strFmt("%1",label));

}

else if(!label)

{

fields = t.AOTfindChild(“Fields”);

field =fields.AOTfindChild(fieldName);

properties = field.AOTgetProperties();

extendedDataType = findProperty(properties, “ExtendedDataType”);

if(extendedDataType)

{

edtProperties = edt.AOTfindChild(extendedDataType).AOTgetProperties();

label = findProperty(edtProperties,“Label”);

if(label)

{

info(strfmt("%1 ",SysLabel::labelId2String2((label), ‘en-us’)));

}

else

{

info(strFmt("%1",fieldName));

}

}

else

{

info(strFmt("%1",fieldName));

}

}

}

fieldId = dictTable.fieldNext(fieldId);

}

}