src/sap.ui.table/src/sap/ui/table/TableColumnUtils.js
function(oColumn, iNewIndex) {
			var oTable = oColumn.getParent();

			if (!oTable || iNewIndex === undefined || !TableColumnUtils.isColumnMovable(oColumn)) {
				// Column is not movable at all
				return false;
			}

			iNewIndex = TableColumnUtils.normalizeColumnMoveTargetIndex(oColumn, iNewIndex);

			if (iNewIndex < oTable.getComputedFixedColumnCount() || iNewIndex < oTable._iFirstReorderableIndex) {
				// No movement of fixed columns or e.g. the first column in the TreeTable
				return false;
			}

			var iCurrentIndex = oTable.indexOfColumn(oColumn),
				aColumns = oTable.getColumns();

			if (iNewIndex > iCurrentIndex) { // Column moved to higher index
				// The column to be moved will appear after this column.
				var oBeforeColumn = aColumns[iNewIndex >= aColumns.length ? aColumns.length - 1 : iNewIndex];
				var oTargetBoundaries = TableColumnUtils.getColumnBoundaries(oTable, oBeforeColumn.getId());
				if (TableColumnUtils.hasHeaderSpan(oBeforeColumn) || oTargetBoundaries.endIndex > iNewIndex) {
					return false;
				}
			} else {
				var oAfterColumn = aColumns[iNewIndex]; // The column to be moved will appear before this column.
				if (TableColumnUtils.getParentSpannedColumns(oTable, oAfterColumn.getId()).length != 0) {
					// If column which is currently at the desired target position is spanned by previous columns
					// also the column to reorder would be spanned after the move.
					return false;
				}
			}

			return true;
		}
function(oColumn, iNewIndex) {
			var oTable = oColumn.getParent();

			if (!oTable || iNewIndex === undefined || !TableColumnUtils.isColumnMovable(oColumn)) {
				// Column is not movable at all
				return false;
			}

			iNewIndex = TableColumnUtils.normalizeColumnMoveTargetIndex(oColumn, iNewIndex);

			if (iNewIndex < oTable.getComputedFixedColumnCount() || iNewIndex < oTable._iFirstReorderableIndex) {
				// No movement of fixed columns or e.g. the first column in the TreeTable
				return false;
			}

			var iCurrentIndex = oTable.indexOfColumn(oColumn),
				aColumns = oTable.getColumns();

			if (iNewIndex > iCurrentIndex) { // Column moved to higher index
				// The column to be moved will appear after this column.
				var oBeforeColumn = aColumns[iNewIndex >= aColumns.length ? aColumns.length - 1 : iNewIndex];
				var oTargetBoundaries = TableColumnUtils.getColumnBoundaries(oTable, oBeforeColumn.getId());
				if (TableColumnUtils.hasHeaderSpan(oBeforeColumn) || oTargetBoundaries.endIndex > iNewIndex) {
					return false;
				}
			} else {
				var oAfterColumn = aColumns[iNewIndex]; // The column to be moved will appear before this column.
				if (TableColumnUtils.getParentSpannedColumns(oTable, oAfterColumn.getId()).length != 0) {
					// If column which is currently at the desired target position is spanned by previous columns
					// also the column to reorder would be spanned after the move.
					return false;
				}
			}

			return true;
		}
function ( oColumn , iNewIndex ) { var oTable = oColumn . getParent ( ) ; if ( ! oTable || iNewIndex === undefined || ! TableColumnUtils . isColumnMovable ( oColumn ) ) { // Column is not movable at all return false ; } iNewIndex = TableColumnUtils . normalizeColumnMoveTargetIndex ( oColumn , iNewIndex ) ; if ( iNewIndex < oTable . getComputedFixedColumnCount ( ) || iNewIndex < oTable . _iFirstReorderableIndex ) { // No movement of fixed columns or e.g. the first column in the TreeTable return false ; } var iCurrentIndex = oTable . indexOfColumn ( oColumn ) , aColumns = oTable . getColumns ( ) ; if ( iNewIndex > iCurrentIndex ) { // Column moved to higher index // The column to be moved will appear after this column. var oBeforeColumn = aColumns [ iNewIndex >= aColumns . length ? aColumns . length - 1 : iNewIndex ] ; var oTargetBoundaries = TableColumnUtils . getColumnBoundaries ( oTable , oBeforeColumn . getId ( ) ) ; if ( TableColumnUtils . hasHeaderSpan ( oBeforeColumn ) || oTargetBoundaries . endIndex > iNewIndex ) { return false ; } } else { var oAfterColumn = aColumns [ iNewIndex ] ; // The column to be moved will appear before this column. if ( TableColumnUtils . getParentSpannedColumns ( oTable , oAfterColumn . getId ( ) ) . length != 0 ) { // If column which is currently at the desired target position is spanned by previous columns // also the column to reorder would be spanned after the move. return false ; } } return true ; }
Returns true if the column can be moved to the desired position.

Note: The index must be given for the current table setup (which includes the column itself).

@param {sap.ui.table.Column} oColumn Column of the table.
@param {int} iNewIndex the desired new index of the column in the current table setup.
@returns {boolean} Whether the column can be moved to the desired position.
Returns true if the column can be moved to the desired position .