tabularx ohne X-Spalten ist sinnlos, weil
tabularx nur die Breite von X-Spalten aber nicht die Breite von c-Spalten anpassen kann, um die gewünschte Tabellenbreite zu erreichen. Also wäre im Beispiel
\documentclass{scrreprt}
\begin{document}
\begin{table}[htbp]
\caption[]{Testtabelle.}
\begin{tabular}{ c c c c | c c c | c c c }
\multicolumn{4}{l|}{\textbf{Fett 1}}&\multicolumn{3}{
l|}{\textbf{Fett 2}}&\multicolumn{3}{l}{\textbf{Fett 3}}\\
S11111&S22222&S33333& S44444&S55555&S66666&S7777&S8888&S9999 &S10\\
\hline
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
\end{tabular}
\end{table}
\end{document}
hinreichend. Fügt man noch ein \usepackage{showframe} ein, sieht man außerdem, dass bereits bei dieser
natürlichen Breite der Spalten die Tabelle insgesamt zu breit für die Seite ist. Daraus ergibt sich auch Dein Problem bei Verwendung von tabularx. tabularx kann nämlich eine Tabelle nicht schmal machen, als sie min. sein müsste, wenn in den Zellen kein Umbruch möglich ist. Es sind dann ggf. nur die horizontalen Linien schmaler.
Eine Möglichkeit, dieses Problem im gezeigten Beispiel zu lösen, wäre die geringfügige Reduzierung des Spaltenabstands:
\documentclass{scrreprt}
\usepackage{showframe}
\begin{document}
\begin{table}[htbp]
\centering
\setlength{\tabcolsep}{.95\tabcolsep}
\caption[]{Testtabelle.}
\begin{tabular}{ c c c c | c c c | c c c }
\multicolumn{4}{l|}{\textbf{Fett 1}}&\multicolumn{3}{
l|}{\textbf{Fett 2}}&\multicolumn{3}{l}{\textbf{Fett 3}}\\
S11111&S22222&S33333& S44444&S55555&S66666&S7777&S8888&S9999 &S10\\
\hline
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
aa & bb & cc & dd & ee & ff & gg & hh & ii & jj \\
\end{tabular}
\end{table}
\end{document}
Zu Deiner eigentlichen Fragen: Kann es sein, dass Du horizontal und vertikal verwechselt hast? Die vertikalen Linien sind bei Dir deshalb nicht durchgehen, sondern gegeneinander verschoben, weil Du nicht beachtet hast, dass bei Verwendung von \multicolumn außer bei der Linie vor der ersten Spalte, die Linien immer rechts von der Spaltendeklaration anzugeben sind und nicht links, wie Du das gemacht hast. Vergl. meine Lösungen oben.