Skip to Content
author's profile photo Former Member
Former Member

BAPI_ALM_ORDER_MAINTAIN

Hi,

I have a problem when i want to create maintenance orders using the Bapi BAPI_ALM_ORDER_MAINTAIN. When i want to create more than one order an error is enhanced: "Error reading the order header %000000000001 from the document tables". The orders are created but the next time that i call to the Bapi, that's not working.

[code]Data:

i_method

REFNUMBER OBJECTTYPE METHOD OBJECTKEY

000001 HEADER CREATE %00000000001

000001 OPERATION CREATE %00000000001

000001 PARTNER CREATE %00000000001

000001 SAVE %00000000001

000002 HEADER CREATE %00000000002

000002 OPERATION CREATE %00000000002

000002 PARTNER CREATE %00000000002

000002 SAVE %00000000002

i_header

Orderid Order_type plantplant mn_wk_ctr pmacttype Start_date

%00000000001 zpm2 1004 zpm_gene z01 sy-datum

%00000000002 zpm2 1004 zpm_gene z01 sy-datum

i_partner

Orderid Partn_role Partn_role_old Partner Partner_old

%00000000001 ZT 00460447

%00000000002 ZT 00460447

i_operation

Activity Control_key

0010 PM01

0010 PM01

Code:

CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'

TABLES

IT_METHODS = i_method

IT_HEADER = i_header

IT_PARTNER = i_partner

IT_OPERATION = i_operation

RETURN = i_bapiret

ET_NUMBERS = i_numbers

.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

Thanks and sorry by my english.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Feb 21, 2007 at 12:22 PM

    Hi

    I hope, you must have read the documentation of this BAPI.

    <u>If not, here is the documentation.</u>

    <b>This is must to read this, before making any code.</b>

    
    FUNCTION - BAPI_ALM_ORDER_MAINTAIN
    ____________________________________________________
    Short Text
    Process Maintenance-/Service Order
    
    Functionality
    This Business Application Programming Interface (BAPI) is used for changing maintenance- or service orders and their lower-level objects. The following objects of an order can be processed (for restrictions, see the note at the end of the documentation):
    
    Order header
    Partner
    User status
    Order operations
    Relationships
    Components
    Long texts for order header, operations, and components
    Function
    Calling up this BAPI once allows you to perform all the operations. For this the system supplies the function module with a method table containing the methods to be performed. The entries in the method table refer to data records in the optionally filled-out data tables. All the methods from the method table are performed. Alternatively, just lower- level objects from existing orders can be changed.
    
    You can process the transferred data with the Business Add-In (BAdI) IBAPI_ALM_ORD_MODIFY to, for example, merge data from the external system with data from the R/3 system. The BAdI is called up as soon as the transferred data is converted into the internal format. The tests then take place after this.
    
    Construction of Method Table
    REFNUMBER Reference number for linking object methods - attributes
    The reference number is the line of the database which contains the corresponding data. The data table is determined by the object type.
    OBJECTTYPE Object category
    The object category specifies which object from the order should be processed. The key words listed here are not language-dependent and must be transferred exactly as they are. The following objects exist:
    HEADER Order header
    PARTNER Partner data
    USERSTATUS User status
    OPERATION Operation data
    RELATION Relationships
    COMPONENT Components
    TEXT Long texts
    (empty) ,General BAPI functions (save)
    
    METHOD Methods
    The methods with which the data should be processed. The following functions exist:
    CREATE Create objects
    CHANGE Change objects
    DELETE Delete objects
    RELEASE Release
    TECHNICALCOMPLETE Technically complete
    ATPCHECK Availability check
    CALCULATE Calculate
    SCHEDULE Schedule
    DELELTEDSEX Delete the status for external scheduling at operation level
    SAVE Save all data
    DIALOG Call-up dialog. See explanation below.
    TRACE Write trace file in the specified file to the frontend
    
    OBJECTKEY SAP external object key
    This key is for assigning the lower-level objects correctly to the corresponding objects, as there is always just one key in the data table. The key must have the following structure:
    1-12 Order number
    When creating orders with internal number assignment, a reference number beginning with % must be entered here. The BAPI then returns this number and the number actually assigned.
    13-16 Operation number
    17-20 Sub-operation number
    For relationships, the key is structured as follows:
    1-12 ,Order number from
    13-16 Operation number from
    17-28 Order number to
    29-32 Operation number to
    
    The following methods are permissible for the individual objects:
    
    HEADER:
    CREATE, CHANGE, RELEASE, TECHNICALCOMPLETE, ATPCHECK, CALCUALTE, SCHEDULE
    OPERATION
    CREATE, CHANGE, DELETE, DELETEDSEX
    PARTNER, RELATION, COMPONENT, USERSTATUS, TEXT:
    CREATE, CHANGE, DELETE
    (empty):
    SAVE, DIALOG, TRACE
    Data tables and update tables
    The objects have one or more data tables. For some objects you can specify which of the fields specified in the structure should be changed. For this you must set the field in the corresponding table to X as in the data table. If no update-table  is transferred, then only those fields are set that have a value that is not initial. This simplifies the transfer data. However, this means it is not possible to delete fields. If an update structure should  only be specified for some data records, the table with the update fields must nonetheless have the same amount of lines as the data table.  The empty lines are then treated as if no update structure was transferred. The objects "Partner", "User Status", and "Text" have no update tables. The whole data record is always copied here.
    
    References
    The objects use the field REFNUMBER from the method table to refer to the lines in the data table. Counting always begins with 1. In doing this, REFNUMBER also refers to the update table. However, in the method table there is a second reference to higher-level objects for lower-levels objects. The field OBJECTKEY must be filled with order number, operation number, and sub-operation number, as specified above. If lower-level objects of a newly-created order should be changed, then you must enter a temporary order number that must begin with %. Several orders can be numbered serially, for example, with %00000000001, %00000000002 ... .
    
    The following objects have special treatment for REFNUMBER:
    
    Partner
    Texts
    Partners have an order number in the data table. During processing of the method table, all those entries in the data table are processed which have an order number that is the same as that in the line to which the method refers. Thus, through just one entry in the method table, several partners can be changed.
    
    Texts are composed of two tables. The first table (IT_TEXT) is made up of the header data of the text. Here you must specify the object and the first and last line of the text table (respectively inclusive, counting from 1). Through this, a line segment is specified in the text line table (IT_TEXT_LINES).
    
    Peculiarities in processing
    The BAPI processes the transferred methods in a particular sequence, which must not correspond to the sequence in the methods table.
    
    Write trace file
    Change user status time period 1
    Delete objects (dependent first)
    Create new objects
    Change existing or newly-created objects
    Change user status time period 2
    Status change of order
    Save data
    The methods are performed such that lower-level objects can also be assigned to newly-created objects. For example, first the operations are created, and then the components. Long texts can also be created for the objects.
    
    Components have an exceptional position. Components are created through the assignment to an operation, that is, using the "key" order/ operation (item number). However, as this is not the unique component key, you can only access the components to change them, delete them, or add long texts by using the reservation number/-item, which is only given after saving. This means that, for example, you cannot create a long text when you create the component.
    
    User status changes can take place at two different time points. Time point 1 is before the object changes, time point 2 is after the object changes and before the status change of the system. These time points should be defined in the transfer table in the field CHANGE_EVENT. The field documentation contains the possible values.
    
    The external scheduling is offered by the BAPI as a special function. THe BAPI can set the date field directly at the operation level, and select the operation with the status DSEX "Date set by external system". This status prevents any further scheduling of the operation, it keeps the transferred dates. For this, set the category 'X' in the restriction categories. When reading the operation, this category is also returned, independent of the category of restriction set in the dialog. To delete the status, you can call up the method DELETEDSEX for the object operation. The external scheduling cannot be influenced in the dialog. All changes to the scheduling restrictions in the dialog are saved as normal, but are not relevant for the scheduling as long as the status DSEX is active.
    
    Every time the BAPI is called up, a SAVE or DIALOG method must be transferred. Normally, calling up a BAPI is seen as a transaction. All data that is changed in the BAPI should be saved to the database immediately. The BAPI checks whether a SAVE method exists, otherwise it terminates processing. A test run of the BAPI is composed of a normal call-up using the SAVE method and a subsequent BAPI_TRANSACTION_ROLLBACK. To call up the BAPI without the SAVE method, for example, to realize dialog transactions, the BAPI can be called up with the DIALOG method. This switches off the check for the SAVE method. The processor must then ensure that later either a SAVE method or a BAPI_TRANSACTION_ROLLBACK is called up.
    
    A BAPI_TRANSACTION_COMMIT without SAVE method terminates processing in the update to ensure that no inconsistent data is written to the database. The processor who called up the BAPI does not receive any confirmation for the termination of the update in the target system. This logic is necessary as the order data was flagged for updating with BAPI_TRANSACTION_COMMIT through the SAVE method. However, the status information was already flagged for updating when the BAPI was called up. A BAPI_TRANSACTION_COMMIT without SAVE method then just saves the status information and would generate inconsistent orders, if the updating was not terminated.
    
    Customer Enhancement
    The BAdI IBAPI_ALM_ORD_MODIFY can be used to change the transferred data. The BAdI is called up after the conversion of the transfer structure into the structures used internally. Additional data can be transferred using the table EXTENSION_IN. Only then is the data checked.
    
    Example
    The following examples should clarify the use.
    
    Creating an order
    OBJECTKEY should be filled with a temporary key. The BAPI returns this key together with the assigned order number in the return table ET_NUMBERS . The order number in the HEADER table should also be filled with the number. For external number assignment, the external number should be specified. The update structure can be transferred if necessary.
    
    Methods table
    
    REFNUMBER OBJECTTYPE METHOD OBJECTKEY 
    1 HEADER CREATE %00000000001 
    
    IT_HEADER
    
    ORDERID ORDER_TYPE PLANPLANT ... 
    %00000000001 PM01 1000 ... 
     
    
    Creating an order with operation and long text
    Methods table
    
    REFNUMBER OBJECTTYPE METHOD OBJECTKEY 
    1 HEADER CREATE %00000000001 
    1 OPERATION CREATE %00000000001 
    1 TEXT CREATE %000000000010010 
    
    IT_HEADER
    
    ORDERID ORDER_TYPE PLANPLANT ... 
    %00000000001 PM01 1000 ... 
    
    IT_OPERATION
    
    ACTIVITY SUB_ACTIVITY CONTROL_KEY WRK_CNTR ... 
    10  PM01 MECHANIC ... 
    
    IT_TEXT
    
    ACTIVITY ... TEXTSTART TEXTEND 
    10 ... 1 2 
    
    IT_TEXT_LINES
    
    TDFORMAT TDLINE 
    * Longtext for operation 10, line 1 
    * Line 2 of the long text 
    
    Notes
    Using the BAPI to process the order data cannot support all the functions of the transaction. This applies in particular for the following functions:
    Order header data
    
    The object list cannot be processed.
    Refurbishment orders are not supported.
    The estimated costs cannot be processed - only the estimated overall costs of the order.
    Notification data cannot be processed with the order BAPI. Even if the settings in Customizing are such that the orders and notifications can be maintained on one screen, no notification is created for the order.
    Permits cannot be processed.
    The order addresses cannot be processed.
    Individual partner addresses cannot be maintained.
    The settlement rule cannot be maintained.
    Order functions
    
    Printing the papers is not possible.
    Locking and unlocking the order is not possible.
    Accepting and rejecting quotations is not possible.
    Business completion is not possible.
    Flagging for deletion is not possible.
    The log cannot be displayed.
    User default values are not used.
    The field selection is not checked.
    The Customer Exits/BAdIs are not executed completely.
    Joint ventures are not supported.
    Funds Management is not supported.
    Investment orders are not supported.
    No integration of service products with task lists possible.
    No integration of configurable service products possible.
    Assignment of sales document items with service products in accordance with the aforementioned conditions.
    Operation data
    
    A change of the control key in the operation is not possible, if this leads to a change of the processing type (internal-/external processing)
    User status change not possible.
    Production resources and tools cannot be processed.
    Service lines cannot be processed.
    Task list integration is not supported.
    Linking operations with object list is not supported.
    Component data
    
    User status change not possible.
    BOM data cannot be processed.
    The delivery address cannot be processed.
    Further information
    See also the documentation for the individual transfer tables.
    
    Parameters
    IT_METHODS
    IT_HEADER
    IT_HEADER_UP
    IT_HEADER_SRV
    IT_HEADER_SRV_UP
    IT_USERSTATUS
    IT_PARTNER
    IT_PARTNER_UP
    IT_OPERATION
    IT_OPERATION_UP
    IT_RELATION
    IT_RELATION_UP
    IT_COMPONENT
    IT_COMPONENT_UP
    IT_TEXT
    IT_TEXT_LINES
    EXTENSION_IN
    RETURN
    ET_NUMBERS
    
    Exceptions
    Function Group
    IBAPI_ALM_ORDER

    Hope this will help.

    Please reward suitable points.

    Regards

    - Atul

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Feb 21, 2007 at 12:26 PM

    Hi!

    Operations are using the follwoing key in the METHODS table: %000000000010010 (order number+operation number)

    Regards

    Tamá

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Tamas

      I am also facing exactly same Gorka's problem. Even if i tried your suggestion, it is giving the same problem.

      Error : "Error reading the order header %00000000001 from the document tables".

      Then this is the case, what is procedure to create bulk order in one shot.

      I have given my code:

      DATA: IT_METHOD LIKE BAPI_ALM_ORDER_METHOD OCCURS 0 WITH HEADER LINE,

      IT_HEADER LIKE BAPI_ALM_ORDER_HEADERS_I OCCURS 0 WITH HEADER LINE,

      IT_OPERATION LIKE BAPI_ALM_ORDER_OPERATION OCCURS 0 WITH HEADER LINE,

      IT_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,

      I_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,

      IT_NUMBERS LIKE BAPI_ALM_NUMBERS OCCURS 0 WITH HEADER LINE,

      IT_HEADER_SRV LIKE BAPI_ALM_ORDER_SRVDAT_E OCCURS 0 WITH HEADER LINE,

      IT_RETURNS LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

      DATA: SEQNO TYPE N LENGTH 11 VALUE '00000000001',

      ORDNO TYPE C LENGTH 12,

      REFNO TYPE N LENGTH 6 VALUE '000001',

      QMNUM LIKE VIQMEL-QMNUM.

      DO 2 TIMES.

      CLEAR: ORDNO.

      CONCATENATE '%' SEQNO INTO ORDNO.

      IT_METHOD-REFNUMBER = REFNO.

      IT_METHOD-OBJECTTYPE = 'HEADER'.

      IT_METHOD-METHOD = 'CREATE'.

      IT_METHOD-OBJECTKEY = ORDNO.

      APPEND IT_METHOD. CLEAR IT_METHOD.

      IT_HEADER-ORDERID = ORDNO.

      IT_HEADER-ORDER_TYPE = 'CM8'.

      IT_HEADER-START_DATE = SY-DATUM.

      IT_HEADER-PMACTTYPE = 'ACT'.

      IT_HEADER-EQUIPMENT = '000000000008116723'.

      APPEND IT_HEADER.

      CLEAR IT_HEADER.

      IT_METHOD-REFNUMBER = REFNO.

      IT_METHOD-OBJECTTYPE = 'OPERATION'.

      IT_METHOD-METHOD = 'CREATE'.

      CONCATENATE ORDNO '0010' INTO

      IT_METHOD-OBJECTKEY.

      APPEND IT_METHOD. CLEAR IT_METHOD.

      IT_OPERATION-ACTIVITY = '0010'.

      IT_OPERATION-WORK_CNTR = 'SF'.

      IT_OPERATION-PLANT = '1682'.

      APPEND IT_OPERATION.

      IT_METHOD-REFNUMBER = REFNO.

      IT_METHOD-OBJECTTYPE = SPACE.

      IT_METHOD-METHOD = 'SAVE'.

      IT_METHOD-OBJECTKEY = ORDNO.

      APPEND IT_METHOD. CLEAR IT_METHOD.

      IT_METHOD-REFNUMBER = REFNO.

      IT_METHOD-OBJECTTYPE = 'HEADER'.

      IT_METHOD-METHOD = 'RELEASE'.

      IT_METHOD-OBJECTKEY = ORDNO.

      APPEND IT_METHOD.

      ADD 1 TO SEQNO.

      ADD 1 TO REFNO.

      CLEAR: IT_METHOD, IT_HEADER, IT_OPERATION, IT_RETURN.

      ENDDO.

      CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'

      TABLES

      IT_METHODS = IT_METHOD

      IT_HEADER = IT_HEADER

      IT_OPERATION = IT_OPERATION

      RETURN = IT_RETURN

      ET_NUMBERS = IT_NUMBERS.

      READ TABLE IT_RETURN WITH KEY TYPE = 'E'.

      IF SY-SUBRC NE 0.

      READ TABLE IT_RETURN WITH KEY ID = 'IWO_BAPI2' NUMBER = 126 .

      QMNUM = IT_RETURN-MESSAGE_V3.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

      ELSE.

      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

      ENDIF.

      Thanks and Regards

      Raja.

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.