Look at your incost dataset. Using just $ defines a variable with a length of 8, which is too short for your values ("Santander" has 9 characters, and the UTF characters in "Medellín" cause the actual data to be longer).
This data step will create a dataset where the rest of the code works:
data incost;
input Product $ Plant :$9. DC :$10. incost;
datalines;
P1 Barranqu Bogotá 130
P1 Barranqu Medellín 90.6
P1 Barranqu Cali 142
P1 Santander Bogotá 53.6
P1 Santander Medellín 41.6
P1 Santander Cali 88.8
P2 Barranqu Bogotá 130
P2 Barranqu Medellín 90.6
P2 Barranqu Cali 142
P2 Santander Bogotá 53.6
P2 Santander Medellín 41.6
P2 Santander Cali 88.8
;
... View more