“.” , “(“ and “)” are not acceptable character values to use for an ESRI SDE Geodatabase field name.
FME knows this, so you are getting a message that FME is instead substituting the “_” in the field name being written instead since “_” is an acceptable character in ESRI Geodatabase field names.
Beyond that, if using the SDE Writer, don’t attempt to write the Area or Length values, SDE will do that for you so you don’t need to call Eg. STArea() from the upstream Reader/SQLCreator/SQLExecutor. From memory all that is needed is a blank shape_length and shape_area attribute within the Writer and this will reliably trigger SDE to calculate the value(s) within the SDE API itself during insert or update.
Similarly if really do need read in shape_length or shape_area in the workspace, change the SQL to ...Shape.STArea() AS shape_area and Shape.STLength() AS shape_length
I’ve encountered this annoying warning today.
Beyond that, if using the SDE Writer, don’t attempt to write the Area or Length values, SDE will do that for you
When using a dynamic writer, you can’t control this, as it’s in the schema as read using the SDE reader, unless there’s an option I can’t see to exclude these when using an ArcSDE reader?
I’ve put in a small bit of python code to change the . to a _ which gets rid of the warning at least. I’m only writing into existing feature classes so that doesn’t cause a problem for me. You’d have to do something more complicated if dynamically creating tables.
import fme
import fmeobjects
def processFeature(feature):
attributelist = feature.getAttribute('attribute{}.name')
for i,val in enumerate(attributelist):
if "." in val:
feature.setAttribute('attribute{'+str(i)+'}.name',val.replace(".","_"))