I used a combination of spaces and replacements , but it gets out of hand quickly.
There must be added a feature for this IN THE NEXT MATHEMATICA VERSION FFS !!!
listNodesSubsystemView = Join[{ "XXX" -> "SubSystems"}, 
  Reverse[{"SubSystems" -> "SysVar1", "SubSystems" -> "SysVar2", 
    "SubSystems" -> "SysVar3"}],
  Reverse[
   {"SysVar1" -> "p1S1", "SysVar1" -> "p2S1", "SysVar1" -> "p3S1",
    "SysVar2" -> "p1S2", "SysVar2" -> "p2S2", "SysVar2" -> "p3S2",
    "SysVar3" -> "p3S3"}],
  Reverse[{"p1S1" -> "Sp11", "p1S1" -> "Sp12", "p2S1" -> "Sp21", 
    "p2S1" -> "Sp22",(*in system variant S1*)
    "p1S2" -> " Sp11", "p2S2" -> " Sp21", "p3S2" -> " Sp31", 
    "p3S2" -> " Sp32",(*in system variant S2*)
    "p3S3" -> "  Sp31"}]];(*in system variant S3*)
TreeSubSystem = 
 TreePlot[listNodesSubsystemView, Left, 
     First[ First[listNodesSubsystemView]], VertexLabeling -> True, 
     DirectedEdges -> True] /. "p2S1" | "p2S2" | "p2S3" -> "p2" /. 
   "p3S1" | "p3S2" | "p3S3" -> "p3" /. 
  "p1S1" | "p1S2" | "p1S3" -> "p1";
