Vamos por parte:
Para poner un menu de entorno en una transaccion propia diferente a la standard lo que yo hago es:
Me defino la botonera que deseo ( nombre de cada boton , funcion que va a efectuar, icono asociado ) esto se efectua por se41 .Despues desde el pbo de la transaccion llamo al status que me ha definido
PROCESS BEFORE OUTPUT.
MODULE STATUS_0500.
CALL SUBSCREEN: .......................
en mi caso era un screnn con subscreen incrustado
El codigo de module status puede ser algo similar a esto
DATA: extab TYPE slis_t_extab WITH HEADER LINE.
MODULE status_0500 OUTPUT.
CLEAR: extab, extab[].
extab-fcode = 'ASC_'.
APPEND extab.
extab-fcode = 'DESC_'.
APPEND extab.
:
:
:
SET TITLEBAR '0500'.
SET PF-STATUS 'SCREEN_500'
EXCLUDING extab.
:
:
ENDMODULE.
Donde : extab es un objeto con una definicion standard de sap para excluir determinados botones segun criterio
SET TITLEBAR '0500'. el titulo que deseamos y que aparece en la parte superior.
SET PF-STATUS 'SCREEN_500'
EXCLUDING extab. Llamada al objeto que hemos creado
Para le ajecucion de las acciones a realizar en cada boton se le asocia u Function a realizar
En el PAI definimos
PROCESS AFTER INPUT.
:
:
MODULE user_command_0500.
:
:
y para la ejecucion del module
MODULE user_command_0500 INPUT.
save_ok = sy-ucomm.
CLEAR w_data.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'OK'.
PERFORM aceptar.
WHEN 'CANCEL' OR 'EXIT'.
SET SCREEN 0.
WHEN 'ASC_'.
WHEN 'DES_'.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
Son varios pasos, y lo ha resumido lo mejor que he podido espero que te ayude y no te lie mas.
2º)
Para modificar los atributos de un campo de una dynpro
LOOP AT SCREEN.
IF screen-group1 = '1'.
screen-input = ''.
MODIFY SCREEN.
ENDIF.
*
IF screen-group1 = '8'.
screen-value_help = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
puedes utilizar tambien screen-name para un campo determinado y los screen-group para una asociacion de campos.
En las ayudas de SAP tienes los distintos campos que tiene el objeto SCREEN-