‎2007 Dec 07 6:30 AM
hi all, could u pls help me on my thread. i have two fields in myselection screen.
like company code this is a select-options field,and one is parameter field is country.
if the user select company code i need to disable the parameter field.
else vice versa.
means not to allow the user to give both values.
if possible send me the code.
thank u in advance .
‎2007 Dec 07 6:32 AM
Hi devender
Have a look on this logic.It will help you out.
If you want to do it using Selection screen then it is possible.
for that you have to use AT SELECTION-SCREEN output. event..
See the below code and use it according to your requirement.
======================================
tables: pa0000, pa0001.
parameters: p_rad1 radiobutton group rad1 default 'X' user-command rusr,
p_rad2 radiobutton group rad1.
selection-screen: begin of block blk1 with frame.
select-options: s_pernr for pa0000-pernr modif id ABC.
selection-screen: end of block blk1.
selection-screen: begin of block blk2 with frame.
select-options: s_stat2 for pa0000-stat2 modif id DEF.
select-options: s_werks for pa0001-werks modif id DEF.
selection-screen: end of block blk2.
AT SELECTION-SCREEN output.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ABC'.
IF p_rad1 = 'X'.
SCREEN-ACTIVE = 1.
ELSE.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF SCREEN-GROUP1 = 'DEF'.
IF p_rad2 = 'X'.
SCREEN-ACTIVE = 1.
ELSE.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
=====================================
Hope it will solve your problem.
Regards,
Sree
‎2007 Dec 07 6:32 AM
Hi devender
Have a look on this logic.It will help you out.
If you want to do it using Selection screen then it is possible.
for that you have to use AT SELECTION-SCREEN output. event..
See the below code and use it according to your requirement.
======================================
tables: pa0000, pa0001.
parameters: p_rad1 radiobutton group rad1 default 'X' user-command rusr,
p_rad2 radiobutton group rad1.
selection-screen: begin of block blk1 with frame.
select-options: s_pernr for pa0000-pernr modif id ABC.
selection-screen: end of block blk1.
selection-screen: begin of block blk2 with frame.
select-options: s_stat2 for pa0000-stat2 modif id DEF.
select-options: s_werks for pa0001-werks modif id DEF.
selection-screen: end of block blk2.
AT SELECTION-SCREEN output.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ABC'.
IF p_rad1 = 'X'.
SCREEN-ACTIVE = 1.
ELSE.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF SCREEN-GROUP1 = 'DEF'.
IF p_rad2 = 'X'.
SCREEN-ACTIVE = 1.
ELSE.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
=====================================
Hope it will solve your problem.
Regards,
Sree
‎2007 Dec 07 6:36 AM
Hi Devender,
Pls look at the following code, it has the same functionality.
*&---------------------------------------------------------------------*
*& Report ZPA_SD_ADANI_LOADING_SHEET
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPA_SD_ADANI_LOADING_SHEET MESSAGE-ID ZPA_MESG.
TABLES:LIKP,VBUK,TVSWZ,T001W.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS VSTEL TYPE LIKP-VSTEL ."OBLIGATORY.
SELECT-OPTIONS: ERDAT FOR LIKP-ERDAT," OBLIGATORY,
VBELN FOR VBUK-VBELN MODIF ID VAL.
PARAMETERS: CLUDEL RADIOBUTTON GROUP GR USER-COMMAND RAD DEFAULT 'X',
UNCLUDEL RADIOBUTTON GROUP GR .
SELECTION-SCREEN END OF BLOCK B1.
TYPE-POOLS: SLIS.
INCLUDE <ICON>.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_HEADER TYPE SLIS_T_LISTHEADER.
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: GT_EVENTS TYPE SLIS_T_EVENT.
DATA: FLSORT TYPE SLIS_T_SORTINFO_ALV.
CONSTANTS:
FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
TYPES : BEGIN OF TY_LIKP,
VBELN TYPE VBELN_VL, "Delivery
ERDAT TYPE ERDAT, "Date on Which Record Was Created
VSTEL TYPE VSTEL, "Shipping Point/Receiving Point
LFART TYPE LFART, "Delivery Type
END OF TY_LIKP,
BEGIN OF TY_LIPS,
VBELN TYPE VBELN_VL, "Delivery
POSNR TYPE POSNR_VL, "Delivery Item
MATNR TYPE MATNR, "Material Number
LGORT TYPE LGORT_D, "Storage Location
CHARG TYPE CHARG_D, "Batch Number
LFIMG TYPE LFIMG, "Actual quantity delivered (in sales units)
ARKTX TYPE ARKTX, "Short text for sales order item
END OF TY_LIPS,
BEGIN OF TY_FINAL,
VBELN TYPE VBELN_VL, "Delivery
LGORT TYPE LGORT_D, "Storage Location
POSNR TYPE POSNR_VL, "Delivery Item
MATNR TYPE MATNR, "Material Number
ARKTX TYPE ARKTX, "Short text for sales order item
CHARG TYPE CHARG_D, "Batch Number
LFIMG TYPE LFIMG, "Actual quantity delivered (in sales units)
END OF TY_FINAL.
DATA: IT_LIKP TYPE STANDARD TABLE OF TY_LIKP WITH DEFAULT KEY,
WA_LIKP TYPE TY_LIKP,
IT_LIPS TYPE STANDARD TABLE OF TY_LIPS WITH DEFAULT KEY,
WA_LIPS TYPE TY_LIPS,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL WITH DEFAULT KEY,
WA_FINAL TYPE TY_FINAL.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF CLUDEL = 'X'.
IF SCREEN-GROUP1 = 'VAL'.
* SCREEN-REQUIRED = 1.
SCREEN-INTENSIFIED = 1.
ENDIF.
ELSEIF UNCLUDEL = 'X'.
IF SCREEN-GROUP1 = 'VAL'.
* SCREEN-REQUIRED = 0.
SCREEN-INTENSIFIED = 0.
SCREEN-ACTIVE = 0.
REFRESH VBELN.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
* at SELECTION-SCREEN .
******************************************************************************************************************
START-OF-SELECTION.
******************************************************************************************************************
if VSTEL is INITIAL.
MESSAGE 'pls fil date ' TYPE 'S'.
LEAVE LIST-PROCESSING.
call TRANSACTION 'zparesh'.
endif.
IF CLUDEL = 'X'.
SELECT SINGLE * FROM TVSWZ
INTO TVSWZ
WHERE VSTEL = VSTEL.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
SELECT SINGLE * FROM T001W
INTO T001W
WHERE WERKS = TVSWZ-WERKS.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
SELECT VBELN ERDAT VSTEL LFART FROM LIKP
INTO TABLE IT_LIKP
WHERE
VBELN = VBELN AND
VSTEL = VSTEL AND
ERDAT IN ERDAT AND
LFART = 'NL'.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
SELECT VBELN POSNR MATNR LGORT CHARG LFIMG ARKTX FROM LIPS
INTO TABLE IT_LIPS
FOR ALL ENTRIES IN IT_LIKP
WHERE
VBELN = IT_LIKP-VBELN.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
ENDIF.
IF UNCLUDEL = 'X'.
SELECT SINGLE * FROM TVSWZ
INTO TVSWZ
WHERE VSTEL = VSTEL.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
SELECT SINGLE * FROM T001W
INTO T001W
WHERE WERKS = TVSWZ-WERKS.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
SELECT VBELN ERDAT VSTEL LFART FROM LIKP
INTO TABLE IT_LIKP
WHERE
VSTEL = VSTEL AND
ERDAT IN ERDAT AND
LFART = 'NL'.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
SELECT VBELN POSNR MATNR LGORT CHARG LFIMG ARKTX FROM LIPS
INTO TABLE IT_LIPS
FOR ALL ENTRIES IN IT_LIKP
WHERE
VBELN = IT_LIKP-VBELN.
IF SY-SUBRC <> 0 .
MESSAGE 'NO RECORD FUND' TYPE 'S'.
ENDIF.
ENDIF.
LOOP AT IT_LIPS INTO WA_LIPS.
READ TABLE IT_LIKP INTO WA_LIKP WITH KEY VBELN = WA_LIPS-VBELN.
IF SY-SUBRC = 0.
WA_FINAL-VBELN = WA_LIKP-VBELN.
WA_FINAL-LGORT = WA_LIPS-LGORT.
WA_FINAL-POSNR = WA_LIPS-POSNR.
WA_FINAL-MATNR = WA_LIPS-MATNR.
WA_FINAL-ARKTX = WA_LIPS-ARKTX.
WA_FINAL-CHARG = WA_LIPS-CHARG.
WA_FINAL-LFIMG = WA_LIPS-LFIMG.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDIF.
ENDLOOP.
PERFORM BUILD_LAYOUT USING GS_LAYOUT.
PERFORM BUILD_HEADER USING GT_HEADER[].
PERFORM BUILD_COMMENTRY.
PERFORM BUILD_EVENTTAB USING GT_EVENTS[].
PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
PERFORM FLDSORT USING FLSORT.
PERFORM DATA_DISPLAY.
******************************************************************************************************************
FORM BUILD_LAYOUT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
RS_LAYOUT-NO_INPUT = 'X'.
RS_LAYOUT-ZEBRA = 'X'.
RS_LAYOUT-COLWIDTH_OPTIMIZE = ' '.
RS_LAYOUT-NO_COLHEAD = ' '.
RS_LAYOUT-NO_VLINE = ' '.
RS_LAYOUT-INFO_FIELDNAME = 'WS_COLOR'.
ENDFORM. "BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form BUILD_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_HEADER text
*----------------------------------------------------------------------*
FORM BUILD_HEADER USING RT_HEADER TYPE SLIS_T_LISTHEADER.
DATA: TP TYPE SLIS_LISTHEADER.
DATA: TEXT(20) TYPE C,
DT(10) .
TP-TYP = 'H'.
TP-INFO = 'Loading Sheet'.
APPEND TP TO RT_HEADER.
CLEAR TP.
WRITE SY-DATUM TO DT DD/MM/YYYY.
CONCATENATE 'DATE :' DT INTO TEXT.
TP-TYP = 'H'.
TP-INFO = TEXT.
APPEND TP TO RT_HEADER.
CLEAR TP.
CLEAR TEXT.
* CONCATENATE 'WERKS:' T001W-WERKS INTO TEXT.
TP-TYP = 'S'.
TP-INFO = T001W-WERKS.
APPEND TP TO RT_HEADER.
CLEAR TP.
CLEAR TEXT.
* CONCATENATE 'NAME:' T001W-NAME1 INTO TEXT.
TP-TYP = 'S'.
TP-INFO = T001W-NAME1.
APPEND TP TO RT_HEADER.
CLEAR TP.
* CLEAR TEXT.
* CONCATENATE 'WERKS:' T001W-NAME2 INTO TEXT.
TP-TYP = 'S'.
TP-INFO = T001W-NAME2 .
APPEND TP TO RT_HEADER.
CLEAR TP.
* CLEAR TEXT.
TP-TYP = 'S'.
TP-INFO = T001W-STRAS .
APPEND TP TO RT_HEADER.
CLEAR TP.
TP-TYP = 'S'.
TP-INFO = T001W-ORT01 .
APPEND TP TO RT_HEADER.
CLEAR TP.
ENDFORM. "BUILD_HEADER
*&---------------------------------------------------------------------*
*& Form BUILD_COMMENTRY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BUILD_COMMENTRY.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_HEADER[]
I_LOGO = 'ERP'.
ENDFORM. "BUILD_COMMENTRY
*&---------------------------------------------------------------------*
*& Form BUILD_EVENTTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LT_EVENTS text
*----------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING LT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = LT_EVENTS.
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
IF SY-SUBRC = 0.
LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE INTO LS_EVENT.
IF SY-SUBRC = 0.
LS_EVENT-FORM = FORMNAME_END_OF_PAGE.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
ENDFORM. "BUILD_EVENTTAB
*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_FIELDCAT text
*----------------------------------------------------------------------*
FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
LS_FIELDCAT-FIELDNAME = 'VBELN'.
LS_FIELDCAT-SELTEXT_L = 'Delivery NO'.
LS_FIELDCAT-KEY = 'X'.
LS_FIELDCAT-JUST = 'L'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LGORT'.
LS_FIELDCAT-SELTEXT_L = 'Storage Location'.
LS_FIELDCAT-KEY = 'X'.
LS_FIELDCAT-JUST = 'L'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'POSNR'.
LS_FIELDCAT-SELTEXT_L = 'Delivery Item'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'MATNR'.
LS_FIELDCAT-SELTEXT_L = 'Material Number'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ARKTX'.
LS_FIELDCAT-SELTEXT_L = 'Material Description'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'CHARG'.
LS_FIELDCAT-SELTEXT_L = 'Batch No'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LFIMG'.
LS_FIELDCAT-SELTEXT_L = 'QTY'.
LS_FIELDCAT-DO_SUM = 'X'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
ENDFORM. "FIELDCAT_INIT
*&---------------------------------------------------------------------*
*& Form fldsort
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FLSORT1 text
*----------------------------------------------------------------------*
FORM FLDSORT USING FLSORT1 TYPE SLIS_T_SORTINFO_ALV.
DATA: LS_FLDSORT TYPE SLIS_SORTINFO_ALV.
CLEAR LS_FLDSORT.
LS_FLDSORT-FIELDNAME = 'VBELN'.
LS_FLDSORT-UP = 'X'.
LS_FLDSORT-SUBTOT = 'X'.
APPEND LS_FLDSORT TO FLSORT1.
* ls_fldsort-fieldname = 'EBELP'.
* ls_fldsort-up = 'X'.
* ls_fldsort-subtot = 'X'.
* APPEND ls_fldsort TO flsort1.
ENDFORM. "FIELDCAT_INIT
*&---------------------------------------------------------------------*
*& Form DATA_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DATA_DISPLAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_TOP_OF_PAGE = 'BUILD_COMMENTRY'
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
I_SAVE = 'X'
IT_SORT = FLSORT[]
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "DATA_DISPLAY
Reward Points if its helpful to You.......
Regards,
DS
‎2007 Dec 07 6:38 AM
Devender,
To disable the parameter field you need to loop at screen table and give the "SCREEN-INPUT = 0". Which will make the field disable for the input.
Check the scenario i have pasted here. Here i am taking two radio buttons. If the first button is selected then then the related fields of the other radio button should be disabled.
PARAMETERS:
P_VAR1 TYPE C,
R1 RADIOBUTTON GROUP G1 USER_COMMAND U1,
R2 RADIOBUTTON GROUP G1 DEFAULT 'X',
P_VAR2 TYPE I MODIFID SC1,
P_VAR3 TYPE I MODIFID SC2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF R1 ='X'.
IF SCREEN-GROUP = 'SC1'.
SCREEN-ACTIVE = 1.
MODIFY SCREEN.
ELSEIF SCREEN-GROUP = 'SC2'.
SCREEN-ACTIVE = 1.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ELSEIF R2 ='X'.
IF SCREEN-GROUP = 'SC1'.
SCREEN-ACTIVE = 1.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ELSEIF SCREEN-GROUP = 'SC2'.
SCREEN-ACTIVE = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
Reward points if useful.
‎2007 Dec 07 6:42 AM
Hi
I think you can reference following code.
SELECT-OPTIONS: s_bukrs for company code.
PARAMETERS : p_country like country.
AT SELECTION-SCREEN OUTPUT.
if s_bukrs-low is not initial and s_bukrs is not initial.
clear p_country.
screen-input = 0.
modify screen.
‎2007 Dec 07 6:52 AM
Hi Devender...
A very simple way to do it........
PARAMETERS : pre_lay RADIOBUTTON GROUP rg USER-COMMAND r DEFAULT 'X'.
PARAMETERS : apln_lay RADIOBUTTON GROUP rg .
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS : pre_layr(10) TYPE c MODIF ID abc.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS : appl_lay(40) TYPE c MODIF ID def.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT.
IF pre_lay = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'DEF'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF apln_lay = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'ABC' .
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
<b>Kindly Reward if useful
Rohit G</b>
‎2007 Dec 07 6:54 AM
hi devendrer,
follow this logic:
AT SELECTION-SCREEN output.
LOOP AT SCREEN.
IF select_option = 'X'.
SCREEN-ACTIVE = 1.
ELSE.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
if parameter = 'X'.
SCREEN-ACTIVE = 1.
ELSE.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
endloop.