Hi team
I have created this method with field variables declared and initialized
	
	
	
		
				
			I have created this method with field variables declared and initialized
		Code:
	
	METHOD PROTECTED DataTable ProTTDataTable(queryHandle as HANDLE, fieldNames as CHARACTER):
        DEFINE VARIABLE listRecord AS System.Array NO-UNDO.
        DEFINE VARIABLE fieldHandle AS HANDLE NO-UNDO EXTENT.
        DEFINE VARIABLE fieldName AS HANDLE NO-UNDO.
        DEFINE VARIABLE bufferHandle AS HANDLE NO-UNDO.
        DEFINE VARIABLE i AS INTEGER NO-UNDO.
        DEFINE VARIABLE numFields AS INTEGER  NO-UNDO.
        DEFINE VARIABLE dataColumn AS DataColumn NO-UNDO.
        DEFINE VARIABLE dataTable AS DataTable NO-UNDO.
        
        
       
         assign(incompatible data type expression)
      bufferHandle = queryHandle:GET-BUFFER-HANDLE (1)
        dataTable = NEW DataTable(bufferHandle:NAME)
        numFields = (IF fieldName <> " " THEN NUM-ENTRIES (fieldName)ELSE bufferHandle:numFields)
        EXTENT(fieldHandle) = numFields
        listRecord = System.Array:CreateInstance(Progress.Util.TypeHelper:GetType("System.Object"), numFields).
        // condition for checking all entries in the table.
        
       do i = 1 to extent( fieldHandle ):
          assign
            fieldHandle[i] = ( if fieldnames <> "" then bufferHandle:buffer-field( entry( i, fieldNames )) else bufferHandle:buffer-field( i ))
            dataColumn = dataTable:Columns:Add( fieldHandle[i]:Name, DotNetType( fieldHandle[i]:Data-type ))  
            dataColumn:Caption = fieldHandle[i]:label.
            END.
            
            queryHandle:REPOSITION-TO-ROW (1).
            DO WHILE queryHandle:GET-NEXT: 
                DO i = 1 to EXTENT(fieldHandle):
                    listRecord:SetValue(fieldHandle[i]:BUFFER-VALUE, i - 1).
                    END.
                    dataTable:Rows:Add(listRecord).
                    END. 
        RETURN dataTable.
 END METHOD. 
	 
			