ich würde auf jeden Fall mal debuggen und mir den Inhalt der internen Tabelle zur Laufzeit ansehen.
Wenn du aber einen sy-subrc = 4 bekommst, heißt das einfach, dass er die Materialnummer in ls_colmap_data-matnr nicht in der internen Tabelle findet.
Du musst also sicher gehen, dass der Inhalt der Tabelle auch die gesuchte Materialnummer als Schlüssel enthält.
im debugger kann ich auf das Feld matnr von data-position_data nicht zugreifen. wenn ich im debugger data-position_data-matnr eingebe, dann kommt: ungültige variable.
jetzt wirds kompliziert:
data ist eine klassenschnittstelle. im bezugstyp ist die struktur zpd und in dieser struktur ist der Tabellentyp von Position_data.