Select-options in perform

If I am passing a SELECT-OPTIONS to a FORM (PERFORM routine not SmartForms) what would be the "structure" for it in the FORM? I am assuming one passes these as tables.
Thanks.
Nic

Hi,
Try this..
SELECT-OPTIONS: SO_MATNR FOR MARA-MATNR.
PERFORM TEST USING SO_MATNR[].
FORM TEST USING LT_MATNR LIKE SO_MATNR[].
ENDFORM.
Thanks,
Naren

Similar Messages

  • Validation of SELECT OPTIONS

    Hi Gurus,
    Please let me know which is the best way to validate a select option and performance way also it must be best.
    May be this is a silly question but still I was not able to find the best convincing answer in the FORUM.
    Kindly validate.
    Method 1:
    AT SELECTION-SCREEN ON so_vbeln . " Delivery document
    PERFORM validate_vbeln .
    FORM validate_vbeln.
    DATA : l_t_vbeln TYPE TABLE OF vbuk-vbeln WITH HEADER LINE ,
    l_f_vbeln TYPE vbuk-vbeln .
    RANGES ra_vbeln FOR vbuk-vbeln.
    LOOP AT so_vbeln.
    IF NOT so_vbeln-low IS INITIAL.
    ra_vbeln-sign = 'I'.
    ra_vbeln-option = 'EQ'.
    ra_vbeln-low = so_vbeln-low.
    APPEND ra_vbeln.
    ENDIF.
    IF NOT so_vbeln-high IS INITIAL.
    ra_vbeln-sign = 'I'.
    ra_vbeln-option = 'EQ'.
    ra_vbeln-low = so_vbeln-high..
    APPEND ra_vbeln.
    ENDIF.
    ENDLOOP .
    IF NOT so_vbeln[] IS INITIAL.
    SELECT vbeln INTO TABLE l_t_vbeln
    FROM vbuk
    WHERE vbeln IN ra_vbeln.
    ENDIF.
    LOOP AT so_vbeln.
    IF so_vbeln-low space.
    READ TABLE l_t_vbeln WITH KEY = so_vbeln-low.
    IF sy-subrc 0.
    SET CURSOR FIELD 'SO_vbeln-LOW'.
    MESSAGE e001(vb) WITH so_vbeln-low.
    ENDIF.
    ENDIF.
    IF so_vbeln-high space.
    READ TABLE l_t_vbeln WITH KEY = so_vbeln-high.
    IF sy-subrc 0.
    SET CURSOR FIELD 'SO_vbeln-HIGH'.
    MESSAGE e001(vb) WITH so_vbeln-high.
    ENDIF.
    ENDIF.
    ENDLOOP.
    ENDFORM. " validate_vbeln
    Method 2
    AT SELECTION-SCREEN ON so_werks.
    PERFORM validate_plant.
    FORM validate_plant.
    DATA: BEGIN OF l_t_werks OCCURS 0,
    werks LIKE t001w-werks,
    END OF l_t_werks.
    IF NOT so_werks[] IS INITIAL.
    SELECT werks INTO TABLE l_t_werks
    FROM t001w
    WHERE werks IN so_werks.
    ENDIF.
    LOOP AT so_werks.
    IF so_werks-low space.
    READ TABLE l_t_werks WITH KEY werks = so_werks-low.
    IF sy-subrc 0.
    MESSAGE e892(m7) WITH so_werks-low.
    ENDIF.
    ENDIF.
    IF so_werks-high space.
    READ TABLE l_t_werks WITH KEY werks = so_werks-high.
    IF sy-subrc 0.
    MESSAGE e892(m7) WITH so_werks-high.
    ENDIF.
    ENDIF.
    ENDLOOP.
    ENDFORM.

    Hello Raj,
    For me if the SELECT-OPTION fetches atleast one record from the check table, processing should be allowed to proceed.
    It's not required to check each & every records in the select-option & throw an error message for these invalid records (unlike PARAMETERs)
    I would code something like this:
    SELECT vbeln INTO TABLE l_t_vbeln UP TO 1 ROWS
    FROM vbuk
    WHERE vbeln IN so_vbeln. ENDSELECT.
    IF sy-subrc NE 0.
      MESSAGE 'No valid Sales Order selected for the input range. Please check.' TYPE 'E'.
    ENDIF.
    BR,
    Suhas

  • SELECT-OPTIONS 'EQ' vs. 'BT' performance issue

    Hi Experts,
    I have a query which uses select-options feature for a date range...
    If we give a single date, the report runs instantly but if we use the date range it takes forever to get the reports even though both the low and high dates are the same....
    We had informix earlier and it ran smoothly but now that we are on Oracle we are seeing this issue....
    I am just trying to understand the performance issues with using the 'BT' clause compared to the 'EQ' clause...
    Any inputs are appreaciated...
    Thanks

    Run the SELECT both ways (with high and low date the same for the second one), and in ST05, do a performance trace on each. Then use the 'explain' function to see if both are using the index.
    Rob

  • Checking against Select-Options with "CP" using "IF value IN select_option"

    Dear experts,
    first of all: I'm sorry, if this question already should have been asked and answered!
    I tried quite a lot of search terms but didn't find anything helpful.
    We are using a statement like "IF value IN select_option" to perform comparisons after the Select-Options have been used in a SELECT statement. This logical expression fails (compared to the results of the DB-SELECT) whenever a select-option line contains the option CP (Contains Pattern). To be more specific: The case sensitivity of the LOW value doesn't seem to play a role any more. A variable with the value 'ABCD' would be positively checked against a select-option with OPTION 'CP' and LOW 'abc*', whereas this value wouldn't have been selected if the select-option had been used in a DB-SELECT.
    Does anybody know a workaround?
    Thanks in advance
    Andreas

    Dear Keshav,
    it's an own field in an own table, defined as CHAR of length 140 (lowercase allowed), reflecting to a line of remittance info of an account statement. A regular Select-Option for this field is provided in a report which works perfectly fine regarding the case sensitivity. For reasons I don't want to point out in detail we need to check a value in this field against the select-option without selecting it from the db again.
    Let's assume that a field remittance_info contains the value 'ABCD'.
    A line of the select-option table looks like this:
    select_option_table-SIGN = 'I'
    select_option_table-OPTION = 'CP'
    select_option_table-LOW = 'abc*'.
    Then an ABAP statement such as
    IF remittance_info IN select_option_table.
    * would be true !!!
    ENDIF.
    but wouldn't deliver a result in a SELECT such as
    SELECT * FROM my_table INTO TABLE my_internal_table WHERE remittance_info IN select_option_table.
    because of the differences in lower/upper case.
    regards
    Andreas

  • Report text element as selection option

    Hi,
      I encounter a performance problem in a report program that include a self define fields in the selection option.  I use the FM READ_TEXT to read those fields and compare with the user input.Then, eliminates those unmatched records with if else statement.
    Here is my code:
    SELECT-OPTIONS: S_WADAT FOR LIKP-WADAT_IST.
      PARAMETERS: P_MAWB LIKE WA_REPORT-KZABE.
      PARAMETERS: P_HAWB LIKE LIKP-BOLNR.
      PARAMETERS: P_MATNR LIKE LIPS-MATNR.
      PARAMETERS: P_LOT(20) TYPE C.
      CLEAR: I_REPORT,I_DELIVERY,I_DELIVERY_INFO.
      REFRESH: I_REPORT,I_DELIVERY,I_DELIVERY_INFO.
      DATA WHERE_TAB(80) OCCURS 10 WITH HEADER LINE.
      DATA: BEGIN OF LTEXT OCCURS 50.
              INCLUDE STRUCTURE TLINE.
      DATA: END OF LTEXT.
      IF NOT P_HAWB IS INITIAL.
        CONCATENATE ' BOLNR = ' WHERE_TAB INTO WHERE_TAB.
        CONCATENATE WHERE_TAB '''' INTO WHERE_TAB.
        CONCATENATE WHERE_TAB P_HAWB INTO WHERE_TAB.
        CONCATENATE  WHERE_TAB '''' INTO WHERE_TAB.
        APPEND WHERE_TAB.
      ENDIF.
      IF NOT P_MATNR IS INITIAL.
        IF NOT WHERE_TAB IS INITIAL.
          CONCATENATE ' AND MATNR = ' WHERE_TAB INTO WHERE_TAB.
        ELSE.
          CONCATENATE ' MATNR = ' WHERE_TAB INTO WHERE_TAB.
        ENDIF.
        CONCATENATE WHERE_TAB '''' INTO WHERE_TAB.
        CONCATENATE WHERE_TAB P_MATNR INTO WHERE_TAB.
        CONCATENATE  WHERE_TAB '''' INTO WHERE_TAB.
        APPEND WHERE_TAB.
      ENDIF.
      SELECT A1~VBELN
             WADAT_IST
             BOLNR
             C1~LIFNR
             B1~MATNR
             LFIMG
             BTGEW
             B1~CHARG
        INTO CORRESPONDING FIELDS OF TABLE TMP_REPORT
        FROM LIKP AS A1 JOIN LIPS AS B1 ON A1~VBELN = B1~VBELN
            JOIN MCHA AS C1 ON B1~MATNR = C1~MATNR
                               AND
                               B1~WERKS = C1~WERKS
                               AND
                               B1~CHARG = C1~CHARG
         WHERE LFART = 'EL'
               AND
               WADAT_IST IN S_WADAT
               AND
               B1~CHARG NE ''
               AND
               B1~WERKS = 'ABC'
               AND
               (WHERE_TAB)
      SORT TMP_REPORT BY VBELN.
      DATA: V_FLAG TYPE I,
            V_EXCLUDE TYPE I,
            V_LOT_EXCLUDE TYPE I.
      V_FLAG = 0.
      V_EXCLUDE = 0.
      V_LOT_EXCLUDE = 0.
      IF SY-SUBRC = 0.
    * trim the parameter space
        SHIFT P_MAWB RIGHT DELETING TRAILING SPACE.
        SHIFT P_MAWB LEFT DELETING LEADING SPACE.
        SHIFT P_LOT RIGHT DELETING TRAILING SPACE.
        SHIFT P_LOT LEFT DELETING LEADING SPACE.
        LOOP AT TMP_REPORT.
          AT NEW VBELN.
            V_FLAG = 1.
            V_EXCLUDE = 0.
          ENDAT.
          IF V_FLAG = 1.
            PERFORM GET_HEADER_TEXT
                  TABLES
                       LTEXT
                  USING
                       'Z3IH'
                        TMP_REPORT-VBELN
            READ TABLE LTEXT INDEX 1.
            SPLIT LTEXT-TDLINE AT ':' INTO
            TMP_REPORT-VERUR TMP_REPORT-VERUR.
            READ TABLE LTEXT INDEX 2.
            SPLIT LTEXT-TDLINE AT ':' INTO
            TMP_REPORT-KZGBE TMP_REPORT-KZGBE.
            READ TABLE LTEXT INDEX 3.
            SPLIT LTEXT-TDLINE AT ':' INTO
            TMP_REPORT-KZABE TMP_REPORT-KZABE.
            READ TABLE LTEXT INDEX 4.
            SPLIT LTEXT-TDLINE AT ':' INTO
            TMP_REPORT-STABE TMP_REPORT-STABE.
            READ TABLE LTEXT INDEX 5.
            SPLIT LTEXT-TDLINE AT ':' INTO
            TMP_REPORT-PRONU TMP_REPORT-PRONU.
            READ TABLE LTEXT INDEX 6.
            SPLIT LTEXT-TDLINE AT ':' INTO
            TMP_REPORT-LADEL TMP_REPORT-LADEL.
            SHIFT TMP_REPORT-KZABE RIGHT DELETING TRAILING SPACE.
            SHIFT TMP_REPORT-KZABE LEFT DELETING LEADING SPACE.
            MOVE-CORRESPONDING TMP_REPORT TO WA_REPORT.
            MOVE-CORRESPONDING TMP_REPORT TO WA_TMPREPORT.
            V_FLAG = 0.
          ELSE.
            MOVE TMP_REPORT-VBELN TO WA_REPORT-VBELN.
            MOVE TMP_REPORT-LIFNR TO WA_REPORT-LIFNR.
            MOVE TMP_REPORT-MATNR TO WA_REPORT-MATNR.
            MOVE TMP_REPORT-LFIMG TO WA_REPORT-LFIMG.
          ENDIF.
          PERFORM GET_LOT_CODE USING
                                     WA_REPORT-MATNR
                                     '3LTU'
                                     WA_TMPREPORT-CHARG
                                     WA_REPORT-LOT.
          IF V_EXCLUDE  1 AND P_MAWB NE ''
            AND WA_TMPREPORT-KZABE NE P_MAWB .
            V_EXCLUDE = 1.
          ENDIF.
          SHIFT WA_REPORT-LOT RIGHT DELETING TRAILING SPACE.
          SHIFT WA_REPORT-LOT LEFT DELETING LEADING SPACE.
          IF P_LOT NE '' AND P_LOT NE WA_REPORT-LOT.
            V_LOT_EXCLUDE = 1.
          ELSE.
            V_LOT_EXCLUDE = 0.
          ENDIF.
          IF V_EXCLUDE  1 AND V_LOT_EXCLUDE  1.
            APPEND WA_REPORT TO I_REPORT.
            CLEAR WA_REPORT.
            CLEAR TMP_REPORT.
          ENDIF.
        ENDLOOP.

    Hi,
    i found one perfromance issue, try to remove the "INTO CORRESPONDING FIELDS OF TABLE " in your select statement, the order of the fields that you are fetching and the oreder for the fields in your internal table structure should be same, then you can remove "INTO CORRESPONDING FIELDS OF TABLE " and while fetching the fields reffer the table and fields you need to fetch here also you need to main the same order...like you have to do the same in where condition.
    Reward if needful.
    Thanks,
    Sreeram.

  • Multiple select options validation at selection screen

    Hi,
    I have the requirement to create a selection screen with 3 select options. Two of them are cross-dependent. It is mandatory to fill one of them and it is not allowed to fill both. The third one is optional. I tried the validation at selection-screen on block... and I have a problem that search help buttons for select options react like execution buttons, when I press any of them I am getting one of errors instead of search help.
    Any help on this issue would be appreciated.
    Here is my code:
    DATA:
          so_rbkp TYPE rbkp,
          so_mseg TYPE mseg.
    SELECTION-SCREEN BEGIN OF BLOCK blok WITH FRAME.
      SELECT-OPTIONS:
            s_fakt   FOR so_rbkp-belnr,
            s_matdok FOR so_mseg-mblnr,
            s_god FOR so_mseg-gjahr.
    SELECTION-SCREEN END OF BLOCK blok.
    INITIALIZATION.
    SET TITLEBAR '0100'.
    START-OF-SELECTION.
      AT SELECTION-SCREEN on block blok.
          if s_fakt <> space and s_matdok <> space.
            MESSAGE 'Message1' TYPE 'E'.
          elseif s_fakt = space and s_matdok = space.
            MESSAGE 'Message2' TYPE 'E'.
          endif.
        ENDIF.

    Only perform the check when user wants to execute or submit the program, not when pressing F4 or even Enter, but in a selection-screen event, before START-OF-SELECTION which were program would terminate in error :
    TABLES: SSCRFIELDS.
    AT SELECTION-SCREEN OB BLOCK b01.
        IF sscrfields-ucomm EQ 'ONLI'
        OR sscrfields-ucomm EQ 'PRIN'
        OR sscrfields-ucomm EQ 'SJOB'.
          IF s_fakt[] IS NOT INITIAL AND s_matdok IS NOT INITIAL.
            MESSAGE 'Message1' TYPE 'E'.
          ELSEIF s_fakt[] IS INITIAL and s_matdok[] IS INITIAL.
            MESSAGE 'Message2' TYPE 'E'.
          ENDIF.
        ENDIF.
    (You could also always send the message, but using type 'E' for those function code and 'S' status for any other value.)
    Regards,
    Raymond

  • How to use the select option to get the multiple bom explosion

    hi friends,
              i have completed the bom exp using parameters to get one material
    input,but i need to adopt select option to give from and to materials
    i ll gives from and to materials with description and bom deails
    i here gave the coding also, pl give me a suggestion how to adpot the select
    optoins instead of parameters ,very urgent
    REPORT PP_BOM_EXPLOSION.
    tables :mara,marc,stpo.
    TYPE-POOLS : SLIS.
    *parameters: p_werks like t001w-werks obligatory.
    SELECT-OPTIONS : p_matnr FOR mara-matnr obligatory.
    **select-options : p_matnr for mara-matnr obligatory.
    PARAMETERS : P_WERKS LIKE T001W-WERKS OBLIGATORY,
            P_MATNR LIKE MARA-MATNR OBLIGATORY.
    *parameters: p_werks like marc-werks obligatory,
    *p_matnr like marc-matnr obligatory.
    constants c_x value 'X'.
    data: begin of it_comp occurs 0,
    matnr like mara-matnr,
    maktl like makt-maktx,
    idnrk like stpox-idnrk,
    ojtxp like stpox-ojtxp,
    menge like stpox-menge,
    meins like stpox-meins,
    matkl like stpox-matmk,
    end of it_comp.
    data : topmat like cstmat.
    data: w_topmat like cstmat.
    DATA : IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA : WA_FIELDCAT_LN LIKE LINE OF IT_FIELDCAT.
    DATA : IT_EVENTCAT  TYPE SLIS_T_EVENT.
    DATA : WA_EVENTCAT_LN  LIKE LINE OF IT_EVENTCAT.
    DATA : IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: S_COL_POS TYPE I.
    start-of-selection.
    perform explode_assembly.
    PERFORM BUILD_FIELDCATALOG.
    PERFORM DATA_DISPLAY.
    *end-of-selection.
    *perform write_report.
    *top-of-page.
    *perform print_header.
    *form print_header.
    *write: /(18) 'Component'(h00),
    *(40) 'Description'(h01),
    *'Mat.Group'(h02),
    *(18) 'Quantity'(h03).
    *uline.
    *endform.
    *form write_report.
    *write: / w_topmat-matnr under text-h00 color col_heading,
    *w_topmat-maktx under text-h01 color col_heading.
    *loop at it_comp.
    *write: /
    *it_comp-idnrk under text-h00,
    *it_comp-ojtxp under text-h01,
    *it_comp-matkl under text-h02,
    *it_comp-menge unit it_comp-meins under text-h03,
    *it_comp-meins.
    *endloop.
    *uline.
    *endform.
    form explode_assembly.
    data: it_stb like stpox occurs 0 with header line,
    it_stb2 like stpox occurs 0 with header line,
    it_stb3 like stpox occurs 0 with header line,
    w_msg(255) type c.
    SELECT MATNR FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA
                               WHERE MATNR IN P_MATNR.
    Explode highest level:
    *LOOP AT IT_MARA.
    call function 'CS_BOM_EXPL_MAT_V2'
    exporting
    auskz = c_x
    capid = 'PP01'
    cuols = c_x
    datuv = sy-datum
    knfba = c_x
    ksbvo = c_x
    mbwls = c_x
    mdmps = c_x
    BGIXO = c_x
    MKMAT = c_x
    MMAPS = c_x
    FBSTP = c_x
    FTREL = c_x
    mtnrv = P_MATNR
    werks = p_werks
    importing
    topmat = w_topmat
    tables
    stb = it_stb
    exceptions
    alt_not_found = 1
    call_invalid = 2
    material_not_found = 3
    missing_authorization = 4
    no_bom_found = 5
    no_plant_data = 6
    no_suitable_bom_found = 7
    conversion_error = 8
    others = 9.
    if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
    into w_msg.
    *write: / w_msg.
    exit.
    endif.
    Don't process documents
    delete it_stb where idnrk is initial.
    Don't process valid from furure:
    delete it_stb where datuv >= sy-datum.
    Explode phantom assemblies up to last level
    *do.
    it_stb2[] = it_stb[].
    *delete it_stb2 where dumps is initial.
    *if it_stb2[] is initial.
    *exit.
    *endif.
    *delete it_stb where not dumps is initial.
    delete it_stb where VPRSV <> 'S' OR MMSTA = '61'.
    loop at it_stb2.
    call function 'CS_BOM_EXPL_MAT_V2'
    exporting
    capid = 'PP01'
    auskz = c_x
    cuols = c_x
    datuv = sy-datum
    knfba = c_x
    ksbvo = c_x
    mbwls = c_x
    mdmps = c_x
    FBSTP = c_x
    FTREL = c_x
    mtnrv = it_stb2-idnrk
    werks = p_werks
    tables
    stb = it_stb3
    exceptions
    alt_not_found = 1
    call_invalid = 2
    material_not_found = 3
    missing_authorization = 4
    no_bom_found = 5
    no_plant_data = 6
    no_suitable_bom_found = 7
    conversion_error = 8
    others = 9.
    if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
    into w_msg.
    *write: / w_msg.
    else.
    delete it_stb3 where idnrk is initial.
    delete it_Stb3 where sobsl = 50.
    loop at it_stb3 .
    multiply it_stb3-menge by it_stb2-menge.
    modify it_stb3 transporting menge.
    endloop.
    append lines of it_stb3 to it_stb.
    endif.
    *ENDLOOP.
    endloop.
    *enddo.
    Build table of components collecting the same components from
    all levels
    loop at it_stb.
    it_comp-matkl = it_stb-matmk.
    it_comp-idnrk = it_stb-idnrk.
    it_comp-ojtxp = it_stb-ojtxp.
    it_comp-menge = it_stb-menge.
      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
        EXPORTING
        INPUT                = IT_STB-MEINS
        LANGUAGE             = SY-LANGU
        IMPORTING
      LONG_TEXT            =
       OUTPUT               = IT_STB-MEINS
      SHORT_TEXT           =
    EXCEPTIONS
       UNIT_NOT_FOUND       = 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.
    it_comp-meins = it_stb-meins.
    collect it_comp.
    clear it_comp.
    endloop.
    *READ TABLE IT_COMP INDEX 1.
    *IF SY-SUBRC = 0.
    IT_COMP-MATNR = w_topmat-matnr.
    IT_COMP-MAKTL = w_topmat-maktx.
    INSERT IT_COMP index 1.
    *ENDIF.
    ENDFORM.
    FORM TO APPEND DATA INTO ALV FORM
    FORM BUILD_FIELDCATALOG.
    PERFORM BUILD_FIELDCAT USING 'MATKL' 'Component'.
    PERFORM BUILD_FIELDCAT USING 'MATKL' 'Component'.
    *loop at it_comp.
       PERFORM BUILD_FIELDCAT USING 'MATNR' 'Material'.
      PERFORM BUILD_FIELDCAT USING 'MAKTL' 'Material Description'.
      PERFORM BUILD_FIELDCAT USING 'IDNRK' 'Component'.
      PERFORM BUILD_FIELDCAT USING 'OJTXP' 'Description'.
      PERFORM BUILD_FIELDCAT USING 'MATKL' 'Material Group'.
      PERFORM BUILD_FIELDCAT USING 'MENGE'  'Quantity'.
      PERFORM BUILD_FIELDCAT USING 'MEINS' 'Unit Of MEASUREMENT'.
    *endloop.
    ENDFORM.
    FORM TO BUILD IN FIELD CATALOG FOR ALV FORM
    FORM BUILD_FIELDCAT USING L_FIELDNAME LIKE DD03L-FIELDNAME S_TEXT LIKE DD03P-SCRTEXT_M.
      CLEAR WA_FIELDCAT_LN.
      ADD 1 TO S_COL_POS.
      WA_FIELDCAT_LN-REF_TABNAME  = 'IT_COMP'.
      WA_FIELDCAT_LN-FIELDNAME    = L_FIELDNAME.
      WA_FIELDCAT_LN-SELTEXT_M    = S_TEXT.
      WA_FIELDCAT_LN-COL_POS      = S_COL_POS.
      WA_FIELDCAT_LN-QFIELDNAME   = SPACE.
      WA_FIELDCAT_LN-HOTSPOT      = SPACE.
      WA_FIELDCAT_LN-JUST         = 'R'.
      APPEND WA_FIELDCAT_LN TO IT_FIELDCAT.
    ENDFORM.
    FORM TO BUILD IN FIELD CATALOG FOR ALV FORM
    FORM DATA_DISPLAY.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = TEXT-001
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       = IT_FIELDCAT
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = IT_COMP
       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.
    Thanks in advance
                                                                                    Regards
    senthilkumar D

    tables :mara,marc,stpo.
    parameters: p_werks like t001w-werks obligatory.
    *p_matnr like mara-matnr obligatory.
    *select-options : p_matnr for mara-matnr obligatory.
    select-options : P_matnr for mara-matnr.
    *parameters: p_werks like marc-werks obligatory,
    *p_matnr like marc-matnr obligatory.
    constants c_x value 'X'.
    data: begin of it_comp occurs 0,
    idnrk like stpox-idnrk,
    ojtxp like stpox-ojtxp,
    menge like stpox-menge,
    meins like stpox-meins,
    matkl like stpox-matmk,
    end of it_comp.
    data: w_topmat like cstmat.
    data : begin of itab occurs 0,
            matnr like mara-matnr,
            end of itab.
    *data : itab type table of mara with header line.
    start-of-selection.
    perform explode_assembly.
    end-of-selection.
    perform write_report.
    top-of-page.
    perform print_header.
    form print_header.
    write: /(18) 'Component'(h00),
    (40) 'Description'(h01),
    'Mat.Group'(h02),
    (18) 'Quantity'(h03).
    uline.
    endform.
    form write_report.
    write: / w_topmat-matnr under text-h00 color col_heading,
    w_topmat-maktx under text-h01 color col_heading.
    loop at it_comp.
    write: /
    it_comp-idnrk under text-h00,
    it_comp-ojtxp under text-h01,
    it_comp-matkl under text-h02,
    it_comp-menge unit it_comp-meins under text-h03,
    it_comp-meins.
    endloop.
    uline.
    endform.
    form explode_assembly.
    data: it_stb like stpox occurs 0 with header line,
    it_stb2 like stpox occurs 0 with header line,
    it_stb3 like stpox occurs 0 with header line,
    w_msg(255) type c.
    select matnr from mara into table itab where matnr  between p_matnr-low and p_matnr-high.
    loop at p_matnr.
      itab-matnr = p_matnr-low.
       append itab.
       itab-matnr = p_matnr-high.
       append itab.
       clear itab.
       endloop.
    Explode highest level:
    loop at itab.
    call function 'CS_BOM_EXPL_MAT_V2'
    exporting
    auskz = c_x
    capid = 'PP01'
    cuols = c_x
    datuv = sy-datum
    knfba = c_x
    ksbvo = c_x
    mbwls = c_x
    mdmps = c_x
    BGIXO = c_x
    MKMAT = c_x
    MMAPS = c_x
    FBSTP = c_x
    FTREL = c_x
    mtnrv = itab-matnr
    werks = p_werks
    importing
    topmat = w_topmat
    tables
    stb = it_stb
    exceptions
    alt_not_found = 1
    call_invalid = 2
    material_not_found = 3
    missing_authorization = 4
    no_bom_found = 5
    no_plant_data = 6
    no_suitable_bom_found = 7
    conversion_error = 8
    others = 9.
    if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
    into w_msg.
    write: / w_msg.
    exit.
    *else.
    endif.
    loop at it_stb.
    it_comp-matkl = it_stb-matmk.
    it_comp-idnrk = it_stb-idnrk.
    it_comp-ojtxp = it_stb-ojtxp.
    it_comp-menge = it_stb-menge.
    it_comp-meins = it_stb-meins.
    collect it_comp.
    clear it_comp.
    endloop.
    endloop.
    endform.
    i got the low and high from selectoption and then move it into itab.
    then i pass itab-matnr into fm. using loop.
    but i got only one output
    but ineet to got from and to output.
    give me a solution
    Regards
    ds

  • Clearing the displayed value for a SELECT-OPTION

    How do I clear the displayed value of a SELECT-OPTION? 
    I have 2 SELECT-OPTIONs on my screen (standard basic report program screen).  I use code like this to populate the drop-down boxes for each one. 
    =====
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_prgrp-low.
      PERFORM fill_prgrp_values.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_prctr-low.
      PERFORM fill_prctr_values.
    =====
    The value the user picks for the first SELECT-OPTION will affect what values I put in the drop-down list for the second SELECT-OPTION. 
    If a user enters a value for the second SELECT-OPTION, and then goes back and changes the value of the first SELECT-OPTION, then I want to do two things:
    1.  Create a new set of values for the drop-down list for the second SELECT-OPTION (no problem; working fine);
    2.  Clear the displayed value from the second SELECT-OPTION that the user entered previously.  That value became invalid when the user picked a new value for the first SELECT-OPTION. 
    How do I clear that second displayed value? 
    I have tried CLEAR and REFRESH for the second variable using the formats s_prctr, s_prctr[], and s_prctr-low.  They will erase the values of the internal table or part(s) of it, but the displayed value stays on the screen. 
    I need to clear out the displayed value so the user will either leave it blank or enter or select a new value. 
    I am using F4IF_INT_TABLE_VALUE_REQUEST to build the drop-down lists, and it works fine, but I do not see any function module to clear the displayed value off the screen. 
    Thanks for your help.

    Sorry, but calling DYNP_VALUES_UPDATE did not work.  This is how I coded it. 
    fld_reset_rcd-fieldname  = 'S_PRCTR'.
      fld_reset_rcd-stepl      = sy-stepl.
      CLEAR fld_reset_rcd-fieldvalue.      "  re-initialize s_prctr
      CLEAR fld_reset_rcd-fieldinp.        "  what goes in here?
      APPEND fld_reset_rcd TO fld_reset_tbl.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          dyname = 'ZFI_GL_BALANCE_NGL'
          dynumb = '1000'
        TABLES
          dynpfields = fld_reset_tbl
    <Added code tags>
    I have discovered that CLEAR and REFRESH of s_prctr will clear it somewhat.  If I enter multiple values, ranges, etc., they will all be cleared, EXCEPT for the one single value that is displayed on the main screen.  It is not cleared and it remains if you push the button to display the pop-up to enter ranges, etc. 
    To devrath.sampat  --  Thanks for your example for building the drop-down list, but that is not the problem I am having.  I am already able to build it just fine. 
    To repeat my problem, if I: 
    1.  first enter / select a value for the first SELECT-OPTION s_prgrp
    2.  then enter / select a value for the second SELECT-OPTION s_prctr
    3.  And finally go back and select a new value of the first SELECT-OPTION s_prgrp from its drop-down list,
         when I do, the program needs to clear the value displayed on the main screen for the second SELECT-OPTION s_prctr (any additional values, ranges, etc., are cleared by CLEAR and REFRESH, if I go look; but not the value shown on the main screen).
    Edited by: Scott Crosby on Feb 14, 2012 4:20 PM
    Edited by: Suhas Saha on Feb 15, 2012 12:03 PM

  • Changing property of select options

    Hi I have created a select options with the property read only = true by default, If a condition at the beginning is fulfilled I want to change the property read only of the previous field to false. I am doing it in the following way:
        DATA lt_range_table TYPE REF TO data.
      Data from select options
        rt_objid = wd_this->m_handler->get_range_table_of_sel_field( i_id = zdcl_wdr_matriz_decision_asf=>e_atrib_m_dec_asf-grupo_form ).
        ASSIGN rt_objid->* TO <fs_objid>.
      Create range tabl
        lt_range_table = wd_this->m_handler->create_range_table( i_typename = zdcl_wdr_matriz_decision_asf=>e_atrib_m_dec_asf-tipo_d ).
        DATA: id TYPE string.
        id = zdcl_wdr_matriz_decision_asf=>e_atrib_m_dec_asf-tipo_d.
        REPLACE ALL OCCURRENCES OF REGEX '\W' IN id WITH '_'.
        IF NOT <fs_objid> IS INITIAL.
        update property
          wd_this->m_handler->upd_selection_field(
           i_id              = id
           it_result         = lt_range_table
           i_read_only       = abap_false ).
        ENDIF.
    What is wrong here please?
    Help really appreciated

    Hi Jorge.
    Why do you perform the replacement? Are you sure, that the ID you used while adding the field is the same as the one you use for updating? What is the rror or does just nothing happen?
    Cheers,
    Sascha
    Message was edited by:
            Sascha Dingeldey

  • How can i create a dynamic structure based on my input from a select-option

    Hello,
    This is to develop a custom report in FI for G/L Balance based on company code.
    I have an input select-option for Company code.
    Based on the range of company code my output layout should be modified.
    I am not very much sure to create a dynamic internal based on the input from a select-option.
    Can any one please let me know how can i do this.
    I would appreciate for anyone who turns up quickly.
    Thank you,
    With regs,
    Anitha Joss.

    See the following program, it builds a dynamic internal table based on the company codes from the select option. 
    report zrich_0001 .
    type-pools: slis.
    field-symbols: <dyn_table> type standard table,
                   <dyn_wa>.
    data: alv_fldcat type slis_t_fieldcat_alv,
          it_fldcat type lvc_t_fcat.
    data: it001 type table of t001 with header line.
    selection-screen begin of block b1 with frame title text-001.
    select-options: s_bukrs for it001-bukrs.
    selection-screen end of block b1.
    start-of-selection.
      select * into table it001 from t001
                     where bukrs in s_bukrs.
      perform build_dyn_itab.
    *  Build_dyn_itab
    form build_dyn_itab.
      data: index(3) type c.
      data: new_table type ref to data,
            new_line  type ref to data,
            wa_it_fldcat type lvc_s_fcat.
      clear wa_it_fldcat.
      wa_it_fldcat-fieldname = 'PERIOD' .
      wa_it_fldcat-datatype = 'CHAR'.
      wa_it_fldcat-intlen = 6.
      append wa_it_fldcat to it_fldcat .
      loop at it001.
        clear wa_it_fldcat.
        wa_it_fldcat-fieldname = it001-bukrs .
        wa_it_fldcat-datatype = 'CHAR'.
        wa_it_fldcat-intlen = 4.
        append wa_it_fldcat to it_fldcat .
      endloop.
    * Create dynamic internal table and assign to FS
      call method cl_alv_table_create=>create_dynamic_table
                   exporting
                      it_fieldcatalog = it_fldcat
                   importing
                      ep_table        = new_table.
      assign new_table->* to <dyn_table>.
    * Create dynamic work area and assign to FS
      create data new_line like line of <dyn_table>.
      assign new_line->* to <dyn_wa>.
    endform.
    Regards,
    Rich Heilman

  • How to retrieve data using logical database and custom select options

    Hi all,
    I have a selection screen which is displayed by logical database PSJ and I have two select options of my own. I need to retrieve data based on both selection screen of logical database and my own select options. How can I do it?
    Thanks in advance.

    Hai Gupta
    Check the following Document & Links
    1. A logical database is in fact
    a program only.
    2. This LDB provides two main things :
    a) a pre-defined selection screen
    which handles all user inputs and validations
    b) pre defined set of data
    based upon the user selection.
    3. So we dont have to worry about from
    which tables to fetch data.
    4. Moreover, this LDB Program,
    handles all user-authorisations
    and is efficient in all respects.
    5. tcode is SLDB
    good info about Logical Database. you can check the link.
    http://www.geekinterview.com/question_details/1506
    http://help.sap.com/saphelp_46c/helpdata/EN/35/2cd77bd7705394e10000009b387c12/frameset.htm
    Re: How to Create and Use ldb in reports?
    Re: Logical databases
    http://help.sap.com/saphelp_46c/helpdata/en/9f/db9bed35c111d1829f0000e829fbfe/frameset.htm
    Functions for displaying and changing logical databases:
    Call Transaction SE36 or
    Choose ABAP Workbench -> Development -> Programming environ. -> Logical databases
    Interaction between database program and report:
    During program processing, subroutines are performed in the database program and events are executed in the report.
    To read data from a database tables we use logical database.
    A logical database provides read-only access to a group of related tables to an ABAP/4 program.
    advantages:-
    The programmer need not worry about the primary key for each table.Because Logical database knows how the different tables relate to each other,and can issue the SELECT command with proper where clause to retrieve the data.
    i)An easy-to-use standard user interface.
    ii)check functions which check that user input is complete,correct,and plausible.
    iii)meaningful data selection.
    iv)central authorization checks for database accesses.
    v)good read access performance while retaining the hierarchical data view determined by the application logic.
    disadvantages:-
    i)If you donot specify a logical database in the program attributes,the GET events never occur.
    ii)There is no ENDGET command,so the code block associated with an event ends with the next event
    statement (such as another GET or an END-OF-SELECTION).
    1. transaction code SLDB.
    2.enter name z<ldb-name>
    3.create
    4.short text
    5.create
    6. name of root node (here Ekko)
    7. enter short text (f6)
    8.node type -> data base table.
    9.create
    10 change logical DB
    riht click on ekko and insert node
    here node name ekpo
    11.create
    12. click on selections
    13. press no Should the changed structure of Z<ldb name> be saved first.
    14.select tables which you want to join.
    15.transfer
    16 now you have to o to coding part.
    17. save
    activate.
    19.click to src code
    double click on first include and activate
    Regards
    Sreeni

  • Max no of records in select-options

    Hi,
    I have a select option for MATNR.
    I want to perform a validation where in the values given for selection should not exceed 500 material Numbers.
    How can I do that?
    Regards,
    Vinod.

    Hi vinod,
    Try this code yaar.
    data:loop like I default '0'.
    loop at itab occurs 500.
    select matnr from table mara.
    loop = loop + 1.
    sy-tabix.
    endloop.
    if loop > 500.
    Message 'e000'. (This message should be given in the message area and u have to include the msg area name inside the report.)
    endif.
    This should solve ur problem.
    Regards,
    Nagarajan.

  • SELECT-OPTIONS in table maintenance generator screen

    Hi
    Is it possible to create SELECT-OPTIONS in table maintenance screen?
    My requirement is to allow the user to enter single Company code and Range of G/L Accounts in the Table Maintenance input screen. Please let me know.
    Thanks
    Abdul Hakim

    Hello Tamas,
    As a matter of fact we can add a custom selection-screen to the TMG screen & without manually modifying the TMG
    You can do so by using the [Event AA: Instead of the Standard Data Read Routine|http://help.sap.com/saphelp_nw04s/helpdata/en/91/ca9f56a9d111d1a5690000e82deaaa/content.htm].
    Please check the code snippet:
    DATA: gv_fldate TYPE s_date.
    * User-defined selection-screen
    SELECTION-SCREEN: BEGIN OF SCREEN 9000.
    PARAMETERS:     p_carrid TYPE s_carr_id OBLIGATORY.
    SELECT-OPTIONS: s_fldate FOR gv_fldate OBLIGATORY.
    SELECTION-SCREEN: END OF SCREEN 9000.
    *&      Form  sub_yvsflight_event_aa
    *       text
    FORM sub_yvsflight_event_aa.
      DATA: ls_temp_data TYPE yvsflight,
            lt_temp_data TYPE STANDARD TABLE OF yvsflight.
    * Call the user-defined selection-screen
      CALL SELECTION-SCREEN 9000 STARTING AT 25 10.
    * Populate the int. table TOTAL
      PERFORM get_data_yvsflight.
    * Delete the records which are not required
      LOOP AT total.
        ls_temp_data = <vim_total_struc>. "Copy to local struct.
        IF ls_temp_data-carrid NE p_carrid OR
           ls_temp_data-fldate NOT IN s_fldate.
          DELETE total. "Remove the record from the TOTAL
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "sub_yvsflight_event_aa
    BR,
    Suhas

  • SELECT-OPTIONS in Screen

    Hi,
    I am trying to create select - options in Screen , i.e. not the selection screen but a custom screen, say 9000. I can make the text boxes etc for having the select options. But How do I simulate the button wchich comes after select options. It would be used in dialogue programming with multiple screens having different reports.
    Please reply to me urgently,
    Thanks and Regards
    Arnab Panigrahi

    A few dot points:
    1. You can have a select-option embedded in a dynpro, if you want, by using a subscreen.  There's an example bit of code at
    Module - pool Question..?
    This would be easy to adapt to being a popup rather than a full screen if required.
    2. As noted above, you can code your own select-options as in
    Making a referenced field a range?
    which I think Sesh has quoted from.
    3. For the requirement you expressed initially, the code below should do the trick... you get a different block of extra selections depending on which radionbutton you select.
    Jonathan
    report zlocal_jc_radiobutton_hiding.
    tables:
      sscrfields.           "To allow trapping of Fcode on selection screen
    selection-screen begin of block tot with frame.
    parameters :
      p_rb_01          radiobutton group rbg1 user-command zrb1 default 'X',
      p_rb_02          radiobutton group rbg1.
    selection-screen begin of block block1 with frame title text1.
    parameters:
      p_date                like sy-datum modif id bl1.
    selection-screen end of block block1.
    selection-screen begin of block block2 with frame title text2.
    parameters:
      p_time                like sy-uzeit modif id bl2.
    selection-screen end of block block2.
    selection-screen end of block tot.
    *" Events:
    initialization.
      text1 = 'Enter a date'.
      text2 = 'Enter a time'.
    at selection-screen output.
      perform at_selection_screen_output.
    at selection-screen.
      perform at_selection_screen.
    *&      Form  at_selection_screen_output
    form at_selection_screen_output.
    *" Hide the appropriate fields
      loop at screen.
        if  p_rb_01       = 'X'
        and screen-group1 = 'BL2'.
          screen-active = '0'.
        endif.
        if  p_rb_02       = 'X'
        and screen-group1 = 'BL1'.
          screen-active = '0'.
        endif.
        modify screen.
      endloop.
    endform.                    "at_selection_screen_output
    *&      Form  at_selection_screen
    form at_selection_screen.
    *" trap the radiobutton
      if sscrfields-ucomm = 'ZRB1'. "clicked Subtotal checkbox
    *" if you want to trap this radio button press here
      endif.
    endform.                    "at_selection_screen

  • Select option in module pool

    Hi friends,
    I have to create select options in module pool programming. Using subscreens i have created select option.
    But if i enter some value and if i press enter then the value is clearing automatically. I am not able to
    capture the values. Can any body help on this?
    Thanks a lot in advance.

    HI Ramesh,
    The data in table control will get refreshed automatically once action was performed. Capture the values by assigning them to the internal table in PAI. You can use the values stored in internal tables.
    Thanks,
    Ravi Kanth.

Maybe you are looking for

  • Online Number out of order??????

    I have a Skype number that I use for my business and the subscription is due today. I paid the full amount on 28th August and Skype acknowledged receipt, but now my Skype number is not working so my customers cannot phone me! This is disastrous four

  • Sample example for with check box in iterator.

    Hi, I have a requirement where 5 to line items would be displayed with an iterator. I am able to display the output with checkbox in the iterator. In the next page i need to display the check items. How do i identify the checkbox is checked or not. W

  • Working with External Time Code Sync

    Hi, We shot using a timecode generator. Is there a way in FCP to change the timeline so that the timecode matches that of the t/c gen we used. Basically, how do I change the starting timecode. Thanks

  • Sharing one VLAN on 2 contects

    I have  2 ACE 4710 applianes in HA with 1 context that is setup in One arm mode. I am planning to ADD 2 more contexts and the question can the VLAN that I already setup for source Natting (PAT IP)can be shared with the other  New Contexts for VOPS or

  • How FND_PRIMARY_KEYS table populated

    Hello All,<br><br> I would like to know how FND_PRIMARY_KEYS are populated. In our application, as per Apps guidelines, we dont have primary key defined on tables. We have indexes. But for Audit Trial we need primary keys. So i would like to know how