Loading date/planned GI date fall in the past dates

Hi All,
we have an outbound delivery created with reference to a sales order, the delivery was created on 6/21, but we found that we have past date in this delivery as below:
- Transportation Planning   05/19
- Loading Date                  05/19
- Planned GI                     05/19
I go back to check the schedule line of one of the item in the sales order:
I got:
Delivery date                    07/10
Goods issue date             07/10
Loading date                    07/10
Material avail.date             06/21
Transportation Plan. Date  07/10
Why these date can not transfer from the SO to the outbound delivery? Please help and advice,
Thanks,

check the copy control setting from order to delivery using tcode VTLA.

Similar Messages

  • I have been using the kindle app to load books on my ipad. For the past two days I cannot access those books. I might get one page to show then the screen will freeze and I can't turn the page. Does anybody know what is going on. Help!

    For the past two days I cannot access my kindle books on my ipad. I might be able to get one page of a book to appear but then it freezes and I can't turn the page. I tried turning my ipad completely off and then on again. Any ideas to fix this?

    Start by doing a reset ,you will not lose any data
    hold home /sleep button until Apple logo appears  ignore off slider
    first try closing Kindle App on iPad

  • Automatically trigger the event to load data from Planning cube to Standard Cube

    Hello,
    We have a below set up in our system..
    1. A Planning BEx query using which user makes certain entries and writes back data to the planning cube.
    2. An actual reporting cube which gets data from the planning cube above.
    Now, what we want to do is to automate the data load from Planning cube to Reporting cube.
    This involves 2 things..
    1. Change the setting " Change real time load behaviour " of the planing cube to Planning.
    2. Trigger the DTP which loads data from Planning cube to reporting cube.
    We want to automate the above two steps...
    I have tried few things to achieve the same..
    1. Created an event in SM64,
    2. In the Planning cube "Manage" Screen,  clicked on "Subsequent Processing" and provided the event details. ( Not sure if its the correct place to provide the event detail ).
    3. Wrote a ABAP program which changes the setting of the planning cube (  " Change real time load behaviour " to Loading )
    4. Created a process chain, where we have used the event as a start variant, used the ABAP program as a next step, DTP run as the last step..
    This i hoped, would trigger the event as soon as a new request comes and sits in planning cube, which in turn would trigger the process chain which would load the data from Planning cube to reporting cube..
    This is not working. I dont think the event is triggering, and even if does i am not sure whether it will start the process chain automatically. Any ideas please ?

    hi,
    try to do the transformation directly in the input cube by using CR of type exit, more details :
    http://help.sap.com/saphelp_nw70ehp2/helpdata/en/43/1c3d0f31b70701e10000000a422035/content.htm
    hope it helps.

  • How can i add the dimensions and data loading into planning apllications?

    Now please let me know how can i add the dimensions and data loading into planning apllication without manuallly?

    you can use tools like ODI or DIM or HAL to load metadata & data into planning applications.
    The data load can be done at the Essbase end using rules file. But metadata changes should flow from planning to essbase through any of above mentioned tools and also there are many other way to achieve the same.
    - Krish

  • Why the delivery date is the same date as 'transptn plan date" & loading date' & ' good issue' & GR end date'

    Hi Experts,
    why the delivery date is the same date as ‘transptn plan date” & loading date’ & ‘ good issue’ & GR end date’.
    in shipping tab i can see Planned Deliv. Time  170 Days ... wat could be the reason.
    Many Thanks:
    Raj Kashyap

    Hi Jurgen,,
    Thanks for quick reply!!
    But i didnot find any things like that .. what could be the customizing .. and we are using GATP from APO side.
    \Raj Kashyap

  • The loading date, transportation date and planned date on the STO are the same as Delivery dates.

    Hi,
    We have created a Intra plant STO (plant to plant in the same company code). The planned delivery date is 4 days. So if I create a STO today (27th march), the delivery date is 31st march (excl Saturday and Sunday).
    During delivery creation, the loading date, transportation date and planned date are also coming as 31st march. The route determination for the given shipping point and route shows 2 days for transit and 4 hours for pick pack. There is no loading time maintained for the given combination.
    Can you please advice why are the dates coming the same as delivery date during delivery creation without considering the duration maintained in route determination ?
    Thanks!!!
    Anuja

    Hi,
    This is a standard behavior of SAP in case of Stock Transfer PO.
    If you want that the delivery date of receiving plant be transferred to supplying plant, please use BADI MD_STOCK_TRANSFER.
    Hope this helps.
    Regards,
    Prashant

  • Input ready query is not showing loaded data in the cube

    Dear Experts,
    In Input ready query we have problem that it is not showing the values which was not entered by throught hat query. Is any settings in input ready query that we can do to populate the loaded data on the cube as well as data entered through Input ready query itself.
    Thanks,
    Gopi R

    Hi,
    input ready queries always should display most recent data (i.e. all green and the yellow request). So you can check the status of the requests in the real-time InfoCube. There should exist only green requests and maybe at most one yellow request.
    In addition you can try to delete the OLAP cache for the plan buffer query: Use RSRCACHE to do this. The technical names of the plan buffer query can be found as follows:
    1. InfoCube\!!1InfoCube, e.g. ZTSC0T003/!!1ZTSC0T003 if ZTSC0T003 is the technical name of the InfoCube
    2. MPRO\!!1MPRO, e.g. ZTSC0M002/!!1ZTSC0M002 if ZTSC0M002 is the technical name of the multiprovider
    If the input ready query is defined on an aggregation level using a real-time InfoCube, the first case is relevant; if the aggregation level is defined on a multiprovider the second case is relevant. If the input-ready query is defined on a multiprovider containing aggregation levels again the first case is relevant (find the real-time InfoCubes used in the aggregation level).
    Regards,
    Gregor

  • Unable to load data into Planning cube

    Hi,
    I am trying to load data into a planning cube using a DTP.
    But the system throws a message saying that, real time data loading cannot be performed to the planning cube.
    What would be the possible reason for the same?
    Thanks & Regards,
    Surjit P

    Hi Surjit,
    To load data into cube using DTP, it should be put in loading mode only.
    The real time cube behaviour is set to planning mode only when the data is input to the cube via the planning layouts / or through the Fileupload program.
    You can change the behaviour of the cube in RSA1 -> Right click on the cube -> Change Real-time load behaviour and select the first option(real time cube can be loaded with data; planning not allowed)
    Best Rgds
    Shyam
    Edited by: Syam K on Mar 14, 2008 7:57 AM
    Edited by: Syam K on Mar 14, 2008 7:59 AM

  • Loading data from Cube to Planning area

    Hi,
             If I am loading data from a cube to a planning area using transaction TSCUBE,
    does the system load data into planning area for the combinations that exist in the cube or does it load for all CVCs?
    For example,
    I have my CVC as Plant, Material, Customer
    If there are 4 CVCs in the POS that were previously generated as
    Plant--Material--Customer
    01--M1--
    C1
    01--M2--
    C3
    01--M2--
    C2
    01--M4--
    C5
    If the cube has data like this:
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    10
    01--M2C3--
    20
    01--M2C2--
    5
    (doesnot have the last combination), then if I use TSCUBE transaction to load data to Planning area from this cube,
    is the data loaded as
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    10
    01--M2C3--
    20
    01--M2C2--
    5
    Only for the 3 combinations that exist in the cube and not load anything for the last one
    OR
    is the data loaded as
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    10
    01--M2C3--
    20
    01--M2C2--
    5
    01--M4C5--
    0
    Load all 4 combinations and send 0 as the cube doesnot have this combination?
    Hope I am clear on this question.
    Thanks.

    Thanks a lot Vinod, Srinivas and Harish. The reason why I am asking you is that we have a scenario where we get this situation.
    We initially get data from R/3 to BW to APO like the below:
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    10
    Later when the customer is changed or bought out by somebody C1 is changed to C2. Some times when the business doesnot know who the customer is initially they just put C1 as dummy and then after sometime replace it by C2. Then the new record coming in is as follows:
    Plant--MaterialCustomer----Qty.
    01--M1C2--
    10
    BW can identify changes in transaction data  but not in Master data. What I mean by this is when Qty. 10 changes from 10 to 20, the system can identify it in deltas.
    If the customer (master data) changes to C2 from C1, the system thinks it's a new record all together then if I use delta loads, it gets me the following:
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    10
    01--M1C2--
    10
    If I am looking at Plant and Material Level, my data is doubled.
    So we are planning to do a full load that works like this:
    1. Initial data like the below:
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    10
    The CVC is created and the planning area has Qty.10
    Then we delete the contents of cube and do a full load into the cube with changed customer
    Plant--MaterialCustomer----Qty.
    01--M1C2--
    10
    This time a new CVC is created. Then we have another 10 loaded into Planning area.
    If the system loads all CVCs, then the it would send
    Plant--MaterialCustomer----Qty.
    01--M1C1--
    0
    01--M1C1--
    10
    If the system loads only combinations in cube,
    then it loads
    Plant--MaterialCustomer----Qty.
    01--M1C2--
    10
    But the system already has another 10 for Customer C1 duplicating the values.
    We are trouble in the second case.
    We had to go fr this solution instead of realignment as our business has no way pf knowing that C1 was replaced by C2.
    Hope I am clear.

  • Unable to load data to Hyperion planning application using odi

    Hi All,
    When I try to load data into planning using odi, the odi process completes successfully with the following status in the operator ReportStatistics as shown below but the data doesn't seem to appear in the planning data form or essbase
    can anyone please help
    org.apache.bsf.BSFException: exception from Jython:
    Traceback (most recent call last):
    File "<string>", line 2, in <module>
    Planning Writer Load Summary:
         Number of rows successfully processed: 20
         Number of rows rejected: 0
    source is oracle database
    target account dimension
    LKM SQL TO SQL
    IKM SQL TO HYPERION PLANNING is used
    In Target the following columns were mapped
    Account(load dimension)
    Data load cube name
    driverdimensionmetadata
    Point of view
    LOG FILE
    2012-08-27 09:46:43,214 INFO [SimpleAsyncTaskExecutor-3]: Oracle Data Integrator Adapter for Hyperion Planning
    2012-08-27 09:46:43,214 INFO [SimpleAsyncTaskExecutor-3]: Connecting to planning application [OPAPP] on [mcg-b055]:[11333] using username [admin].
    2012-08-27 09:46:43,277 INFO [SimpleAsyncTaskExecutor-3]: Successfully connected to the planning application.
    2012-08-27 09:46:43,277 INFO [SimpleAsyncTaskExecutor-3]: The load options for the planning load are
         Dimension Name: Account Sort Parent Child : false
         Load Order By Input : false
         Refresh Database : false
    2012-08-27 09:46:43,339 INFO [SimpleAsyncTaskExecutor-3]: Begining the load process.
    2012-08-27 09:46:43,355 DEBUG [SimpleAsyncTaskExecutor-3]: Number of columns in the source result set does not match the number of planning target columns.
    2012-08-27 09:46:43,371 INFO [SimpleAsyncTaskExecutor-3]: Load type is [Load dimension member].
    2012-08-27 09:46:43,996 INFO [SimpleAsyncTaskExecutor-3]: Load process completed.

    Do any members exist in the account dimension before the load? if not can you try adding one member manually then trying the load again.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Load a sales order with delivery date in the past

    Hi,
    We want to load in the system a sales order with delivery date in the past, and maintain the schedule delivery date in the past. To do that, in the customizing Sales And Distribution / Basic Functions / Delivery Scheduling and Transportation Scheduling / Define Scheduling By Sales Document Type, I selected the flag Blackwards. But the problem is that the rest of the dates in the scredule line: goods issue date, loading date, material avail.date and transportation Plan Date, are in blank and you cannot enter any data because the system deletes it.
    How can I have these dates informed with dates in the past?
    Thanks in advance,

    You can control this using the "Message Control" in the SAP IMG.
    Supplier Relationship Management>SRM Server>Cross-Application Basic Settings>Message Control>Influence Message Control
    Using this you convert Error to Warning or even swith off this message.
    Please refer this thread for complete steps:
    Re: How to change an error message to a warning message in SRM
    Note: you need to suppress the messages relevant to your case here.
    Regards
    Kathirvel

  • Error in Loading Data In Planning Application

    Hi
    we are getting the Following error in loading data by using Outline Load utility by specifying driver members on the Planning Data Load Administrator Page.
    Client Enable Status false
    com.hyperion.planning.InvalidMemberException: The member USD,BS,Current,BU Version_1 ,FY11 does not exist or you do not have access to it.
    We also tried to load the data by using .CSV File, it is showing NO ERROR in the CMD....but we are unable to preview the data in Essbase after refreshing the database in Planning.
    Cheers,
    Mohammed

    I can be totally wrong but did you intentionally put a space between BU Version_1 and comma?
    USD,BS,Current,BU Version_1 ,FY11
    I found this guideline: http://download.oracle.com/docs/cd/E12825_01/epm.111/hp_admin/ch05s02s01.html Are you sure you are following the correct steps?
    Finally, are you able to load the data through Essbase Load Rules?
    Cheers,
    Mehmet

  • Load data from infocube to DP planning area

    Hi All,
    I have loaded the data from info cube to DP planning area keyfigures with the transaction /SAPAPO/TSCUBE.
    the data copy was successful and there were no error messages. However, the keyfigure values in planning book are shown exactly as double the values of infocube key figures for all the periods.
    I repeatedly loaded data several times and the behaviour was same.
    We didn't implement any BADI in standrad /SAPAPO/TSCUBE program.
    Could any one please give some hints what would be the reasons for this problem.
    Thanks
    Krish

    I am not sure on how you check the Live Cache data for DP but based on your testing I can say that the old data is not overwritten by the new data in the Live cache. I cannot say the root cause for this however I can suggest you the remedy. To avoid this issue, you zero out the values of the key figure before loading from the Cube.
    For this you have to run a macro which copies zero for the entire horizon and then load the cube. First test this in test system, if it works (it should work), then to make it simple create a batch job with two steps, first step would run this macro and the second step will load the data from cube. you can run this job whenever you want to load the data

  • Loading data from APO-BW cube into DP planning area

    Hello,
    Please explain to me how to load data from an infocube within APO into the DP planning area.  So far, I generated the data mart, created the update rules for the DP planning area (cube) and replicated data sources.  The problem that I am having is that when I create the infopackage, there is no data targets on the data target tab.  How can I get the data targets to display?  All the other actions appear to be set up correctly (confirmed by BW experts).  Can data be loaded from an APO-BW cube directly to the DP planning area cube?
    Thanks

    Hi James,
    Loading of data from an InfoCube to a Planning Area is done using transaction /SAPAPO/TSCUBE (program /SAPAPO/RTSINPUT_CUBE). You just specify the InfoCube, target Planning Area, Selection condition, Infocube Key Figure to PA KF mapping, etc).
    Have you tried this transaction already?
    Hope this helps.

  • ODI Error when Loading data from a .csv file to Planning

    Hello,
    I am trying to load data from a csv file to planning using ODI 10.1.3.6 and I am facing this particular error. I am using staging area as Sunopsis memory engine.
    7000 : null : java.sql.SQLException: Invalid COL ALIAS "DEFAULT C12_ALIAS__DEFAULT" for column "ALIAS:"
    java.sql.SQLException: Invalid COL ALIAS "DEFAULT C12_ALIAS__DEFAULT" for column "ALIAS:"
         at com.sunopsis.jdbc.driver.file.bb.b(bb.java)
         at com.sunopsis.jdbc.driver.file.bb.a(bb.java)
         at com.sunopsis.jdbc.driver.file.w.b(w.java)
         at com.sunopsis.jdbc.driver.file.w.executeQuery(w.java)
         at com.sunopsis.sql.SnpsQuery.executeQuery(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execCollOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlC.treatTaskTrt(SnpSessTaskSqlC.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.k(e.java)
         at com.sunopsis.dwg.cmd.g.A(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    Code from Operator:
    select     Account     C1_ACCOUNT,
         Parent     C2_PARENT,
         Alias: Default     C12_ALIAS__DEFAULT,
         Data Storage     C3_DATA_STORAGE,
         Two Pass Calculation     C9_TWO_PASS_CALCULATION,
         Account Type     C6_ACCOUNT_TYPE,
         Time Balance     C14_TIME_BALANCE,
         Data Type     C5_DATA_TYPE,
         Variance Reporting     C10_VARIANCE_REPORTING,
         Source Plan Type     C13_SOURCE_PLAN_TYPE,
         Plan Type (FinStmt)     C7_PLAN_TYPE__FINSTMT_,
         Aggregation (FinStmt)     C8_AGGREGATION__FINSTMT_,
         Plan Type (WFP)     C15_PLAN_TYPE__WFP_,
         Aggregation (WFP)     C4_AGGREGATION__WFP_,
         Formula     C11_FORMULA
    from      TABLE
    /*$$SNPS_START_KEYSNP$CRDWG_TABLESNP$CRTABLE_NAME=Account.csvSNP$CRLOAD_FILE=Y:/1 Metadata/Account//Account.csvSNP$CRFILE_FORMAT=DSNP$CRFILE_SEP_FIELD=2CSNP$CRFILE_SEP_LINE=0D0ASNP$CRFILE_FIRST_ROW=1SNP$CRFILE_ENC_FIELD=SNP$CRFILE_DEC_SEP=SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=AccountSNP$CRTYPE_NAME=STRINGSNP$CRORDER=1SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=ParentSNP$CRTYPE_NAME=STRINGSNP$CRORDER=2SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Alias: DefaultSNP$CRTYPE_NAME=STRINGSNP$CRORDER=3SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Data StorageSNP$CRTYPE_NAME=STRINGSNP$CRORDER=4SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Two Pass CalculationSNP$CRTYPE_NAME=STRINGSNP$CRORDER=5SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Account TypeSNP$CRTYPE_NAME=STRINGSNP$CRORDER=6SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Time BalanceSNP$CRTYPE_NAME=STRINGSNP$CRORDER=7SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Data TypeSNP$CRTYPE_NAME=STRINGSNP$CRORDER=8SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Variance ReportingSNP$CRTYPE_NAME=STRINGSNP$CRORDER=9SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Source Plan TypeSNP$CRTYPE_NAME=STRINGSNP$CRORDER=10SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Plan Type (FinStmt)SNP$CRTYPE_NAME=STRINGSNP$CRORDER=11SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Aggregation (FinStmt)SNP$CRTYPE_NAME=STRINGSNP$CRORDER=12SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Plan Type (WFP)SNP$CRTYPE_NAME=STRINGSNP$CRORDER=13SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=Aggregation (WFP)SNP$CRTYPE_NAME=STRINGSNP$CRORDER=14SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=FormulaSNP$CRTYPE_NAME=STRINGSNP$CRORDER=15SNP$CRLENGTH=150SNP$CRPRECISION=150SNP$CR$$SNPS_END_KEY*/
    insert into "C$_0Account"
         C1_ACCOUNT,
         C2_PARENT,
         C12_ALIAS__DEFAULT,
         C3_DATA_STORAGE,
         C9_TWO_PASS_CALCULATION,
         C6_ACCOUNT_TYPE,
         C14_TIME_BALANCE,
         C5_DATA_TYPE,
         C10_VARIANCE_REPORTING,
         C13_SOURCE_PLAN_TYPE,
         C7_PLAN_TYPE__FINSTMT_,
         C8_AGGREGATION__FINSTMT_,
         C15_PLAN_TYPE__WFP_,
         C4_AGGREGATION__WFP_,
         C11_FORMULA
    values
         :C1_ACCOUNT,
         :C2_PARENT,
         :C12_ALIAS__DEFAULT,
         :C3_DATA_STORAGE,
         :C9_TWO_PASS_CALCULATION,
         :C6_ACCOUNT_TYPE,
         :C14_TIME_BALANCE,
         :C5_DATA_TYPE,
         :C10_VARIANCE_REPORTING,
         :C13_SOURCE_PLAN_TYPE,
         :C7_PLAN_TYPE__FINSTMT_,
         :C8_AGGREGATION__FINSTMT_,
         :C15_PLAN_TYPE__WFP_,
         :C4_AGGREGATION__WFP_,
         :C11_FORMULA
    Thanks in advance!

    Right-clicking "data" on the model tab can you see the data?
    In your code there's written:
    P$CRLOAD_FILE=Y:/1 Metadata/Account//Account.csv
    Is it right the double slash before the file name?

Maybe you are looking for

  • Mini DisplayPort - DVI - Video

    Hi Just bought two adapters from the iStore, Mini Display Port to DVI and DVI to Video. The reason for this is that my (old) TV does not have any digital inputs at all. However, when I connect the computer to the TV I don't get a signal. When I conne

  • Compressed memory showing 0% in activity monitor

    On one of my Mac Mini's (late 2012), upgraded to 16GB RAM, I keep getting out of memory messages when running apps and on checking the activity monitor it is showing 0% for all running apps under the compressed memory column. I'm running OS-X 10.10.3

  • Including min(modified date) from results of data

    I am getting the following error message when trying to use min function for a modified date in my data: ORA-00934: group function is not allowed here I am trying to get counts of incidents closed each month. However Incidents can be closed, then reo

  • Where the sub operation details of a activity of a WBS element are stored

    Hello experts,                     Where can i find the suboperation details ( quantities , UOM .........)  of the activities of WBS element in CJ20N transaction. In which table it is being stored.

  • Color management - going from 3ds Max to Photoshop

    I'm trying to develop a workflow for bringing renders from 3ds Max into Photoshop, and having them look the same in both programs. The issue is that Max isn't color managed, so things can shift. There's a good article on the subject here: http://www.