To help qualify the @JamesLevrsha solution I tested his script:
inFC = r'd:\scratch\centres.shp'
outFC = r'd:\scratch\centres_Copy.shp'
searchField = 'CODE'
desiredVal = 'PPA'
searchCur = arcpy.SearchCursor(inFC, fields = searchField)
inCur = arcpy.InsertCursor(outFC)
for sRow in searchCur:
rowVal = sRow.getValue(searchField)
print rowVal
if rowVal == desiredVal:
row = inCur.newRow()
row.setValue(searchField, rowVal)
inCur.insertRow(row)
del sRow,row,inCur,searchCur
on 2 shapefiles, with single field "CODE" populated by single value "PPA".
Output feature class (outFC) shown as red points, input FC (inFC) shown as green points:

I run the script and reduced the size of the symbol of green points, so that I can see appended points.
Result:

Why is this happening?
Because as expected the script creates records with NULL geometry.
This is how red points table looks like after exporting to file geodatabase feature class and computing coordinates of the points:

As I already mentioned in my comments solution by @JamesLeversha is wrong.