src/sap.ui.table/src/sap/ui/table/TableColumnUtils.js
function(oTable) {
			var i;
			var oColumn;
			var oColumnMapItem = {};
			var oColumnMap = {};
			var aColumns = oTable.getColumns();

			var iMaxLevel = TableColumnUtils.TableUtils.getHeaderRowCount(oTable);

			var oParentReferences = {};

			for (var iColumnIndex = 0; iColumnIndex < aColumns.length; iColumnIndex++) {
				oColumn = aColumns[iColumnIndex];
				oColumnMapItem = {};
				oColumnMapItem.id = oColumn.getId();
				oColumnMapItem.column = oColumn;
				oColumnMapItem.levelInfo = [];
				oColumnMapItem.parents = [];

				for (var iLevel = 0; iLevel < iMaxLevel; iLevel++) {
					oColumnMapItem.levelInfo[iLevel] = {};
					oColumnMapItem.levelInfo[iLevel].spannedColumns = [];

					var iHeaderSpan = TableColumnUtils.getHeaderSpan(oColumn, iLevel);
					// collect columns which are spanned by the current column
					for (i = 1; i < iHeaderSpan; i++) {
						var oSpannedColumn = aColumns[iColumnIndex + i];
						if (oSpannedColumn) {
							var sPannedColumnId = oSpannedColumn.getId();
							oColumnMapItem.levelInfo[iLevel].spannedColumns.push(aColumns[iColumnIndex + i]);
							if (!oParentReferences[sPannedColumnId]) {
								oParentReferences[sPannedColumnId] = [];
							}
							oParentReferences[sPannedColumnId].push({column: oColumn, level: iLevel});
						}
					}
				}

				oColumnMap[oColumnMapItem.id] = oColumnMapItem;
			}

			var aColumnIds = Object.keys(oParentReferences);
			for (i = 0; i < aColumnIds.length; i++) {
				var sColumnId = aColumnIds[i];
				oColumnMap[sColumnId].parents = oParentReferences[sColumnId];
			}

			return oColumnMap;
		}
function(oTable) {
			var i;
			var oColumn;
			var oColumnMapItem = {};
			var oColumnMap = {};
			var aColumns = oTable.getColumns();

			var iMaxLevel = TableColumnUtils.TableUtils.getHeaderRowCount(oTable);

			var oParentReferences = {};

			for (var iColumnIndex = 0; iColumnIndex < aColumns.length; iColumnIndex++) {
				oColumn = aColumns[iColumnIndex];
				oColumnMapItem = {};
				oColumnMapItem.id = oColumn.getId();
				oColumnMapItem.column = oColumn;
				oColumnMapItem.levelInfo = [];
				oColumnMapItem.parents = [];

				for (var iLevel = 0; iLevel < iMaxLevel; iLevel++) {
					oColumnMapItem.levelInfo[iLevel] = {};
					oColumnMapItem.levelInfo[iLevel].spannedColumns = [];

					var iHeaderSpan = TableColumnUtils.getHeaderSpan(oColumn, iLevel);
					// collect columns which are spanned by the current column
					for (i = 1; i < iHeaderSpan; i++) {
						var oSpannedColumn = aColumns[iColumnIndex + i];
						if (oSpannedColumn) {
							var sPannedColumnId = oSpannedColumn.getId();
							oColumnMapItem.levelInfo[iLevel].spannedColumns.push(aColumns[iColumnIndex + i]);
							if (!oParentReferences[sPannedColumnId]) {
								oParentReferences[sPannedColumnId] = [];
							}
							oParentReferences[sPannedColumnId].push({column: oColumn, level: iLevel});
						}
					}
				}

				oColumnMap[oColumnMapItem.id] = oColumnMapItem;
			}

			var aColumnIds = Object.keys(oParentReferences);
			for (i = 0; i < aColumnIds.length; i++) {
				var sColumnId = aColumnIds[i];
				oColumnMap[sColumnId].parents = oParentReferences[sColumnId];
			}

			return oColumnMap;
		}
function ( oTable ) { var i ; var oColumn ; var oColumnMapItem = { } ; var oColumnMap = { } ; var aColumns = oTable . getColumns ( ) ; var iMaxLevel = TableColumnUtils . TableUtils . getHeaderRowCount ( oTable ) ; var oParentReferences = { } ; for ( var iColumnIndex = 0 ; iColumnIndex < aColumns . length ; iColumnIndex ++ ) { oColumn = aColumns [ iColumnIndex ] ; oColumnMapItem = { } ; oColumnMapItem . id = oColumn . getId ( ) ; oColumnMapItem . column = oColumn ; oColumnMapItem . levelInfo = [ ] ; oColumnMapItem . parents = [ ] ; for ( var iLevel = 0 ; iLevel < iMaxLevel ; iLevel ++ ) { oColumnMapItem . levelInfo [ iLevel ] = { } ; oColumnMapItem . levelInfo [ iLevel ] . spannedColumns = [ ] ; var iHeaderSpan = TableColumnUtils . getHeaderSpan ( oColumn , iLevel ) ; // collect columns which are spanned by the current column for ( i = 1 ; i < iHeaderSpan ; i ++ ) { var oSpannedColumn = aColumns [ iColumnIndex + i ] ; if ( oSpannedColumn ) { var sPannedColumnId = oSpannedColumn . getId ( ) ; oColumnMapItem . levelInfo [ iLevel ] . spannedColumns . push ( aColumns [ iColumnIndex + i ] ) ; if ( ! oParentReferences [ sPannedColumnId ] ) { oParentReferences [ sPannedColumnId ] = [ ] ; } oParentReferences [ sPannedColumnId ] . push ( { column : oColumn , level : iLevel } ) ; } } } oColumnMap [ oColumnMapItem . id ] = oColumnMapItem ; } var aColumnIds = Object . keys ( oParentReferences ) ; for ( i = 0 ; i < aColumnIds . length ; i ++ ) { var sColumnId = aColumnIds [ i ] ; oColumnMap [ sColumnId ] . parents = oParentReferences [ sColumnId ] ; } return oColumnMap ; }
Collects and returns information about the current column configuration of the table.

@param {sap.ui.table.Table} oTable Instance of the table.

@type {Object} ColumnMapItemLevelInfo
@type {sap.ui.table.Column[]} ColumnMapItemLevelInfo.spannedColumns Array of columns which are spanned by the source column

@type {Object} ColumnMapItemParents
@type {sap.ui.table.Column} ColumnMapItemParents.column Column reference
@type {int} ColumnMapItemParents.level Level as which the parent resides

@type {Object} ColumnMapItem
@type {string} oColumnMapItem.id Column ID
@type {sap.ui.table.Column} oColumnManItem.column Column instance
@type {ColumnMapItemLevelInfo[]} oColumnMapItem.levelInfo Array of level information. Each index represents one level of headers
@type {ColumnMapItemParents[]} oColumnMapItem.parents Array of parents of the source column

@type {Object.<string, ColumnMapItem>} ColumnMap
@type {ColumnMapItem} ColumnMap.<columnID> Object with information about column where the column ID is the key

@returns {ColumnMap} Map of column information where the key is the column ID,
@private
Collects and returns information about the current column configuration of the table .