How to retrieve invoice details from the sales order .. urgent..

hi,
i am retrieving  vbak-vbeln with this i should retreive invoice details
how to relate vbak with abrk table
i have vbak -vbeln,erdat,VBAK- VKORG,VBAK-KUNNR,VBAK-VTWEG,VBAK- SPART.
its urgent..

Hi
U can see the sales order number in VBRP table, fields:
VBRP-AUBEL and VBRP-AUPOS.
But if u have the sales order number it's better to use VBFA table.
SELECT * FROM VBFA WHERE VBELV = VBAK-VBELN
                     AND VBTYP_N = 'M'
  SELECT SINGLE * VBRK WHERE VBELN = VBFA-VBELN.
  IF SY-SUBRC = 0.
    WRITE: 'Bill number:', VBRK-VBELN.
  ENDIF.
ENDSELECT.
U have to make sure to use the right document type:
M = Invoice
N = Invoice cancellation
So the bill type depends on the sales order type
Max

Similar Messages

  • How to delete a line item from the sales order

    Hi all,
    how to delete a line item from the sales order for which the production is already happened and it has been delivered. the production order status is DLV.
    Regards
    Kumar

    Hi
    U can do this in two ways one u can short close the order by entering Reason for rejection in VA02 at header level and if yr order is multiple line item order u can enter the reason for rejection in any of the line item which u don't want to deliver.
    This is called short close ( as the qty is not delivered fully).
    Thx.

  • How to create planned order from the sales order for a processing item

    In the MTO sceanrio, assembly order is created directly from the sales order. I would like to create a planned order from the sales order.
    I tried the Planning strategy group 81 in the material master but it didnt work.
    Could you please let me know how to do it? Is it Schedule line config that controls whether planned order is created?
    Thanks
    Harish

    Narayana,
    Planning strategy 82 is the best & standard way of getting production order created on sale order create.
    just assign this strategy  in MRP 3 view under strategy group.
    If not then using sale order reqt type ( KMFA- Assembly with production order) & assigning this to your sale order item category is also another way to create prodcution order without using planning strategy in material master.
    Follow steps in SPRO-->Sales & dist --> basic functions >avail check &transfer of requirements> transfer reqts-->determination of reqt type using transaction
    Here you may select the item category you in sale orders & assign KMFA to your item category. this will then give option in sale order create to change reqt type to KFMA for assebly orders.
    If you need KFMA to be default assign it to Item cat/ MRP type ( PD) combo.
    Regards
    Ritesh

  • No condition update from the sales orders exist - VK322 Message

    Hello All,
    I have activated " Condition Index" & " Condition Update" flag for one of my discount condition type and then created it's condition record along with scales on three levels. The condition type which I mentioned above is set as " Value Scale" in Scale Basis for checking the document value and apply the applicable discount percentage.
    I have created three sales orders wherein the discount percentage is getting applied as per my condition record ( so, the document value is getting accumulated and compared with the condition record correctly )  but when I try to check the cumulative values ( ctrl +shift + F4 ) from the condition record, I get information message " VK322" mentioned in the subject.
    VK322 -
    No condition update from the sales orders exist
    Message no. VK322
    Diagnosis
    The following causes are possible:
    1. There are no sales orders for the condition record that you selected.
    2. Updating condition records in the sales order entry is not active.
    Procedure
    Concerning 1:
    Check the sales orders created for the condition record that you selected.
    Concerning 2:
    Activate the updating for condition records in the sales order entry.
    I have checked everything in SPRO for this but could not find anything which can give me a clue to resolve this problem, especially " Concerning 2" part of this message.
    My requirement > To be able to see the cumulative values from condition record.
    Also, in which table the accumulated values get stored?
    Appreciate your expert advise on this issue.
    Regards,
    Hrishi
    Edited by: Hrishikesh Bhalwankar on Sep 13, 2011 1:59 AM

    Hello Everyone,
    I would like to thank each one of you for giving valuable inputs in regard to my requirement and I would like to let you know that I am able to achieve the results as per the expectation.
    I would also like to share some key things which I did ( with the help of all your expert inputs ) due to which the requirement is met:-
    1. Activation of ' Condition Index, Condition Update' in V/06 for the discount condition type.
    2. Maintained ' B - Value Scale' in Scale Basis for the said condition type in V/06 - my requirement was to check against a value to apply the necessary scale base percentage.
    3. Activation of ' S071' info structure via OM01
    4. Condition record maintenance as per the required scales.
    4. Written a new routine to check the accumulated condition base value from S071 along with the current document condition base value.
    5. Put this routine in ' Scale Formula' in V/06.
    This is giving me the perfect results for the correct application of the discount.
    Just last question - How to re-organize the S071 info structure as I tried to re-organize it with Standard Program ' RV15F001' but it is not re-organizing this info structure... Any idea on this?
    Thanks a lot friends for all your advice...
    Regards,
    Hrishi
    Edited by: Hrishikesh Bhalwankar on Oct 11, 2011 2:11 AM

  • Create draft invoice document from a sales order

    When i create an invoice document from a draft invoice document from a sales order, this invoce is linked to the order sales.
    Sorry for my english, i hope you can understand

    It would be difficult to know what question do you have.  Try to ask question.  Your English is not bad at all.
    Thanks,
    Gordon

  • Header text to be copied from the sales order to delivery

    Hi Gurus,
    I have a requirement in which  header text "Customer order text " needs to be copied from the sales order to the delivery.After copying the text we need to print on the packing slip.
    Can anyone advise me as how to copy the text from the sales order header to delivery  and then print on the packing slip.
    Thanks ,
    Smitha.

    Maintain the Text ID @ Sales Documnet Header level and add it to your Text Procedure. Also ensure you assign the access sequence to your Text ID in your procedure.
    Access Seuquence should have VBBK and the text ID number and check All Languages and use Requirement 1.
    Then in the Delivery Header Text Procudure add this text ID and assign the same access sequence as above.
    This will copy the Text ID from Sales Order to Delivery Order Header.
    You can configure the output for packing slipduring the delivery process  and in the output program read this Text ID and print it.
    Note" Copy Controls do not copy text from preceeding documents to succeeding documents. Only the Access Sequences used in the Text Procedure will do that with the help of the reuqirement assigned in the same.
    Thanks and Hope this helps.
    Sai

  • Subcontract PO from the sales order..!

    Hi SD Gurus,
    Can i create subcontract purhcase req from the sales order.
    My requirement is when i create the sales order my item/sheduline category should create a subcontract po to my sister concern company.
    Is't possible ? Kinldy help to advice & let me know what are the config setup i need to setup.
    Thanks.

    Hello,
    The PO number field you see in VA03 is usually an input which need not be an actual PO number existing in the current system.So you can have a PO number like 'test123'.The system will accept it and store it as is in the table VBAK.
    However if you create a sales order with reference to a PO number then the PO number obviously does exist in the system and can be accessed via transaction ME23n and can also be found in tables EKKO,EKPO.
    So to sum up the number you enter in the PO field may or may not be an actual PO number existing in the SAP system.it can be used as a reference for later checks a customer may do when he calls to find out the status of his sales order.
    Hope this explanation helps you.
    Regards,
    Neil.

  • How to show Invoice number same as Sales Order Number..?

    HI,
    I need to show Sales Order Number same as Invoice Number how i can setup this..? can any one help me on this..?
    Ex: I raised a Sales Order: 00001, this has booked and shpieed now i ran the WF back ground process and run the autocreate master program to generate the invoice, here i need to show the invoice number as 00001 i..e same as the Sales Order Number.
    How i can achieve this..?
    Please advice..
    Regards,
    KV.

    KV,
    I suspect you'll need to customize the Autocreate routine to ignore the sequence nextval call and instead look at your sales order number.
    You would also need to be very careful that your OM setups supported this. I've seen this as a 'business requirement' before but almost invariably it doesn't make a lot of sense when you have the originating sales order number, line and shipment to quote as a reference on the invoice. Have you considered all of the following:
    <li> If you ever need to short ship or to ship on different dates, you will need more than one invoice for the same order. How would you manage that given that those invoices would need unique numbers?
    <li> Different order types - by adopting a 'synchronized' invoice sequence, you will need to ensure that you don't create a conflict with order type sequences - i.e. OM allows you to have an order 100001 of Order Type A and an order 100001 of Order Type B if you give different sequence assignments but this would cause problems with your invoice sequence.
    Regards,
    Jon

  • Not able to get the Quantity and partner details in the sales order created

    Hi Experts,
    I am creating a followup order using the FM "BAPI_BUSPROCESSND_CREATEMULTI" . The parameters iam passing are process type, quantity , sold to party (partner) and product ID. I am able to create a sales order but the Quantity and sold to party (partner) are not getting updated in the the sales order when i check in the transaction CRMD_ORDER. When i check in the crm_orderadm_h table and give the Headerguid , i am able to see the process type and when i check in the crm_order_index table, if i give the header i am not getting the partner no and there are two lines created for one header guid. I am providing the code which i have written. Can anyone please help me in this issue??
    *& Report  ZCREATEORDER_LUCKY_TEST
    REPORT  ZCREATEORDER_LUCKY_TEST.
    DATA : LV_HEADER_GUID  TYPE  GUID_32,
    WA_HEADER             TYPE                   BAPIBUS20001_HEADER_INS,
    ITAB_HEADER           TYPE STANDARD TABLE OF BAPIBUS20001_HEADER_INS,
    ITAB_CREATED_PROCESS  TYPE STANDARD TABLE OF BAPIBUS20001_HEADER_INS,
    ITAB_OBJECTS_TO_SAVE  TYPE STANDARD TABLE OF BAPIBUS20001_GUID_DIS,
    ITAB_PARTNER          TYPE STANDARD TABLE OF BAPIBUS20001_PARTNER_INS,
    LT_PRODUCT_I          TYPE STANDARD TABLE OF BAPIBUS20001_ITEM,
    WA_PRODUCT_I          TYPE                   BAPIBUS20001_ITEM,
    LT_SCHEDLIN_I         TYPE STANDARD TABLE OF BAPIBUS20001_SCHEDLIN,
    WA_SCHEDLIN_I         TYPE                   BAPIBUS20001_SCHEDLIN,
    ITAB_INPUT_FIELDS     TYPE TABLE OF          bapibus20001_input_fields,
    ls_inputfields        TYPE                   bapibus20001_input_fields,
    WA_PARTNER            TYPE                   BAPIBUS20001_PARTNER_INS,
    ITAB_RETURN           TYPE                   STANDARD TABLE OF BAPIRET2,
    WA_OBJECTS_TO_SAVE    LIKE                   LINE OF ITAB_OBJECTS_TO_SAVE,
    ITAB_PRICING          TYPE STANDARD TABLE OF BAPIBUS20001_PRICING,
    WA_PRICING            TYPE                   BAPIBUS20001_PRICING,
    *To store the Objects to be saved.
    WA_CREATED_PROCESS    LIKE LINE OF ITAB_CREATED_PROCESS,
    ITAB_SAVED_OBJECTS    TYPE STANDARD TABLE OF BAPIBUS20001_OBJECT_ID,
    WA_SAVED_OBJECTS      LIKE LINE OF ITAB_SAVED_OBJECTS,
    GC_X type c.
    gc_x = 'x'.
    CALL FUNCTION 'GUID_CREATE'
      IMPORTING
        ev_guid_32 = lv_header_guid.
      CLEAR : WA_HEADER.
    * Passing the respective values from the Header table to internal table.
    WA_HEADER-GUID          =  LV_HEADER_GUID.
    WA_HEADER-PROCESS_TYPE  =  'ZTA'.
    APPEND WA_HEADER TO ITAB_HEADER.
    *Appending the values to the ITAB_HEADER.
    *appending orderadm_i to input fields
    * ls_inputfields-ref_guid =  LV_HEADER_GUID.
    * ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'ORDERADM_I'.
    ls_inputfields-ref_handle = '0000000001'.
    * ls_inputfields-logical_key = ' '.
    ls_inputfields-fieldname = 'ORDERED_PROD'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
    * ls_inputfields-ref_guid =  LV_HEADER_GUID.
    * ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'ORDERADM_I'.
    * ls_inputfields-logical_key = ' '.
    ls_inputfields-fieldname = 'MODE'.
    ls_inputfields-ref_handle = '0000000001'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
    ****** CHANGES MADE
    * ls_inputfields-ref_guid =  LV_HEADER_GUID.
    * ls_inputfields-REF_KIND = 'B'.
    ls_inputfields-objectname = 'SCHEDLIN'.
    ls_inputfields-ref_handle = '0000000001'.
    ls_inputfields-fieldname = 'LOGICAL_KEY'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
    CLEAR ls_inputfields.
    * ls_inputfields-ref_guid =  LV_HEADER_GUID.
    * ls_inputfields-REF_KIND = 'B'.
    ls_inputfields-objectname = 'SCHEDLIN'.
    ls_inputfields-ref_handle = '0000000001'.
    * ls_inputfields-logical_key = ' '.
    ls_inputfields-fieldname = 'QUANTITY'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
    CLEAR ls_inputfields.
    * ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'B'.
    ls_inputfields-objectname = 'SCHEDLIN_I'.
    ls_inputfields-ref_handle = '0000000001'.
    * ls_inputfields-logical_key = ' '.
    * ls_inputfields-fieldname = 'MODE'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
    CLEAR ls_inputfields.
    ****** CHANGES MADE
    WA_PARTNER-REF_GUID =  LV_HEADER_GUID.
    WA_PARTNER-REF_KIND = 'A'.
    WA_PARTNER-REF_PARTNER_HANDLE = '0001'.
    WA_PARTNER-PARTNER_FCT = '00000001'.
    WA_PARTNER-PARTNER_NO =  '10017'.
    WA_PARTNER-KIND_OF_ENTRY =  'C'.
    WA_PARTNER-NO_TYPE = 'BP'.
    WA_PARTNER-DISPLAY_TYPE  =  'BP'.
    APPEND WA_PARTNER TO ITAB_PARTNER.
    *"ADDING VALUES TO CT_ORDERADM_I
      wa_product_i-header        = lv_header_guid.
      wa_product_i-handle        = '0000000001'.
      wa_product_i-ordered_prod  = '12000014'.
      wa_product_i-mode          = 'A'.
      APPEND wa_product_i TO lt_product_i.
    *"ADDING VALUES TO IT_SCHEDLIN_I
      wa_schedlin_i-GUID    =  LV_HEADER_GUID.
      wa_schedlin_i-quantity   = '30'.
      wa_schedlin_i-handle = '0000000001'.
      wa_schedlin_i-mode  =  'A'.
      APPEND wa_schedlin_i TO lt_schedlin_i.
    *  wa_schedlin_i-schedlines = lt_schedlines.
    *"ADDING VALUES TO WA_PRICING
    wa_PRICING-REF_GUID    =  LV_HEADER_GUID.
      wa_PRICING-REF_KIND   = 'A'.
    *  wa_schedlin_i-handle = '0000000001'.
      APPEND wa_PRICING TO ITAB_PRICING.
    *  wa_PRICING-REF_GUID    =  LV_HEADER_GUID.
      wa_PRICING-REF_KIND   = 'B'.
      wa_schedlin_i-handle = '0000000001'.
      APPEND wa_PRICING TO ITAB_PRICING.
    ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'PARTNER'.
    ls_inputfields-logical_key = '0001'.
    ls_inputfields-fieldname = 'REF_PARTNER_HANDLE'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
    ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'PARTNER'.
    ls_inputfields-logical_key = '0001'.
    ls_inputfields-fieldname = 'PARTNER_FCT'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
    ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'PARTNER'.
    ls_inputfields-logical_key = '0001'.
    ls_inputfields-fieldname = 'PARTNER_NO'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
      ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'PARTNER'.
    ls_inputfields-logical_key = '0001'.
    ls_inputfields-fieldname = 'NO_TYPE'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
      ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'PARTNER'.
    ls_inputfields-logical_key = '0001'.
    ls_inputfields-fieldname = 'DISPLAY_TYPE'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
        ls_inputfields-ref_guid =  LV_HEADER_GUID.
    ls_inputfields-REF_KIND = 'A'.
    ls_inputfields-objectname = 'PARTNER'.
    ls_inputfields-logical_key = '0001'.
    ls_inputfields-fieldname = 'KIND_OF_ENTRY'.
    APPEND ls_inputfields TO ITAB_INPUT_FIELDS.
      CLEAR ls_inputfields.
    CALL FUNCTION 'BAPI_BUSPROCESSND_CREATEMULTI'
      TABLES
        HEADER          = ITAB_HEADER
        ITEM            = lt_product_i
        RETURN          = ITAB_RETURN
        PARTNER         = ITAB_PARTNER
        INPUT_FIELDS    = ITAB_INPUT_FIELDS
        CREATED_PROCESS = itab_created_process
        SCHEDULELINE    = lt_schedlin_i
        PRICING         = ITAB_PRICING.
    READ TABLE ITAB_CREATED_PROCESS INTO WA_CREATED_PROCESS WITH KEY GUID = LV_HEADER_GUID BINARY SEARCH.
    WA_OBJECTS_TO_SAVE-GUID = WA_CREATED_PROCESS-GUID.
    * Appending the Guid of the contract to be saved to the internal table
    APPEND WA_OBJECTS_TO_SAVE TO ITAB_OBJECTS_TO_SAVE.
    CALL FUNCTION 'BAPI_BUSPROCESSND_SAVE'
      EXPORTING
        update_task_local = space
        save_frame_log    = GC_X
      TABLES
        objects_to_save   = itab_objects_to_save
        saved_objects     = itab_saved_objects
        return            = itab_return.
    * Calling the Standard BAPI to Commit the transcation.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    WRITE: / 'HEADER GUID: ',lv_header_guid.
    Any inputs will be highly appreciated!!
    Thanks a lot in Advance.
    Lakshman.

    solved

  • Oracle std report to fetch all the backordered lines from the sales orders

    Hello Experts,
    Is there any standard Oracle report which can provide us the details of all the backordered lines in all the sales orders? Pls advise.
    Regards,
    Vidhi

    There is a report called "Backorder Detail Report" under Shipping Execution.

  • Dly Qty is Diff from the Sale order Qty

    Hi,
    Gurus
    The sale order quantity for the Material X is 100 Qty, Material Y is 99.601 Qty, Material Z is 99.601.
    While we see the same in delivery level the quantity is coming as 99.730 for Mtl X, 99.330 for Mtl Y and 99.330 for Mtl Z. Even the the quantity is confirmed for the Exact Qty in the Shedule Line in sale order.
    Guide Me Gurus
    Regards
    Anand

    Hi,
    Thank You All, Thank you all for the Coordination.
    I have checked the same for what you have all told. I identified the Material in the sales order, the item category for this material as BOM.
    I have also checked the bill of material display header overview. The Base Quantity maintained as 1000 EA3. The SUBITEM maintained in G in the unit field in bill of material display.
    Accordingly i have checked the same for material master's additionl data in Units of Measure tab, it is mentioned the basic unit as 1000 EA3 and alternative unit as 600 G.
    My client processed the order for 100 QTY. The QTY for the two sub item is 99.601 each in the sale order.
    My client Question is why in delivery the Material Qty is coming as 99.730 and the SUB ITEM is coming as 99.330 EACH.
    Note:-  The material X  is maintained in EA3 in Bill of material header overview. I do no how the sale unit came as G for the Material in sale order.
    The other two sub item is perfectly coming as G. Because it is maintained in G in the Bill of Material Display.
    Guide me GURUS.
    Thanks and Regards,
    ANAND

  • In MTO VC scenario, how to deliver subassemblies separately from a sales order

    Finished good has two sub-assemblies for the main assembly. The main assembly is not an assembly actually but Customer orders it as Assembled component of Subassembly 1 And Sub assembly 2. There are cases where Sub assemblies can be shipped separately which are then assembled at the Customer Site.
    Main FG product and sub-assemblies are both Configurable materials.
    In the above scenario which MRP strategy is more suitable and how to dispatch individual subassemblies separately.
    Also there should be option to produce subassembly separately if the need arises.
    Ex: Box assembly is made of Lid & Pan. All the 3 materials are configurable as per Customer requirement.
    Customers order for Box assembly in the sales order
    Need to know which is most suitable strategy which can satisfy below req's
    1. Box can be produced as assembly and dispactched
    2. Lid and Cover can be produced separately and can be assembled at Customer site
    3. Delivery of individual LId and cover can be made separately
    4. Production order creation should be possible for Box, Lid or Pan separately

    Repeating answer since Q is duplicated in two forums:
    Hi There,
    are you sure that your Item A is a genuine Pick To Order? - I would think that a PTO would result in exploding the OM Line to separate lines for the components and when they are ATO's they individually would result in WIP Jobs.
    Anyway once the toplevel Item is resulting in a WIP job the only mechanism for creating the remaining component jobs are via an MRP breakdown done by the classical MRP or ASCP planning run.
    To tie the different jobs together (hard-pegging) you would have to look at Project MFG (PJM) e.g. in the simple version of SEIBANs.
    /Niels LM

  • How to find out the invoice value from a sales order

    Hi All,
    Please can any one hlpe to solve the beloq query.
    Is there any report in SAP , which give you the following.
    Sales order , Total cost incurred , Total revenue recoganised , Total Invoiced , Total collected .
    Thanks ,
    Rajesh

    Dear Waman,
    Thanks a lot for your replay ..
    But i don't have much knowldge about KE 30 report , is there any study meterial available online to configure this \ or study this report .

  • How to create an Installed base from the sales order

    Dear Friends,
    could any one let me know the process of creating an Installed base with the below process.
    Once a sales order is created in SD, an istalled base need to be created in CRM system with reference to sales order.
    There are around 50 final products and approximately 2000(BOM)components for each product exists. but the client wants to maintain only few components
    like 100 to 200 components in Installed base.
    In CRM system, can we maintain Installed base Template with that 100 or 200 components. If yes, how do we assign the Individual objects(Serial numbers) to each component.
    Regards,
    Ven

    Hi Ajay
    there can be two possibilities
    Option 1. Create Install base in CRM while creating Sales order in ECC using RFC CRM_IBASE_CREATE. Make some reference  of sales order in the Ibase. later when you move equipments to CRM then you can attach these equipments to Ibase (Already created in Thru RFC)in Badi CRM_EQUI_LOAD(This BAdi is called while moving equipments from ECC to CRM).
    Option 2. Don't create Ibase at the creation of Sales order. but while creating Equipment just add some indiacator in the equipment to know which sale sorder this equipments belongs.
    and once these equipments moves to CRM. Using the BADI CRM_EQUI_LOAD you can club all the equipments(of same sales order) under one ibase.
    Regards
    Naresh

  • How to retrieve photos directly from the iPhoto library?

    I have over 18 GB and rising of photos in my iPhoto library. Suppose I had to change to a Windows machine or for some other reason I could not access my photos via iPhoto. Fanciful I know, but I am not so much concerned with the probability of something going wrong but with the calamity that would result if something did go wrong. I note that some years ago Microsoft changed the file structure of their Word files from a proprietary one to an open access one to allow easy access to the text. So how could my photos be retrieved directly from the iPhoto library?
    Perhaps the answer is to send the library to a tech firm like the ones that retrieve data from damaged hard drives and they could pick off the photos and return them as a set of image files in a folder. But is it actually possible for anyone to do that?

    If, at some time in the future, you want to get all of your original image files onto an external HD in folders representing the Events in your iPhoto Library here are the simple steps to follow:
    1  - select all of the Events in your library.
    2 - use the File ➙ Export ➙ File Export menu option and setup the export as shown in this screenshot:
    3 - click on the Export button, select the destination where you want to save these folders and continue.

Maybe you are looking for