2012-07-27 14 views
5

The pictureJak wybrać wiele zakresów dla parametru BEZ pierwszego napełnienia wszystkich pozostałych wymaganych parametrów?

Chciałbym mieć możliwość wyboru wielu zakresów dla "Nr zamówienia sprzedaży"

Problem: gdy naciśniesz przycisk oznaczony kolorem zielonym, pojawia się komunikat "Wypełnij wszystkie wymagane pola".

Umieściłem mój główny blok przetwarzania na zdarzeniu START-OF-SELECTION.

Co zrobić, aby tego nie robić? Wydaje mi się, że powinienem móc dodawać wiele selekcji bez kłopotów z pierwszym wypełnianiem każdego innego obowiązkowego pola.

Odpowiedz

6

Po ustawieniu parametrów/select-options na OBLIGATORY, to nie zadziała. Miałem bardzo sam problem jakiś czas temu, i nie miał szans na wypełnienie obowiązkowych parametrów wejściowych z przydatnych wartości domyślnie, więc zrobiłem następujące:

  • Usuń opcję obowiązkowa ze wszystkich select-opcje i parametry
  • Uchwyt czek dla obowiązkowego wejścia się w przypadkach nie F4, pomoc pomoc F1 lub przycisk obok każdego przycisku opcji wybierz:

Kod:

AT SELECTION-SCREEN ON s_reswk. 

IF sy-ucomm(1) <> '%' AND  " sel screen action request 
    sy-ucomm(1) <> '_' AND  " scope option 
    s_reswk IS INITIAL.   " Obligatory input missing 
    MESSAGE text-e01 TYPE 'E'. " Error message 
ENDIF. 
+3

... i podczas gdy jesteś w tym miejscu, użyj klasy wiadomości. Umożliwi to późniejsze dodanie tekstu dokumentacji. – vwegert

-2

Oto co odkryłem, że całkowicie odtwarza zachowanie ustawione przez dodanie OBLIGATORY:

1: Wyjmij dodatek "OBOWIĄZKOWY".

2: w PBO:

LOOP AT SCREEN. 
    IF screen-name cs 'name-of-your-select-options-or-parameter'. 
    screen-required = 2. 
    MODIFY SCREEN. 
    ENDIF. 

3: co PAI

if sscrfields-ucomm = 'ONLI'. 
    if 'name of your select-option-or-parameter' is initial. 
     clear sscrfields. 
     message 'Fill in all required fields.'(009) type 'E'. 
    endif. 
    endif. 

Wskazówki pierwszy if zawiera operator logiczny A 'CS'. To dlatego, że nazwa twojej kontroli będzie zawierać także inne dziwne rzeczy. Na przykład% _P_MATNR_% SCREEN %% (gdzie twoim parametrem był p_matnr).

Konieczne jest również oświadczenie: TABLES sscrfields..

+2

To jest naprawdę zły pomysł. W ten sposób wymuszasz wpisanie wymaganego pola podczas bezpośredniego uruchamiania programu, ale użytkownik będzie mógł zaplanować to zadanie w tle bez wprowadzania tego samego parametru. Ponadto, zgodnie z dokumentacją, wymagany ekran przyjmuje wartość 0 lub 1. Ustawienie na 2 może teraz działać, ale zmień jego działanie lub całkowicie przestań działać bez dodatkowego ostrzeżenia. – vwegert

Powiązane problemy