According to the topic How to use commands in table specs, and still support array package? I have tried to intense the way of creating tables, definitions.
\documentclass[fontsize=11pt, % Document font size
paper=a4, % Document paper type
twoside=false, % Shifts odd pages to the left for easier reading when printed, can be changed to oneside
captions=tableheading,
index=totoc,
% paper=landscape,
hyperref]{scrreprt}
\usepackage[T1]{fontenc} % Use 8-bit encoding that has 256 glyphs
\usepackage[utf8]{inputenc} % Uses the utf8 input encoding
\usepackage{graphicx} % Required for including images
\usepackage{booktabs,array,ragged2e,multirow}
\newcolumntype{M}[1]{>{\hspace{0pt}\raggedright\arraybackslash}m{#1}}
\usepackage{xcolor}
\usepackage{longtable} % can be commented out, approach is an very generic method of tablespec
\usepackage{tabu} % can be commented out, approach is an very generic method of tablespec
\usepackage{xspace}
\begin{document}
\providecommand{\hlttextacs}{3}
\providecommand{\hlttextbcs}{4}
\providecommand{\tablecolumndira}{M}
\providecommand{\tablecolumndirb}{M}
\providecommand{\commandatablecolumnaligna}{M}
\providecommand{\commandatablecolumndesignaa}{!{\color{white}}
\providecommand{\commandatablecolumndesignba}{\vrule width 0.2em}}
\providecommand{\commandatablecolumnalignb}{M}
\providecommand{\commandatablecolumndesignab}{!{\color{white}}
\providecommand{\commandatablecolumndesignbb}{\vrule width 0.2em}}
\def\mytablespec{\commandatablecolumnaligna\commandatablecolumndesignaa\commandatablecolumndesignba\commandatablecolumnalignb\commandatablecolumndesignab\commandatablecolumndesignbb}
\def\mytabletype{longtable}
\expandafter\csname\expandafter\mytabletype\expandafter\endcsname\expandafter{\mytablespec}
1 & 2 \\\hline
3 & 4 \\
\csname end\mytabletype\endcsname
\end{document}
It shout be a more generic way to make tablespecifications during commands.
Maybe it is now more clear whats the approach.
UPDATE:
I have some commands defined like
\callmytable{A,B,C}{3,4,5}{M,M,M}
Currently it will result in commands for 3,4,5 (each) and the header of my table is...
M{\hlttextacs cm}!{\color{white}\vrule width 0.2em}M{\hlttextbcs cm}!{\color{white}\vrule width 0.2em}M{\hlttextccs cm}
With this command inside the document, I can manipulate my table, and I will decide how many columns my table has, but not from the beginning of the document. The definition should be made during this command. Using datatool, my tables load csv files, sometimes I want another alignment on table a, sometimes on table b.
Currently, I have for each csv file structure a separate command.
\twocolumnstable....
\threecolumstable....
If I can handle this table specification, the approach to reduce this commands to one is very near
\myowntablecommand{A,B,C}{2,3,4}{M,M,M}{pathtocsvfile}....
results in nice tables.

\newcolumntypeafter\begin{document}. And there is no problem to redefine a spec by reusing\newcolumntype. array will only issue a warning in such cases. Also columntypes can have arguments (like the p-Type) which you can use e.g. with *{num}. – Ulrike Fischer Oct 16 '14 at 11:46