Significance of STAT field in JEST table
In one of my report I need to extract the status of a equipment from JEST table, the field is STAT. Incidentally the table contains other two fields INACT and CHGNR.
I am not getting the meaning and significance of each of the fields in this JEST table. Can anyone tell me the significance of this STAT field and its possible set of values.
Please help me. It is a bit urgent.
Thanks in advance.
If you need to extract the status of a particular object, you can try using FM: STATUS_READ with the object number and 'X' for Only Active.
Coming to your question, Field INACT of table JEST identifies whether the status is currently active or inactive. Field CHGNR determines the sequence in which the status'es are changed.
Possible set of values determines on the Status Profile which is configurable and differs from System to System.
Check in table TJ30 with the status profile to know the various status'es defined for the profile. For their descriptions you can check table: TJ30T or alternatively you can try view V_TJ30T.
So for your sequence i would advice:
1. Execute FM: STATUS_OBJECT_READ with Object Number to retreive the status profile.
2. Execute FM: STATUS_READ to extract the active status of the object.
3. Extract the description of the status from table TJ30T with the status profile and status.
Hope that helps.
Similar Messages
-
Significance of Counter field in CATsDB Table
Dear All,
What is the significance of OUNTER Field in CATSDB Table?
Regards,
Satya.Yeah ...
Absolutely correct.
Please go through my requirement.
I need to Update CATSDB table manually.
Say If an Employee enters the leave data like CL, SL etc., through Portal, that is coming into R/3 and my IT2001 is getting updated.
But when the Same employee logs in using his Cats Id into CATS for time sheet entries, then those booked as well as approved days are not getting reflected and allowing the user to enter the data. After that it is throwing the error.
My Requirement is Those records should get displayed in Cat2 T-code defaultly. So, I need to update my CATSDB table manually.
So, as COUNTER Field is updated by the System itself, I want to know its significance. and please let me know how to do this???
Regards,
Satya -
Hi,
Is there a BAPI that updates the JEST table - status of scheduling agreements?
Thanks,
LeonHi,
I want to insert new user status in JEST table but I can't find any suitable function. I have tried all function listed above, but it not works. Did anyone know what function module to insert new user status in JEST table?
example:
MANDT OBJNR STAT CHGNR
140 NV000000097200000007 E0004 001
140 NV000000097200000007 E0006 001
140 NV000000097200000007 I0001 001
140 NV000000097200000007 I0028 001
I would like to add stat = 'E0007' in JEST table. Thanks. -
Hi,
I want to update user fields in JEST table .
I should not use MODIFY and INSERT commands to update directly as it is not preferred.
Please give me FM's/BAPIs which are used to update JEST table if anybody knows.
Any pointers in this regard are very much helpful.try this...
MAP2I_BAPI2054_OBJECTSTATUS_AL -
Significant of key field in Info cube table
Hi,
what is significant of key field in Info cube table?
Best regards,
dushyant.hi ,
key figures are very important in tables, when it is in cube it act as dimensions
for the reporting purpose see this scenario
the table has following fields
student no
student name
student attendance
student mark
in this scenario when we want report according to student no its normal we would get, but when we want according to attendance,marks we dont get report according to attendance and mark, so we put all those fields in key fields.
So we could say that Key fields are the dimensions and according to this we get reports
thank yu -
Hi Gurus,
I am using Z transactional datasource (ZJEST) created on JEST Table with Full Load.JEST Table has only 4 fields:
CHGNR Change number
INACT Indicator: Status Is Inactive
OBJNR Object number
STAT Object status
This table has around 18 million records.Each time i load data i have to extract around 18 million records.
Is there any alternate way to avoid loading these huge data every time.Also this table has no date field not extract data based on time.
Can anyone suggest me with ur valuable inputs.
Thank in Advance
Surya.Hi ,
Hi All, If you check the JEST table there is uniqueness for the Records are updated at the table level.
I think we can't use OBJNR .May be we can with STAT field.
Other way:
From JEST you can extract Full load bacuse there is no delta specific field.
Create a custom table as ZTEST with additional field timestamp.So that you can fetch only updated data into DS level.
Now the issue is how the ZTable will be populated:
Easiest way is with the help of ABAP we can populate from standard to ZJEST every day but when updating we will maniantain Timestamp.So you can extract only those records.
(or)
Check How the JEST table is populating by the Functional consultants is there any idention for how many records updated today.But the issue is u r is FULL even though you know the logic no useful.So u need to convert into Delta.
Regards
Ram.
Edited by: Ramakanth Deepak Gandepalli on Dec 10, 2009 11:05 AM -
Changing the length of a key field in a table
Hi,
I want to increase the length of the field from 2 to 4 in a standard SAP table and deliver it to the customers. This field is a key field in table. This field from this table is also used in view and view clusters.
What is the implication of changing the length to the customers. The customers would have already data in this field and they should not loose any data. Will the existing data for customers remain at length 2 or do they have to do some conversion?
Regards,
Srini.
Edited by: Srinivasa Raghavachar on Feb 7, 2008 12:45 PMhi,
The database table can be adjusted to the changed definition in the ABAP Dictionary in three different
ways:
By deleting the database table and creating it again. The table on the database is deleted, the inactive
table is activated in the ABAP Dictionary, and the table is created again on the database. Data
existing in the table is lost.
By changing the database catalog (ALTER TABLE). The definition of the table on the database is
simply changed. Existing data is retained. However, indexes on the table might have to be built again.
By converting the table. This is the most time-consuming way to adjust a structure.
If the table does not contain any data, it is deleted in the database and created again with its new
structure. If data exists in the table, there is an attempt to adjust the structure with ALTER TABLE. If the
database system used is not able to do so, the structure is adjusted by converting the table.
Field 1 Field 2, Field 3
NUMC,6 CHAR 8 CHAR, 60
Field 1 Field 2 Field 3
NUMC,6 CHAR, 8 CHAR,30
The following example shows the steps necessary during conversion.
Starting situation: Table TAB was changed in the ABAP Dictionary. The length of field 3 was reduced
from 60 to 30 places.
The ABAP Dictionary therefore has an active (field 3 has a length of 60 places) and an inactive (field 3
still has 30 places) version of the table.
The active version of the table was created in the database, which means that field 3 currently has 60
places in the database. A secondary index with the ID A11, which was also created in the database, is
defined for the table in the ABAP Dictionary.
The table already contains data.
Step 1: The table is locked against further structure changes. If the conversion terminates due to an
error, the table remains locked. This lock mechanism prevents further structure changes from being
made before the conversion has been completed correctly. Data could be lost in such a case.
Step 2: The table in the database is renamed. All the indexes on the table are deleted. The name of the
new (temporary) table is defined by the prefix QCM and the table name. The name of the temporary
Step 3: The inactive version of the table is activated in the ABAP Dictionary. The table is created on the
database with its new structure and with the primary index. The structure of the database table is the
same as the structure in the ABAP Dictinary after this step. The database table, however, does not
contain any data.
The system also tries to set a database lock for the table being converted. If the lock is set, application
programs cannot write to the table during the conversion.
The conversion is continued, however, even if the database lock cannot be set. In such a case
application programs can write to the table. Since in such a case not all of the data might have been
loaded back into the table, the table data might be inconsistent.
You should therefore always make sure that no applications access the table being converted
during the conversion process.
Step 4: The data is loaded back from the temporary table (QCM table) to the new table (with MOVECORRESPONDING).
The data exists in the database table and in the temporary table after this step.
When you reduce the size of fields, for example, the extra places are truncated when you reload the
data.
Since the data exists in both the original table and temporary table during the conversion, the storage
requirements increase during the process. You should therefore verify that sufficient space is available in
the corresponding tablespace before converting large tables.
There is a database commit after 16 MB when you copy the data from the QCM table to the original
table. A conversion process therefore needs 16 MB resources in the rollback segment. The existing
database lock is released with the Commit and then requested again before the next data area to be
converted is edited.
When you reduce the size of keys, only one record can be reloaded if there are several records whose
key cannot be distinguished. It is not possible to say which record this will be. In such a case you should
clean up the data of the table before converting.
Step 5: The secondary indexes defined in the ABAP Dictionary for the table are created again.
Step 6: The temporary table (QCM table) is deleted.
Step 7: The lock set at the beginning of the conversion is deleted.
If the conversion terminates, the table remains locked and a restart log is written.
Caution: The data of a table is not consistent during conversion. Programs therefore should not access
the table during conversion. Otherwise a program could for example use incorrect data when reading the
table since not all the records were copied back from the temporary table. Conversions therefore
should not run during production! You must at least deactivate all the applications that use tables to
be converted.
You must clean up terminated conversions. Programs that access the table might otherwise run
incorrectly. In this case you must find out why the conversion terminated (for example overflow of the
corresponding tablespace) and correct it. Then continue the terminated conversion.
Since the data exists in both the original table and temporary table during conversion, the storage
requirements increase during conversion. If the tablespace overflows when you reload the data from the
temporary table, the conversion will terminate. In this case you must extend the tablespace and start the
conversion in the database utility again.
If you shorten the key of a table (for example when you remove or shorten the field length of key fields),
you cannot distinguish between the new keys of existing records of the table. When you reload the data
from the temporary table, only one of these records can be loaded back into the table. It is not possible
to say which record this will be. If you want to copy certain records, you have to clean up the table
before the conversion.
During a conversion, the data is copied back to the database table from the temporary table with the
ABAP statement MOVE-CORRESPONDING. Therefore only those type changes that can be executed
with MOVE-CORRESPONDING are allowed. All other type changes cause the conversion to be
terminated when the data is loaded back into the original table. In this case you have to recreate the old
state prior to conversion. Using database tools, you have to delete the table, rename the QCM table to
its old name, reconstruct the runtime object (in the database utility), set the table structure in the
Dictionary back to its old state and then activate the table.
If a conversion terminates, the lock entry for the table set in the first step is retained. The table can no
longer be edited with the maintenance tools of the ABAP Dictionary (Transaction SE11).
A terminated conversion can be analyzed with the database utility (Transaction SE14) and then
resumed. The database utility provides an analysis tool with which you can find the cause of the error
and the current state of all the tables involved in the conversion.
You can usually find the precise reason for termination in the object log. If the object log does not
provide any information about the cause of the error, you have to analyze the syslog or the short dumps.
If there is a terminated conversion, two options are displayed as pushbuttons in the database utility:
After correcting the error, you can resume the conversion where it terminated with the Continue
adjustment option.
There is also the Unlock table option. This option only deletes the existing lock entry for the table .
You should never choose Unlock table for a terminated conversion if the data only exists in the
temporary table, i.e. if the conversion terminated in steps 3 or 4. table for table TAB is therefore QCMTAB.
Hope this is helpful,Do reward. -
Reading the data from field symbol internal table //
Hi,
There are 2 internal tables defined as Fieldsymbols (type any) and I need to retrive data from second internal table based on a field value in first internal table.
Let's assue the name internal table 1 is <it_itab1>, 2nd internal table name is <it_itab2> and the work areas are <wa_itab1> and <wa_itab2>.
The existing logic :
LOOP at <it_itab1> ASSIGNING <wa_itab1>.
ASSIGN COMPONENT 'XYZ' OF STRUCTURE <wa_itab1> TO l_field6.
LOOP AT <it_itab2> ASSIGNING <wa_itab2>.
ASSIGN COMPONENT 'XYZ' OF STRUCTURE <wa_itab2> TO <p_field7>.
IF <p_field7> = l_field6.
do the required business.
ELSE.
* do the required business.
ENDIF.
ENDLOOP.
ENDLOOP.
The requirement of reading second internal table was achieved by putting loop on the internal table but its giving considerable effect on performance !!
Is there any way to use READ statement in my case OR any way of putting WHERE condition on loop statement of second internal table ??
Thank you !!Use the below Logic.
Loop at Itab1 into wa_itab1.
Loop at itab2 into wa_itab2 where p_field7 = wa_itab1-xyz or I_field6.
do the required business.
endloop.
Loop at itab2 into wa_itab2 where p_field7 <> wa_itab1-xyz or I_field6.
do the required business.
endloop.
endloop.
Hope it is useful... -
How to make screen field enable when table control gives an error
Hi,
I had a scneario like when table control data wrong then one parameter of the screen should be enabled for the input, i knew that screen-name will not work since it will have always table control fields only when table control gives an error.
How to make the other parameter enable when table control throws an error.
Regards,
JayaHi Gobi,
Thanks for your response, but issue is - how to make other screen fields enable when there was an error in the table control data.
For table control - lets say we will use the code as i mentioned above.i am sure that we cant write the code for field enable in between loop & endloop.
as you said if we right outside the loop-endloop, the module wont be triggered when table control throws an error, because that statement was not there in the loop-endloop.
please let me know if you need any more information on the issue. I hope there is alternative for this in SAP.
Thanks
Jaya -
Significance of Secondary field in doc_link of parameter ct_doc_flow
Hi ,
Does any one know what is the significance of ' Secondary' field (Document Flow: Secondary Object)in internal table doc_link of parameter ct_doc_flow in FM CRM_ORDER_MAINTAIN .
Regards,
Nithish
Edited by: nithish P on Dec 20, 2011 2:49 PMHello,
<b>Sort it_final by belnr.</b>
loop at it_final.
on change of it_final-belnr.
clear temp_gsber.
clear temp_lifnr.
<b>temp_belnr = it_final-belnr.</b>
temp_gsber = it_final-gsber.
temp_lifnr = it_final-lifnr.
if it_final-gsber eq ' '.
it_final-gsber = temp_gsber.
endif.
if it_final-lifnr eq ' '.
it_final-lifnr = temp_lifnr.
endif.
modify it_final transporting gsber lifnr where <b>belnr = temp_belnr</b>.
<b>endon.</b>
endloop.
Regards,
Naimesh -
Why is the trigger triggering on all fields in a table?
I have a trigger and the text is as follows. The trigger should just write the emplid to the table PS_DM_ADDR_CHG_EMP whenever there is an update to the fields
STREET1,STREET2 ,STREET3 ,CITY ,STATE ,ZIP ,COUNTRY in PS_PERSONAL_DATA. But some how it is writing emplid to the PS_DM_ADDR_CHG_EMP when any updateis done on any field on the 50 plus fields of the PS_PERSONAL_DATA table. Is there any reason why this happens. I looked at all other triggers and none of them writes any thing to this table though I found one more trigger on PS_PERSONAL_DATA for any insert or update or delete on any field and it uses insert in some other table. I did not see any other triggers related to the PS_PERSONAL_DATA table. So how to diagonize the issue of finding what is causing to write the data to this custom table.
CREATE OR REPLACE TRIGGER HT0P.PERSDATA_RAU
AFTER UPDATE OF STREET1,STREET2 ,STREET3 ,CITY ,STATE ,ZIP ,COUNTRY
ON PS_PERSONAL_DATA
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_Emplid ps_personal_data.emplid%type; -- Used for storing EMPLID
BEGIN
v_Emplid := :old.emplid;
UPDATE ps_dm_addr_chg_emp a
SET a.emplid = v_Emplid
WHERE (((a.emplid = v_Emplid) and length(v_emplid) = 3)
or ((substr(a.emplid, 1, 3) = substr(v_Emplid, 1, 3)) and length(v_emplid) = 4 and substr(v_emplid, -1, 1) in('B', 'C', 'J', 'K', 'P', 'U'))
or ((a.emplid = v_Emplid) and length(v_emplid) = 4)
or ((substr(a.emplid, 1, 4) = substr(v_Emplid, 1, 4)) and length(v_emplid) = 5 and substr(v_emplid, -1, 1) in('B', 'C', 'J', 'K', 'P', 'U'))
or ((a.emplid = v_Emplid) and length(v_emplid) = 5)
or ((substr(a.emplid, 1, 5) = substr(v_Emplid, 1, 5)) and length(v_emplid) = 6 and substr(v_emplid, -1, 1) in('B', 'C', 'J', 'K', 'P', 'U'))
or ((a.emplid = v_Emplid) and length(v_emplid) = 6)
or ((substr(a.emplid, 1, 6) = substr(v_Emplid, 1, 6)) and length(v_emplid) = 7 and substr(v_emplid, -1, 1) in('B', 'C', 'J', 'K', 'P', 'U')));
IF SQL%NOTFOUND THEN
INSERT INTO ps_dm_addr_chg_emp (emplid)
VALUES (v_Emplid);
END IF;
END;Hi,
It would be helpful if you could post formated code using tags. Learn more from FAQ
To test your trigger - You may want to create a temparory table and have an insert statement for the temp table in your trigger and test it by updating other columns of your main table.
Also you may want to ensure it is not the UPDATE statement which is causing the trouble for you by updating some unintended rows...
Regards,
Rakesh -
Update system status in JEST table
Hi Experts,
I need to update the system status TECO as inactive in table JEST based on some condition from program manually. It might not be suggested to directly modify the database table. I got one BAPI function module BAPI_ALM_ORDER_MAINTAIN, but could not find how to use it.
Can you please let me know whether there are any BADIs or BAPIs to update the system status in JEST table.
Thanks in advance for you help.
regards,
Lakshmi.Hi ,,
Thank you for your suggestion. but I got a FM which exactly updates the system status in JEST and JCDS tables.
The function module STATUS_CHANGE_INTERN and can be used as follows. We always need to follow one condition that, when the system status TECO is changing to inactive the REL status should be made Active.
DATA: i_stat TYPE STANDARD TABLE OF jstat.
DATA: wa_stat TYPE jstat.
wa_stat-stat = 'I0045'.
wa_stat-inact = 'X'.
APPEND wa_stat TO i_stat.
wa_stat-stat = 'I0002'.
wa_stat-inact = ' '.
APPEND wa_stat TO i_stat.
CALL FUNCTION 'STATUS_CHANGE_INTERN'
EXPORTING
client = sy-mandt
objnr = lv_objnr
TABLES
status = i_stat
EXCEPTIONS
object_not_found = 1
status_inconsistent = 2
status_not_allowed = 3
OTHERS = 4.
COMMIT WORK. -
Search Help on Table Control - Fill more than one field in the table?
Hey everyone,
I have built a screen with a Table Control on it... the fields of the table control are linked to an internal table... The internal table has the line type of a structure I've defined in the data dictionary. Within that structure in the data dictionary, I've linked some fields to search helps (For example, a MATNR and CUSTOMER search help)... I've defined in the structure definition which fields from the search help are to be returned to which fields in the structure.
The problem is, even though I have the search help set to export both the customer number and location when using the search help on the customer field, it still does not fill the location field within the table. Is this a limitation of using search helps within table controls?
I'm also finding that by defining the search help through the structure, instead of directly within the screen, the search help round button does not show up on the field, yet I can still press F4 to bring up the search help. Is there a reason why it's not showing the search help clickable button even though it works fine using F4?
For doing search helps in Table Controls, is it better to just build the search help, attach it directly to the field in the table, and then after the user picks the single field, use the PAI to run a select and fill the rest of the fields required?
Thanks,
DallasHi Dallas,
(1)
What i understood is that you added a search help by defining it in the internal table type for a field customer number..in the search help you have 2 fields customer number and location...user press the search help ..then you need to fill 2 different fields or 1 field?
if you need to fill the customer location or location (only one) then you need to set the "import" in the search help for whichever is required.....
if you need to fill 2 or more different fields..then you can use the technique you have mentioned last , to do a select in PAI and fill the fields....but this you can use if the combination for the fields is unique...eg: u have customer number and location..if customer X can be mapped to location X and location Y..when a select statement is done there are 2 options..so in such cases it is better to leave the option to the user otherwise if there is a clear mapping like customer X can be mapped only to location X then you can use the select..
(2)
usually when you define it as a type in the internal table the icon doesn't show up..but you can do alternative like mentioned..go to the table,find the search help for the required field if present or create a new one if required and place the search help mentioned in the screen itself..so as to see the icon...sometimes users are adamant that they need the search help icon to be seen..so it depends on if your user
(3)
as in the example of customer number and location mentioned we can provide them different search helps and do the needful processing in PAI to fill the fields
Table controls may be used for different purposes and requirements....even a checkbox,push button can be placed as a field in table control and used,but yes most of the time requirements are like what is mentioned in your case...
Regards
Byju -
Settlement job is held up on JEST table
Hi ,
A settlement job is held up in JEST table and is shown in SM66.There are many hits of this JEST table which is in sequential read status .The job which is related to this table is running inconsistently since 3 days ie the duration for completion of job is increasing gradually.
So can anyone help in understanding as why the JEST table gives these many hits and is in sequential read status. This is found everyday.
Thanks,
AmberFirst: don't rely on the "sequential read" what you see in SM50/SM66 (see Note 825653 - Oracle: Common errors, point 15).
Check ST04/DBACOCKPIT what the database is actually doing and which access plan is used for that statement. Also check that your database statistics are up-to-date for that table.
Markus -
Combining DD-MON field with YYYY field from GL table
I am running into issues with GL_Cancelled_Date which is displaying the wrong 4 digit year. The GL_Encumbered_Date for these rows is correct and I am looking at ways to combine these fields to output the correct full DD-MON-YYYY date. The below code displays all of the bad rows of data and the last two coloumns display the correct DD-MON and YYYY dates. But I am unsure of how to combine the DD-MON from GL_Cancelled_Date with the YYYY from GL_Encumbered_Date.
I have written out:
SELECT
PRH.SEGMENT1,
prd.GL_ENCUMBERED_DATE,
TO_CHAR(PRD.GL_ENCUMBERED_DATE,'YYYY'),
PRD.GL_CANCELLED_DATE,
TO_CHAR(PRD.GL_CANCELLED_DATE, 'DD-MON-YYYY'),
to_char(prd.gl_cancelled_date,'YYYY'),
to_char(prd.gl_cancelled_date,'DD-MON-') as date_day_month,
to_char(prd.gl_encumbered_date,'YYYY') as date_year
FROM
PO_REQUISITION_HEADERS_ALL PRH,
PO_REQUISITION_LINES_ALL PRL,
PO_REQ_DISTRIBUTIONS_ALL PRD
WHERE
PRH.REQUISITION_HEADER_ID = PRL.REQUISITION_HEADER_ID
AND PRL.REQUISITION_LINE_ID = PRD.REQUISITION_LINE_ID
AND PRD.GL_CANCELLED_DATE IS NOT NULL
AND to_char(PRD.GL_CANCELLED_DATE,'YYYY') LIKE '00%';Hi,
Here's one way to correct the table:
UPDATE po_req_distributions_all
SET gl_cancelled_date = ADD_MONTHS ( gl_cancelled_date
, 12 * ( EXTRACT (YEAR FROM gl_encumbered_date)
- EXTRACT (YEAR FROM gl_cancelled_date)
WHERE EXTRACT (YEAR FROM gl_encumbered_date)
<> EXTRACT (YEAR FROM gl_cancelled_date)
When this finishes, gl_cancelled_date will always have the same year as gl_encumbered_date, but hte original months, days, hours, minutes and seconds of gl_cancelled_date will be unchanged. (Exception: If the original gl_cancelled_date is February 29, and gl_encumbered_date is NOT in a leap year, then the day will be changed to 28, since there is no February 29 in the correct year. If the original gl_cancelled_date is February 28, and gl_encumbered_date IS in a leap year, then the day will be changed to 29. This can be fixed if it's a problem.)
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and also post the results you want from that data.
If you're asking about a DML statement, such as UPDATE, the sample data will be the contents of the table(s) before the DML, and the results will be state of the changed table(s) when everything is finished.
Point out where the statement above is getting the wrong results, and explain, using specific examples, how you get the right results from the given data in those places.
Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
See the forum FAQ: https://forums.oracle.com/message/9362002
Maybe you are looking for
-
How can I transfer purchases on my iPhone 5 to iTunes 11.1?
I want to update my iPhone to the new iOS 7 update, but I can't do that without transfering the purchases on my iPhone 5 to itunes. I can't seem to figure out exactly how to do that though, can someone explain how to transfer music and apps from the
-
File Extention when using JFileChooser
I'm using the JFileChooser and a FileFilter with for extensions of .ses, and I can't get it to append .ses to a file name if the user doesn't do it at the time they are in the File choser. What I've tried: JFileChooser fc = new JFileChooser(); fc.set
-
I can't find the "Authorize Computer" button
Okay, it sounds kinda stupid, but I seriously can't find it. Somebody help me?
-
How to use foreground dispatch system of android NFC with AIR native extension?
Hello, I'm developping an AIR application which invokes NFC on android, via AIR native extension (ANE). I would like to enable foreground dispatch system of NFC (see http://developer.android.com/guide/topics/nfc/advanced-nfc.html#foreground-dispatch)
-
This file appears to be damaged..HOW?
I type a lot of my stories and things in AppleWorks and I tried opening two of my files-but a window popped up that said "This file appears to be damaged and cannot be opened." How did this happen? I would really like to reopen this files so that I c