Tela MVC com vários itens no menu Alterar

Cirilo,

Procurei algo assim, mas não encontrei.

Acredito que encapsular as funções pode ser a melhor opção, e assim preencher variáveis estáticas, verificar a stack etc. Eu costumo criar variáveis estáticas e acessá-las via alguma função ou método estático, assim evito utilizar variáveis private e também ninguém manipula as variáveis, os métodos apenas efetuam a leitura.

Existem rotinas no Protheus que tem esse comportamento que você cita, ou igual ou muito semelhante, mas essa etapa 1, etapa 2 é salva junto por exemplo a tabela pai da rotina, então com base nesse campo que salvo a etapa, a rotina acaba tendo comportamentos diferentes, como grids abertos em somente leitura, campos que mudam de validação ou desabilitam via X3_WHEN etc.