Esta quase resolvido, me falta saber como criar o facet dentro do MB, tentei algo assim e não deu certo apenas o inicio que se refere ao facet, o resto pode acreditar que funciona na boa ok galera. 
Vejam que nas variaveis Teste e teste2, teoricamente funciona, tanto que não dá erro, mas simplesmente não recria o cabecalho, me falta saber como criar o componente FACET ai fechou e garanto que quando conseguir vou mandar para todos ok amigos 
[b]Aqui vem a grande pergunta, até onde pude perceber criar um componente JSF basta declarar como UIComponent e/ou PanelGrid (por exemplo, se for do Primefaces), até ai tudo bem, mas como faço para dizer qual componente eu quero criar se for um componente do JSF?
E me corrijam se eu estiver errado, o <f:facet nada mais é que um componente do JSF certo?[/b]
Haaaa… Quanto ao resto fiquem tranquilos que funciona, claro que criei um <p:panelGrid dentro da pagina ok, segue o código:
Quando voces lerem o codigo, aqui é 3 tabelas: pai + filho + filho do filho e preciso saber os tais rowspan e colspan de cada um ok.
PAGIA XHTML
<p:scrollPanel id="nativeScroll" style="height:650px;">
<p:panelGrid id="gridDiagnostico" style="width: 100%;">
<f:facet name="header">
<p:row>
<p:column colspan="8">DIAGNÓSTICO</p:column>
</p:row>
<p:row>
<p:column colspan="3">DEPARTAMENTO</p:column>
<p:column>CONTRATADO</p:column>
<p:column>APROVAÇÃO</p:column>
<p:column>TERCEIROS</p:column>
<p:column>APROVAÇÃO</p:column>
<p:column>NÃO SE APLICA</p:column>
</p:row>
</f:facet>
</p:panelGrid>
</p:scrollPanel>
MANAGEDBEAN
public void criaComponente() {
try {
ScrollPanel scrollPanel = (ScrollPanel) FacesContext.getCurrentInstance().getViewRoot().findComponent(":frmEmpreendimento:nativeScroll");
PanelGrid grid = (PanelGrid) FacesContext.getCurrentInstance().getViewRoot().findComponent(":frmEmpreendimento:gridDiagnostico");
Map<String, UIComponent> teste = grid.getFacets();
grid = new PanelGrid();
UIComponent teste2 = teste.get("header");
grid.getChildren().add(teste2);
String cSql = "select count(diagnostico_Nivel1.id_diagnostico_nivel1) as n_id "
+ "from diagnostico_Nivel1 left join diagnostico_Nivel2 on diagnostico_Nivel2.id_diagnostico_nivel1 = diagnostico_Nivel1.id_diagnostico_nivel1 "
+ "left join diagnostico_Nivel3 on diagnostico_Nivel3.id_diagnostico_nivel2 = diagnostico_Nivel2.id_diagnostico_nivel2 "
+ "group by diagnostico_Nivel1.id_diagnostico_nivel1 ";
this.selectedGetIdMaxList = this.getIdMaxJpa.getNativeSQL(cSql);
Row row1 = new Row();
Column col1 = new Column();
InputMask inputMask1 = new InputMask();
HtmlOutputText otexto = new HtmlOutputText();
int nSizeNivel1;
int nSizeNivel2;
int nSizeNivel3;
int nContador = 0;
// NIVEL 1
for (int i = 0; i < this.selectedEmpreendimentoLote.getProcessoDiagnosticoNivel1List().size(); i++) {
this.selectedGetIdMax = this.selectedGetIdMaxList.get(i);
nSizeNivel1 = this.selectedGetIdMax.getNId();
this.selectedProcessoDiagnosticoNivel1 = this.selectedEmpreendimentoLote.getProcessoDiagnosticoNivel1List().get(i);
row1 = new Row();
row1.setId("row" + ++nContador + i);
col1 = new Column();
if (this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List() != null) {
nSizeNivel2 = this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List().size();
} else {
nSizeNivel2 = 0;
}
if (nSizeNivel2 == 0) {
otexto = new HtmlOutputText();
otexto.setValue(this.selectedProcessoDiagnosticoNivel1.getDscDiagnosticoNivel1());
otexto.setId("inTexto1" + ++nContador + i);
col1.getChildren().add(otexto);
col1.setColspan(3);
col1.setId("col1" + ++nContador + i);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue(" ");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + i);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + i);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("99/99/9999");
inputMask1.setValue(this.selectedProcessoDiagnosticoNivel1.getDatAprovacao());
inputMask1.setId("inDat1" + ++nContador + i);
col1.getChildren().add(inputMask1);
col1.setId("col1c" + ++nContador + i);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + i);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + i);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("99/99/9999");
inputMask1.setValue(this.selectedProcessoDiagnosticoNivel1.getDatTerceiroAprovacao());
inputMask1.setId("inDat1b" + ++nContador + i);
col1.getChildren().add(inputMask1);
col1.setId("col1e" + ++nContador + i);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + i);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + i);
row1.getChildren().add(col1);
} else {
otexto = new HtmlOutputText();
otexto.setValue(this.selectedProcessoDiagnosticoNivel1.getDscDiagnosticoNivel1());
otexto.setId("inTexto1" + ++nContador + i);
col1.getChildren().add(otexto);
col1.setRowspan(nSizeNivel1);
col1.setId("col1" + ++nContador + i);
row1.getChildren().add(col1);
}
// NIVEL 2
if (this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List() != null) {
for (int j = 0; j < this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List().size(); j++) {
this.selectedProcessoDiagnosticoNivel2 = this.selectedProcessoDiagnosticoNivel1.getProcessoDiagnosticoNivel2List().get(j);
if (this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List() != null) {
nSizeNivel3 = this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List().size();
} else {
nSizeNivel3 = 0;
}
if (j > 0) {
grid.getChildren().add(row1);
row1 = new Row();
row1.setId("row" + ++nContador + i);
col1 = new Column();
}
if (nSizeNivel3 > 0) {
col1 = new Column();
otexto = new HtmlOutputText();
otexto.setValue(this.selectedProcessoDiagnosticoNivel2.getDscDiagnosticoNivel2());
otexto.setId("inTexto2" + ++nContador + j);
col1.setRowspan(nSizeNivel3);
row1.getChildren().add(col1);
// NIVEL 3
if (this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List() != null) {
for (int k = 0; k < this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List().size(); k++) {
this.selectedProcessoDiagnosticoNivel3 = this.selectedProcessoDiagnosticoNivel2.getProcessoDiagnosticoNivel3List().get(k);
if (k > 0) {
grid.getChildren().add(row1);
row1 = new Row();
row1.setId("row" + ++nContador + i);
col1 = new Column();
}
col1 = new Column();
otexto = new HtmlOutputText();
otexto.setValue(this.selectedProcessoDiagnosticoNivel3.getDscDiagnosticoNivel3());
otexto.setId("inTexto3" + ++nContador + k);
col1.getChildren().add(otexto);
col1.setId("col3a" + ++nContador + k);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + k);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + k);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("99/99/9999");
inputMask1.setValue(this.selectedProcessoDiagnosticoNivel3.getDatAprovacao());
inputMask1.setId("inDat3" + ++nContador + k);
col1.getChildren().add(inputMask1);
col1.setId("col3c" + ++nContador + k);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + k);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + k);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("99/99/9999");
inputMask1.setValue(this.selectedProcessoDiagnosticoNivel3.getDatTerceiroAprovacao());
inputMask1.setId("inDat3b" + ++nContador + k);
col1.getChildren().add(inputMask1);
col1.setId("col3e" + ++nContador + k);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + k);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + k);
row1.getChildren().add(col1);
}
}
} else {
// NIVEL 2 SEM NIVEL 3
col1.setColspan(2);
col1.getChildren().add(otexto);
col1.setId("col1b" + ++nContador + j);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + j);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + j);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("99/99/9999");
inputMask1.setValue(this.selectedProcessoDiagnosticoNivel2.getDatAprovacao());
inputMask1.setId("inDat2" + ++nContador + j);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + j);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + j);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + j);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("99/99/9999");
inputMask1.setValue(this.selectedProcessoDiagnosticoNivel2.getDatTerceiroAprovacao());
inputMask1.setId("inDat2b" + ++nContador + j);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + j);
row1.getChildren().add(col1);
col1 = new Column();
inputMask1 = new InputMask();
inputMask1.setMask("a*");
inputMask1.setValue("-");
inputMask1.setStyle("width: 10px; text-align: center; text-transform:uppercase;");
inputMask1.setId("inTexto1" + ++nContador + j);
col1.getChildren().add(inputMask1);
col1.setId("col1b" + ++nContador + j);
row1.getChildren().add(col1);
}
}
}
grid.getChildren().add(row1);
}
scrollPanel.getChildren().add(grid);
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Diagnóstico Incluido com Sucesso!", selectedEmpreendimentoLote.getDscLote());
} catch (Exception e) {
msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Incluir o Diagnóstico o Processo: ", selectedEmpreendimentoLote.getDscLote());
} finally {
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}