Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

SELECT-OPTIONS

Former Member
0 Kudos

I have a program like the one below. Once I select "p_test" it opens up another field to allow the input of a range.

However, if I change my mind and want to deselect "p_test", it seems like select options are not evaluated again, and it insists that I input values.

Is there a way I can turn off p_test, or do I have to exit the program and start again, once I select it?

PROGRAM zz_test.

DATA g_s_sflight TYPE sflight.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS p_test
  AS CHECKBOX
  USER-COMMAND p_test.
SELECT-OPTIONS s_carrid FOR g_s_sflight-carrid
  MODIF ID car.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS p_report
  AS CHECKBOX
  USER-COMMAND p_report.
SELECTION-SCREEN END OF BLOCK b2.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF p_test = 'X'.
      IF screen-group1 = 'CAR'.
        screen-active = '1'.
        screen-required = '1'.
        MODIFY SCREEN.
      ENDIF.
    ELSE.
      IF screen-group1 = 'CAR'.
        screen-active = '0'.
        screen-required = '0'.
        MODIFY SCREEN.
      ENDIF.
    ENDIF.
  ENDLOOP.

START-OF-SELECTION.
  SELECT * FROM sflight
  INTO g_s_sflight
  WHERE carrid IN s_carrid.
  ENDSELECT.

4 REPLIES 4

Former Member
0 Kudos

Hello,

Chekc this code:


PARAMETERS: SP_CHECK AS CHECKBOX USER-COMMAND CHECK.
SELECT-OPTIONS: SO_MATNR FOR MARA-MATNR MODIF ID GRP.

AT SELECTION-SCREEN OUTPUT.
  IF SP_CHECK IS INITIAL.
    LOOP AT SCREEN.
      IF SCREEN-GROUP1 = 'GRP'.
        SCREEN-INPUT = '0'.
        SCREEN-OUTPUT = '1'.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
    CLEAR: SO_MATNR.
    REFRESH: SO_MATNR.
  ENDIF.

AT SELECTION-SCREEN ON SP_CHECK.
  PERFORM MATERIAL_CHECK.

FORM MATERIAL_CHECK.

  IF NOT SP_CHECK IS INITIAL AND SY-UCOMM = 'ONLI'.
    IF SO_MATNR[] IS INITIAL.
      LOOP AT SCREEN.
        IF SCREEN-NAME = 'SO_MATNR-LOW'.
          SCREEN-INPUT = '1'.
          SCREEN-OUTPUT = '0'.
          SCREEN-REQUIRED = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    ENDIF.
  ENDIF.
ENDFORM.                    " MATERIAL_CHECK

If useful reward.

Vasanth

Former Member
0 Kudos

hi jerry,

give like this...

LOOP AT SCREEN.

IF p_test = 'X'.

IF screen-group1 = 'CAR'.

screen-active = '1'.

screen-invisible = '0'.

MODIFY SCREEN.

ENDIF.

ELSE.

IF screen-group1 = 'CAR'.

screen-active = '0'.

screen-invisible = '1'.

MODIFY SCREEN.

ENDIF.

ENDIF.

ENDLOOP.

do reward if it helps,

priya.

Former Member
0 Kudos

just remove this line

<b>screen-required = '1'.</b>

navin_khedikar2
Contributor
0 Kudos

hi

please copy paste this code ur problem solved.

DATA g_s_sflight TYPE sflight.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.

PARAMETERS p_test AS CHECKBOX USER-COMMAND p_test.

SELECT-OPTIONS s_carrid FOR g_s_sflight-carrid MODIF ID car .

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.

PARAMETERS p_report AS CHECKBOX USER-COMMAND p_report.

SELECTION-SCREEN END OF BLOCK b2.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF p_test = 'X'.

IF screen-group1 = 'CAR'.

screen-active = '1'.

screen-required = '1'.

MODIFY SCREEN.

s_carrid-low = '00'.s_carrid-high = '00'.

APPEND s_carrid.

ENDIF.

ELSE.

IF screen-group1 = 'CAR'.

screen-active = '0'.

screen-required = '0'.

MODIFY SCREEN.

ENDIF.

ENDIF.

ENDLOOP.

START-OF-SELECTION.

SELECT * FROM sflight

INTO g_s_sflight

WHERE carrid IN s_carrid.

ENDSELECT.

**Please reward suitable points***

With Regards

Navin Khedikar