Executing BD87 in background from another program
Hi Sir,
I have a scerario in which I have written a z program. Now in my z program i m generating an idoc no in status 64,yellow status.
Now I have to process the idoc by calling the tcode BD*& from within the z program and all this should rum in background.
I am facing following prob:
My program stops at first screen of BD87 itself. After that I have to press F8 manually..again I have to select the idoc and click on process button.
But all this should be automate.
Please guide.
Krishan
if you know the IDOC number you can just make a call to function IDOC_INPUT
data: l_input_method type inputmethd,
l_input_succeeded type input_ok.
l_input_method = 'E'. "Foreground from errors
refresh: t_unprocessed_idocs,
t_idoc_data,
t_idoc_control.
t_unprocessed_idocs-docnum = '00000000' <<<<< put in IDOC number to be proccessed
append t_unprocessed_idocs.
call function 'IDOC_INPUT'
exporting
mass_processing = c_false
input_method = l_input_method
idoc_start_event_enabled = c_false
end_event_enabled = c_true
importing
input_succeeded_for_all = l_input_succeeded
tables
unprocessed_idocs = t_unprocessed_idocs
idoc_data = t_idoc_data
idoc_control = t_idoc_control
exceptions
others = 17.
Similar Messages
-
Executing a report program in background from another program
Hi Experts,
I developed a report to display material change history based on change date range. Report is taking much time (around 15-20 mins) as I'm hitting CDPOS and CDHDR tables. User wants to execute the report in foreground because he/she can give selection criteria that is required everytime.
So, my requirment is now to create another program with same selection screen elements which will execute the original program in background. In the new program, we will be just capturing the selection elements and will pass them to original program to run in background and display a message to user without wait for the background job to complete. Original program should send an email to an fixed email id with the report output as attachment (for example excel file).
Please suggest.
Thanks in Advance,
Siva SankarHi Siva,
Please see the link
http://help.sap.com/saphelp_nw04/helpdata/EN/2a/fa01dd493111d182b70000e829fbfe/content.htm
Regarding a Change Document Function Module ----- VERY VERY Urgent
When using function modules , I dont think you can directly get data based on material and plant . these function modules usualy works with object class and creation date .
Once you retrieve the data using the function modules you have to filter out the unncecessary data based on your selection screen conditions .
Regards,
Ratheesh BS
Edited by: Ratheesh Bhaskarapillai Suseeladev on Mar 8, 2012 5:19 AM
Regarding a Change Document Function Module ----- VERY VERY Urgent -
How to call an alv report from another program and return back
Hello ,
I am calling one abap program (Prgm B) from another program (Prgrm A).
Here, Prgm B is an ALV report. I have fetch some data from Prgem B that gets stored in an internal table.
Now, I am using below code in Prgrm A,
SUBMIT Prgrm B VIA SELECTION-SCREEN
WITH SELECTION-TABLE rspar
EXPORTING LIST TO MEMORY
AND RETURN.
When Prgrm A executed, it lead me to selection screen of Prgrm B and when I click F8, it shows me the report output, In short, it doesnt return back to Prgrm A. It ends up showing me the alv report if Prgrm B even afetr using RETURN statement.
I want to get back to Prgrm A by fetching some data from Prgrm B.
Please let me know, if i am missing something.
Regards,
SeemaHi Seema,
Refer below code.
DATA: v_matnr LIKE mara-matnr.
DATA: t_listobject TYPE abaplist OCCURS 0 WITH HEADER LINE.
DATA: t_mara TYPE mara OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF t_ascilist OCCURS 0,
line(200).
DATA: END OF t_ascilist.
data var(3) type c.
SELECT-OPTIONS: s_matnr FOR v_matnr.
var = ' 3'.
START-OF-SELECTION.
SUBMIT ztestaks1 WITH s_matnr IN s_matnr EXPORTING LIST TO MEMORY
AND RETURN.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = t_listobject
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'LIST_TO_ASCI'
* EXPORTING
* LIST_INDEX = -1
* WITH_LINE_BREAK = ' '
TABLES
listasci = t_ascilist
listobject = t_listobject
EXCEPTIONS
empty_list = 1
list_index_invalid = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE:/ 'Below are the lines from the submitted program.'.
LOOP AT t_ascilist.
WRITE:/ t_ascilist-line.
ENDLOOP.
SKIP 2.
ENDIF.
ENDIF.
IMPORT t_mara FROM MEMORY ID 'T_MARA'.
WRITE:/
'Here is the output from the table exported from the submitted program.'
LOOP AT t_mara.
WRITE:/ t_mara-matnr.
ENDLOOP.
Submitted program
REPORT ZTESTAKS1.
DATA: v_matnr LIKE mara-matnr,
v_maktx LIKE makt-maktx.
DATA: t_mara TYPE mara OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF t_makt OCCURS 0,
matnr LIKE makt-matnr.
DATA: END OF t_makt.
SELECT-OPTIONS: s_matnr FOR v_matnr,
s_maktx FOR v_maktx.
START-OF-SELECTION.
SELECT matnr INTO TABLE t_makt
FROM makt
WHERE matnr IN s_matnr
AND maktx IN s_maktx.
if not t_makt[] is initial.
SELECT * FROM mara
INTO TABLE t_mara FOR ALL ENTRIES IN t_makt
WHERE matnr = t_makt-matnr.
endif.
EXPORT t_mara TO MEMORY ID 'T_MARA'.
WRITE:/ 'This list is from the submitted program'.
SKIP 1.
LOOP AT t_mara.
WRITE:/ t_mara-mtart.
ENDLOOP.
Hopes this helps you.
Thanks,
Ashok. -
Problem regarding calling a program from another program
Hi,
I have a requirement that i need to call a program from another program and in that case the called program should be executed with a value in the selection screen coming from the first program..i.e.
a standard report to view the user Notes for annual leave is RPTARQDBVIEW. Can we create a report to display all the users under a manager as a hyperlink and run the report(RPTARQDBVIEW), with the pernr of the employee selected
Regards,
saumikSubmitting a report using ranges for select-options
* Define range for ltak-tanum
RANGES: r_tanum FOR ltak-tanum.
* Read values from database tabel into the range
* These values are later used for select-options in the report
SELECT * FROM ltak
WHERE lgnum = w_lgnum AND "Warehouse number/complex
vbeln = w_screen1000-io_vbeln. "Transfer order number
MOVE ltak-tanum TO r_tanum-low.
MOVE 'I' TO r_tanum-sign.
MOVE 'EQ' TO r_tanum-option.
APPEND r_tanum.
ENDSELECT.
* Submit report with range
SUBMIT zmm00100 WITH p_tanum IN r_tanum.
or
Submitting a report from ABAP with selection criterias
TYPES: tt_selection TYPE STANDARD TABLE OF rsparams.
DATA: l_iblnr TYPE st_iblnr,
* Define internal table and work area for select-options
l_selection TYPE rsparams,
li_selection TYPE tt_selection.
* Create selectIon table
LOOP AT gi_iblnr INTO l_iblnr.
CLEAR l_selection.
l_selection-selname = 'IM_IBLNR'. "Option name
l_selection-kind = 'S'. "S= select options P=Parameters
l_selection-sign = 'I'. "Sign
l_selection-option = 'EQ'. "Option
l_selection-low = l_iblnr-iblnr. "Value
APPEND l_selection TO li_selection.
ENDLOOP.
* Submit report
SUBMIT rm07idif WITH SELECTION-TABLE li_selection AND RETURN.
Regards,
Prabhudas -
How to create a variant to a report from another program at run time
Hi experts,
when i am using FM : /OSP/REPORT_CREATE_VARIANT to create a report variant from a program then i am getting an error 'For object /OSP/ERPNR , number range interval 01 does not exist ', how should i avoid it or can any one help me out to create a report variant from another program at run time with the results of the program.so that i can execute the report from here with this variantIf i understand you,
- You can use a FM like [RS_CREATE_VARIANT|https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=rs_create_variant+&adv=false&sortby=cm_rnd_rankvalue] to create a variant and then use it in the [SUBMIT|http://help.sap.com/erp2005_ehp_03/helpdata/EN/fa/096d67543b11d1898e0000e8322d00/frameset.htm] statement USING SELECTION-SET.
- But you may also use SUBMIT with WITH parameters which doesnt require variant creation and with much less programming efforts.
- You can mix the two solutions also.
So what is you actual requirement, also look at some documentation like [ Scheduling a Job: Full-Control Method|http://help.sap.com/erp2005_ehp_03/helpdata/EN/fa/096ce5543b11d1898e0000e8322d00/frameset.htm]
Regards -
Restrict 'Executing report in background' from selection screen
I want user to not to select option for executing report in background from Selection Screen of the program.
i.e. 'Execute Program in Background' option in 1st menu bar tab should either be disabled OR if user clicks on it then he should get error message on selection screen itself.
Thanks,
FalguniHi Falguni,
Write the code based on function code SJOB in the event AT SELECTION-SCREEN. Write the following code :
AT SELECTION-SCREEN
CASE SY-UCOMM.
WHEN 'SJOB'.
MESSAGE E000 WITH 'You cannot schedule background job'.
ENDCASE.
Thanks & Regards,
Faheem. -
CALL TRANSACTION 'ME33K from another program
Hi,
I ma trying to CALL TRANSACTION 'ME33K from another program, but it is not working. The transactions is opening, but it is not opening with the contract number (ls_ekpo-ebeln) i am passing.
ls_ekpo-ebeln does have a valued when CALL TRANSACTION 'ME33K is called.
In debug, I noticed the "value" is blank when step into CALL TRANSACTION 'ME33K .
WHEN 'EBELN'. "Contract
l_field = 'EVRTN'.
IF ls_ekpo-ebeln <> ''.
GET PARAMETER ID 'VRT' FIELD l_field. "EVRTN.
SET PARAMETER ID 'VRT' FIELD ls_ekpo-ebeln.
CALL TRANSACTION 'ME33K AND SKIP FIRST SCREEN.
SET PARAMETER ID 'VRT' FIELD ls_ekpo-ebeln.
ENDIF.
Any help or suggestions would be great.
Thanks,
NaingDear Naing,
I execute the same code
IF ls_ekpo IS INITIAL.
GET PARAMETER ID 'VRT' FIELD LS_EKPO.
SET PARAMETER ID 'VRT' FIELD ls_ekpo.
CALL TRANSACTION 'ME33K' AND SKIP FIRST SCREEN.
SET PARAMETER ID 'VRT' FIELD ls_ekpo.
ENDIF.
And it is working.
Try to do de simple sintax.
A program with one pararmeter to introduce the contract number.
The set parameter for this parameter and the call transaction.
I´m waiting your comments.
Regards.
Antonio. -
Change Desktop background from another account ?
Hi Guys,
Just wondering if it's possible to change a desktop background from another account on the same machine.
I'm running 10.6.8, and there's no particular reason for doing this at present, but we do have a couple of work machines where the user has been restricted from making changes to the machine, and it'd be easier to do this from the administrator account.
Also, is it possible to change a desktop background via Apple's remote desktop?
Thanx in advance.This same thing happens to me, and while not the end of the world, it is defintely annoying. Have you figured it out? Thanks!
-
Set the parameter in the selection screen of a program from another program
Hi ALL,
I need to call the program RHALESMD from another program and the program RHALESMD takes from date as one of the input parameter.how do i set the from date from the calling program and call RHALESMD
Thanks
Bala Duvvurii got the answer
Program accessed
REPORT report1.
DATA text TYPE c LENGTH 10.
SELECTION-SCREEN BEGIN OF SCREEN 1100.
SELECT-OPTIONS: selcrit1 FOR text,
selcrit2 FOR text.
SELECTION-SCREEN END OF SCREEN 1100.
Calling program
REPORT report2.
DATA: text TYPE c LENGTH 10,
rspar_tab TYPE TABLE OF rsparams,
rspar_line LIKE LINE OF rspar_tab,
range_tab LIKE RANGE OF text,
range_line LIKE LINE OF range_tab.
rspar_line-selname = 'SELCRIT1'.
rspar_line-kind = 'S'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = 'ABAP'.
APPEND rspar_line TO rspar_tab.
range_line-sign = 'E'.
range_line-option = 'EQ'.
range_line-low = 'H'.
APPEND range_line TO range_tab.
range_line-sign = 'E'.
range_line-option = 'EQ'.
range_line-low = 'K'.
APPEND range_line TO range_tab.
SUBMIT report1 USING SELECTION-SCREEN '1100'
WITH SELECTION-TABLE rspar_tab
WITH selcrit2 BETWEEN 'H' AND 'K'
WITH selcrit2 IN range_tab
AND RETURN.
Thanks
Bala Duvvuri -
Using numbers for roster information. Imported from another program. Now seem to have extra headers, one listing name, address, etc. & another A, B, C. They don't mesh & can't get rid of either. All info there, but can't change width of columns.
I think my problem is that I have inadvertently created three tables (I only want one). I have included a screen shot of the light grey line under B and the words Table 1 behind it.
-
Checking whether field-symbol from another program is assigned?
Hi all
I'm attempting to access a FS from another program.
As the FS can be assigned, or unassigned within that program, how do I checked for that in my calling program?
e.g. calling program;
FIELD-SYMBOLS: <fs> TYPE STANDARD TABLE.
DATA: lv_var(40) type c.
lv_var = '(ZTGT_PROG)<read_fs>'.
ASSIGN (lv_var) TO <fs>. " statement might dump...Hi
Go through this doc and use accordingly
Field Symbols
Field symbols are placeholders or symbolic names for other fields. They do not physically reserve space for a field, but point to its contents. A field symbol cam point to any data object. The data object to which a field symbol points is assigned to it after it has been declared in the program.
Whenever you address a field symbol in a program, you are addressing the field that is assigned to the field symbol. After successful assignment, there is no difference in ABAP whether you reference the field symbol or the field itself. You must assign a field to each field symbol before you can address the latter in programs.
Field symbols are similar to dereferenced pointers in C (that is, pointers to which the content operator * is applied). However, the only real equivalent of pointers in ABAP, that is, variables that contain a memory address (reference) and that can be used without the contents operator, are reference variables in ABAP Objects.
All operations programmed with field symbols are applied to the field assigned to it. For example, a MOVE statement between two field symbols moves the contents of the field assigned to the first field symbol to the field assigned to the second field symbol. The field symbols themselves point to the same fields after the MOVE statement as they did before.
You can create field symbols either without or with type specifications. If you do not specify a type, the field symbol inherits all of the technical attributes of the field assigned to it. If you do specify a type, the system checks the compatibility of the field symbol and the field you are assigning to it during the ASSIGN statement.
Field symbols provide greater flexibility when you address data objects:
If you want to process sections of fields, you can specify the offset and length of the field dynamically.
You can assign one field symbol to another, which allows you to address parts of fields.
Assignments to field symbols may extend beyond field boundaries. This allows you to address regular sequences of fields in memory efficiently.
You can also force a field symbol to take different technical attributes from those of the field assigned to it.
The flexibility of field symbols provides elegant solutions to certain problems. On the other hand, it does mean that errors can easily occur. Since fields are not assigned to field symbols until runtime, the effectiveness of syntax and security checks is very limited for operations involving field symbols. This can lead to runtime errors or incorrect data assignments.
While runtime errors indicate an obvious problem, incorrect data assignments are dangerous because they can be very difficult to detect. For this reason, you should only use field symbols if you cannot achieve the same result using other ABAP statements.
For example, you may want to process part of a string where the offset and length depend on the contents of the field. You could use field symbols in this case. However, since the MOVE statement also supports variable offset and length specifications, you should use it instead. The MOVE statement (with your own auxiliary variables if required) is much safer than using field symbols, since it cannot address memory beyond the boundary of a field. However, field symbols may improve performance in some cases.
check the below links u will get the answers for your questions
http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3860358411d1829f0000e829fbfe/content.htm
http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/field_sy.htm
http://searchsap.techtarget.com/tip/1,289483,sid21_gci920484,00.html
Syntax Diagram
FIELD-SYMBOLS
Basic form
FIELD-SYMBOLS <fs>.
Extras:
1. ... TYPE type
2. ... TYPE REF TO cif
3. ... TYPE REF TO DATA
4. ... TYPE LINE OF type
5. ... LIKE s
6. ... LIKE LINE OF s
7. ... TYPE tabkind
8. ... STRUCTURE s DEFAULT wa
The syntax check performed in an ABAP Objects context is stricter than in other ABAP areas. See Cannot Use Untyped Field Symbols ad Cannot Use Field Symbols as Components of Classes.
Effect
This statement declares a symbolic field called <fs>. At runtime, you can assign a concrete field to the field symbol using ASSIGN. All operations performed with the field symbol then directly affect the field assigned to it.
You can only use one of the additions.
Example
Output aircraft type from the table SFLIGHT using a field symbol:
FIELD-SYMBOLS <PT> TYPE ANY.
DATA SFLIGHT_WA TYPE SFLIGHT.
ASSIGN SFLIGHT_WA-PLANETYPE TO <PT>.
WRITE <PT>.
Addition 1
... TYPE type
Addition 2
... TYPE REF TO cif
Addition 3
... TYPE REF TO DATA
Addition 4
... TYPE LINE OF type
Addition 5
... LIKE s
Addition 6
... LIKE LINE OF s
Addition 7
... TYPE tabkind
Effect
You can define the type of the field symbol using additions 2 to 7 (just as you can for FORM parameters (compare Defining the Type of Subroutine Parameters). When you use the ASSIGN statement, the system carries out the same type checks as for USING parameters of FORMs.
This addition is not allowed in an ABAP Objects context. See Cannot Use Obsolete Casting for FIELD SYMBOLS.
In some cases, the syntax rules that apply to Unicode programs are different than those for non-Unicode programs. See Defining Types Using STRUCTURE.
Effect
Assigns any (internal) field string or structure to the field symbol from the ABAP Dictionary (s). All fields of the structure can be addressed by name: <fs>-fieldname. The structured field symbol points initially to the work area wa specified after DEFAULT.
The work area wa must be at least as long as the structure s. If s contains fields of the type I or F, wa should have the structure s or at least begin in that way, since otherwise alignment problems may occur.
Example
Address components of the flight bookings table SBOOK using a field symbol:
DATA SBOOK_WA LIKE SBOOK.
FIELD-SYMBOLS <SB> STRUCTURE SBOOK
DEFAULT SBOOK_WA.
WRITE: <SB>-BOOKID, <SB>-FLDATE.
Related
ASSIGN, DATA
Additional help
Declaring Field Symbols
Reward points if useful
Regards
Anji -
Recieve data from another program
hi, i'm trying to recieve some kind of data from another program i know where is the output of the program the problem is that i don't know how to get these datas. for example my program is writing the output in a temporary file but i'd like to recieve these datas without a temp file. the question is: Is possible to make a class that be listening to the meddle and when any program send any data to its it recieves??? if yes how can i do it?
i'm working with girds and is easy to descover where my output will arrive the only problem is how to recieve.
ThanksOr a pipe. In unix you can create a named pipe with mkfifo, which can hadilly do this kind of transfer.
-
How to import photos from another program on computer eg. Adobe Photoshop
Can photos be imported to IPhotos from another program on the same computer eg. Adobe Photoshop?
Photos aren't "in" Photoshop. They're in the Finder and has just been set to use Photoshop to open them.
You can import files into iPhoto by
The File -> Add to Libary command
Drag and Drop to either the iPhoto window or the iPhoto icon. -
How to execute report in Background from Dialog process?
How, or what is the best way, to lauch an executable program (report) into the background from a dialog program (dynpro)?
<b>Example:</b> The SUBMIT...AND RETURN still executes the called program before it returns control to the calling program. I just want the report to be kicked off and the dialog to continue as normal. I do not want the report execution time to affect the dialog process.
Thanks in advance for your time.Hi Nablan, I'm also trying to do parallel processing and created a function module that kicks of another report program.
However, the process doesn't seem to work. The Main program runs from start to finish but the called program in the function module doesn't seem to run. When I used the option STARTING NEW TASK task name the code ran but in the foreground. I don't want to use this option as it runs in the foreground and SAP limits one to six sessions. Is there something I'm missing in the attributes of the function module I created. Currently the attributes are: Processing type Remote enable module and it's set to start immediately. I had used Normal function module initially but this did not work with the STARTING NEW TASK task name option.
Below are the codes segements I used.
In my main program I have the following code segement
CALL FUNCTION 'Z_CA_PROG_CALL'
IN BACKGROUND TASK
EXPORTING
zprogram = 'ZCA_TEST1'
EXCEPTIONS
program_call_failed = 1
invalid = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK.
In the function module I have the following code.
FUNCTION z_ca_prog_call.
""Local interface:
*" IMPORTING
*" VALUE(ZPROGRAM) LIKE ZCA_INTERFPROG-ZPROGRAM
*" EXCEPTIONS
*" PROGRAM_CALL_FAILED
*" INVALID
SUBMIT (zprogram).
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
RAISE program_call_failed.
WHEN OTHERS.
RAISE invalid.
ENDCASE.
ENDIF.
ENDFUNCTION. -
Read Program code from another program
Hi,
I would like have ABAP code which reads another program and displays the coding of it.
Regards,
VijayakumarHI,
The SUBMIT statement accesses an executable program rep. The executable program is executed as described under Calling Executable Reports.
The program name rep can either be specified directly or as the content of a character-like data object name. The data object name must contain the name of the program to be accessed in block capitals. If the program specified in name is not found, an irretrievable exception is generated.
The selscreen_options additions can be used to determine the selection screen for the program accessed and to supply it with values.
The list_options additions allow you to influence the output medium and the page size in the basic list for the program accessed.
You can schedule the program for background processing by specifying job_options.
Addition
... AND RETURN
Effect
The AND RETURN addition determines the object accessed by the runtime environment after program access is completed:
Without the AND RETURN addition, the internal session of the program accessed replaces the internal session of the calling program in the same position in the call sequence. Once program access is completed, the system returns to before the position from which the calling program was started.
As of Release 6.10, the content of the system field sy-calld at SUBMIT is copied by the calling program without AND RETURN. Before 6.10, the system entered the value "X", which was incorrect when the program was accessed from the first program in a call sequence.
The addition AND RETURN starts the executable program in a new internal session. The session for the calling program is retained. Once program access is completed, program execution for the calling program continues after the SUBMIT statement.
Note
When the SUBMIT statement is executed, the system runs an authorization check for the authorization group specified in the program attributes.
Regards,
Sunil Kumar Mutyala...................
Maybe you are looking for
-
Multibyte Character handling in Upload
Hi Everyone, We had handled the multibyte character on uploading a CSV file converting BLOB to NCLOB instead of earlier BLOB to CLOB. This worked fine as per our requirement but issue arised with the performance. A file that was loading in 20 secon
-
my hard drive had to replaced and I no longer have my songs in Itunes, how can I transfer my songs from Ipod to Itunes again??
-
Payment with Boleto Bancario - Brazil
Dear SAP experts, Do you know if for payments with Boleto in Brazil, there is a fixed length for the boleto codification? I know that the boleto should be inserted in bank reference fields in AP lline (invoice)..but what about the boleto's length? Is
-
Register system r3 in the portal transaction rz70
Please helpme. I have a problem, I need register my system r3 in the portral but I can´t The follow is the error Error when opening an RFC connection ERROR: file communicate with gateway SAP ¿ Gateway SAP started. In the potal sld I put this parame
-
Finder can't find / display files in external drive
Just upgraded to Lion on my MacBook, and Finder can't find / display files from my external thumb drive. I got message that the external drive was removed incorrectly, but I did not remove the thumb drive at all. After several attempts on removing an