Binding one backing bean attribute to many input fields seems weird to me. Try passing the component value as an argument to changeValor():
<pe:inputNumber value="#{BB.valor}" rendered="#{row.isUpdatable(fecha)}" >
<p:ajax event="change" listener="#{BB.changeValor(component.value, fecha, row, i)}" />
</pe:inputNumber>
Or better yet use a remote command. Place the following outside your table:
<pe:remoteCommand name="changeValor"
process="@this"
actionListener="#{BB.changeValor}"
global="false"
partialSubmit="true">
<pe:methodSignature parameters="java.lang.String, java.lang.String, java.lang.String, java.lang.String" />
<pe:methodParam name="valor" />
<pe:methodParam name="fecha" />
<pe:methodParam name="row" />
<pe:methodParam name="i" />
</pe:remoteCommand>
Don't forget to corrent the parameter types.
Now the markup for the inputNumber:
<pe:inputNumber value="#{BB.valor}" rendered="#{row.isUpdatable(fecha)}" onchange="changeValor(this.value, #{fecha}, #{row}, #{i})" />
</pe:inputNumber>