procedure GetByName(RecRef: RecordRef; FieldName: Text; var FldRef: FieldRef)
var
i: Integer;
begin
for i := 1 to RecRef.FieldCount do begin
FldRef := RecRef.FieldIndex(i);
if FldRef.Name = FieldName then begin
exit;
end;
end;
Clear(FldRef);
exit;
end;
Comments
You should already be covered by codeunit 701 "Data Type Management". It has:
    procedure FindFieldByName(RecordRef: RecordRef; var FieldRef: FieldRef; FieldNameTxt: Text): Boolean
    var
        "Field": Record "Field";
    begin
        Field.SetRange(TableNo, RecordRef.Number);
        Field.SetFilter(ObsoleteState, '%1', Field.ObsoleteState::Removed);
        Field.SetRange(FieldName, FieldNameTxt);
        if not Field.FindFirst then
            exit(false);
        FieldRef := RecordRef.Field(Field."No.");
        exit(true);
    end;
    procedure SetFieldValue(var RecordVariant: Variant; FieldName: Text; FieldValue: Variant): Boolean
    var
        RecRef: RecordRef;
        FieldRef: FieldRef;
    begin
        if not GetRecordRef(RecordVariant, RecRef) then
            exit;
        if not FindFieldByName(RecRef, FieldRef, FieldName) then
            exit;
        FieldRef.Value := FieldValue;
        RecRef.SetTable(RecordVariant);
        exit(true);
    end;
    procedure ValidateFieldValue(var RecordVariant: Variant; FieldName: Text; FieldValue: Variant): Boolean
    var
        RecRef: RecordRef;
        FieldRef: FieldRef;
    begin
        if not GetRecordRef(RecordVariant, RecRef) then
            exit;
        if not FindFieldByName(RecRef, FieldRef, FieldName) then
            exit;
        FieldRef.Validate(FieldValue);
        RecRef.SetTable(RecordVariant);
        exit(true);
    end;
Category: Development
Sorry, original post was a brain cramp. Here is what I meant to post.
    procedure GetByFieldName(TableNumber: Integer; FieldName: Text; var FldRef: FieldRef)
    var
        RecRef: RecordRef;
    begin
        RecRef.Close();
        RecRef.Open(TableNumber);
        GetFieldRefByFieldName(RecRef, FieldName, FldRef);
    end;
    procedure GetByFieldName(TableName: Text; FieldName: Text; var FldRef: FieldRef)
    var
        RecRef: RecordRef;
    begin
        GetRecordRefByTableName(TableName, RecRef);
        GetFieldRefByFieldName(RecRef, FieldName, FldRef);
    end;
    procedure GetByFieldName(RecRef: RecordRef; FieldName: Text; var FldRef: FieldRef)
    var
        FieldInformation: Record Field;
    begin
        Clear(FieldInformation);
        FieldInformation.Reset();
        FieldInformation.SetRange(TableNo, RecRef.Number);
        FieldInformation.SetRange(FieldName, FieldName);
        if FieldInformation.FindFirst() then;
        FldRef := RecRef.Field(FieldInformation."No.");
    end;
Category: Development
		
Business Central Team (administrator)
Thank you for this suggestion! Currently this is not on our roadmap. We are tracking this idea and if it gathers more votes and comments we will consider it in the future.
Best regards,
Business Central Team