Pay attention to the types of the variables. You wrote
L_char1 = L_char$'temp1'[ { 3 2 1 } ] ; /* create new list of reversed character entries */
but actually L_char1 is a character vector (so shouldn't have an L_ prefix). Thus, you can't use the $ operator on it.
The next line has several errors. There is no named item 'temp'. You can't replace part of an item; you can only replace the item. You are attempting to assign a value that is longer than the character vector can hold.
Assuming your goal is to change the second element of L_char$'temp1', you can do it like this:
c = L_char$'temp1'; /* extract item */
print (nleng(c)); /* length is only 6 */
c[2] = 'middle string' ; /* change value (it will be truncated at 6 characters) */
L_char$'temp1' = c; /* update item */
call struct( L_char ) ;