Mit LOOP AT SCREEN kommst Du nicht weit.
Du könntest zwar in der PARAMETERS-Anweisung den Zusatz USER-COMMAND verwenden, aber dann zieht die Prüfung, ob das Feld obligatorisch ist auch, wenn Du gerade die Markierung der Checkbox rückgängig machen willst.
Besser ist, bei AT SELECTION SCREEN zu prüfen, ob die CHECKBOX markiert ist, und dann manuell zu prüfen, ob das "Mussfeld" versorgt ist.
Wenn Du P_WERKS und FRAGE (ich nehme an, es ist ein Parameter) in ein SELECTION-SCREEN BEGIN/END OF BLOCK xyz steckst,
kannst Du die Prüfung bei AT SELECTION-SCREEN ON BLOCK xyz vornehmen.
Dann sind bei einem Fehler auch nur FRAGE und P_WERKS eingabebereit.
Nachteil: Die Prüfung zieht z.B. auch, wenn jemand in eine SELECT-OPTION zusätzliche Einträge aufnehmen möchte, also noch gar nicht die Absicht hat, START-OF-SELECTION auszuführen.
Das kannst Du ändern, indem Du eine Anweisung
aufnimmst, und in der Prüfung bei AT SELECTION-SCREEN ... auch noch SSCRFIELDS-UCOMM prüfst.
BTW: screen-required =
'1'. vermeidet eine unnötige Typ-Konvertierung.