Alguns campos devem ser encerrados ou abertos consoante as opções do utilizador. É preferível ocultar toda a subtela, se possível, senão pode-se colocar um módulo no PBO (primeiro módulo do PBO) para fazer esse tratamento. Por regra defino que todos os campos editáveis estão por defeito como abertos.
process before output.
module m_set_screen.
module m_set_screen.
Diferentes condições podem gerar o encerramento do campo. No exemplo seguinte, os campos do topo são encerrados quando o objecto de execução está instanciado (ou seja a acção já está definida) e as transacções específicas de fabrico e desfabrico estão impedidas de alterar o tipo de acção.
module m_set_screen output.
if w_data-instance is bound.
loop at screen.
if screen-group1 = 'TOP'.
clear screen-input.
modify screen.
endif.
endloop.
endif.
* Bloqueia campos via transaction
if sy-tcode = 'ZLOGMM_FAB'.
loop at screen.
if screen-name = 'W_DATA-TOP-ACTION'
or screen-name = 'W_DATA-TOP-REFDOC'.
clear screen-input.
modify screen.
endif.
endloop.
elseif sy-tcode = 'ZLOGMM_DESFAB'.
loop at screen.
if screen-name = 'W_DATA-TOP-ACTION'.
clear screen-input.
modify screen.
endif.
endloop.
endif.
endmodule. " M_SET_SCREEN OUTPUT
if w_data-instance is bound.
loop at screen.
if screen-group1 = 'TOP'.
clear screen-input.
modify screen.
endif.
endloop.
endif.
* Bloqueia campos via transaction
if sy-tcode = 'ZLOGMM_FAB'.
loop at screen.
if screen-name = 'W_DATA-TOP-ACTION'
or screen-name = 'W_DATA-TOP-REFDOC'.
clear screen-input.
modify screen.
endif.
endloop.
elseif sy-tcode = 'ZLOGMM_DESFAB'.
loop at screen.
if screen-name = 'W_DATA-TOP-ACTION'.
clear screen-input.
modify screen.
endif.
endloop.
endif.
endmodule. " M_SET_SCREEN OUTPUT
Sem comentários:
Enviar um comentário