How to add a selection criterion to a SQ01 query based on logical database SDF?

Hi,
How should I add a selection criterion to a SQ01 query based on the logical database SDF? Is it possible through additional code? How to make use of the custom selection fields? I need a selection criterion based on BKPF-CPUDT (creation date).
Thanks.

Hi John,
Please check the given below link in addtion to Atul post.
http://scn.sap.com/community/erp/sd/blog/2012/04/16/query-report-tips-part-2--mandatory-selection-field
Thanks,
Senthil Maruthappan.

Similar Messages

  • Selection screen is not displaying if I use logical database CCLDB_AENR

    Hi Experts,
    If I use the logical database CCLDB_AENR in my custom program, it is not displaying my custom program selection screen. It is only displaying the logical database selection screen.
    some one help me how we can handle this.
    Thanks,
    Naresh.

    Hi Experts,
    If I use the logical database CCLDB_AENR in my custom program, it is not displaying my custom program selection screen. It is only displaying the logical database selection screen.
    some one help me how we can handle this.
    Thanks,
    Naresh.

  • Modify selection screen for Logical Database 'SDF'

    Hi
    I need to make a section of the standard selection screen for logical database 'SDF' invisible. I have tried the differet selection screen options of the report attributes, but none of the provided ones give me what I want.
    How can I find the name of the screen group for the "Line Item Selection" block of the selection screen so that I can make it invisible when the selection screen is displayed?
    Thanks,
    Thomas

    I tried to do this:
    Loop at screen.
             if   screen-group4 = '026'
               or screen-group4 = '027'
               or screen-group4 = '028'.
                 screen-invisible = 1.
                 modify screen.
             endif.
    endloop.
    This removed the selection text for these fields, but the Line Item Selection block is still visible, and the actual input fields are also visible. They now look like password input fields with all ***** in them.
    What am I doing wrong?
    Thanks for your help!
    Thomas

  • Logical database sdf in custom program not triggering selection screen?

    I added logical Database SDF (screen 905) to a custom program - but the selection screen is not getting triggered.
    Do I have to associate these somewhere?
    Thanks,
    Ven

    HI,
    Declare this statement after the Report Statement in the program.
    TABLES : SKA1, SKB1.
    You will get the selection screen now.

  • Using infoset based on logical database gives lots of selection parameters

    Hi
    I'm trying to assist a new Crystal user in getting up on running on Crystal using infosets from SAP. Presently a simple infoset based on logical database PNPCE has been built using fields from just three infotypes (to keep things simple).
    When the user logs onto crystal and selects either this infoset, or a query based on the infoset, the very next step requires the user to set 80+ parameters to be null before running the report, and unfortunately those values cannot be saved to if in order to re-run the user has to manually set all the vallues to null again. Clearly this makes it pretty frustrating to use!
    This initial screen does not appear if using an infoset based on table joins, but unfortunately the logical database needs to be used to fulfill certain reporting requirements.
    I've tried saving a selection variant against a query and forcing it's use but these setting don't seem to be picked up by Crystal.
    Are there any Crystal/Query experts out there that can help with this?
    Regards
    Phil

    Hi,
    Is there anyone out there that can help with this? Seems to me like an issue that there 'should' be a soluton to...but I haven't found it yet!
    As a bit of additional info - the use of table join based infosets is not an option primarily because there are a lot of reports required that pull in the OM 'additional fields' that come through automatically when using an LDB. However, for table joins, it requires custom coding to be required to the infoset, which clearly restricts the user base from the ability to build their own reports.
    Regards
    Phil

  • How to add own selection version in LDB selection

    Friends,
    I'm using the logical database KDF. Is it possibe to add  selection version in the KDF?? I tried to edit the selection of KDF but system asks for developer key.
    Please suggets a way.
    Many Thanks,
    Albert.

    Hi,
    you can use the following statements to extend the selection screen:
    ·        Use the PARAMETERSstatement and its additions to add input fields for single values. You could use these, for example, to control the flow of the program. In the selection include, you must use the addition FOR NODE or FOR TABLE in the PARAMETERS statement. You can use NODE for all node types. You can only use TABLE for nodes with type T. When the selection screen is generated, the system only generates fields for the nodes declared in the executable program in the NODES or TABLES statement, or those requested by the function module LDB_PROCESS.
    ·        Use the SELECTION-SCREENstatement to format the selection screen.
    · The statement
    SELECTION-SCREEN DYNAMIC SELECTIONS FOR NODE|TABLE node.
    allows you to define further nodes for dynamic selections. If the node has type T, you can use TABLE instead of NODE. The user can then decide at runtime the components of the node for which he or she wants to enter selections. Dynamic selections require special handling in the database program.
    · The statement
    SELECTION-SCREEN FIELD SELECTION FOR NODE|TABLE node>.
    allows you to define further nodes for field selections. If the node has type T, you can use TABLE instead of NODE. In an executable program, you can use a field list in the GET statement to specify which fields of the node of the logical database should be read. In the function module LDB_PROCESS, the parameter FIELD_SELECTION must be passed accordingly. Dynamic selections require special handling in the database program.
    · The statements
    SELECTION-SCREEN BEGIN OF VERSION dynnr
      SELECTION-SCREEN EXCLUDE f.
    SELECTION-SCREEN BEGIN OF VERSION dynnr.
    allow you to create different versions of the selection screen with screen number dynnr less than 1000. You can hide the input fields of selection criteria or parameters as specified in f. This allows an executable program to work with an appropriate selection screen version.
    See the below SAP link....
    http://help.sap.com/saphelp_nw2004s/helpdata/en/9f/db9c2e35c111d1829f0000e829fbfe/content.htm
    Regardds
    Sudheer

  • How to add a dynamic where clause for a sql based VO with group by query?

    Hi,
    Here is my case, I have a sql query based VO with the query like "select status, count(*) StatusCount from my_table group by status". Now I used the following java code trying to dynamically add the where clause to my VO to filter the rows based the type attribute in my DB table.
    vo.setWhereClause("type='MyType1' ");
    vo.executeQuery();
    Then I got the sql syntax error. Looks like the ADF has added the where clause to the end of my sql so my sql becomes "select status, count(*) StatusCount from my_table group by status where type='MyType1' ". But what I expected was the correct syntax "select status, count(*) StatusCount from my_table where type='MyType1' group by status".
    Does anyone know if this is an ADF bug? Or is there any other way to achieve my goal?
    Thanks,
    Chunyang
    Edited by: Chunyang on Dec 13, 2012 9:09 PM

    Hi,
    When you use setWhereClause on the VO, it is applied on top of the VO query. I.e, assume your VO has the following query.
    select empno, ename from empNow, if you apply the where clause programatically, only the two attributes that you are using in the select statement could be used. I.e
    select * from (select empno, ename from emp) where ename='KING' - VALID
    select * from (select empno, ename from emp) where deptno=10  - INVALID (because the inner query - the one you've defined as query for your vo does not have deptno attribute selected)If you would need to set a dynamic where clause, you need to make them available in your select statement / use bind variables.
    -Arun

  • Query Execution Filter Val. Selection take no effect on query based on AG

    Hi,
    by setting the 'Query Execution Filter Val. Selection' property in query, we can control the value list when we execute the query. with setting 'Only posted value values for navigation', only the data posted to cube can be listed when you do the selection in the Query Execution selection screen and with setting 'values in master data table', all the date will be listed when you do the selection in the Query Execution selection screen.
    1. but for queries based on cube or multi-cube, when i select 'values in master data table' in query defination, still only the posted value is displayed when i do the selection in the Query Execution selection screen. is there anyone know why?
    2. for queries based on aggregation level, whatever setting i choose, all the values is displayed when i do the selection in the Query Execution selection screen. how i can do select the posted value for this kind of query?
    Many Thanks
    Jonathan

    I apologize I meant the other link:
    I will put the useful text from that link here.
    Regarding the query built on aggregation level please note the following
    the aggregation level is always a Virtual Provider built other
    InfoProvider and hence it does not have the dimension table and hence
    the F4 mode D is not supported.
    Therefore when aggregation level is used in a query, F4 does not supportD-mode: 'Only Values in InfoProvider' and all master data values are
    displayed in the value list.
    Reference from the note
    984229 F4 modes for input help as of SAP NetWeaver 2004s BI
    4. Since other InfoProviders do not have a dimension table, the system
    displays only posted values if you select "Only Posted Values for
    Navigation". Otherwise, it displays the values from the master data
    table.
    Hope this should clarify your doubts. Please let me know if you have
    questions else please confirm the message at your earliest convenie
    Edited by: Abhijit N on Apr 2, 2009 6:06 PM

  • How to add only selected music to my iPhone not sync the whole iTunes library

    Hi everyone,
    I have a MacBook Pro and an iPhone 4. I have some music on my iPhone, and quite a bit on iTunes on the MacBook. I want to transfer selected tracks from the MacBook, but when I click on 'Rushenette's iPhone' and select 'Music', I have the option to Sync but get a message saying everything on my iPhone will be overwritten with the contents of my iTunes library.
    How do I keep the iPhone contents the same, but add a few tracks from the MacBook?
    Thanks in advance

    Thanks ckuan,
    But... I bought the tracks on the phone via iTunes, then later transferred purchases back to the MacBook. All my music is in iTunes already. The MacBook has the complete set, the phone has a subset.
    Now I have some more stuff on the MacBook (in ITunes) that I want to put on the phone, but I don't want to fill my phone with the entire music library, just add a few tracks.

  • How to add dynamic selection in LDB_PROCESS

    Hi All,
    We are calling LDB_PROCESS from our report. and we are sending callback events and selections and we are calling LDB KDF.
    We enabled housebank (HBKID) in Dynamic Selection of the LDB. Could you please help us how we can send value of field HBKID (House Bank) from LDB_Process to narrow down the selection process.
    Thanks and best regards,
    Niteeshrai

    And the setClientAttributes() takes Set object, so i added ClientAttributeTag and then set it in HashSet. Is this the way to do it ??
    and how can i set string value in ClientAttributeTag.setValue() ??
    Please help.
    Sudeep

  • How to add a receipt number in the following Query for PO Report

    Hi Guys,
    I need a help regarding following query.
    Its a PO report for 11.5.10.2
    select distinct pv.segment1 supplier_number,
    pv.vendor_name supplier_name,
    pha.segment1 po_number,
    pha.revision_num revision_num,
    pha.authorization_status po_status,
    to_char(pha.creation_date, 'DD/MM/YYYY') creation_date,
    pha.currency_code currency_code,
    pla.sum_amount_ordered sum_amount_ordered,
    pda.sum_quantity_ordered sum_quantity_ordered,
    pda.sum_amount_received sum_amount_received,
    pda.sum_quantity_received sum_quantity_received,
    (pla.sum_amount_ordered - pda.sum_amount_received) sum_accrued, --AVI
    ( pda.sum_quantity_ordered - pda.sum_quantity_received) quantity_accrued, --AVi
    to_char(rsl.date_receipt, 'DD/MM/YYYY') date_receipt,
    -- rsl.receipt_num receipt_number,
    ppa.segment1 project_code, ppa.project_status_code, --10.0.0.4
    aia.invoice_num invoice_num,
    aia.invoice_date invoice_date, --AVI 
    aia.creation_date invoice_creation_date, --AVI 
    aia.amount invoice_amount_allocated_to_po, --AVI
    pla.purchase_basis,
    pla.category_id,
    -- pda.item_description,
    haou.name organisation, --10.0.0.3
    pda.sum_quantity_billed sum_quantity_billed , --10.0.0.3
    gcc1.CONCATENATED_SEGMENTS,
    gcc2.CONCATENATED_SEGMENTS
    from po_headers_all pha,
    po_vendors pv,
    pa_projects_all ppa,
    hr_all_organization_units haou,
    (select po_header_id,
    sum(quantity * unit_price) sum_amount_ordered,
    org_id,
    purchase_basis,
    category_id
    -- pla.item_description,
    from po_lines_all
    group by po_header_id, org_id
    , purchase_basis,
    category_id
    -- pla.item_description
    ) pla,
    (select pla.po_header_id,
    pda.project_id,
    sum(pda.quantity_ordered) sum_quantity_ordered,
    sum(pda.quantity_delivered * pla.unit_price) sum_amount_received,
    sum(pda.quantity_delivered) sum_quantity_received,
    sum(pda.quantity_billed) sum_quantity_billed, --10.0.0.3
    accrual_account_id
    from po_distributions_all pda, po_lines_all pla
    where pla.po_line_id = pda.po_line_id
    group by pla.po_header_id, pda.project_id,accrual_account_id
    ) pda,
    (select po_header_id, charge_account_id,
    -- rsh.receipt_num,
    min(rsl.creation_date) date_receipt
    from rcv_shipment_lines rsl
    where rsh.SHIPMENT_HEADER_ID=rsl.SHIPMENT_HEADER_ID
    group by po_header_id,charge_account_id
    ) rsl,
    (select distinct aia.invoice_num, pda.po_header_id , aia.invoice_date --10.0.0.3
    , aia.creation_date , sum(aida.amount) amount
    from po_distributions_all pda,
    ap_invoice_distributions_all aida,
    ap_invoices_all aia
    where pda.po_distribution_id = aida.po_distribution_id(+)
    and aia.invoice_id(+) = aida.invoice_id
    Group by
    aia.invoice_num, pda.po_header_id , aia.invoice_date --10.0.0.3
    , aia.creation_date) aia,
    (select haou2.organization_id, haou2.name
    from fnd_flex_value_sets ffvs,
    fnd_flex_value_norm_hierarchy ffvnh,
    fnd_flex_values_vl ffvv,
    hr_all_organization_units haou1,
    FND_FLEX_VALUE_CHILDREN_V ffvcv,
    hr_all_organization_units haou2
    where ffvs.FLEX_VALUE_SET_NAME = 'CAP_CODE_BU'
    and ffvs.FLEX_VALUE_SET_ID = ffvnh.flex_value_set_id
    and ffvnh.parent_flex_value like 'PO%'
    and ffvv.FLEX_VALUE_SET_ID = ffvnh.flex_value_set_id
    and ffvv.FLEX_VALUE between ffvnh.child_flex_value_low and ffvnh.child_flex_value_high
    and substr(haou1.name, 1, Instr(haou1.name, '-')) =
    substr(ffvv.DESCRIPTION, 1, Instr(ffvv.DESCRIPTION, '-'))
    and haou1.organization_id = fnd_global.org_id
    and ffvcv.parent_flex_value = ffvnh.parent_flex_value
    and ffvcv.flex_value_set_id = ffvs.flex_value_set_id
    and substr(haou2.name, 1, Instr(haou2.name, '-')) =
    substr(ffvcv.DESCRIPTION, 1, Instr(ffvcv.DESCRIPTION, '-'))
    union --10.0.0.1
    select f.organization_id, f.name --10.0.0.1
    from hr_all_organization_units f --10.0.0.1
    where f.organization_id = fnd_global.ORG_ID --10.0.0.1
    ) bu
    , po_line_locations_all plla --10.0.0.4
    , gl_code_combinations_kfv gcc1
    ,gl_code_combinations_kfv gcc2
    where pv.vendor_id = pha.vendor_id
    and pla.po_header_id = pha.po_header_id
    and pda.po_header_id = pha.po_header_id
    and pha.po_header_id = rsl.po_header_id(+)
    and pda.project_id = ppa.project_id(+)
    and pha.po_header_id = aia.po_header_id(+)
    and aia.po_header_id = pha.po_header_id
    and pla.org_id = haou.organization_id
    and pha.authorization_status in ('APPROVED', 'OPEN')
    and plla.po_header_id = pha.po_header_id --10.0.0.4
    and plla.closed_code in ('APPROVED', 'OPEN', 'CLOSED FOR INVOICE', 'CLOSED FOR RECEIVING', 'CANCELLED') --10.0.0.4
    and bu.organization_id = haou.organization_id
    AND gcc1.code_combination_id = pda.accrual_account_id
    AND gcc2.code_combination_id =rsl.CHARGE_ACCOUNT_ID
    In the following query I have commented receipt_num using the table rcv_transaction_headers.
    If I uncomment it the query results huge number of unexpected report.
    How can I add receipt number to the following query?
    Should I use rcv_transactions. If yes, what would be the join conditions.
    Kindly help as its urgent.
    Thanks in advance.
    Regards
    Avijit

    Sandeep is correct. I don't have time to tell you the correct query, but mine is something like this based on Sandeep's information:
    SELECT rsh.receipt_num
    FROM   rcv_transactions      rcvt,
           po_lines_all          pla,
           rcv_shipment_headers  rsh
    WHERE  rcvt.shipment_header_id   = rsh.shipment_header_id
    AND    rcvt.PO_LINE_ID          = pla.PO_LINE_ID
    AND    pla.item_id              = (select distinct inventory_item_id
    from mtl_system_items
    where segment1 = '1216107-2')

  • How To add postion specific email address to this query in oracle hrms

    Hi friends,
    I'm using the below query to send an email to the supervisor,employee and the HR manager
    I was able to add the first two mail address..
    for the third one,I mean HR manager... how do I get the email address
    I want to add the email address of the position --(from per_positions-->name--'HR-Manager' )
    I want to add the person's email address who is holding this position...
    can some one help me with this please
    SELECT paa.person_id, papf.full_name, papf.email_address, paa.date_end,
    paa.date_start, paaf.supervisor_id, papf2.email_address
    FROM per_absence_attendances paa,
    per_all_people_f papf,
    per_all_assignments_f paaf,
    per_all_people_f papf2
    WHERE paa.date_end = TRUNC (:p_date)
    AND paa.business_group_id = :p_buss_id
    AND papf.person_id = paa.person_id
    AND TRUNC (:p_date) BETWEEN papf.effective_start_date
    AND papf.effective_end_date
    AND TRUNC (:p_date) BETWEEN paaf.effective_start_date
    AND paaf.effective_end_date
    AND paaf.assignment_type = 'E'
    AND paaf.person_id = paa.person_id
    AND paaf.supervisor_id = papf2.person_id
    AND TRUNC (:p_date) BETWEEN papf2.effective_start_date
    AND papf2.effective_end_date

    What about this:
    SELECT det.person_id
    ,det.full_name
    ,det.email_address
    ,det.date_end
    ,det.date_start
    ,det.supervisor_id
    ,det.mgr_email_address
    ,det.hr_person_id
    ,hrper.email_address hr_person_email
    FROM (
    SELECT paa.person_id, papf.full_name, papf.email_address, paa.date_end,
    paa.date_start, paaf.supervisor_id, papf2.email_address mgr_email_address
    ,(SELECT paafhr.person_id
    FROM per_all_people_f papfhr
    ,per_all_assignments_f paafhr
    ,hr_all_positions_f pos
    WHERE papfhr.person_id = paafhr.person_id
    AND nvl(papfhr.current_employee_flag, 'N') = 'Y'
    AND paafhr.assignment_type = 'E'
    AND paafhr.primary_flag = 'Y'
    AND paafhr.position_id = pos.position_id
    AND pos.name = 'HR-Manager'
    AND trunc(:p_date) BETWEEN
    papfhr.effective_start_date and papfhr.effective_end_date
    AND trunc(:p_date) BETWEEN
    paafhr.effective_start_date and paafhr.effective_end_date
    AND trunc(:p_date) BETWEEN
    pos.effective_start_date and pos.effective_end_date) hr_person_id
    FROM per_absence_attendances paa,
    per_all_people_f papf,
    per_all_assignments_f paaf,
    per_all_people_f papf2
    WHERE paa.date_end = TRUNC (:p_date)
    AND paa.business_group_id = :p_buss_id
    AND papf.person_id = paa.person_id
    AND TRUNC (:p_date) BETWEEN papf.effective_start_date
    AND papf.effective_end_date
    AND TRUNC (:p_date) BETWEEN paaf.effective_start_date
    AND paaf.effective_end_date
    AND paaf.assignment_type = 'E'
    AND paaf.person_id = paa.person_id
    AND paaf.supervisor_id = papf2.person_id
    AND TRUNC (:p_date) BETWEEN papf2.effective_start_date
    AND papf2.effective_end_date) det
    ,per_all_people_f hrper
    WHERE hrper.person_id = hr_person_id
    AND trunc(:p_date) BETWEEN
    hrper.effective_start_date AND hrper.effective_end_date;

  • How do I sum selected entries (currency) in one column based on criteria (specific text) set from a different column?

    Disclaimer:  I'm not a computer guy but I can be taught!
    I am tracking a checking account for a church ministry.  I have one table that holds the line items and the amounts budgeted for each item.  I want to add a column to that table that shows the actual amount spent for that line item.  The reference will come from the second table that contains that actual data.  I have a column that has a dropdown list to select the budget line item and a column that holds the actual amount spent for that transaction.  I want to auto sum the selected currency values based on the selection criteria of the certain budget line item and display it in the first table.
    Any help would be appreciated.

    Hi wcanerday,
    Thanks for the green tick and your feedback. Yes, the SUMIF function is powerful!
    When you adapt the Personal Budget template, make sure that the items in the Category Column (A) on the Budget sheet exactly match the items in the Pop-Up Menus in Column C of the Transactions sheet.
    Editing a Pop-Up Menu in Numbers 3 is easy. Please call back if you need more help.
    Regards,
    Ian.

  • How to pass a date parameter from report builder query designer to oracle database

    i'm using report builder 3.0 connected to oracle database. i'm trying to pass a date parameter in the query with no success, i don't
    know the exact syntax. I've tried :
    SELECT * FROM igeneral.GCL_CLAIMS where CREATED_BY IN (:CREATED_BY) AND CLAIM_YEAR IN(:UW_YEAR) AND (LOSS_DATE) >To_Date('01/01/2014','mm/dd/yyyy')
    it worked perfectly.
    However if i try to put a date parameter "From" instead of 01/01/2014 it will not work, a Define Query Parameter popup window appear and error occurred after i fill
    the values (usually i shouldnt get this popup i should enter the value when i run the report)
    SELECT * FROM igeneral.GCL_CLAIMS where CREATED_BY IN (:CREATED_BY) AND CLAIM_YEAR IN(:UW_YEAR) AND (LOSS_DATE) >To_Date(:From,'mm/dd/yyyy')
    appreciate your assistance

    Hi Gorgo,
    According to your description, you have problem when in passing a parameter for running a Oracle Query. Right?
    Based on my knowledge, it use "&" as synax for parameter in Oracle, like we use "@" in SQL Server. In this scenario, maybe you can try '01/01/2014' when inputing in "From". We are not sure if there's any limitation for To_Date()
    function. For your self-testing, you can try the query in sqlplus/sql delveloper. Since your issue is related to Oracle query, we suggest you post this thread onto Oracle forum.
    Best Regards,
    Simon Hou

  • How to deploy configuration manager client package to a query based collection

    Hi
    I have created one OU based collection.Now i wants to deploy client package to this collection so that the client automatically get installed,whenever a new machine added to the OU and so on to the collection.
    But the issue is with configuration manager client package deployment,as we can't deploy the default configuration package to the collection(Deploy option is grayed out). For this i created a new configuration manager client package and deployed this package
    to the query based collection. 
    Now when a new machine added to this collection,the client did not appear to deploy on this machine. Please help

    If you want all the devices in the OU to get the client, you can use a Computer Startup Script to deploy it.  Everybody just uses Jason's since it does everything and is well documented.
    http://blog.configmgrftw.com/configmgr-client-startup-script/
    I hope that helps,
    Nash
    Nash Pherson, Senior Systems Consultant
    Now Micro -
    My Blog Posts
    If you've found a bug or want the product worked differently,
    share your feedback.
    <-- If this post was helpful, please click "Vote as Helpful".

Maybe you are looking for

  • Need help on self referencing a ssrs report

    Hi All, I have a graph on one of my report which shows data on level 1 by default and go on showing level 2 and level 3 data on successive clicks. This has been achieved by self referencing a ssrs report and passing respective parameters. Now to iden

  • SQL loader : how to populate a calculated feild of a table?

    Hi All, I have a table which has total 92 columns, among them 6 feilds are calculated using few other fields of the same table. i have a csv file , which has only 86 feilds . during upload data using sql loader, is it possible to calculate other 6 fe

  • Kernal Panic on hard drive sleep after upgrade to OS X 10.7.5 Macbook Pro 2012

    After I installed the update to OS X 10.7.5, there is a kernal panic whenever my hard drive goes to sleep. I have reinstalled the OS, reset the NVRAM, run permissions and disk repair from internet recovery mode and am still having the problem. Any su

  • Where can I purchase Apple TV 3rd gen power cord?

    Hi.  Where can I purhcase a power cord for my Apple TV 3rd generation (released in 2012)?  I don't see it on apple.com or amazon or ebay. Weblinks would be very helpful in your reply. Thanks!

  • How to set field length in Dynamic IT tab

    Hi All,              I am creating 1 dynamic internal table with refrence of field catalog, but in the dynamic IT tab and work area i am gettinf field length is 10 char. But i want to change this into 15 or 20 char like this....  how can i change thi