You could create an array of robtargets. In this way, there is only one "named" robtarget but it contains a different position for each part type. When you modify the position, it will ask you which element you would like to update.
Code
CONST robtarget pAtGrabPosition{3}:=[
[[172.52,155.40,5.87],[0.000331694,-0.999943,0.0106272,-8.62312E-05],[1,-2,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[159.08,156.43,5.89],[0.00400481,-0.00228554,-0.999987,0.00224012],[1,-2,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[158.53,154.19,6.94],[0.00295511,-0.00246473,-0.999991,0.00166861],[1,-2,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]
];
To go to the different positions you need to provide a number that corresponds to the data inside the array. This could be another num variable that gets updated based on something like a group input
Code
VAR num nPartType;
nPartType:=giPartTypeFromPLC;
MoveL pAtGrabPosition{nPartType},v200,fine,tool_Gripper\WObj:=wobj_Conveyor;
In this way, the same movement instruction can be updated to go the correct position for each part type.