You can set the active or read only in exit ZXM06O01.
In the screen where you created the fields set a PBO MODULE end define it in the exit ZXM06O01
IF sy-tcode = 'ME23N'.
LOOP AT SCREEN.
IF SCREEN-NAME = 'YOUR FIELD'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
The problem is that you can navigate from display ME23N to Change (ME22N) using the menu and Im not sure if the sy-tcode is refreshed. If is not you could use this parameter to get the real sy-tcode
DATA: l_tcode TYPE SHKONTEXT-TCODE.
CALL ‘GET_PARAM_TCOD’ ID ‘PTCOD’ FIELD l_tcode.
Im not sure if will work.I usually use this PARAMETER ID for the FI transaction FB60 (but if you check the sy-tcode = FB01 and not FB60, that parameter show the real sy-tcode used)
Regards.