Bei den KOMA-Script-Klassen kann man nichtnummerierte Einträge im Inhaltsverzeichnis entweder mit demselben Einzug wie nummerierte Einträge setzen, also quasi mit einer leeren Nummer, oder aber man setzt sie nach links auf den Anfang der Nummer gerückt. In beiden Fällen wird jedoch bei mehrzeiligen Einträgen ab der zweiten Zeile um die Weite eingerückt, die normalerweise für die Nummer reserviert wäre. Man nennt dies hängenden Einzug.
Um nun nicht nummerierte Einträge stattdessen in allen Zeilen linksbündig mit den Nummern der nummerierten Einträge zu setzen, kann man einen neuen Eintragstyp definitieren und diesen nur für die nicht nummerierten Einträge, also die Einträge mit leerer Nummer, verwenden:
\documentclass{scrbook}
\usepackage[ngerman]{babel}
\DeclareTOCStyleEntry[%
level=\sectiontocdepth,
indent:=section,
numwidth=0pt
]{section}{addsec}
\renewcommand*{\addsectiontocentry}[2]{%
\IfArgIsEmpty{#1}{%
\addtocentrydefault{addsec}{}{#2}%
}{%
\addtocentrydefault{section}{#1}{#2}%
}%
}
\begin{document}
\tableofcontents
\chapter{Test}
\section{Kurzer Eintrag}
\section{Ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz,
ganz, ganz, ganz, ganz, ganz, ganz langer Eintrag}
\addsec{Kurzer Eintrag}
\addsec{Ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz, ganz,
ganz, ganz, ganz, ganz, ganz, ganz langer Eintrag}
\end{document}
In gleicher Weise kann man auch für andere Ebenen verfahren. Nützlich ist dabei, dass man den Einzug indent der jeweiligen Ebene nicht kennen muss, um ihn für den neuen Typ zu setzen. Man nutzt stattdessen einfach Option indent:, der man als Wert den Namen einer bekannten Ebene übergibt, so dass deren Wert verwendet wird.