Alternative to select-options..

Hi All,
I am using select-option for a char field having length 50 char.
But as per the std it takes only 45 chars.
But I want all the 50 char. Is there any alternative to select-option other than
parameter?
Thanx.
USL

HI
use ranges for this....
for syntax see this
Here both SELECT-OPTIONS & RANGES works for the same purpose.  They both are used for the range selection from selection screen.  The main diff. between them is, while we use SELECT-OPTIONS system implicitly creates the select options internal table which contains the fields of SIGN,OPTION,LOW & HIGH.  But in case of RANGES, this internal table should be defined explicitly.
Eg. to SELECT-OPTIONS :
REPORT YARSELECT.
TABLES YTXLFA1.
SELECT-OPTIONS : VENDOR FOR YTXLFA1-LIFNR.
INITIALIZATION.
VENDOR-LOW    =   1000.               " It specifies the range starting value.
VENDOR-HIGH    =   2000.               " It specifies the range ending value.
VENDOR-OPTION  =  'BT'.                " specifies ranges value is in between.
VENDOR-SIGN      = 'I'.                     "specifies both inclussive.
APPEND VENDOR.
SELECT LIFNR LAND1 NAME1 FROM LFA1 INTO TABLE ITAB 
WHERE LIFNR IN VENDOR.
Eg. to RANGES:
REPORT YARRANGE.
TABLES YTXLFA1.
RANGES: VENDOR FOR YTXFLA1-LIFNR.
SELECT LIFNR LAND1 NAME1 FROM LFA1 INTO TABLE ITAB 
WHERE LIFNR IN VENDOR.
Here with RANGES  user has to design an internal table with fields - 
SIGN,OPTION,LOW and HIGH EXPLICITLY.
>
Example:
select-options: bukrs for zstock-bukrs.
Should the user fill in 'ABFI' in BUKRS on the selection screen, BUKRS will look like this:
IEQABFI
This is because BUKRS is set as a table as follows:
begin of bukrs occurs 0,
  SIGN(1)    type c,
  OPTION(2) type c,
  LOW         like bukrs,
  HIGH         like bukrs,
end of bukrs.
Now, when you create the following range, it will have the exact same fields set inside its table:
Ranges: bukrs for zstock-bukrs.
The difference is, because ranges doesn't show on the selection screen, you will have to fill it yourself, meaning you will have to fill bukrs-sign, bukrs-option, bukrs-low & bukrs-high all manually.
Some tips:
Sign is always I (for Include) or E (for Exclude)
Option can be a whole range, which includes:
EQ        (Equal) 
BT        (Between)) 
CP        (Contain Pattern)
So let's say you want to have the range check for all company codes not starting with AB, you will set your code as follow:
ranges: bukrs for zstock-bukrs.
bukrs-sign = 'E'.             "Exclude
bukrs-option = 'CP'.        "Pattern
bukrs-low = 'AB*'.            "Low Value
bukrs-high = ''.                "High Value
append bukrs.
Always remember to APPEND your range when you fill it, as the WHERE clause checks against the lines of the range table, not against the header line.
Hope this explains it well enough.
>
What does SIGN "I" & "E" mean?
The "I" stands for Include, and the "E" for Exclude.
The easiest way to learn how the range selections work is, create the following dummy program:
report dummy.
tables: mara.
select-options: matnr for mara-matnr.
start-of-selection.
loop at matnr.
write: / matnr-sign,
           matnr-option,
           matnr-low,
           matnr-high.
endloop.
Run this program, and fill in a lot of junk into MATNR. Fill in some includes, some excludes, some ranges, etc., and you will soon realise how the system builds ranges (select-options). Once you know that, you can fill your own ranges quickly and efficiently.
reward if helpful
vivekanand

Similar Messages

  • Alternative for field exit on select-option

    Good afternoon,
    I know that field exit doesn't work for select-option (SAP Note 29377, point 11) but i want to know if it exists an alternative (I use SAP 4.6, and an update to ECC6 is expected next month).
    The field exit would be the best option because we must add exit in many transaction (approximately 100) in little time.
    Thanks for your answers,
    Best regards,
    Anne.

    Hi
    A) Are there any way for debbuging field exit?
    The trick to debug the field-exit is to download the data to a file on application server;
    B) How run the field exits on field no editable?
    It can't do it, because a field-exit is triggered as soon as a value of the field is changed.
    D) Is used the field exit on version >= 4.6C
    SAP doesn't support the field-exit from realese 4.7: the field-exit still works on the realese 4.7 and, I suppose, 5 and 6.00: but it doesn't work for enjoy transactions.
    Anyway I believe it's better to replace the field-exit with a new solution from realese 4.7
    Max

  • Alternative for "check select-options" for select query.

    hi all,
    my report is using a "GET" syntax, followed by "check select-options".
    My senior told me to replace the Get syntax with select query.
    Now, my program also has dynamic selection screen.
    the dynamic selection screen almost has all the fields of database table.
    so, what is the way to replace this check select-options while applying select query?
    can you tell me how dynamic selection screen fields are populated? are they stored in some internal table?
    thanks for help.

    HI
    Here is some points about LDB.
    Logical databases are special ABAP programs that retrieve data and make it available to application programs. The most common use of logical databases is still to read data from database tables by linking them to executable ABAP programs.
    However, from Release 4.5A, it has also been possible to call logical databases using the function module LDB_PROCESS. This allows you to call several logical databases from any ABAP program, nested in any way. It is also possible to call a logical database more than once in a program, if it has been programmed to allow this. This is particularly useful for programs with type 1.
    Logical databases contain Open SQL statements that read data from the database. You do not therefore need to use SQL in your own programs. The logical database reads the program, stores them in the program if necessary, and then passes them line by line to the application program or the function module LDB_PROCESS using an interface work area
    For further on LDB's refer to this link.
    [http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9b5e35c111d1829f0000e829fbfe/content.htm]
    Hope this will help.
    Reward if helpful.
    Sumit Agarwal

  • "WHERE field IN select-options" alternative

    I currently have a report that uses
    SELECT-OPTIONS so_num FOR qmih-qmnum.
    SELECT * FROM qmih INTO TABLE t_qmih
       WHERE qmnum IN so_num.
    Now, this works fine unless the user selects a large number of individual items in the select options, e.g. 7,000 individual qmnums, in which case I get an ABAP error.
    The dump contains the following helpful information:
    How to correct the error                                                                               
    The SAP Open SQL statement must be divided into several smaller units.
    If the problem occurred due to the use of an excessively large table  
    in an IN itab construct, you can use the addition FOR ALL ENTRIES     
    instead.                                                              
    When you use this addition, the statement is split into smaller units 
    according to the restrictions of the database system used.                                                                               
    You may able to find an interim solution to the problem               
    in the SAP note system. If you have access to the note system yourself,
    use the following search criteria:                                    
    Could anyone give me an idea of how I could fix this?

    Hi Chandrasekhar,
    very interesting statement but not necessarily correct.
    Select-options declares a range-type internal table with header line. The number of table rows is limited by the system memory storage available.
    Oracle database has a fixed limit of 32KB for the length of the select statement. The open SQL database interface will resolve the range table resulting in the right number of comparison expressions.
    If the user puts too many values into select-options, he will probably copy single values which are represented by SIGN = 'I' and OPTION = 'EQ'.
    Try this (example):
    select-options:
      s_matnr for mara-matnr.
    data:
      lt_value like hashed table of s_matnr-low with unique key table_line. "avoid duplicates
    fiels-symbols:
      <any> type any,
      <value> type any.
    loop at s_matnr assigning <any>
      where sign = 'I' and option = 'EQ'.
      assign component 'LOW' of structure <any> to <field>.
      insert <field> into table t_value.
      delete s_matnr.
    endloop.
    select ...
      into table ...
      from ...
      for all entries in lt_value
      where matnr = lt_value-table_line.
    if lines( s_matnr ) > 0.
    select ...
      appending table ...
      from ...
      where matnr in s_matnr.
    endif.
    Now you've got them all.
    Regards,
    Clemens

  • DYNP_VALUES_READ Limitations for multiple lines select options

    Hi all !
       First post here, but a tough one I think. Here is my inquiry :
       I have worked on an specific abap function used in many long abap list reports. Theses reports are launched in background processing. The aim of this routine is to stop the report execution if a background job with the same selection parameters is already launched for the current user (to Prevent useless several launch of a time-expensive program).
        Because this routine is dynamic, I read the selection screen of the current report with the function 'DYNP_VALUES_READ'. And I compare the result with the variant of the backgroung job (read with function 'RS_VARIANT_CONTENTS').
        The real problem is that function "DYNP_VALUES_READ" only extract the first line of select-options. I found an alternative solution to extract the select options values (a dynamic assign with field symbols), but external conversions (for WBS elements for example ) are lost, so the comparison detects differences between the background job's variant values and the current selection screen values.
        Does anybody know a way to get entire select options values from a selection screen just as they are displayed on screen ?
    Thanks for reading my message
    Message was edited by: Thomas BRICOUT

    Thomas,
    Perhaps the following code will help you.  A function module in the code captures everything on the selection screen into an internal table.  It doesn't actually capture the information the way you want it, but I believe you will be able to work with it to achieve your desired result.  If it doesn't meet your needs, it is still useful for printing selection screen fields and their values.
    Bruce
    report zybttes2.
    tables: zf137,   " 137 General Ledger Document Details Table
            zf137a.  " 137 General Ledger Document Details Table, Archive
    selection-screen begin of block b1 with frame title text-004." BCT003
    parameters: p_zf137   radiobutton group xxx,                " BCT003
                p_zf137a  radiobutton group xxx.                " BCT003
    selection-screen end of block b1.                           " BCT003
    selection-screen begin of block parameter with frame title text-001.
    selection-screen skip 1.
    select-options: s_date for zf137-zzpostdat.
    selection-screen skip 1.
    selection-screen begin of line.
    selection-screen comment 3(6) text-002.
    selection-screen end of line.
    selection-screen skip 1.
    select-options: s_loan for zf137-zzloan.
    selection-screen skip 1.
    selection-screen begin of line.
    selection-screen comment 3(6) text-003.
    selection-screen end of line.
    selection-screen skip 1.
    select-options: s_ccentr for zf137-zzcostctr.
    selection-screen skip 1.
    selection-screen end of block parameter.
    data: ww(3) type n.
    data: zz(3) type c.
    data: c1(1) type c value '0'.
    do 2 times.
      ww = ww + 1.
      zz = ww.  shift zz left  deleting leading  c1.
      write: / zz.
    enddo.
      Capture and then print the selection screen fields and their values
    data: begin of i_info occurs 20,
            flag,
            olength type x,
            line  like raldb-infoline,
          end of i_info.
    call function 'PRINT_SELECTIONS'
      exporting
        mode      = 'TABLE'
        rname     = sy-cprog
        rvariante = sy-slset
      tables
        infotab   = i_info.
    loop at   i_info.
      write: / i_info-line.
    endloop.
    write:  / 'end'.

  • Select Option in APD

    Hi All,
    I am trying to create select-option for selection screen for extraction of criteria data into application server. Can I create selection-screen through "ABAP Routine" in APD?
    If not, so how we can create selection-screen for the same?
    Regards
    Anukul

    Hi,
    One way I can think of is.
    a.Create a table (or use TVARVC) which can store all selection options required by the User.
    b.Create an ABAP report, which lets users enter the parameters and fill this table.
    c.When you trigger the APD, an User Exit will read the table and fill the variable values based on User's Selection,
    d.The output file will contain data required by the Users.
    Alternatively, you can also considering triggering the APD in the same ABAP.
    Regards,
    Advait

  • Select option in global class

    Hi,
    I want to add one data dictionary field as select option in a global class. I am trying to declare as table type. But i missed out something and it is not working. Could anybody help me out in this.
    Regards,
    Krishna.

    Hello Krishna
    You may have a look at table type RSELOPTION (line type RSDSSELOPT).
    Alternatively, you can use a trick to "import" select-options for a selection screen into your class:
    How to pass a select-options to a class method
    Passing select-options value in method
    Regards
      Uwe

  • Select options  and BSP

    Hello Friends,
    I am might be on my way to buy Thomas book ( advance BSP programming along with CD ) where I want to see how select-options works in BSP
    Just intrested to know, if any one has already tried this and what was the experience ?
    Or mean-while is there any alternative avaiable to do the same ?
    Regards,

    Hi,
    This book is ver good, and will give you very good understanding of the subject...
    But to get more examples like the one you mentioned for select options, it will be good if you go through the sample BSP Applications...
    Few links are as follows:
    1) <a href="http://help.sap.com/saphelp_nw04/helpdata/en/c8/101c3a1cf1c54be10000000a114084/frameset.htm">BSP Tutorials</a>
    2) <a href="http://help.sap.com/saphelp_nw04/helpdata/en/e9/bb153aab4a0c0ee10000000a114084/frameset.htm">Also refer to BSP Help -- Main Page</a>
    Also check out the Sample Applications starting with <b>SBSP_*</b>
    This should help you...
    <b><i>Do reward each useful answer..!</i></b>
    Thanks,
    Tatvagna.

  • Issue In Providing 255 Charcters From The Selection Screen Select-Option

    Dear Guru,
    I am searching for table field with having length = 255 character.
    which i want to use in select-option for proving data from the selection screen.
    I have found the table myhlp and it associated field allvals which is having length = 255.
    I am using it as below in my selection screen for the value to be provided 255 character long.
    SELECTION-SCREEN : BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
    SELECT-OPTIONS   : s_mlbody FOR myhlp-allvals  NO INTERVALS.
    SELECTION-SCREEN : END OF BLOCK b3.
    Now when i am going for the multiple selection option --> It is providing me the Multiple selection popup and giving me the provision of provide multiple line .
    But the issue is that --> For a particular single value line in the popup i am able to enter only 45 charcters not 255 character.
    But i need to put 255 charcter for particular line in a single value..
    Please give me some guideline how resolve this or any other alternative way of reading the 255 charcter from the selection screen
    Thanks & regards
    Saifur Rahaman

    Hi,
         As said by A@s selction screen with table control will be a good option.
    design a custom screen with SUBSCREEN as screeen attribute using tcode se51.
    For table control sample - go through Tcode ABAPDOCU - abap user dialogs-screens-complex screen- table control
    Try Following,
    REPORT Zsample .
    controls: tc type tableview using screen 200.
    parameters: p_user type myhlp-username.
    data: begin of itab occurs 50,
          field1(255) type c,
          end of itab.
    data: i_out type standard table of myhlp.
    SELECTION-SCREEN BEGIN OF TABBED BLOCK MAX FOR 22 LINES.
    SELECTION-SCREEN TAB (25) TABS1 USER-COMMAND UCOMM1
             DEFAULT SCREEN 200.
    SELECTION-SCREEN END OF BLOCK MAX.
    start-of-selection.
    select * from myhlp into table i_out for all entries in itab
              where username eq p_user
                    and allvals = itab-field1.
    MODULE READ_ITAB INPUT.
    insert itab index tc-current_line.
    ENDMODULE.                 " READ_ITAB  INPUT

  • Web Dynpro ABAP - Select Option and ALV Component Usage

    Hi,
    I'm new in ABAP Web Dynpro and i was trying to follow the SDN tutorial
    Web Dynpro ABAP - Select Option and ALV Component Usage  
    In this video, we create a new Web Dynpro ABAP component that uses both Select Options and ALV. Developers can learn the basic mechanisms for working with both of these reusable components.
    Following the link: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/39c54fe7-0b01-0010-0eb6-d63ac2bdd637
    I implemented and generated the web dynpro with success but when i execute a test i get a dump on select-option definition.
    Note
    The following error text was processed in the system ECD : Exception condition "TYPE_NOT_FOUND" raised.
    The error occurred on the application server ITAWSECCS01D_ECD_00 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: DESCRIBE_BY_NAME of program CL_ABAP_TYPEDESCR=============CP
    I went in debug and the piece of code dumping is:
    lt_range_table =
    wd_this->m_handler->create_range_table( i_typename = 'S_PROJ' ).
    Is there someone who can help me?
    Thanks in advance,
    Stefano.

    Hi,
    I'm new in ABAP Web Dynpro and i was trying to follow the SDN tutorial
    Web Dynpro ABAP - Select Option and ALV Component Usage
    In this video, we create a new Web Dynpro ABAP component that uses both Select Options and ALV. Developers can learn the basic mechanisms for working with both of these reusable components.
    Following the link: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/39c54fe7-0b01-0010-0eb6-d63ac2bdd637
    I implemented and generated the web dynpro with success but when i execute a test i get
    an error as
    Note
    The following error text was processed in the system EI6 : Exception condition "TYPE_NOT_FOUND" raised.
    The error occurred on the application server EC6IDES_EI6_01 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: DESCRIBE_BY_NAME of program CL_ABAP_TYPEDESCR=============CP
    I have created a table zmy_table and trying to make USERID field as a select-options.I've written the code as shown below .
    data: itab type standard table of zmy_table,
    wa type zmy_table.
    data:
    node_employee type ref to if_wd_context_node,
    elem_employee type ref to if_wd_context_element,
    stru_employee type wd_this->element_employee ,
    item_userid like stru_employee-userid.
    navigate from <CONTEXT> to <EMPLOYEE> via lead selection
    node_employee = wd_context->get_child_node( name = wd_this->wdctx_employee ).
    @TODO handle not set lead selection
    if ( node_employee is initial ).
    endif.
    get element via lead selection
    elem_employee = node_employee->get_element( ).
    @TODO handle not set lead selection
    if ( elem_employee is initial ).
    endif.
    alternative access via index
    Elem_Employee = Node_Employee->get_Element( Index = 1 ).
    @TODO handle non existant child
    if ( Elem_Employee is initial ).
    endif.
    get single attribute
    elem_employee->get_attribute(
    exporting
    name = `USERID`
    importing
    value = item_userid ).
    select *
    from zmy_table
    into table itab
    where userid = item_userid.
    node_employee = wd_context->get_child_node( 'EMPLOYEE' ).
    node_employee->bind_elements( itab ).
    Is there someone who can help me and can tell am i doing wrong?
    Thanks in advance,
    Dheeraj

  • Hi Question On Select-options

    Hi Experts,
                          I am having  a following code where i kept  no intervals but there is
    extension part inside it u have ranges is it possible to deactivate that ranges option  in the extension part so that u can have only single values .
                            select-option:s_bukrs for t001-bukrs no intervals.
    Thanks&Regards
    Bhaskar Rao.M

    Hi Bhaskar,
    Use the following definition:
    SELECT-OPTIONS s_bukrs for t001-bukrs NO INTERVALS NO-EXTENSION.
    Alternately u can define S_BUKRS as a parameter since the above clause will permit only 1 value.
    Regards
    Chetan
    PS:Reward points if this helps.

  • Select-option + ALV on the same screen

    hi,
    how can we can get Select-option + ALV on the same screen.
    Thanks,
    Gaurav

    hi gaurav,
    Use the following code...It works...
    TABLES: vbrk.
    *CONSTANTS
    CONSTANTS :
    c_x(1)        TYPE c VALUE 'X',
    c_zxto        TYPE vbak-auart VALUE 'ZXTO',
    c_e           TYPE spras VALUE 'E',
    c_000000      TYPE posnr VALUE '000000',
    c_ship_to     TYPE parvw VALUE 'WE'.      "Ship To Party
    Table Types
    TYPES: BEGIN OF ty_vbrk_vbrp,
    vbeln TYPE vbrk-vbeln,    "Billing doc
    posnr TYPE vbrp-posnr,    "Billing item
    aubel TYPE vbrp-aubel,    "Sales order
    waerk TYPE vbrk-waerk,    "Doc currency
    mvgr1 TYPE vbrp-mvgr1,    "Material group 1
    mvgr3 TYPE vbrp-mvgr3,    "Material group 3
    mvgr4 TYPE vbrp-mvgr4,    "Material group 4
    matnr TYPE vbrp-matnr,    "Material no
    ntgew TYPE vbrp-ntgew,    "Net wt
    gewei TYPE vbrp-gewei,    "Wt unit
    kzwi1 TYPE vbrp-kzwi1,                             "Subtotal 1
    kursk TYPE vbrp-kursk,    "Exchange rate
    END   OF ty_vbrk_vbrp.
    TYPES: BEGIN OF ty_data,
    land1 TYPE vbpa-land1,
    landx TYPE t005t-landx,
    mvgr3 TYPE vbrp-mvgr3,
    mvgr4 TYPE vbrp-mvgr4,
    bezei3 TYPE tvm3t-bezei,
    bezei4 TYPE tvm4t-bezei,
    ntgew_tea_bag TYPE vbrp-ntgew,
    ntgew_pkt_tea TYPE vbrp-ntgew,
    ntgew_bulk_tea TYPE vbrp-ntgew,
    kzwi1_tea_bag TYPE vbrp-kzwi1,    "Subtotal 1 Tea Bag
    kzwi1_pkt_tea TYPE vbrp-kzwi1,    "Subtotal 1 Pkt Tea
    kzwi1_bulk_tea TYPE vbrp-kzwi1,   "Subtotal 1 Bulk Tea
    ntgew_tot TYPE vbrp-ntgew,
    kzwi1_tot TYPE vbrp-kzwi1,
    line_color(4) TYPE c,  "For line color
    END OF ty_data.
    TYPES: BEGIN OF ty_vbpa,
    vbeln TYPE vbpa-vbeln,
    land1 TYPE vbpa-land1,
    END OF ty_vbpa.
    TYPES: BEGIN OF ty_t005t,
    land1 TYPE t005t-land1,
    landx TYPE t005t-landx,
    END OF ty_t005t.
    TYPES: BEGIN OF ty_tvm3t,
    mvgr3 TYPE tvm3-mvgr3,
    bezei TYPE tvm3t-bezei,
    END OF ty_tvm3t.
    TYPES: BEGIN OF ty_tvm4t,
    mvgr4 TYPE tvm4-mvgr4,
    bezei TYPE tvm4t-bezei,
    END OF ty_tvm4t.
    DATA: it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp,
    wa_vbrk_vbrp TYPE ty_vbrk_vbrp,
    it_vbpa TYPE STANDARD TABLE OF ty_vbpa,
    wa_vbpa TYPE ty_vbpa,
    it_data TYPE STANDARD TABLE OF ty_data,
    wa_data TYPE ty_data,
    it_t005t TYPE STANDARD TABLE OF ty_t005t,
    wa_t005t TYPE ty_t005t,
    it_tvm3t TYPE STANDARD TABLE OF ty_tvm3t,
    wa_tvm3t TYPE ty_tvm3t,
    it_tvm4t TYPE STANDARD TABLE OF ty_tvm4t,
    wa_tvm4t TYPE ty_tvm4t.
    Global data for grand total
    DATA:
    w_tot_ntgew_tea_bag TYPE vbrp-ntgew,
    w_tot_ntgew_pkt_tea TYPE vbrp-ntgew,
    w_tot_ntgew_bulk_tea TYPE vbrp-ntgew,
    w_tot_ntgew_tot TYPE vbrp-ntgew,
    w_tot_kzwi1_tea_bag TYPE vbrp-kzwi1,
    w_tot_kzwi1_pkt_tea TYPE vbrp-kzwi1,
    w_tot_kzwi1_bulk_tea TYPE vbrp-kzwi1,
    w_tot_kzwi1_tot TYPE vbrp-kzwi1.
    Global data definitions for ALV
    DATA :
    ALV Grid container
    w_alv_container TYPE REF TO cl_gui_custom_container,
    ALV Grid
    w_alv_grid      TYPE REF TO cl_gui_alv_grid,
    w_layo          TYPE        lvc_s_layo,     "For layout
    wt_fieldcat     TYPE        lvc_t_fcat,     "For field catalog
    okcode          TYPE         okcode,        "OK Code
    w_to(2)         TYPE         c,
    w_title         TYPE        string.
    ---- START OF SELECTION SCREEN -
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    Billing Date
    SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat MEMORY ID vf OBLIGATORY no intervals.
    SELECTION-SCREEN:SKIP 1.
    SELECTION-SCREEN: END OF BLOCK b1.
    ---- END OF SELECTION SCREEN -
    ----   EVENT START-OF-SELECTION  -
    START-OF-SELECTION.
    Get billing data from Delivery header(VBRK) and item (VBRP)
    PERFORM get_billing_data.
    Get ship-to country
    PERFORM get_ship_to_data.
    Get material group description 3
    PERFORM get_material_group_3.
    Get material group description 4
    PERFORM get_material_group_4.
    Form the ALV Grid title
    PERFORM form_title.
    Process data
    PERFORM process_data.
    Populate text descriptions
    PERFORM populate_description.
    ----   EVENT END-OF-SELECTION  -
    END-OF-SELECTION.
    Set the text to when date high is there
    IF NOT s_fkdat-high IS INITIAL.
    w_to = 'to'(c16).
    ENDIF.
    Call the scren 9000 for ALV Display
    CALL SCREEN 9000.
    *&      Form  get_billing_data
    Get billing data from Delivery header(VBRK) and item (VBRP)
    & store in internal table it_vbrk_vbrp
    FORM get_billing_data .
    REFRESH: it_vbrk_vbrp.
    Select Billing data by joining VBRK & VBRP and store in it_vbrk_vbrp
    SELECT a~vbeln
    b~posnr
    b~aubel
    a~waerk
    b~mvgr1
    b~mvgr3
    b~mvgr4
    b~matnr
    b~ntgew
    b~gewei
    b~kzwi1
    b~kursk
    FROM vbrk AS a INNER JOIN vbrp AS b
    ON avbeln = bvbeln
    INTO TABLE it_vbrk_vbrp
    WHERE a~fkdat IN s_fkdat
    Consider only non-deleted document
    AND fksto = space
    Billing doc type should be ZXTB
    AND fkart = 'ZXTB'
    AND pstyv = c_zxto.
    *IF sy-subrc <> 0.
    *MESSAGE i999(zttl) WITH 'No data is there'(m06).
    *LEAVE LIST-PROCESSING.
    *ENDIF.
    ENDFORM.                    " get_billing_data
    *&      Form  get_ship_to_data
    Get Ship-To party data
    FORM get_ship_to_data .
    DATA: l_it_vbpa TYPE STANDARD TABLE OF ty_vbpa.
    REFRESH: it_vbpa, it_t005t.
    IF NOT it_vbrk_vbrp[] IS INITIAL.
    SELECT vbeln
    land1
    FROM vbpa
    INTO TABLE it_vbpa
    FOR ALL ENTRIES IN it_vbrk_vbrp
    WHERE vbeln = it_vbrk_vbrp-aubel
    AND posnr = c_000000
    AND parvw = c_ship_to.
    IF sy-subrc <> 0.
    MESSAGE i999(zttl) WITH 'Exporter country not maintained'(m02).
    LEAVE LIST-PROCESSING.
    ELSE.
    SORT it_vbpa BY vbeln.
    Create an unique and sorted driver table
    l_it_vbpa[] = it_vbpa[].
    SORT l_it_vbpa BY land1.
    DELETE ADJACENT DUPLICATES FROM l_it_vbpa COMPARING land1.
    IF NOT l_it_vbpa[] IS INITIAL.
    Get the country description from T005t table
    SELECT land1
    landx
    FROM t005t
    INTO TABLE it_t005t
    FOR ALL ENTRIES IN l_it_vbpa
    WHERE spras = c_e
    AND  land1 = l_it_vbpa-land1.
    IF sy-subrc = 0.
    SORT it_t005t BY land1.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDFORM.                    " get_ship_to_data
    *&      Form  get_material_group_3
    Get material group 3
    FORM get_material_group_3 .
    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
    REFRESH: it_tvm3t.
    Create an unique and sorted driver table
    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
    SORT l_it_vbrk_vbrp BY mvgr3.
    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr3.
    IF NOT l_it_vbrk_vbrp[] IS INITIAL.
    SELECT mvgr3
    bezei
    FROM tvm3t
    INTO TABLE it_tvm3t
    FOR ALL ENTRIES IN l_it_vbrk_vbrp
    WHERE mvgr3 = l_it_vbrk_vbrp-mvgr3.
    IF sy-subrc = 0.
    SORT it_tvm3t BY mvgr3.
    ENDIF.
    ENDIF.
    ENDFORM.                    " get_material_group_3
    *&      Form  get_material_group_4
    Get material group 4
    FORM get_material_group_4 .
    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
    REFRESH: it_tvm4t.
    Create an unique and sorted driver table
    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
    SORT l_it_vbrk_vbrp BY mvgr4.
    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr4.
    IF NOT l_it_vbrk_vbrp[] IS INITIAL.
    SELECT mvgr4
    bezei
    FROM tvm4t
    INTO TABLE it_tvm4t
         FOR ALL ENTRIES IN l_it_vbrk_vbrp
         WHERE mvgr4 = l_it_vbrk_vbrp-mvgr4.
         IF sy-subrc = 0.
           SORT it_tvm4t BY mvgr4.
         ENDIF.
       ENDIF.
    ENDFORM.                    " get_material_group_4
    *&      Form  process_data
    Process the data and do summation and populate final display table
    FORM process_data .
       LOOP AT it_vbrk_vbrp INTO wa_vbrk_vbrp.
         CLEAR: wa_data, wa_vbpa.
         READ TABLE it_vbpa INTO wa_vbpa WITH KEY
                                      vbeln = wa_vbrk_vbrp-aubel
                                      BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-land1 = wa_vbpa-land1.
         ENDIF.
         wa_data-mvgr3 = wa_vbrk_vbrp-mvgr3.
         wa_data-mvgr4 = wa_vbrk_vbrp-mvgr4.
    Do an unit conversion of the quamtity
         CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
           EXPORTING
             input                      = wa_vbrk_vbrp-ntgew
         NO_TYPE_CHECK              = 'X'
         ROUND_SIGN                 = ' '
            unit_in                    = wa_vbrk_vbrp-gewei
            unit_out                   = 'TO' "Metric tonn
          IMPORTING
            output                     = wa_vbrk_vbrp-ntgew
          EXCEPTIONS
            conversion_not_found       = 1
            division_by_zero           = 2
            input_invalid              = 3
            output_invalid             = 4
            overflow                   = 5
            type_invalid               = 6
            units_missing              = 7
            unit_in_not_found          = 8
            unit_out_not_found         = 9
            OTHERS                     = 10.
         IF sy-subrc <> 0.
           wa_vbrk_vbrp-ntgew = wa_vbrk_vbrp-ntgew.
         ENDIF.
    Convert the currency from Customer currency to local
    currency by multiplying with kursk
         wa_vbrk_vbrp-kzwi1 =  wa_vbrk_vbrp-kzwi1 * wa_vbrk_vbrp-kursk.
    Convert the amount to Lacks by dividing with 100000
        wa_vbrk_vbrp-kzwi1 = wa_vbrk_vbrp-kzwi1 / 100000.       "DV1K905028
    When MVGR1 is between A to F use the amount as TEA_BAG
         IF wa_vbrk_vbrp-mvgr1 BETWEEN 'A' AND 'F'.
           wa_data-ntgew_tea_bag = wa_vbrk_vbrp-ntgew.
           wa_data-kzwi1_tea_bag = wa_vbrk_vbrp-kzwi1.
         ENDIF.
    When MVGR1 is between G to L use the amount as TEA_BAG
         IF wa_vbrk_vbrp-mvgr1 BETWEEN 'G' AND 'L'.
           wa_data-ntgew_pkt_tea = wa_vbrk_vbrp-ntgew.
           wa_data-kzwi1_pkt_tea = wa_vbrk_vbrp-kzwi1.
         ENDIF.
    When MVGR1 is between G to L use the amount as TEA_BAG
         IF wa_vbrk_vbrp-mvgr1 = 'M'.
           wa_data-ntgew_bulk_tea = wa_vbrk_vbrp-ntgew.
           wa_data-kzwi1_bulk_tea = wa_vbrk_vbrp-kzwi1.
         ENDIF.
         COLLECT wa_data INTO it_data.
       ENDLOOP.
    ENDFORM.                    " process_data
    *&      Form  populate_description
    Populate the description fields
    FORM populate_description .
       LOOP AT it_data INTO wa_data.
         CLEAR: wa_t005t.
         READ TABLE it_t005t INTO wa_t005t WITH KEY land1 = wa_data-land1
                                                BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-landx = wa_t005t-landx.
         ENDIF.
    Read description of Material group 3
         CLEAR wa_tvm3t.
         READ TABLE it_tvm3t INTO wa_tvm3t WITH KEY
                                  mvgr3 = wa_data-mvgr3
                                  BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-bezei3 = wa_tvm3t-bezei.
         ENDIF.
    Read description of Material group 4
         CLEAR wa_tvm4t.
         READ TABLE it_tvm4t INTO wa_tvm4t WITH KEY
                                  mvgr4 = wa_data-mvgr4
                                  BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-bezei4 = wa_tvm4t-bezei.
         ENDIF.
    Get the grand totals
         wa_data-ntgew_tot = wa_data-ntgew_tea_bag
                  + wa_data-ntgew_pkt_tea
                  + wa_data-ntgew_bulk_tea.
         wa_data-kzwi1_tot = wa_data-kzwi1_tea_bag
                  + wa_data-kzwi1_pkt_tea
                  + wa_data-kzwi1_bulk_tea.
         MODIFY it_data FROM wa_data TRANSPORTING landx
                                                  bezei3
                                                  bezei4
                                                  ntgew_tot
                                                  kzwi1_tot.
    Summattion of grand totals
         w_tot_ntgew_tea_bag  = w_tot_ntgew_tea_bag  + wa_data-ntgew_tea_bag.
         w_tot_ntgew_pkt_tea  = w_tot_ntgew_pkt_tea  + wa_data-ntgew_pkt_tea.
         w_tot_ntgew_bulk_tea  = w_tot_ntgew_bulk_tea  + wa_data-ntgew_bulk_tea.
         w_tot_ntgew_tot  = w_tot_ntgew_tot  + wa_data-ntgew_tot.
         w_tot_kzwi1_tea_bag  = w_tot_kzwi1_tea_bag  + wa_data-kzwi1_tea_bag.
         w_tot_kzwi1_pkt_tea  = w_tot_kzwi1_pkt_tea  + wa_data-kzwi1_pkt_tea.
         w_tot_kzwi1_bulk_tea  = w_tot_kzwi1_bulk_tea  + wa_data-kzwi1_bulk_tea.
         w_tot_kzwi1_tot  = w_tot_kzwi1_tot  + wa_data-kzwi1_tot.
       ENDLOOP.
    Append a grand Total row at the end
       CLEAR wa_data.
       wa_data-landx = 'Grand Total:'.
       wa_data-ntgew_tea_bag = w_tot_ntgew_tea_bag.
       wa_data-ntgew_pkt_tea = w_tot_ntgew_pkt_tea.
       wa_data-ntgew_bulk_tea = w_tot_ntgew_bulk_tea.
       wa_data-ntgew_tot = w_tot_ntgew_tot.
       wa_data-kzwi1_tea_bag = w_tot_kzwi1_tea_bag.
       wa_data-kzwi1_pkt_tea = w_tot_kzwi1_pkt_tea.
       wa_data-kzwi1_bulk_tea = w_tot_kzwi1_bulk_tea.
       wa_data-kzwi1_tot = w_tot_kzwi1_tot.
       wa_data-line_color    = 'C310'.
       APPEND wa_data TO it_data.
    ENDFORM.                    " populate_description
    *&      Module  STATUS_9000  OUTPUT
    Initialise PF-STATUS and title
    MODULE status_9000 OUTPUT.
       SET PF-STATUS 'MAIN9000'.
       SET TITLEBAR 'TITLE_9000'.
    ENDMODULE.                 " STATUS_9000  OUTPUT
    *&      Module  initialize_9000  OUTPUT
          text
    MODULE initialize_9000 OUTPUT.
    Call the ALV grid to display data
    SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE text-001.
      Billing Date
    SELECT-OPTIONS: s_fkdat1 FOR vbrk-fkdat MEMORY ID vf OBLIGATORY NO-EXTENSION.
    SELECTION-SCREEN:SKIP 1.
    SELECTION-SCREEN: END OF BLOCK B2.
       PERFORM display_alv_grid.
    ENDMODULE.                 " initialize_9000  OUTPUT
    *&      Module  USER_COMMAND_9000  INPUT
    Module to handle User Command
    MODULE user_command_9000 INPUT.
       CASE okcode.
         WHEN 'BACK'.
           SET SCREEN 0.
           CLEAR okcode.
           LEAVE SCREEN.
         WHEN 'CANCEL'.
           SET SCREEN 0.
           CLEAR okcode.
           LEAVE SCREEN.
         WHEN 'EXIT'.
           CLEAR okcode.
           LEAVE PROGRAM.
         WHEN OTHERS.
       ENDCASE.
    ENDMODULE.                 " USER_COMMAND_9000  INPUT
    *&      Form  display_alv_grid
    Display the data in ALV Grid
    FORM display_alv_grid .
       IF w_alv_container IS INITIAL.
    Create the alv container object
         CREATE OBJECT w_alv_container
           EXPORTING
             container_name = 'ALV_GRID'
           EXCEPTIONS
               cntl_error                  = 1
               cntl_system_error           = 2
               create_error                = 3
               lifetime_error              = 4
               lifetime_dynpro_dynpro_link = 5
               OTHERS                      = 6.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
         ENDIF.
    Create the ALV grid object. The parent is the ALV container
         CREATE OBJECT w_alv_grid
           EXPORTING
             i_parent = w_alv_container
           EXCEPTIONS
             error_cntl_create = 1
             error_cntl_init   = 2
             error_cntl_link   = 3
             error_dp_create   = 4
             OTHERS            = 5.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
         ENDIF.
    This subrotine creates the field catalog and
    store in internal table lt_fieldcat
         PERFORM prepare_fieldcat CHANGING wt_fieldcat.
    Layout design
         w_layo-no_toolbar = ''.
    Not to allow totaling feature
         w_layo-no_totline = c_x.
    Report title
       w_layo-grid_title = text-004.
         w_layo-grid_title = w_title.
         w_layo-zebra      = c_x.    "Alternating line color (striped)
         w_layo-cwidth_opt = c_x.    "Optimize column width
         w_layo-sel_mode   = 'A'.    "Selection Mode
    Name of the color field
         w_layo-info_fname = 'LINE_COLOR'."For row color
    Call the method to display the data in ALV grid
         CALL METHOD w_alv_grid->set_table_for_first_display
           EXPORTING
             i_save                        = 'A'
             is_layout                     = w_layo
           CHANGING
             it_outtab                     = it_data[]
             it_fieldcatalog               = wt_fieldcat
           EXCEPTIONS
             invalid_parameter_combination = 1
             program_error                 = 2
             too_many_lines                = 3
             OTHERS                        = 4.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH text-t04.
         ENDIF.
       ELSE.
    If the container & grid object is alreadt there reuse them
         CALL METHOD w_alv_grid->refresh_table_display
           EXCEPTIONS
             finished = 1
             OTHERS   = 2.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH text-t04.
         ENDIF.
       ENDIF.
       IF okcode = 'CANCEL'.
         EXIT.
       ENDIF.
    ENDFORM.                    " display_alv_grid
    *&      Form  prepare_fieldcat
    Prepare the list of fields to be displayed                          *
         <--P_WT_FIELDCAT  text
    FORM prepare_fieldcat  CHANGING pt_fieldcat TYPE lvc_t_fcat.
       DATA : lx_fcat TYPE lvc_s_fcat.
       REFRESH: pt_fieldcat.
    **List of fields to be displayed should be added in pt_fieldcat
    Customer PO no
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'LANDX'.
       lx_fcat-ref_field = 'T005T'.
       lx_fcat-ref_table = 'T005T'.
       lx_fcat-coltext = 'Market Name'(c01).
       lx_fcat-seltext = text-c01.
       APPEND lx_fcat TO pt_fieldcat.
    Flavour type
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'BEZEI3'.
       lx_fcat-ref_field = 'BEZEI'.
       lx_fcat-ref_table = 'TVM3'.
       lx_fcat-coltext = 'Flavour Type'(c02).
       lx_fcat-seltext = text-c02.
       APPEND lx_fcat TO pt_fieldcat.
    Tea type
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'BEZEI4'.
       lx_fcat-ref_field = 'BEZEI4'.
       lx_fcat-ref_table = 'TVM4'.
       lx_fcat-coltext = 'Tea Type.'(c03).
       lx_fcat-seltext = text-c03.
       APPEND lx_fcat TO pt_fieldcat.
    Tea Bag Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_TEA_BAG'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Tea Bag(MT)'(c04).
       lx_fcat-seltext = text-c04.
       APPEND lx_fcat TO pt_fieldcat.
    PKT Tea  Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_PKT_TEA'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'PKT Tea(MT)'(c05).
       lx_fcat-seltext = text-c05.
       APPEND lx_fcat TO pt_fieldcat.
    Bulk Tea  Quantity in MT
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_BULK_TEA'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Bulk Tea(MT)'(c06).
       lx_fcat-seltext = text-c06.
       APPEND lx_fcat TO pt_fieldcat.
    Total Quantity in MT
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_TOT'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Total(MT)'(c07).
       lx_fcat-seltext = text-c07.
       APPEND lx_fcat TO pt_fieldcat.
    Tea Bag Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_TEA_BAG'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Tea Bag(FOB-Lacs)'(c08).
       lx_fcat-seltext = text-c08.
       APPEND lx_fcat TO pt_fieldcat.
    PKT Tea  Price in Lakh
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_PKT_TEA'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'PKT Tea(FOB-Lacs)'(c09).
       lx_fcat-seltext = text-c09.
       APPEND lx_fcat TO pt_fieldcat.
    PKT Tea  Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_BULK_TEA'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Bulk Tea(FOB-Lacs)'(c10).
       lx_fcat-seltext = text-c10.
       APPEND lx_fcat TO pt_fieldcat.
    Total amount
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_TOT'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Total(FOB-Lacs)'(c11).
       lx_fcat-seltext = text-c11.
       APPEND lx_fcat TO pt_fieldcat.
    ENDFORM.                    " prepare_fieldcat
    *&      Form  form_title
    Form the ALV Title
    FORM form_title .
       DATA: l_date(10) TYPE c.
       CONCATENATE s_fkdat-low6(2)  s_fkdat-low4(2)  s_fkdat-low(4)
       INTO l_date SEPARATED BY '/'.
       CONCATENATE 'TTD - Statement of Export' '-From' l_date INTO
    w_title SEPARATED BY space.
       CLEAR l_date.
       IF NOT s_fkdat-high IS INITIAL.
         CONCATENATE s_fkdat-high6(2)  s_fkdat-high4(2)  s_fkdat-high(4)
         INTO l_date SEPARATED BY '/'.
         CONCATENATE w_title 'to' l_date INTO w_title SEPARATED BY space.
       ENDIF.
    ENDFORM.                    " form_title

  • Select options variants

    Hi,
    I have nearly 10 selection screen items. Based on these values, i'm dispalying the relevant data as per the selection.
    I know the current framework doesnot provide the Variant save/retriev mechanism of teh select options.
    I have 3 buttons, save, delete, show variant.
    How can we acheieve the same variants ourselves.
    Please share your views/workarounds on the ways of acheiving it.
    I donot really know the FM we use for general variant are of any help here..
    Thomas: Any workarounds.
    Regards,
    Lekha.

    I am messing around with POWL as an alternative to ALVs.  So question is:
    User creates a new query, and saves it (sort of like a variant).  How can the user now Delete an obsolete query???
    Thanks,
    - Tim
    Edited by: Tim  Hughes on Feb 10, 2010 9:19 PM

  • Report help for multiple Date Select options

    Hi Friends,
    For a particular year wise report, the client wants 12 date select-options which are changeable and informal every year .The report will also be displayed as per the given date selection period wise. Please help me how to fetch the datas from the table as per the given selection period. Currently the report have one date select-option where the user gives selection range as 1.04 to 31.03. It's related to EB power consumption report and hence the new requirement on date selection which are informal and not a fixed date of every year.
    Ex:Selection-Screen
    Period 1 : 08.04.2008 to 12.05.2008
    Period 2: 12.05.2008 to 20.06.2008
    Period 3: 21.06.2008 to 28.07.2008
    Period 4: 29.07.2008 to 15.08.2008
    Period 5: 15.08.2008 to 21.09.2008
    Period 6 : 21.09.2008 to 14.10.2008
    The data will derive as per the above selection ranges.......
    Please advise with example.
    thanks & regards
    Sankar.

    >
    sankar babu wrote:
    > Ex:Selection-Screen
    > Period 1 : 08.04.2008 to 12.05.2008
    > Period 2: 12.05.2008 to 20.06.2008
    > Period 3: 21.06.2008 to 28.07.2008
    > Period 4: 29.07.2008 to 15.08.2008
    > Period 5: 15.08.2008 to 21.09.2008
    > Period 6 : 21.09.2008 to 14.10.2008
    Hi,
    In this case just derive all records matching dates between 08.04.2008 (low in first select-options) and 14.10.2008(high in last select-options.
    Also my advice is to use a single select-options and prompt the user to give the dates as ranges in the multiple entries dialog which can be opened by clicking the button on the right side of the select-options.
    Regards
    Karthik D

  • How To... Change the Data Type for a SELECT-OPTIONS at run time.

    Hello,
    I am trying to restrict the values available for entry into a SELECT-OPTIONS at run time depending on user input.
    The logic is as follows. The user has two input fields. A PARAMETER field which has the type RSDIOBJNM and allows them to choose an InfoObject. And the user has a SELECT-OPTIONS field to allow them to select the Characteristic values for that InfoObject.
    I would like the following example to be possible:
    The user enters 0MATERIAL into the PARAMETER. When the user clicks on the SELECT-OPTIONS control code will derive a list of possible options the user can enter in the SELECT-OPTIONS. In this case only values found in the master data or at least no values greater than 18 characters.
    I have looked at the following function module SELECT_OPTIONS_RESTRICT and this do not appear to be helpful as they only restrict on the signs allowed for the values (unless I misunderstand, it is a complex function module!).
    The code I have so far is (thus the user enters a InfoObject into p_char1 and the select options so_char1 should only accept active values of that InfoObject):
    declaration of variables for user interface
      DATA c_char(32) TYPE c.
    declaration of count variable
      DATA i_count TYPE i.
    declaration of user interface
      SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
        PARAMETERS: p_ipack TYPE RSLOGDPID.
      SELECTION-SCREEN END OF BLOCK a1.
      SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
        PARAMETERS: p_char1 TYPE RSDIOBJNM.
        SELECT-OPTIONS: so_char1  for c_char NO INTERVALS.
        PARAMETERS: p_char2 TYPE RSDIOBJNM.
        SELECT-OPTIONS: so_char2  for c_char NO INTERVALS.
        PARAMETERS: p_char3 TYPE RSDIOBJNM.
        SELECT-OPTIONS: so_char3  for c_char NO INTERVALS.
      SELECTION-SCREEN END OF BLOCK b1.
    Is what I am trying to do possible???
    Thanks for any help. Ross.

    You really want to restrict possible values of a select-option based on another field, not change the length of type of the select-option field, right?
    Here is what you do:  Code a custom F4 value help for the select-option at event AT SELECTION-SCREEN ON VALUE REQUEST FOR..  The first thing you do here is read the value of the parameter field (p_ipack in your example).  You can use function module DYNP_VALUES_READ.  Based on this value, you can propose values for the select-option fields.  Note that the use can still enter whatever s(he) wishes in to the select-option field without pressing F4. In this case, you will have to code some input validations taking into account the value in the p_ipack field.

Maybe you are looking for