Skip to Content
0
Former Member
Nov 29, 2006 at 03:19 PM

Problem with selection-screen

44 Views

I have a first parameter which is P_PERNR,

IF I enter It and I push enter the others parameters assigned.

I want the others parameters to be avalaible to modify.

If I use AT SELECTION-SCREEN OUTPUT fto assign the fields :

I can modify them but if I push enter they are overwrited by the fields selected with P_PERNR

If I use AT SELECTION-SCREEN ON P_PERNR to assign the fields :

I can modify them but if I change the parameter P_PERNR I doesn't overwrite the others parameters with the new fields selected with P_PERNR.

Could you help me please?

I joined a copy of my code.

Thanks and regards

AT SELECTION-SCREEN ON p_pernr.

IF NOT p_pernr IS INITIAL.

SELECT SINGLE pernr FROM pa0003

INTO pa0003-pernr

WHERE pernr EQ p_pernr.

IF sy-subrc NE 0.

MESSAGE e319(01) WITH text-e01 p_pernr text-e02.

ENDIF.

  • Vérification de l'existence du NT user

CLEAR w_userid.

SELECT usrid UP TO 1 ROWS

FROM pa0105

INTO w_userid

WHERE subty EQ '0003'

AND pernr EQ p_pernr

AND endda GT sy-datum.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e319(01) WITH text-e01 p_pernr text-e03.

ENDIF.

  • Vérification de l'existence de l'addresse mail

CLEAR p_mail.

SELECT usrid_long UP TO 1 ROWS

FROM pa0105

INTO p_mail

WHERE subty EQ '0010'

AND pernr EQ p_pernr

AND endda GT sy-datum.

ENDSELECT.

IF sy-subrc NE 0 OR p_mail IS INITIAL.

MESSAGE e319(01) WITH text-e08 text-e09.

ENDIF.

ELSE.

MESSAGE e319(01) WITH text-e04.

ENDIF.

*AT SELECTION-SCREEN OUTPUT.

SELECT nachn vorna UP TO 1 ROWS

FROM pa0002

INTO (p_nachn, p_vorna)

WHERE pernr = p_pernr.

ENDSELECT.

IF sy-subrc NE 0.

CLEAR p_nachn.

CLEAR p_vorna.

ENDIF.

  • SELECT usrid_long UP TO 1 ROWS

  • FROM pa0105

  • INTO p_mail

  • WHERE pernr = p_pernr

  • AND subty = '0010'

  • AND endda GT sy-datum.

  • ENDSELECT.

  • IF sy-subrc NE 0.

  • CLEAR p_mail.

  • ENDIF.

  • Détermination de la start date et de la last date pour l'affectation des roles

  • Ici cette détermination provisoire ne sert qu'à l'affichage.

SELECT begda endda UP TO 1 ROWS

FROM pa0001

INTO (p_begda, p_endda)

WHERE pernr = p_pernr

ORDER BY begda DESCENDING.

ENDSELECT.

  • Si la date de début est dans le passé on fixe la date de début en date du jour

IF p_begda LT sy-datum AND NOT p_begda IS INITIAL.

MOVE sy-datum TO p_begda.

ENDIF.

END-OF-SELECTION.