Selection-screen(condition)

Hi all,
I have a report with about 15 select-options in selection screen. My condition is there should be atleast one input from the end user if not I should say 'Not enough inputs'. For this I implemented a logic using 'at selection-screen' event. It is working well.
My question is when I execute my report, I see the Multiple selections option (right arrow button) for all the select-options in the selection screen. When I press this button, I am not getting a pop-up but the condition which I kept in 'at selection-screen' event is executed and it says 'no enough inputs'.
When I press the Multiple selections button the control is passing through the 'at selection-screen' event. Is it possible that when I press the Multiple selections button, I get the pop-up before the control comes to 'at selection-screen' event.
Below is my code. Please try this code for example.
select-options:    s_werk    for qals-werk.
select-options:    s_matnr   for qals-matnr  matchcode object mat1.
select-options:    s_charg   for qals-charg  matchcode object mch1.
select-options:    s_art     for qals-art.
select-options:    s_pruef   for qals-prueflos.
select-options:    s_vaplz   for aufk-vaplz.
select-options:    s_ltxa1   for afvc-ltxa1.
select-options:    s_aufnr   for qals-aufnr.
select-options:    s_enst    for qals-enstehdat.
select-options:    s_past    for qals-pastrterm.
select-options:    s_paend   for qals-paendterm.
select-options:    s_plnty   for qals-plnty.
select-options:    s_herst   for qals-hersteller matchcode object kred.
select-options:    s_lifnr   for qals-lifnr  matchcode object kred.
select-options:    s_kunnr   for qals-kunnr  matchcode object debi.
select-options:    s_verwm   for qamv-verwmerkm.
at selection-screen.
count = 0.
if not s_werk is initial.
count = count + 1.
endif.
if not s_matnr is initial.
count = count + 1.
endif.
if not s_charg is initial.
count = count + 1.
endif.
if not s_art is initial.
count = count + 1.
endif.
if not s_pruef is initial.
count = count + 1.
endif.
if not s_vaplz is initial.
count = count + 1.
endif.
if not s_ltxa1 is initial.
count = count + 1.
endif.
if not s_aufnr is initial.
count = count + 1.
endif.
if not s_past is initial.
count = count + 1.
endif.
if not s_paend is initial.
count = count + 1.
endif.
if not s_plnty is initial.
count = count + 1.
endif.
if not s_herst is initial.
count = count + 1.
endif.
if not s_lifnr is initial.
count = count + 1.
endif.
if not s_kunnr is initial.
count = count + 1.
endif.
if not s_verwm is initial.
count = count + 1.
endif.
if count < 1.
message e000(0) with 'No enough inputs'.
endif.
start-of-selection.
end-of-selection.

Hi,
write this code under start-of-selection , it will work.
if s_werk[] is initial and
if s_matnr[] is initial and
if s_charg[] is initial and
if  s_art[] is initial and
if  s_pruef[] is initial and
if  s_vaplz[] is initial and
if s_ltxa1[] is initial and
if s_aufnr[] is initial and
if  s_enst[] is initial and
if  s_past[] is initial and
if  s_paend[] is initial and
if  s_plnty[] is initial and
if  s_herst[] is initial and
if  s_lifnr[] is initial and
if  s_kunnr[] is initial and
if  s_verwm[] is initial .
message message s000(0) with 'Not enough inputs'
exit.
endif.
regards
Appana

Similar Messages

  • Problem with the default selection screen condition

    hi guys,
    I have got some problem with the default screen given by the PNP logical database, P0000 infotype automatically populated according to the condition given in default screen.
    Reg,
    Hariharan

    Don know what u r trying to acheive.
    1) when u have specified PNP in the logical databse field of attributes of program, the SAP wil proivde u default PNP screen and here u can also add ur paramters if u want.
    2) in the program u have to declare like
    INFOTYPES: 0000,0001. "Etc
    for all the infotypes u want to use in the program.
    3) it is the GET PERNR event which wil fil all the p0000 and p0001 (internal tables for al the infotypes declared via INFOTYPES syntax as shown above)
    4) after tht get pernr, u now have data in P tables and u can use it for further reporting.
    5) refer below dummy code -
    REPORT  ZPPL_PREVEMPLOYERS   message-id rp
                                 line-size 250
                                 line-count 65.
    *Program logic :- This Report is used to Download all the Previous
    * Employer (IT0023) records of the employees
    *eject
    *& Tables and Infotypes                                                *
    tables: pernr.
    infotypes: 0000,
               0001,
               0002,
               0023.
    *eject
    *& Constants                                                           *
    constants: c_1(1)       type c               value '1'   ,
               c_3(1)       type c               value '3'   ,
               c_i(1)       type c               value 'I'   ,
               c_x(1)       type c               value 'X'   ,
               c_eq(2)      type c               value 'EQ'  ,
               c_pl03       like p0001-werks     value 'PL03'.
    *eject
    *& Selection-Screen                                                    *
    parameters: p_file  like rlgrap-filename default 'C:TempABC.xls',
                p_test  as checkbox default c_x               .
    *eject
    *& Internal tables                                                     *
    * Internal Table for Output
    data: begin of t_output occurs 0    ,
           pernr like pernr-pernr       ,
           nachn like p0002-nachn       ,
           vorna like p0002-vorna       ,
           orgeh_stext like p1000-stext ,
           plans_stext like p1000-stext ,
           begda like p0023-begda       ,
           endda like p0023-endda       ,
           land1 like p0023-land1       ,
           arbgb like p0023-arbgb       ,
           ort01 like p0023-ort01   .
    data: end of t_output           .
    *eject
    *& Variables                                                           *
    data: o_stext like p1000-stext,
          p_stext like p1000-stext.
    *eject
    *& Initialization                                                      *
    Initialization.
    * Initialize Selection-Screen values
      perform init_selction_screen.
    *eject
    *& AT Selection-screen                                                 *
    at selection-screen .
    * Check if Test run selected, download file name should be entered
      if p_test is initial.  "
        if p_file is initial.
          message e016 with 'Please enter file name'
                            'specifying complete path'.
        endif.
      endif.
    *eject
    *& Start-of Selection                                                  *
    Start-of-selection.
    get pernr.
      clear t_output.
    * Read Infotype 0
      rp-provide-from-last p0000 space pn-begda pn-endda.
      check pnp-sw-found eq c_1.
    * Check if employee is active
      check p0000-stat2 in pnpstat2.      "pernr Active
    * Read Infotype 1
      rp-provide-from-last p0001 space pn-begda pn-endda.
      check pnp-sw-found eq c_1.
    * check if employee belongs to PL03
      check p0001-werks in pnpwerks.  "belongs to PL03
    * Check if emp belongs to Active Group
      check p0001-persg in pnppersg.
    * Read Infotype 2
      rp-provide-from-last p0002 space pn-begda pn-endda.
      check pnp-sw-found eq c_1.
    * Read Org Unit Text.
    CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'
         EXPORTING
              OTYPE                   = 'O'
              objid                   = p0001-orgeh
              begda                   = p0001-begda
              endda                   = p0001-endda
              reference_date          = p0001-begda
         IMPORTING
              object_text             = o_stext
          EXCEPTIONS
              nothing_found           = 1
              wrong_objecttype        = 2
              missing_costcenter_data = 3
              missing_object_id       = 4
              OTHERS                  = 5.
    *Read Position Text.
    CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'
         EXPORTING
              OTYPE                   = 'S'
              objid                   = p0001-plans
              begda                   = p0001-begda
              endda                   = p0001-endda
              reference_date          = p0001-begda
         IMPORTING
              object_text             = p_stext
         EXCEPTIONS
              nothing_found           = 1
              wrong_objecttype        = 2
              missing_costcenter_data = 3
              missing_object_id       = 4
              OTHERS                  = 5.
    * Gather all the required information related to the emp
      move: pernr-pernr to t_output-pernr,
            o_stext to t_output-orgeh_stext,
            p_stext to t_output-plans_stext,
            p0002-nachn to t_output-nachn,
            p0002-vorna to t_output-vorna.
    * Gather previous Employee details
      loop at p0023.
        move-corresponding p0023 to t_output.
        append t_output.
      endloop.
    *eject
    *& End-of Selection                                                    *
    end-of-selection.
      perform print_report.
    * Downlaod the file
      if not t_output[] is initial.
        if p_test eq space.
          perform download_file.
        endif.
      else.
        write: 'No records selected' color col_negative.
      endif.
    *eject
    *& Top-of-page                                                         *
    Top-of-page.
    * Print Header
      perform print_header.
    *eject
    *&      Form  download_file
    * Description :
    FORM download_file .
      DATA: full_file_name    TYPE string,
            z_akt_filesize    TYPE i     .
      full_file_name = p_file.
    *  download table into file on presentation server
      CALL METHOD cl_gui_frontend_services=>gui_download
        EXPORTING
          filename                = full_file_name
          filetype                = 'DAT'
          NO_AUTH_CHECK           = c_x
          codepage                = '1160'
        IMPORTING
          FILELENGTH              = z_akt_filesize
        CHANGING
          data_tab                = t_output[]
        EXCEPTIONS
          file_write_error        = 1
          no_batch                = 2
          gui_refuse_filetransfer = 3
          invalid_type            = 4
          no_authority            = 5
          unknown_error           = 6
          header_not_allowed      = 7
          separator_not_allowed   = 8
          filesize_not_allowed    = 9
          header_too_long         = 10
          dp_error_create         = 11
          dp_error_send           = 12
          dp_error_write          = 13
          unknown_dp_error        = 14
          access_denied           = 15
          dp_out_of_memory        = 16
          disk_full               = 17
          dp_timeout              = 18
          file_not_found          = 19
          dataprovider_exception  = 20
          control_flush_error     = 21
          not_supported_by_gui    = 22
          error_no_gui            = 23
          OTHERS                  = 24.
      IF  sy-subrc               NE        0.
        MESSAGE e016 WITH 'Download-Error; RC:' sy-subrc.
      ENDIF.
    ENDFORM.                    " download_file
    *eject
    *&      Form  print_report
    *Description:
    FORM print_report .
      data: i       type i,
            w_count type i.
      sort t_output.
    * Print the report
      loop at t_output.
        i = sy-tabix mod 2.
        if i eq 0.
          format color col_normal intensified on.
        else.
          format color col_normal intensified off.
        endif.
        write:/1     t_output-pernr          ,
               10     t_output-vorna(25)     ,
               35    t_output-nachn(25)      ,
               61   t_output-orgeh_stext     ,
               102  t_output-plans_stext     ,
               143  t_output-begda           ,
               154   t_output-endda          ,
               168   t_output-land1          ,
               178   t_output-arbgb(40)      ,
               219   t_output-ort01          ,
               249   space              .
      endloop.
      uline.
      Describe table t_output lines w_count.
      Skip 2.
      Write:/ 'Total No of Records Downloaded: ' color col_total,
              w_count.
    ENDFORM.                    " print_report
    *eject
    *&      Form  print_header
    *Description:
    FORM print_header .
      skip 1.
      Uline.
      format Intensified on color col_heading.
      write:/1   'Pers. #'        ,
             10   'Last Name'     ,
             35   'First Name'    ,
             61   'Org Unit'      ,
             102  'Position'      ,
             143  'Beg Date'      ,
            154   'End Date'      ,
            168   'Cntry Key'     ,
            178   'Prev Employer' ,
            219  'City'           ,
            249   space          .
      format intensified off color off.
      uline.
    ENDFORM.                    " print_header
    *eject
    *&      Form  init_selction_screen
    *Description:
    FORM init_selction_screen .
      refresh: pnpwerks,
               pnppersg,
               pnpstat2.
      clear:   pnpwerks,
               pnppersg,
               pnpstat2.
      pnpwerks-sign   = c_i.
      pnpwerks-option = c_EQ.
      pnpwerks-low    = c_pl03.
      append pnpwerks.
      pnppersg-sign   = c_i.
      pnppersg-option = c_EQ.
      pnppersg-low    = c_1.
      append pnppersg.
      pnpstat2-sign   = c_i.
      pnpstat2-option = c_EQ.
      pnpstat2-low    = c_3.
      append pnpstat2.
    ENDFORM.                    " init_selction_screen

  • Condition on selection screen parameters

    Hi friends,
    I have an ABAP query. Here , I have a date field (ISEG_ZLDAT - Cycle count date ) in the selection screen which is a parameter (not a select option). I have to write a condition for the report to pull all the materials which have a cycle count date less than the value entered on the selection screen.
    How do I give this condition in the code ? Is there a way to do it without using select options ?
    Please help.
    Thanks,
    Dikshitha

    Hi Dikshitha,
        as also said by others try it this way:
    Parameters:
      p_ZLDAT type ISEG-ZLDAT.
    Data:
      t_ISEG like standard table of ISEG.
    select * from ISEG into table t_ISEG where ZLDAT lt p_ZLDAT.
    if sy-subrc ne 0.
    endif.
    With luck,
    Pritam.

  • Fetching check number based on condition in selection screen

    In selection screen there r four fields document no,document date ,company code,fiscal year .
    According to client requirement, I have added check number in selection screen. If I enter  the document no in selection screen , the value (bseg –zuonr) should be retrived  in the field check number. If I press F4 in the check number field , the value zuonr based on condition bschl = 50 should be displayed..
    Now it is working fine in development  system.
    But in production it displays 3 values (bschl = 50, bschl = 40 and bschl = 25.Now I need that it should display a single  value based on posting key bseg -bschl = 50 only.
    my code:
    At selection-screen on value-request for P_ZUONR-low.
    select  ZUONR INTO CORRESPONDING FIELDS OF TABLE VALUE_IT1 from BSEG where BELNR IN S_BELNR and BSCHL = '50'.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
           retfield        = 'ZUONR'
           dynprofield =  'P_ZUONR'
           dynpprog    = sy-cprog
          dynpnr      = sy-dynnr
           value_org   = 'S'
           TABLES
         value_tab       = VALUE_IT1
         FIELD_TAB              = IG_BSEG
          RETURN_TAB             = RETURN
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    Thanks in advance.

    Hi,
    You can achieve this using Boolean type transient variable.
    > Create a Boolean type Transient variable in VO
    > Use this transient variable as SPELL like ${oa.<view instance>.<view attribute>}
    and in process for request method of controller class. set the value of this transient variable as true or false based on the condition

  • Selection Screen search help values based on condition

    Hi All,
    I am developing this report for HR.And the requirement is in one of the selection screen field the
    value's should be appeared(when f4) based on some condition,ie not all values should come.
    My field is HRP1001-sobid,here there are many values,they dunt want all that to be shown when user
    tries to input the values(F4).And also i need to show the Text for this field(department name) in
    search help.
    Can anyone please guide...
    Thanks in advance.

    Hi Salz
    You can code your own search help procedure for this. To achieve this, first you should add the block:
    <u>e.g.</u>
    AT SELECTION-SCREEN ON VALUE REQUEST FOR p_sobid.
    Within this block you can use the standard FM "<b>RH_OBJID_REQUEST</b>" to call the standard HR help list for objects conditionally.
    Regards
    *--Serdar <a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=qbk%2bsag%2bjiw%3d">[ BC ]</a>

  • Selection-screen: how to call based on a condition...

    Hello experts,
    can I do this:
    if flag has value, call selection-screen 1 else call selection-screen 2.
    Thanks guys!

    Hi Viraylab,
      Yes u can call the selection-screen based on some condition.
    In this sample of code, if first radio button is chosen then it will call selection-screen 500 and if the second radio button is chosen then it will call selection-screen 1500.
    TABLES : ZOBRENT.
    SELECTION-SCREEN BEGIN OF BLOCK sel1 WITH FRAME TITLE tit1.
    PARAMETERS: R1 RADIOBUTTON GROUP RAD1,
                R2 RADIOBUTTON GROUP RAD1.
    SELECTION-SCREEN END OF BLOCK sel1.
    SELECTION-SCREEN BEGIN OF SCREEN 500 AS WINDOW.
    SELECTION-SCREEN BEGIN OF BLOCK sel2 WITH FRAME TITLE tit2.
    PARAMETERS: panid like zobrent-zopanid.
    SELECTION-SCREEN END OF BLOCK sel2.
    SELECTION-SCREEN END OF SCREEN 500.
    SELECTION-SCREEN BEGIN OF SCREEN 1500 AS WINDOW.
    SELECTION-SCREEN BEGIN OF BLOCK sel3 WITH FRAME TITLE tit3.
    PARAMETERS: brent LIKE zobrent-zo_brent,
                effdat LIKE zobrent-zo_effdat.
    SELECTION-SCREEN END OF BLOCK sel3.
    SELECTION-SCREEN END OF SCREEN 1500.
    INITIALIZATION.
      tit1 = 'Values'.
    AT SELECTION-SCREEN ON RADIOBUTTON GROUP RAD1.
      IF R1 = 'X'.
        CALL SELECTION-SCREEN 500.
      ELSEIF R2 = 'X'.
       CALL SELECTION-SCREEN 1500.
      ENDIF.
    START-OF-SELECTION.
      tit1 = 'Values'.
      tit2 = 'PANID'.
      tit3 = 'BRENT'.
    If found helpful, please do reward.

  • How to disable a field in selection screen based on condition.

    Hi,
    I have 2 radio buttons- p_normd, p_recov  and 2 other controls - like text boxes, say tb1 and tb2. and some mandatory fields below.
    If i choose p_normd, i want one control(tb2) to be disabled and if i choose p_recov, i want the other control(tb1) to be disabled(tb2 should be enabled then.)
    Currently i am using the following code. The 1'st radiobutton is intially checked. But the problem is when i click on the 2'nd radio button, the other control(tb1) is not getting disabled. When i double click, i get an error telling mandatory field to be filled. Only after the other mandatory fields below are filled, and after i double click on the unchecked radiobutton, the other control gets disabled.
    Please suggest what to do..
    The current code below:
      AT SELECTION-SCREEN OUTPUT. "ON RADIOBUTTON GROUP rg01.
      LOOP AT SCREEN.
      IF  p_normd EQ c_x  AND screen-group1 = 'SC2'.
            MOVE 0 TO screen-input.
          MODIFY SCREEN.
      ENDIF.
      IF p_recov EQ c_x AND screen-group1 = 'SC1'. "IF screen-name = 'ERDAT-LOW' OR screen-name = 'ERDAT-HIGH'.
            MOVE 0 TO screen-input.
            MODIFY SCREEN.
      ENDIF.
      ENDLOOP.
    Thanks,
    Ammu

    Hi
    declare your parameter as below:
    parameters: p_x type c radio button group g1 user-command r.
    in at selection screen output event .
    check for the radio button.
    loop at screen.
    if screen group is <desired value>
    then screen-active = 0 or 1. <do whatever you want to do.>
    modify screen.
    endloop.
    see below the sample code.
    <<<<<AT SELECTION SCREEN EVENT>>>>>
    AT SELECTION-SCREEN ON BLOCK B1.
      IF P_LCOST = C_X.
        PERFORM CLEAR_FIELDS.    " Clearing fields before loading the screen
        CALL SELECTION-SCREEN 100 STARTING AT 20 5.
      ELSEIF  P_MCOST = C_X.
        PERFORM CLEAR_FIELDS1.          " Clearing fields before loading the screen
        CALL SELECTION-SCREEN 101 STARTING AT 20 5.
      ENDIF.
      IF SY-SUBRC = 0.
        PERFORM VALIDATION.             " Validating selection screen input
      ELSE.
        LEAVE TO TRANSACTION C_TRAN.
      ENDIF.
    <<<<<<DECLARATION PART>>>>>>
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS: P_LCOST RADIOBUTTON GROUP GI DEFAULT 'X',
                P_MCOST RADIOBUTTON GROUP GI.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF SCREEN 100 AS WINDOW TITLE TEXT-002.
    SELECTION-SCREEN BEGIN OF BLOCK B2.
    PARAMETERS: P_COAREA TYPE CSKS-KOKRS OBLIGATORY,         " controlling area
                P_FYR    TYPE COEP-GJAHR OBLIGATORY,         " fiscal year
                P_PERIOD TYPE COEP-PERIO OBLIGATORY.         " fiscal period
    SELECT-OPTIONS: S_CCNTR FOR V_KOSTL OBLIGATORY,       " Cost Center
                    S_COELM FOR V_KSTAR MODIF ID M1,       " Cost element
                    S_PDATE FOR V_BUDAT OBLIGATORY.       " posting date.
    SELECTION-SCREEN END OF BLOCK B2.
    SELECTION-SCREEN END OF SCREEN 100.
    SELECTION-SCREEN BEGIN OF SCREEN 101 AS WINDOW TITLE TEXT-003.
    SELECTION-SCREEN BEGIN OF BLOCK B3.
    PARAMETERS:     P_CCODE  TYPE T001-BUKRS OBLIGATORY,         " Company Code
                    P_FYEAR  TYPE COEP-GJAHR OBLIGATORY.         " fiscal year
    SELECT-OPTIONS:   S_GLACC FOR V_HKONT OBLIGATORY,       " G/L Account
                      S_PCNTR FOR V_PRCTR MODIF ID M2,      " Profit Center
                      S_PODATE FOR V_BUDAT OBLIGATORY.      " posting date.
    SELECTION-SCREEN END OF BLOCK B3.
    SELECTION-SCREEN END OF SCREEN 101.
    thanks
    LG
    Edited by: LalitG on Apr 13, 2011 1:38 PM

  • Display input field on selection screen based on condition

    Hi,
    I have a report with selection with no of  input fields and a checkbox .I want to hide  few i/p fileds based on checkbox i/p.
    If the checkbox = 'X',then only those fields should apper on screen for input.
    how do we get this on sel screen.
    thanks in advance.

    Hi,
    you can use this code as reference.
    Here, depens on check box, in the next screen resepective select options will be displayed.
    You can use this logic for your requirement.
    REPORT Z50871_SELECTOPS_DYNAMIC.
    PARAMETERS : CH_EBELN AS CHECKBOX,
    CH_VBELN AS CHECKBOX.
    DATA: V_EBELN TYPE EKKO-EBELN,
    V_VBELN TYPE VBAK-VBELN.
    SELECTION-SCREEN BEGIN OF SCREEN 100.
    SELECT-OPTIONS : EBELN FOR V_EBELN MODIF ID G1,
    VBELN FOR V_VBELN MODIF ID G2.
    SELECTION-SCREEN END OF SCREEN 100 .
    AT SELECTION-SCREEN OUTPUT.
    IF SY-DYNNR = 100.
    IF CH_EBELN = 'X' AND
    CH_VBELN = ''.
    LOOP AT SCREEN.
    IF SCREEN-GROUP1 EQ 'G1'.
    SCREEN-ACTIVE = '1'.
    ELSE.
    SCREEN-ACTIVE = '0'.
    ENDIF.
    MODIFY SCREEN.
    ENDLOOP.
    ELSEIF CH_VBELN = 'X' AND
    CH_EBELN = '' .
    LOOP AT SCREEN.
    IF SCREEN-GROUP1 EQ 'G2'.
    SCREEN-ACTIVE = '1'.
    ELSE.
    SCREEN-ACTIVE = '0'.
    ENDIF.
    MODIFY SCREEN.
    ENDLOOP.
    ELSEIF CH_EBELN = 'X' AND CH_VBELN = 'X'.
    LOOP AT SCREEN.
    IF SCREEN-GROUP1 EQ 'G1'
    OR SCREEN-GROUP1 EQ 'G2' .
    SCREEN-ACTIVE = '1'.
    ENDIF.
    MODIFY SCREEN.
    ENDLOOP.
    ENDIF.
    ENDIF.
    AT SELECTION-SCREEN.
    IF SY-DYNNR = 1000.
    IF CH_EBELN = 'X' OR CH_VBELN = 'X'.
    CALL SELECTION-SCREEN 100.
    ELSE.
    MESSAGE I000(Z50871MSG) WITH 'Please select atleast one checkbox'.
    ENDIF.
    ENDIF.
    Regards
    Sandeep Reddy

  • How to create a F4 help for a report selection screen field

    hi,
    can any one guide me to create F4 help for a field in a selection screen in a report program,plz give me a sample code

    hi,
    Here are the following ways
    1.with the help of match code objects we can create the F4 Functionality for Field.
    Syntax is :
    PARAMETERS: p_org LIKE t527x-orgeh MATCHCODE OBJECT zorg.
    2. One more thing is we can do it with Search Help's also.
    3. Even we can do it HELP Views also.
    Help Views:
    You have to create a help view if a view with outer join is needed as selection method of a search help
    The selection method of a search help is either a table or a view. If you have to select data from several tables for the search help, you should generally use a database view as selection method. However, a database view always implements an inner join. If you need a view with outer join for the data selection, you have to use a help view as selection method.
    All the tables included in a help view must be linked with foreign keys. Only foreign keys that have certain attributes can be used here. The first table to be inserted in the help view is called the primary table of the help view. The tables added to this primary table with foreign keys are called secondary tables.
    The functionality of a help view has changed significantly between Release 3.0 and Release 4.0. In Release 3.0, a help view was automatically displayed for the input help (F4 help) for all the fields that were checked against the primary table of the help view. This is no longer the case in Release 4.0.
    As of Release 4.0, you must explicitly create a search help that must be linked with the fields for which it is offered (see Linking Search Helps with Screen Fields ).
    Existing help views are automatically migrated to search helps when you upgrade to a release higher than 4.0.
    A help view implements an outer join, i.e. all the contents of the primary table of the help view are always displayed. You therefore should not formulate a selection condition for fields in one of the secondary tables of the help view. If records of these secondary tables cannot be read as a result of this selection condition, the contents of the corresponding fields of the secondary table are displayed with initial value.
    <REMOVED BY MODERATOR>
    Edited by: Alvaro Tejada Galindo on Feb 15, 2008 3:15 PM

  • SELECTION-SCREEN FIELD VALIDATION

    Hi All!
             I am trying to write this ABAP program in 4.7 Enterprise. I wish to selectively display (based on radio buttons) selection screen blocks and make them mandatory in runtime. I use code like this:
    AT SELECTION-SCREEN ON SAL_ORG.    (this is one of the fields that will be obligatory)
        IF RD2 EQ 'X'.
            IF SAL_ORG IS INITIAL.
                 MESSAGE 'THIS FIELD IS MANDATORY' TYPE 'I'.
            ENDIF.
        ENDIF.
    Now, if I execute this as is, then I will get this message as soon as the block is displayed, not just after hitting the execution button. Can you please tell me how I should put a condition on this checking. I know it is triggered by SY-UCOMM = 'ONLI' but i am not sure where to put the condition.
                   Thanks in advance!

    hello J.C.!
                  this is what worked for me finally:
                  AT SELECTION-SCREEN.
                  CHECK sy-ucomm EQ 'ONLI'.
                  IF RD2 EQ 'X'.
                      IF SAL_ORG IS INITIAL.
                          MESSAGE 'THIS FIELD IS MANDATORY' TYPE 'I'.
                      ENDIF.
                  ENDIF.
    SAP says sscrfields-ucomm is unrecognized. can you please tell me what it is actually? why did you prefer using it instead of SY-UCOMM? If possible, please direct me to some good reference on calling selection screen.
    I have given your answer 10 points by the way. I am very new here, so i don't know what exactly it's role is, but i figured it is something significant.

  • Passing the values from selection screen to screen painter

    Hello Friends,
    I'm making one report program in which im calling  one screen which i have designed, in my selection screen there is a select option for customer  tht accepts value range now i want to select all the customers entered in select options and pass these values in screen(screen painter).
    pls guide me how this can be done.
    Regards,
    Sunny

    Screen painter is a tool in ABAP dev workbench used to create the screens using the
    T-code SE51. In the screen painter, you can define the following interface elements with their associated attributes.
    1. Input/Output Fields
    2. Field Names
    3. Checkboxes
    4. Radio Buttons
    5. Group Boxes
    6. Sub screens.
    7. Pushbuttons with No Fixed Position
    Create a Z program in tcode SE38.
    Go to transaction SE51.
    Enter the created program name and screen number.
    Click on flowlogic tab. 
    Uncomment the statement u201C MODULE STATUS_0100 u201C. 
    CASE SY-UCOMM.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
        WHEN 'BACK'.
          LEAVE PROGRAM.
        WHEN 'DISPLAY'.
          SELECT SINGLE Fileds to selsct
               INTO (interanl table or tablename-fileds)
          WHERE Condition.    WHEN 'CLEAR'.
          CLEAR table.
      ENDCASE.
    ENDMODULE.

  • How to add a new Field in the Dynamic Selection screen section.

    HI,
    There is a requirement in which I need to add a field in existing program of dynamic selections.
    I need to add a field KNKK-DBRTG (Customer Rating) in dynamic selections screen of some existing report
    which has a dynamic selection screen with other fields like customer account, company code etc. Along with this i need to add Customer rating field also in the selection screen.
    I have used GET KNKK statement to select this in the Dynamic selection screen. But I need to make it appear
    on the screen.
    LDB used is the Customer Database.
    I have added GET KNKK statement after GET KNA1 statement.
    Can any one help me how we can make this rating field appear in the selection screen.
    With the GET statement Credit control area Fields can be selected in the selection screen but I have to permanantly add the field in the selection screen.
    Regards
    Prashant Prabhu

    Hi,
    So you need that this new field have data in old records?
    1.- If you are in BI 7.0 and the logic or data for that New field are in the same Dimension, you can use a Remodeling to fill it. I mean if you want if you want to load from a Master Data from other InfoObject in the same Dim.
    2.- If condition "1" is not yours.
    First add the new field, then create a Backup Cube (both cubes with the new field) and make a full update with all information in the original Cube. The new field willl be empty in both cubes.
    Create an UR from BackUp_Cube to Original_Cube with all direct mapping and create a logic in the Start Routine of the UR (modiying the data_package) you can look for the data in the DSO that you often use to load.
    To do that both cubes have to be Datasources ( right click on Cube-> aditional function-> and I think is "Extract Datasource")
    Hope it helps. Regards, Federico

  • How to Add a new fields in the selection screen of LDB.

    Hi All,
    I want to add a new fields in the selection screen of LDB & then i need to select the data for that fields.
    So could you please tell me for that where i need to add the code for selecting the data.
    Thanks
    Roli

    Hi
    welcome to SDN forum
    If you are designing your own LDB with your own tables you can define tree structure and then the selection screen for the tables
    if you wants to modify the std LDB of SAp means take the access key and to modify that code
    if you add the extra field you have to modify the where conditions in the code also
    see the doc
    A logical database is a special ABAP/4 program which combines the contents of certain database tables. You can link a logical database to an ABAP/4 report program as an attribute. The logical database then supplies the report program with a set of hierarchically structured table lines which can be taken from different database tables.
    LDB offers an easy-to-use selection screens. You can modify the pre-generated selection screen to your needs. It offers check functions to check whether user input is complete, correct, and plausible. It offers reasonable data selections. It contains central authorization checks for data base accesses. Enhancements such as improved performance immediately apply to all report programs that use the logical database.
    Less coding s required to retrieve data compared to normal internel tables.
    Tables used LDB are in hierarchial structure.
    Mainly we used LDBs in HR Abap Programming.
    Where all tables are highly inter related so LDBs can optimize the performance there.
    Check this Document. All abt LDB's
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.highlightedcontent?documenturi=%2flibrary%2fabap%2fabap-code-samples%2fldb+browser.doc
    GO THROUGH LINKS -
    http://www.sap-basis-abap.com/saptab.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9bfa35c111d1829f0000e829fbfe/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9b5e35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c6/8a15381b80436ce10000009b38f8cf/frameset.htm
    /people/srivijaya.gutala/blog/2007/03/05/why-not-logical-databases
    Re: **LDB**
    www.sapbrain.com/FAQs/TECHNICAL/SAP_ABAP_Logical_Database_FAQ.html
    www.sap-img.com/abap/abap-interview-question.htm
    www.sap-img.com/abap/quick-note-on-design-of-secondary-database-indexes-and-logical-databases.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9b5e35c111d1829f0000e829fbfe/content.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/9f/db9bb935c111d1829f0000e829fbfe/content.htm
    Gothru the blog which provides info on LDB's:
    /people/srivijaya.gutala/blog/2007/03/05/why-not-logical-databases
    Sample code
    TABLES: SPFLI,
    SFLIGHT,
    SBOOK,
    SCARR.
    START-OF-SELECTION.
    GET SPFLI.
    WRITE:/ ’SPFLI: ’, SPFLI-CARRID, SPFLI-CONNID,
    SPFLI-AIRPFROM, SPFLI-AIRPTO.
    GET SFLIGHT.
    WRITE:/ ’ SFLIGHT: ’, SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE.
    GET SBOOK.
    WRITE:/ ’ SBOOK: ’, SBOOK-CARRID, SBOOK-CONNID,
    SBOOK-FLDATE, SBOOK-BOOKID.
    GET SFLIGHT LATE.
    WRITE:/ ’ GET SFLIGHT LATE: ’, SFLIGHT-FLDATE.
    Regards
    anji

  • Help on a selection screen

    I need some help on a selection screen.  I have the following:
    SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
    PARAMETERS:       p_bldat TYPE bkpf-bldat OBLIGATORY DEFAULT sy-datum,
                      p_budat TYPE bkpf-budat OBLIGATORY DEFAULT sy-datum,
                      p_xref1 TYPE proj-pspid OBLIGATORY,
                      p_bktxt TYPE bkpf-bktxt,
                      p_bukrs TYPE bkpf-bukrs OBLIGATORY DEFAULT '1100',
                      p_waers TYPE bkpf-waers OBLIGATORY DEFAULT 'USD'.
    SELECTION-SCREEN: END OF BLOCK a1.
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
    PARAMETERS:       p_lifnr TYPE ekko-lifnr OBLIGATORY,
                      p_ebeln TYPE ekko-ebeln OBLIGATORY.
    SELECTION-SCREEN: END OF BLOCK b1.
    SELECTION-SCREEN: BEGIN OF BLOCK c1 WITH FRAME TITLE text-003.
    PARAMETERS:       p_amt TYPE wrbtr,
                      p_ret  TYPE wrbtr.
    SELECTION-SCREEN: END OF BLOCK c1.
    SELECTION-SCREEN: BEGIN OF BLOCK d1 WITH FRAME TITLE text-004.
    PARAMETERS:       p_cmode  TYPE callmode DEFAULT 'N' OBLIGATORY.
    SELECTION-SCREEN: END OF BLOCK d1.
    AT SELECTION-SCREEN ON p_ebeln.
      SELECT SINGLE kwert INTO p_ret FROM zretention WHERE ebeln = p_ebeln AND ebelp = '00000' AND TYPE = 'C'.
      IF NOT sy-subrc = 0 OR p_ret IS INITIAL.
        CONCATENATE 'Purchase Order' p_ebeln 'does not have any retention available for release!' INTO d_string.
        MESSAGE d_string TYPE 'E'.
      ENDIF.
    AT SELECTION-SCREEN.
      check p_ret is not INITIAL.
      IF p_amt > p_ret.
        MESSAGE 'Amt. To Be Released is more than the remaining retention. Please check your input.' TYPE 'E'.
      ELSEIF p_amt IS INITIAL.
        MESSAGE 'Amt. To Be Released is required. Please check your input.' TYPE 'E'.
      ENDIF.
    What I want is for the parameter p_ret to be populated when the user inputs a PO (p_ebeln).  This seems to work except I want this to be brought in without running through the other checks (AT SELECTION-SCREEN).  In order to bring in p_ret I am having to hit ENTER which will trigger the event AT SELECTION-SCREEN.
    How can I bring in p_ret without triggering the event AT SELECTION-SCREEN?
    Regards,
    Davis

    In this case.
    If you don't want at selection-screen to be triggered on hitting enter, you can give an if condition in at selection-screen.
    tables : sscrfields.
    AT SELECTION-SCREEN ON p_ebeln.
      SELECT SINGLE kwert INTO p_ret FROM zretention WHERE ebeln = p_ebeln AND ebelp = '00000' AND TYPE = 'C'.
      IF NOT sy-subrc = 0 OR p_ret IS INITIAL.
        CONCATENATE 'Purchase Order' p_ebeln 'does not have any retention available for release!' INTO d_string.
       clear sscrfield-ucomm.
        MESSAGE d_string TYPE 'E'.
      ENDIF.
    AT SELECTION-SCREEN.
    if sscrfields-ucomm = 'ONLI'.
      check p_ret is not INITIAL.
      IF p_amt > p_ret.
        MESSAGE 'Amt. To Be Released is more than the remaining retention. Please check your input.' TYPE 'E'.
      ELSEIF p_amt IS INITIAL.
        MESSAGE 'Amt. To Be Released is required. Please check your input.' TYPE 'E'.
      ENDIF.
    endif.
    The code in at selection-screen is executed only when user presses F8. on pressing 'Enter' it will not be executed.
    Hope this helps you.
    Regards,
    Siddarth

  • Selection screen changes at selection screen output

    Hi all,
    I have to make my one block in selection scren invisible based on a particular condition.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:  s_status FOR g_status NO INTERVALS.
    PARAMETERS    :  p_trans(3) TYPE c,
                     p_hub(3) TYPE c.
    SELECT-OPTIONS:  s_auart  FOR g_auart.
    PARAMETERS:      p_buyt(1) TYPE c.
    SELECT-OPTIONS:
                     s_order  FOR g_vbeln,
                     s_zzhrt  FOR g_zzhrtosec,
                     s_vbeln1 FOR g_vbeln1,
                     s_dccode FOR g_dccode NO INTERVALS,
                     s_pgi   FOR g_pgi.
    SELECTION-SCREEN END OF BLOCK blk1.
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
    PARAMETERS    : p_c1 AS CHECKBOX USER-COMMAND cmd.
    SELECT-OPTIONS: s_list FOR g_list NO INTERVALS MODIF ID sc1.
    SELECTION-SCREEN END OF BLOCK blk2 .
    SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
    PARAMETERS    :  p_c2 AS CHECKBOX USER-COMMAND cmd2.
    SELECT-OPTIONS:  s_mail FOR g_mail NO INTERVALS MODIF ID sc2.
    PARAMETERS:   p_accld LIKE g_saknr DEFAULT '1342009999' MODIF ID sc2
                                                          OBLIGATORY,
                  p_accit LIKE g_saknr DEFAULT '1365009999' MODIF ID sc2
                                                          OBLIGATORY,
                  p_opacc LIKE g_saknr DEFAULT '346100XX99' MODIF ID sc2
                                                          OBLIGATORY,
                  p_lmacc LIKE g_saknr DEFAULT '1393009999' MODIF ID sc2
                                                          OBLIGATORY,
                  p_lmopa LIKE g_saknr DEFAULT '3471009999' MODIF ID sc2
                                                          OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK blk3.
    The block 3 'blk3' should be made invisible based on a condition.
    I have tried loop at screen-name but its not working.
    Kindly advice.
    Thanks and Regards,
    Divya

    Hi Divya,
    Check the below code.
    tables: pa0000, pa0001.
    parameters: p_chk1 as checkbox user-command rusr,
    p_chk2 as checkbox user-command rusr,
    p_chk3 as checkbox user-command rusr,
    p_chk4 as checkbox user-command rusr,
    p_chk5 as checkbox user-command rusr.
    selection-screen: begin of block blk1 with frame.
    select-options: s_pernr for pa0000-pernr modif id ABC,
    s_stat2 for pa0000-stat2 modif id DEF,
    s_werks for pa0001-werks modif id GHI,
    s_persg for pa0001-persg modif id JKL,
    s_persk for pa0001-persk modif id MNO.
    selection-screen: end of block blk1.
    AT SELECTION-SCREEN output.
    LOOP AT SCREEN.
    IF SCREEN-GROUP1 = 'ABC'.
    IF p_chk1 = 'X'.
    SCREEN-ACTIVE = 1.
    ELSE.
    SCREEN-ACTIVE = 0.
    ENDIF.
    MODIFY SCREEN.
    ENDIF.
    IF SCREEN-GROUP1 = 'DEF'.
    IF p_chk2 = 'X'.
    SCREEN-ACTIVE = 1.
    ELSE.
    SCREEN-ACTIVE = 0.
    ENDIF.
    MODIFY SCREEN.
    ENDIF.
    IF SCREEN-GROUP1 = 'GHI'.
    IF p_chk3 = 'X'.
    SCREEN-ACTIVE = 1.
    ELSE.
    SCREEN-ACTIVE = 0.
    ENDIF.
    MODIFY SCREEN.
    ENDIF.
    IF SCREEN-GROUP1 = 'JKL'.
    IF p_chk4 = 'X'.
    SCREEN-ACTIVE = 1.
    ELSE.
    SCREEN-ACTIVE = 0.
    ENDIF.
    MODIFY SCREEN.
    ENDIF.
    IF SCREEN-GROUP1 = 'MNO'.
    IF p_chk5 = 'X'.
    SCREEN-ACTIVE = 1.
    ELSE.
    SCREEN-ACTIVE = 0.
    ENDIF.
    MODIFY SCREEN.
    ENDIF.
    ENDLOOP.
    *Note
    *Titles for check boxes and select options
    *P_CHK1 Personal Number
    *P_CHK2 Employment Status
    *P_CHK3 Personnel Area
    *P_CHK4 Employee Group
    *P_CHK5 Employee Sub group
    *S_PERNR Personal Number
    *S_PERSG Employee Group
    *S_PERSK Employee Sub group
    *S_STAT2 Employment Status
    *S_WERKS Personnel Area

Maybe you are looking for