So you are foring through the number rows in dt3 but affecting dt seems like an issue first off. Plus the syntax is either :Keyword[k] or Column(dt, "Keyword")[k] or dt:Keyword[k].
Here's a corrected one
Names Default to Here( 1 );
dt = new table("Test",
New Column("Keyword", character, <<Set Values({"abC", "Def", "ABC", "abcdfe"}))
);
For( k = 1, k <= N Rows( dt/*dt3*/ ), k++,
//Column( dt, :KEYWORD)[k] = UpperCase( Column( dt, :KEYWORD)[k])
Column(dt, "Keyword")[k] = UPPERCASE(Column(dt, "KEYWORD")[k]);
//or
//:Keyword[k] = Uppercase(:Keyword[k]);
);
But it'd likely be faster to just do all of them at once and set values.
values = Column(dt, "Keyword") << Get Values();
u_values = parse(uppercase(char(values)));
Column(dt, "Keyword") << Set values(u_values);