Questions on AQQueue.enqueue()

Anyone know what this function returns? It's a byte array, but what is the significance? The javadoc for this method just says "enqueue a message", which is no help.
My question comes about because we are trying to debug a problem where it seems like there is a delay in getting the message queued. In my java code, I have called the enqueue function, then after that make a JDBC call to a stored procedure that dequeues the message I just queued, and stores it in a table. We do this because we are running 8i DB, and do not have the pl/sql notification feature. But It is almost like the message isn't there by the time my JDBC call is executed, is that possible? Is the enqueue done in a separate thread?

Hmmm, I think the byte[] is actually the msgid given to the enqueued message. RAW(16).

Similar Messages

  • Enqueue server question

    I was wondering i someone can help me by answering the following question:
    In the enqueue server, do you receive a exception in the following scenarios?
    1.You try to read a object/item which is already being read by other resource?
    2.You try to write a object/item which is already being  read by other resource?
    3.You try to read a object/item which is already being written by other resource?
    Thanks for your help

    Hi John,
    So, it depends e.g. on the type of lock that is acquired. For more information please check the <a href="http://help.sap.com/saphelp_nw04/helpdata/en/f4/670f9b9d62f94db4ea7361b34ea214/frameset.htm">Enqueue Server documentation</a>.
    HTH!
    -- Vladimir

  • Oracle advanced queuing

    Hi,
    I am new to Oracle Advanced queuing. I have a question.
    After enqueue operation, the message can be retrieved by dequeue operation.
    But, why do we need SCHEDULE_PROPAGATION ?
    Do we use that when we are sending it to a totally differnt queue in someother remote database ?
    Thanks,
    Message was edited by:
    user448390

    Do we use that when we are sending it to a totally
    differnt queue in someother remote database ?yes, partly true...SCHEDULE_PROPAGATION is used when we schedule propagation of messages to a destination identified by a Database Link.
    DBMS_AQADM.SCHEDULE_PROPAGATION (
       queue_name          IN    VARCHAR2,
       destination         IN    VARCHAR2 DEFAULT NULL,
       start_time          IN    DATE     DEFAULT SYSDATE,
       duration            IN    NUMBER   DEFAULT NULL,
       next_time           IN    VARCHAR2 DEFAULT NULL,
       latency             IN    NUMBER   DEFAULT 60,
       destination_queue IN VARCHAR2 DEFAULT NULL);
    destination_queue -- Name of the target queue to which messages are to be propagated in the form of a dblink.
    Messages may also be propagated to other queues in the same database by specifying a NULL destination. If a message has multiple recipients at the same destination in either the same or different queues, the message is propagated to all of them at the same time.
    Hope this will help..
    Thanks

  • Migrate OraData Payload to 11g

    We've been using a custom data type as payload for an Oracle advance queue since version 9i. Now we're trying to transition to 11g and I'm coming up with problems using the new API. In the old API, I would enqueue a message as follows:
         MY_OBJECT_TY myObj = new MY_OBJECT_TY();
         myObj.setName("MY name");
         oracle.AQ.AQMessage message = aQQueue.createMessage();
         oracle.AQ.AQObjectPayload payload = message.getObjectPayload();
         payload.setPayloadData(myObj);
         oracle.AQ.AQMessageProperty msgProps = message.getMessageProperty();
         msgProps.setCorrelation("My correlation");
         oracle.AQ.AQEnqueueOption enqOption = new AQEnqueueOption();
         aQQueue.enqueue(enqOption, message);
    where MY_OBJECT_TY is a Java class that implements the ORAData and ORADataFactory interface and the Oracle type is described as follows:
    SQL> desc my_object_ty;
    Name Null? Type
    NAME VARCHAR2(32)
    BUF VARCHAR2(4000)
    LARGE_BUF CLOB
    In the new API, I believe I'm supposed to use OracleConnection.enqueue() to enqueue my message, but my problem is constructing the object payload. Could someone provide pointers or code snippets to help accomplish my goal?

    Check this out: http://prolynxuk.com/blog/?p=424
    Thanks!

  • Questions on enqueue dump

    Hi All,
    I updated one row in 2 sessions and used enqueue dump to check the details. The excerpt of the trace file looks like:
    ENQUEUES
    Active:    lock: 00000000, resource: 00000000
    Global:    name: ORALEON
    Hash:      length: 375, at: 2EC89760
               [2ec89760,2ec89760]  [2ec89778,2ec89778]  [2ec89790,2ec89790] 
               ....................... [2ec8ba70,2ec8ba70] 
    res      identification         NUL SS  SX  S   SSX X   md link
             owners              converters          waiters
    2EC76EE8 TM-0001197e-00000000 U   0   0   2   0   0   0  8 [2ec8aa50,2ec8aa50]
             [2e26d6b8,2e268e44] [2ec76f00,2ec76f00] [2ec76ef8,2ec76ef8]
       lock     que owner    session        hold wait ser link
       2E26D6B0 OWN 2F06AA90 2F06AA90 (129)   SX NLCK 596 [2e268e44,2ec76ef0]
       2E268E3C OWN 2F074990 2F074990 (133)   SX NLCK 499 [2ec76ef0,2e26d6b8]
    res      identification         NUL SS  SX  S   SSX X   md link
             owners              converters          waiters
    2EC7D0C0 TX-0009001e-000010ae U   0   0   0   0   0   1 40 [2ec8b128,2ec8b128]
             [2e2c39cc,2e2c39cc] [2ec7d0d8,2ec7d0d8] [2ec34a0c,2ec34a0c]
       lock     que owner    session        hold wait ser link
       2E2C39C4 OWN 2F074990 2F074990 (133)    X NLCK 499 [2ec7d0c8,2ec7d0c8]
       2EC34A04 WAT 2F06AA90 2F06AA90 (129) NLCK    X 596 [2ec7d0d0,2ec7d0d0]1. What's the meaning of two values in [] in hash bucket section?
    2. What's the meaning of the hex number for lock,res,owner and session?
    Thank you very much.
    Best regards,
    Leon
    Edited by: user12064076 on Sep 5, 2011 10:36 PM
    Edited by: user12064076 on Sep 5, 2011 11:50 PM

    Hmmm, I think the byte[] is actually the msgid given to the enqueued message. RAW(16).

  • Can any one give me answer for these questions

    Can any one give me answer for these questions. I  got these questions from net plz post the answers you know
    ABAP CERTIFICATION QUESTIONS
    1. If a table does not have MANDT as part of the primary key, it is ____.
    A: A structure
    B: Invalid
    C: Client-independent
    D: Not mandatory
    2. In regard to CALL, which of the following is NOT a valid statement?
    A: CALL FUNCTION
    B: CALL SCREEN
    C: CALL TRANSACTION
    D: CALL PROGRAM
    3. Name the type of ABAP Dictionary table that has these characteristics:
    Same number of fields as the database table
    Same name as database table
    Maps 1:1 to database table
    A: Pooled
    B: Cluster
    C: Transparent
    D: View
    4. An event starts with an event keyword and ends with:
    A: Program execution.
    B: END-OF-EVENT.
    C: Another event keyword.
    D: END-EVENT.
    5. What is the system field for the current date?
    A: SY-DATUM
    B: SY-DATE
    C: SY-DATID
    D: SY-SDATE
    6. The following code indicates:
    SELECT fld1 fld2 FROM tab1 APPENDING TABLE itab
    WHERE fld1 IN sfld1.
    A: Add rows to the existing rows of itab.
    B: Add rows to itab after first deleting any existing rows of itab.
    C: Select rows from tab1 for matching itab entries.
    D: Nothing, this is a syntax error.
    7. You may change the following data object as shown below so that it equals 3.14.
    CONSTANTS: PI type P decimals 2 value '3.1'.
    PI = '3.14'.
    A: True
    B: False
    8. The SAP service that ensures data integrity by handling locking is called:
    A: Update
    B: Dialog
    C: Enqueue/Dequeue
    D: Spool
    9. Which of these sentences most accurately describes the GET VBAK LATE. event?
    A: This event is processed before the second time the GET VBAK event is processed.
    B: This event is processed after all occurrences of the GET VBAK event are completed.
    C: This event will only be processed after the user has selected a basic list row.
    D: This event is only processed if no records are selected from table VBAK.
    10. Which of the following is not a true statement in regard to a hashed internal table type?
    A: Its key must always be UNIQUE.
    B: May only be accessed by its key.
    C: Response time for accessing a row depends on the number of entries in the table.
    D: Declared using internal table type HASHED TABLE.
    11. TO include database-specific SQL statements within an ABAP program, code them between:
    A: NATIVE SQL_ENDNATIVE.
    B: DB SQL_ENDDB.
    C: SELECT_ENDSELECT.
    D: EXEC SQL_ENDEXEC.
    12. To measure how long a block of code runs, use the ABAP statement:
    A: GET TIME .
    B: SET TIME FIELD .
    C: GET RUN TIME FIELD .
    D: SET CURSOR FIELD .
    13. When a secondary list is being processed, the data of the basic list is available by default.
    A: True
    B: False
    14. Given:
    DATA: BEGIN OF itab OCCURS 10,
    qty type I,
    END OF itab.
    DO 25 TIMES. itab-qty = sy-index. APPEND itab. ENDDO.
    LOOP AT itab WHERE qty > 10.
    WRITE: /1 itab-qty.
    ENDLOOP.
    This will result in:
    A: Output of only those itab rows with a qty field less than 10
    B: Output of the first 10 itab rows with a qty field greater than 10
    C: A syntax error
    D: None of the above
    15. After a DESCRIBE TABLE statement SY-TFILL will contain
    A: The number of rows in the internal table.
    B: The current OCCURS value.
    C: Zero, if the table contains one or more rows.
    D: The length of the internal table row structure.
    16. You may declare your own internal table type using the TYPES keyword.
    A: True
    B: False
    17. After adding rows to an internal table with COLLECT, you should avoid adding more rows with APPEND.
    A: True
    B: False
    18. Which of the following is not a component of control break processing when looping at an internal table?
    A: AT START OF
    B: AT FIRST
    C: AT LAST
    D: AT NEW
    19. A dictionary table is made available for use within an ABAP program via the TABLES statement.
    A: True
    B: False
    20. Which of the following would be best for hiding further selection criteria until a function is chosen?
    A: AT NEW SELECTION-SCREEN
    B: SELECTION-SCREEN AT LINE-SELECTION
    C: SUBMIT SELECTION-SCREEN
    D: CALL SELECTION-SCREEN
    21. What must you code in the flow logic to prevent a module from being called unless a field contains a non-initial value (as determined by its data type)?
    A: ON INPUT
    B: CHAIN
    C: FIELD
    D: ON REQUEST
    22. The AT USER-COMMAND event is triggered by functions defined in the ____.
    A: screen painter
    B: ABAP report
    C: menu painter status
    D: ABAP Dictionary
    23. In regard to a function group, which of the following is NOT a true statement?
    A: Combines similar function modules.
    B: Shares global data with all its function modules.
    C: Exists within the ABAP workbench as an include program.
    D: Shares subroutines with all its function modules.
    24. In regard to SET PF-STATUS, you can deactivate unwanted function codes by using ____.
    A: EXCLUDING
    B: IMMEDIATELY
    C: WITHOUT
    D: HIDE
    25. In regard to data transported in PAI when the FIELD statement is used, which of the following is NOT a true statement?
    A: Fields in PBO are transported directly from PAI.
    B: Fields with identical names are transported to the ABAP side.
    C: Fields not defined in FIELD statements are transported first.
    D: Fields that are defined in FIELD statements are transported when their corresponding module is called.
    26. The order in which an event appears in the ABAP code determines when the event is processed.
    A: True
    B: False
    27. A field declared as type T has the following internal representation:
    A: SSMMHH
    B: HHMMSS
    C: MMHHSS
    D: HHSSMM
    28. Which of the following is NOT a component of the default standard ABAP report header?
    A: Date and Time
    B: List title
    C: Page number
    D: Underline
    29. Assuming a pushbutton with function code 'FUNC' is available in the toolbar of a list report, what event is processed when the button is clicked?
    A: AT USER-COMMAND.
    B: AT PFn.
    C: AT SELECTION-SCREEN.
    D: END-OF-SELECTION.
    30. In regard to field selection, what option of the SELECT statement is required?
    A: FOR ALL ENTRIES
    B: WHERE
    C: INTO
    D: MOVE-CORRESPONDING
    31. The following program outputs what?
    report zjgtest1
    write: /1 'Ready_'.
    PARAMETER: test.
    INITIALIZATION.
    write: /1 'Set_'.
    START-OF-SELECTION.
    write: /1 'GO!!'.
    A: Set_ GO!! (each on its own line)
    B: Set_ Ready_ GO!! (all on their own lines)
    C: Ready_ GO!! (each on its own line)
    D: Ready_ Set_ GO!! (all on their own lines)
    32. To declare a selection criterion that does not appear on the selection screen, use:
    A: NO-DISPLAY
    B: INVISIBLE
    C: MODIF ID
    D: OBLIGATORY
    33. An internal table that is nested within another internal table should not contain a header line.
    A: True
    B: False
    34. What is output by the following code?
    DATA: BEGIN OF itab OCCURS 0, letter type c, END OF itab.
    itab-letter = 'A'. APPEND itab. itab-letter = 'B'. APPEND itab.
    itab-letter = 'C'. APPEND itab. itab-letter = 'D'. APPEND itab.
    LOOP AT itab.
    SY-TABIX = 2.
    WRITE itab-letter.
    EXIT.
    ENDLOOP.
    A: A
    B: A B C D
    C: B
    D: B C D
    35. To select all database entries for a certain WHERE clause into an internal table in one step, use
    A: SELECT_INTO TABLE itab_
    B: SELECT_INTO itab_
    C: SELECT_APPENDING itab
    D: SELECT_itab_
    36. After a successful SELECT statement, what does SY-SUBRC equal?
    A: 0
    B: 4
    C: 8
    D: Null
    37. This selection screen syntax forces the user to input a value:
    A: REQUIRED-ENTRY
    B: OBLIGATORY
    C: DEFAULT
    D: SELECTION-SCREEN EXCLUDE
    38. If the following code results in a syntax error, the remedy is:
    DATA: itab TYPE SORTED TABLE OF rec_type WITH UNIQUE KEY field1
    WITH HEADER LINE.
    itab-field1 = 'Company'. itab-field2 = '1234'. INSERT TABLE itab.
    itab-field1 = 'Bank'. itab-field2 = 'ABC'. INSERT TABLE itab.
    SORT itab.
    LOOP AT itab.
    write: /1 itab-field1, itab-field2.
    ENDLOOP.
    A: There is no syntax error here
    B: Remove the SORT statement
    C: Change INSERT to APPEND
    D: Add a WHERE clause to the loop
    39. If this code results in an error, the remedy is:
    SELECT fld1 fld2 FROM tab1 WHERE fld3 = pfld3.
    WRITE: /1 tab1-fld1, tab1-fld2.
    ENDSELECT.
    A: Add a SY-SUBRC check.
    B: Change the WHERE clause to use fld1 or fld2.
    C: Remove the /1 from the WRITE statement.
    D: Add INTO (tab1-fld1, tab1-fld2).
    40. When modifying an internal table within LOOP AT itab. _ ENDLOOP. you must include an index number.
    A: True
    B: False
    41. To allow the user to enter values on the screen for a list field, use:
    A: OPEN LINE.
    B: SET CURSOR FIELD.
    C: WRITE fld AS INPUT FIELD.
    D: FORMAT INPUT ON.
    42. Before a function module may be tested, it must first be:
    A: Linked
    B: Authorized
    C: Released
    D: Active
    43. To include a field on your screen that is not in the ABAP Dictionary, which include program should contain the data declaration for the field?
    A: PBO module include program
    B: TOP include program
    C: PAI module include program
    D: Subroutine include program
    44. If a table contains many duplicate values for a field, minimize the number of records returned by using this SELECT statement addition.
    A: MIN
    B: ORDER BY
    C: DISTINCT
    D: DELETE
    45. The system internal table used for dynamic screen modification is named:
    A: ITAB
    B: SCREEN
    C: MODTAB
    D: SMOD
    46. Within the source code of a function module, errors are handled via the keyword:
    A: EXCEPTION
    B: RAISE
    C: STOP
    D: ABEND
    47. Which system field contains the contents of a selected line?
    A: SY-CUCOL
    B: SY-LILLI
    C: SY-CUROW
    D: SY-LISEL
    48. The following statement writes what type of data object?
    WRITE: /1 'Total Amount:'.
    A: Text literal
    B: Text variable
    C: In-code comment
    D: Text integer
    49. For the code below, second_field is of what data type?
    DATA: first_field type P, second_field like first_field.
    A: P
    B: C
    C: N
    D: D
    50. Which of the following describes the internal representation of a type D data object?
    A: DDMMYYYY
    B: YYYYDDMM
    C: MMDDYYYY
    D: YYYYMMDD
    51. A BDC program is used for all of the following except:
    A: Downloading data to a local file
    B: Data interfaces between SAP and external systems
    C: Initial data transfer
    D: Entering a large amount of data
    52. In regard to PERFORM, which of the following is NOT a true statement?
    A: May be used within a subroutine.
    B: Requires actual parameters.
    C: Recursive calls are allowed in ABAP.
    D: Can call a subroutine in another program.
    53. What is the transaction code for the ABAP Editor?
    A: SE11
    B: SE38
    C: SE36
    D: SE16
    54. In regard to HIDE, which of the following is NOT a true statement?
    A: Saves the contents of variables in relation to a list line's row number.
    B: The hidden variables must be output on a list line.
    C: The HIDE area is retrieved when using the READ LINE statement.
    D: The HIDE area is retrieved when an interactive event is triggered.
    55. Database locks are sufficient in a multi-user environment.
    A: True
    B: False
    56. The complete technical definition of a table field is determined by the field's:
    A: Domain
    B: Field name
    C: Data type
    D: Data element
    57. In regard to LEAVE, which of the following is NOT a true statement?
    A: May be used to return immediately to a calling program.
    B: May be used to stop the current loop pass and get the next.
    C: May be used to start a new transaction.
    D: May be used to go to the next screen.
    58. The following code indicates:
    SELECT fld6 fld3 fld2 fld1 FROM tab1 INTO CORRESPONDING FIELDS OF TABLE itab
    WHERE fld3 = pfld3.
    A: The order of the fields in itab does not matter.
    B: Fill the header line of itab, but not the body.
    C: Table itab can only contain fields also in table tab1.
    D: None of the above.
    59. The ABAP statement below indicates that the program should continue with the next line of code if the internal table itab:
    CHECK NOT itab[] IS INITIAL.
    A: Contains no rows
    B: Contains at least one row
    C: Has a header line
    D: Has an empty header line
    60. What will be output by the following code?
    DATA: BEGIN OF itab OCCURS 0, fval type i, END OF itab.
    itab-fval = 1. APPEND itab.
    itab-fval = 2. APPEND itab.
    FREE itab.
    WRITE: /1 itab-fval.
    A: 2
    B: 0
    C: blank
    D: 1
    61. To allow the user to enter a range of values on a selection screen, use the ABAP keyword:
    A: DATA.
    B: RANGES.
    C: PARAMETERS.
    D: SELECT-OPTIONS.
    62. If an internal table is declared without a header line, what else must you declare to work with the table's rows?
    A: Another internal table with a header line.
    B: A work area with the same structure as the internal table.
    C: An internal table type using the TYPES statement.
    D: A PARAMETER.
    63. Assuming an internal table contains 2000 entries, how many entries will it have after the following line of code is executed?
    DELETE itab FROM 1500 TO 1700.
    A: This is a syntax error.
    B: 1801
    C: 1800
    D: 1799
    64. To remove lines from a database table, use ____.
    A: UPDATE
    B: MODIFY
    C: ERASE
    D: DELETE
    65. All of the following may be performed using SET CURSOR except:
    A: Move the cursor to a specific field on a list.
    B: Move the cursor to a specific list line.
    C: Move the cursor to a specific pushbutton, activating that function.
    D: Move the cursor to a specific row and column on a list.
    66. When is it optional to pass an actual parameter to a required formal parameter of a function module?
    A: The actual parameter is type C.
    B: The formal parameter contains a default value.
    C: The formal parameter's \"Reference\" attribute is turned on.
    D: It is never optional.
    67. Coding two INITIALIZATION events will cause a syntax error.
    A: True
    B: False
    68. Adding a COMMIT WORK statement between SELECT_ENDSELECT is a good method for improving performance.
    A: True
    B: False
    69. To save information on a list line for use after the line is selected, use this keyword.
    A: APPEND
    B: EXPORT
    C: WRITE
    D: HIDE
    70. To bypass automatic field input checks, include this in PAI.
    A: AT EXIT-COMMAND
    B: ON INPUT
    C: ON REQUEST
    D: LEAVE TO SCREEN 0.
    71. Within a function module's source code, if the MESSAGE_RAISING statement is executed, all of the following system fields are filled automatically except:
    A: SY-MSGTY
    B: SY-MSGNO
    C: SY-MSGV1
    D: SY-MSGWA
    72. The following code indicates:
    REPORT ZLISTTST.
    START-OF-SELECTION.
    WRITE: text-001.
    FORMAT HOTSPOT ON.
    WRITE: text-002.
    FORMAT HOTSPOT OFF.
    AT LINE-SELECTION.
    WRITE / text-003.
    A: Text-002 may not be selected.
    B: The value of text-002 is stored in a special memory area.
    C: Text-002 may be clicked once to trigger the output of text-003.
    D: None of the above.
    73. The ____ type of ABAP Dictionary view consists of one or more transparent tables and may be accessed by an ABAP program using Open SQL.
    A: Database view
    B: Projection view
    C: Help view
    D: Entity view
    74. A concrete field is associated with a field-symbol via ABAP keyword
    A: MOVE
    B: WRITE
    C: ASSIGN
    D: VALUE
    75. The output for the following code will be:
    report zabaprg.
    DATA: char_field type C.
    char_field = 'ABAP data'.
    WRITE char_field.
    A: ABAP data
    B: A
    C: Nothing, there is a syntax error
    D: None of the above
    76. Page footers are coded in the event:
    A: TOP-OF-PAGE.
    B: END-OF-SELECTION.
    C: NEW-PAGE.
    D: END-OF-PAGE.
    77. The event AT SELECTION-SCREEN OUTPUT. occurs before the selection screen is displayed and is the best event for assigning default values to selection criteria.
    A: True
    B: False
    78. The TABLES statement declares a data object.
    A: True
    B: False
    79. Assuming tab1-fld7 is not a key field, how can you prevent reading all the table rows?
    SELECT fld1 fld2 fld3 FROM tab1 INTO (fld4, fld5, fld6)
    WHERE fld7 = pfld7.
    WRITE: /1 fld4, fld5, fld6.
    ENDSELECT.
    A: Take fld7 out of the WHERE clause.
    B: Create an index in the ABAP Dictionary for tab1-fld7.
    C: Use INTO TABLE instead of just INTO.
    D: Take the WRITE statement out of the SELECT_ENDSELECT.
    80. Which of the following is NOT a required attribute when creating an ABAP program?
    A: Application
    B: Title
    C: Status
    D: Type
    81. When creating a transparent table in the ABAP Dictionary, which step automatically creates the table in the underlying database?
    A: Adding technical settings to the table
    B: Checking the table syntax
    C: Saving the table
    D: Activating the table
    82. Within the ABAP program attributes, Type = 1 represents:
    A: INCLUDE program
    B: Online program
    C: Module pool
    D: Function group
    E: Subroutine pool
    83. If this code results in an error, the remedy is:
    SELECT fld1 SUM( fld1 ) FROM tab1 INTO_
    A: Remove the spaces from SUM( fld1 ).
    B: Move SUM( fld1 ) before fld1.
    C: Add GROUP BY f1.
    D: Change to SUM( DISTINCT f1 ).
    84. Which keyword adds rows to an internal table while accumulating numeric values?
    A: INSERT
    B: APPEND
    C: COLLECT
    D: GROUP
    85. Assuming itab has a header line, what will be output by the following code?
    READ TABLE itab INDEX 3 TRANSPORTING field1.
    WRITE: /1 itab-field1, itab-field2.
    A: The contents of the third row's itab-field1.
    B: The contents of the third row's itab-field1 and itab-field2.
    C: The contents of the third row's itab-field2.
    D: Nothing.
    86. The following code indicates:
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    PARAMETERS: myparam(10) type C,
    Myparam2(10) type N,
    SELECTION-SCREEN END OF BLOCK.
    A: Draw a box around myparam and myparam2 on the selection screen.
    B: Allow myparam and myparam2 to be ready for input during an error dialog.
    C: Do not display myparam and myparam2 on the selection screen.
    D: Display myparam and myparam2 only if both fields have default values.
    87. Which statement will sort the data of an internal table with fields FRUIT, QTY, and PRICE so that it appears as follows?
    FRUIT QTY PRICE
    Apples 12 22.50
    Apples 9 18.25
    Oranges 15 17.35
    Bananas 20 10.20
    Bananas 15 6.89
    Bananas 5 2.75
    A: SORT itab DESCENDING BY QTY PRICE.
    B: SORT itab BY PRICE FRUIT.
    C: SORT itab.
    D: SORT itab BY PRICE DESCENDING.
    88. Which keyword adds a line anywhere within an internal table?
    A: APPEND
    B: MODIFY
    C: ADD
    D: INSERT
    89. To read a single line of an internal table, use the following:
    A: LOOP AT itab. _ ENDLOOP.
    B: READ itab.
    C: SELECT SINGLE * FROM itab.
    D: READ TABLE itab.
    90. Which Open SQL statement should not be used with cluster databases?
    A: UPDATE
    B: MODIFY
    C: DELETE
    D: INSERT
    91. To include a field on your screen that is not in the ABAP Dictionary, which include program should contain the data declaration for the field?
    A: PBO module include program
    B: TOP include program
    C: PAI module include program
    D: Subroutine include program
    92. This flow logic statement is used to make multiple fields open for input after an error or warning message.
    A: GROUP
    B: FIELD-GROUP
    C: CHAIN
    D: LOOP AT SCREEN
    93. Given:
    PERFORM subroutine USING var.
    The var field is known as what type of parameter?
    A: Formal
    B: Actual
    C: Static
    D: Value

    ANSWERS :
    1. If a table does not have MANDT as part of the primary key, it is ____.
    A: A structure
    B: Invalid
    C: Client-independent
    D: Not mandatory
    Ans : C
    2. In regard to CALL, which of the following is NOT a valid statement?
    A: CALL FUNCTION
    B: CALL SCREEN
    C: CALL TRANSACTION
    D: CALL PROGRAM
    Ans : D
    3. Name the type of ABAP Dictionary table that has these characteristics:
    Same number of fields as the database table
    Same name as database table
    Maps 1:1 to database table
    A: Pooled
    B: Cluster
    C: Transparent
    D: View
    Ans : C
    4. An event starts with an event keyword and ends with:
    A: Program execution.
    B: END-OF-EVENT.
    C: Another event keyword.
    D: END-EVENT.
    Ans: C
    5. What is the system field for the current date?
    A: SY-DATUM
    B: SY-DATE
    C: SY-DATID
    D: SY-SDATE
    Ans : A
    6. The following code indicates:
    SELECT fld1 fld2 FROM tab1 APPENDING TABLE itab
    WHERE fld1 IN sfld1.
    A: Add rows to the existing rows of itab.
    B: Add rows to itab after first deleting any existing rows of itab.
    C: Select rows from tab1 for matching itab entries.
    D: Nothing, this is a syntax error.
    Ans : B
    7. You may change the following data object as shown below so that it equals 3.14.
    CONSTANTS: PI type P decimals 2 value '3.1'.
    PI = '3.14'.
    A: True
    B: False
    Ans : B
    8. The SAP service that ensures data integrity by handling locking is called:
    A: Update
    B: Dialog
    C: Enqueue/Dequeue
    D: Spool
    Ans : C
    9. Which of these sentences most accurately describes the GET VBAK LATE. event?
    A: This event is processed before the second time the GET VBAK event is processed.
    B: This event is processed after all occurrences of the GET VBAK event are completed.
    C: This event will only be processed after the user has selected a basic list row.
    D: This event is only processed if no records are selected from table VBAK.
    Ans :
    10. Which of the following is not a true statement in regard to a hashed internal table type?
    A: Its key must always be UNIQUE.
    B: May only be accessed by its key.
    C: Response time for accessing a row depends on the number of entries in the table.
    D: Declared using internal table type HASHED TABLE.
    Ans : C
    11. TO include database-specific SQL statements within an ABAP program, code them between:
    A: NATIVE SQL_ENDNATIVE.
    B: DB SQL_ENDDB.
    C: SELECT_ENDSELECT.
    D: EXEC SQL_ENDEXEC.
    Ans : D
    12. To measure how long a block of code runs, use the ABAP statement:
    A: GET TIME .
    B: SET TIME FIELD .
    C: GET RUN TIME FIELD .
    D: SET CURSOR FIELD .
    Ans : C
    13. When a secondary list is being processed, the data of the basic list is available by default.
    A: True
    B: False
    Ans : B
    14. Given:
    DATA: BEGIN OF itab OCCURS 10,
    qty type I,
    END OF itab.
    DO 25 TIMES. itab-qty = sy-index. APPEND itab. ENDDO.
    LOOP AT itab WHERE qty > 10.
    WRITE: /1 itab-qty.
    ENDLOOP.
    This will result in:
    A: Output of only those itab rows with a qty field less than 10
    B: Output of the first 10 itab rows with a qty field greater than 10
    C: A syntax error
    D: None of the above
    Ans : B
    15. After a DESCRIBE TABLE statement SY-TFILL will contain
    A: The number of rows in the internal table.
    B: The current OCCURS value.
    C: Zero, if the table contains one or more rows.
    D: The length of the internal table row structure.
    Ans ; A
    16. You may declare your own internal table type using the TYPES keyword.
    A: True
    B: False
    Ans : A
    17. After adding rows to an internal table with COLLECT, you should avoid adding more rows with APPEND.
    A: True
    B: False
    Ans : A
    18. Which of the following is not a component of control break processing when looping at an internal table?
    A: AT START OF
    B: AT FIRST
    C: AT LAST
    D: AT NEW
    Ans : A
    19. A dictionary table is made available for use within an ABAP program via the TABLES statement.
    A: True
    B: False
    Ans : A
    20. Which of the following would be best for hiding further selection criteria until a function is chosen?
    A: AT NEW SELECTION-SCREEN
    B: SELECTION-SCREEN AT LINE-SELECTION
    C: SUBMIT SELECTION-SCREEN
    D: CALL SELECTION-SCREEN
    Ans : D
    21. What must you code in the flow logic to prevent a module from being called unless a field contains a non-initial value (as determined by its data type)?
    A: ON INPUT
    B: CHAIN
    C: FIELD
    D: ON REQUEST
    Ans : A
    22. The AT USER-COMMAND event is triggered by functions defined in the ____.
    A: screen painter
    B: ABAP report
    C: menu painter status
    D: ABAP Dictionary
    Ans : C
    23. In regard to a function group, which of the following is NOT a true statement?
    A: Combines similar function modules.
    B: Shares global data with all its function modules.
    C: Exists within the ABAP workbench as an include program.
    D: Shares subroutines with all its function modules.
    Ans ; C
    24. In regard to SET PF-STATUS, you can deactivate unwanted function codes by using ____.
    A: EXCLUDING
    B: IMMEDIATELY
    C: WITHOUT
    D: HIDE
    Ans : A
    25. In regard to data transported in PAI when the FIELD statement is used, which of the following is NOT a true statement?
    A: Fields in PBO are transported directly from PAI.
    B: Fields with identical names are transported to the ABAP side.
    C: Fields not defined in FIELD statements are transported first.
    D: Fields that are defined in FIELD statements are transported when their corresponding module is called.
    Ans ; C
    26. The order in which an event appears in the ABAP code determines when the event is processed.
    A: True
    B: False
    Ans : B
    27. A field declared as type T has the following internal representation:
    A: SSMMHH
    B: HHMMSS
    C: MMHHSS
    D: HHSSMM
    Ans : B
    28. Which of the following is NOT a component of the default standard ABAP report header?
    A: Date and Time
    B: List title
    C: Page number
    D: Underline
    Ans ; A
    29. Assuming a pushbutton with function code 'FUNC' is available in the toolbar of a list report, what event is processed when the button is clicked?
    A: AT USER-COMMAND.
    B: AT PFn.
    C: AT SELECTION-SCREEN.
    D: END-OF-SELECTION.
    Ans : A
    30. In regard to field selection, what option of the SELECT statement is required?
    A: FOR ALL ENTRIES
    B: WHERE
    C: INTO
    D: MOVE-CORRESPONDING
    Ans : B
    31. The following program outputs what?
    report zjgtest1
    write: /1 'Ready_'.
    PARAMETER: test.
    INITIALIZATION.
    write: /1 'Set_'.
    START-OF-SELECTION.
    write: /1 'GO!!'.
    A: Set_ GO!! (each on its own line)
    B: Set_ Ready_ GO!! (all on their own lines)
    C: Ready_ GO!! (each on its own line)
    D: Ready_ Set_ GO!! (all on their own lines)
    Ans : C
    32. To declare a selection criterion that does not appear on the selection screen, use:
    A: NO-DISPLAY
    B: INVISIBLE
    C: MODIF ID
    D: OBLIGATORY
    Ans : A
    33. An internal table that is nested within another internal table should not contain a header line.
    A: True
    B: False
    Ans : B
    34. What is output by the following code?
    DATA: BEGIN OF itab OCCURS 0, letter type c, END OF itab.
    itab-letter = 'A'. APPEND itab. itab-letter = 'B'. APPEND itab.
    itab-letter = 'C'. APPEND itab. itab-letter = 'D'. APPEND itab.
    LOOP AT itab.
    SY-TABIX = 2.
    WRITE itab-letter.
    EXIT.
    ENDLOOP.
    A: A
    B: A B C D
    C: B
    D: B C D
    Ans : A
    35. To select all database entries for a certain WHERE clause into an internal table in one step, use
    A: SELECT_INTO TABLE itab_
    B: SELECT_INTO itab_
    C: SELECT_APPENDING itab
    D: SELECT_itab_
    36. After a successful SELECT statement, what does SY-SUBRC equal?
    A: 0
    B: 4
    C: 8
    D: Null
    Ans : A
    37. This selection screen syntax forces the user to input a value:
    A: REQUIRED-ENTRY
    B: OBLIGATORY
    C: DEFAULT
    D: SELECTION-SCREEN EXCLUDE
    Ans : B
    38. If the following code results in a syntax error, the remedy is:
    DATA: itab TYPE SORTED TABLE OF rec_type WITH UNIQUE KEY field1
    WITH HEADER LINE.
    itab-field1 = 'Company'. itab-field2 = '1234'. INSERT TABLE itab.
    itab-field1 = 'Bank'. itab-field2 = 'ABC'. INSERT TABLE itab.
    SORT itab.
    LOOP AT itab.
    write: /1 itab-field1, itab-field2.
    ENDLOOP.
    A: There is no syntax error here
    B: Remove the SORT statement
    C: Change INSERT to APPEND
    D: Add a WHERE clause to the loop
    Ans :
    39. If this code results in an error, the remedy is:
    SELECT fld1 fld2 FROM tab1 WHERE fld3 = pfld3.
    WRITE: /1 tab1-fld1, tab1-fld2.
    ENDSELECT.
    A: Add a SY-SUBRC check.
    B: Change the WHERE clause to use fld1 or fld2.
    C: Remove the /1 from the WRITE statement.
    D: Add INTO (tab1-fld1, tab1-fld2).
    Ans : D
    40. When modifying an internal table within LOOP AT itab. _ ENDLOOP. you must include an index number.
    A: True
    B: False
    Ans : A
    41. To allow the user to enter values on the screen for a list field, use:
    A: OPEN LINE.
    B: SET CURSOR FIELD.
    C: WRITE fld AS INPUT FIELD.
    D: FORMAT INPUT ON.
    Ans : C
    42. Before a function module may be tested, it must first be:
    A: Linked
    B: Authorized
    C: Released
    D: Active
    Ans : D
    43. To include a field on your screen that is not in the ABAP Dictionary, which include program should contain the data declaration for the field?
    A: PBO module include program
    B: TOP include program
    C: PAI module include program
    D: Subroutine include program
    Ans : B
    44. If a table contains many duplicate values for a field, minimize the number of records returned by using this SELECT statement addition.
    A: MIN
    B: ORDER BY
    C: DISTINCT
    D: DELETE
    Ans : C
    45. The system internal table used for dynamic screen modification is named:
    A: ITAB
    B: SCREEN
    C: MODTAB
    D: SMOD
    Ans : B
    46. Within the source code of a function module, errors are handled via the keyword:
    A: EXCEPTION
    B: RAISE
    C: STOP
    D: ABEND
    Ans : A
    47. Which system field contains the contents of a selected line?
    A: SY-CUCOL
    B: SY-LILLI
    C: SY-CUROW
    D: SY-LISEL
    Ans : D
    48. The following statement writes what type of data object?
    WRITE: /1 'Total Amount:'.
    A: Text literal
    B: Text variable
    C: In-code comment
    D: Text integer
    Ans : A
    49. For the code below, second_field is of what data type?
    DATA: first_field type P, second_field like first_field.
    A: P
    B: C
    C: N
    D: D
    Ans : A
    50. Which of the following describes the internal representation of a type D data object?
    A: DDMMYYYY
    B: YYYYDDMM
    C: MMDDYYYY
    D: YYYYMMDD
    Ans : A
    51. A BDC program is used for all of the following except:
    A: Downloading data to a local file
    B: Data interfaces between SAP and external systems
    C: Initial data transfer
    D: Entering a large amount of data
    Ans : A
    52. In regard to PERFORM, which of the following is NOT a true statement?
    A: May be used within a subroutine.
    B: Requires actual parameters.
    C: Recursive calls are allowed in ABAP.
    D: Can call a subroutine in another program.
    Ans : B
    53. What is the transaction code for the ABAP Editor?
    A: SE11
    B: SE38
    C: SE36
    D: SE16
    Ans : B
    54. In regard to HIDE, which of the following is NOT a true statement?
    A: Saves the contents of variables in relation to a list line's row number.
    B: The hidden variables must be output on a list line.
    C: The HIDE area is retrieved when using the READ LINE statement.
    D: The HIDE area is retrieved when an interactive event is triggered.
    Ans : B
    55. Database locks are sufficient in a multi-user environment.
    A: True
    B: False
    Ans : B
    56. The complete technical definition of a table field is determined by the field's:
    A: Domain
    B: Field name
    C: Data type
    D: Data element
    Ans : A
    57. In regard to LEAVE, which of the following is NOT a true statement?
    A: May be used to return immediately to a calling program.
    B: May be used to stop the current loop pass and get the next.
    C: May be used to start a new transaction.
    D: May be used to go to the next screen.
    Ans : B
    58. The following code indicates:
    SELECT fld6 fld3 fld2 fld1 FROM tab1 INTO CORRESPONDING FIELDS OF TABLE itab
    WHERE fld3 = pfld3.
    A: The order of the fields in itab does not matter.
    B: Fill the header line of itab, but not the body.
    C: Table itab can only contain fields also in table tab1.
    D: None of the above.
    Ans : C
    59. The ABAP statement below indicates that the program should continue with the next line of code if the internal table itab:
    CHECK NOT itab[] IS INITIAL.
    A: Contains no rows
    B: Contains at least one row
    C: Has a header line
    D: Has an empty header line
    Ans : B
    60. What will be output by the following code?
    DATA: BEGIN OF itab OCCURS 0, fval type i, END OF itab.
    itab-fval = 1. APPEND itab.
    itab-fval = 2. APPEND itab.
    FREE itab.
    WRITE: /1 itab-fval.
    A: 2
    B: 0
    C: blank
    D: 1
    Ans : A
    61. To allow the user to enter a range of values on a selection screen, use the ABAP keyword:
    A: DATA.
    B: RANGES.
    C: PARAMETERS.
    D: SELECT-OPTIONS.
    Ans : D
    62. If an internal table is declared without a header line, what else must you declare to work with the table's rows?
    A: Another internal table with a header line.
    B: A work area with the same structure as the internal table.
    C: An internal table type using the TYPES statement.
    D: A PARAMETER.
    Ans : B
    63. Assuming an internal table contains 2000 entries, how many entries will it have after the following line of code is executed?
    DELETE itab FROM 1500 TO 1700.
    A: This is a syntax error.
    B: 1801
    C: 1800
    D: 1799
    Ans : A
    64. To remove lines from a database table, use ____.
    A: UPDATE
    B: MODIFY
    C: ERASE
    D: DELETE
    Ans : D
    65. All of the following may be performed using SET CURSOR except:
    A: Move the cursor to a specific field on a list.
    B: Move the cursor to a specific list line.
    C: Move the cursor to a specific pushbutton, activating that function.
    D: Move the cursor to a specific row and column on a list.
    Ans : C
    66. When is it optional to pass an actual parameter to a required formal parameter of a function module?
    A: The actual parameter is type C.
    B: The formal parameter contains a default value.
    C: The formal parameter's \"Reference\" attribute is turned on.
    D: It is never optional.
    Ans : B
    67. Coding two INITIALIZATION events will cause a syntax error.
    A: True
    B: False
    Ans : B
    68. Adding a COMMIT WORK statement between SELECT_ENDSELECT is a good method for improving performance.
    A: True
    B: False
    Ans : B
    69. To save information on a list line for use after the line is selected, use this keyword.
    A: APPEND
    B: EXPORT
    C: WRITE
    D: HIDE
    Ans : D
    70. To bypass automatic field input checks, include this in PAI.
    A: AT EXIT-COMMAND
    B: ON INPUT
    C: ON REQUEST
    D: LEAVE TO SCREEN 0.
    Ans : A
    71. Within a function module's source code, if the MESSAGE_RAISING statement is executed, all of the following system fields are filled automatically except:
    A: SY-MSGTY
    B: SY-MSGNO
    C: SY-MSGV1
    D: SY-MSGWA
    Ans : D
    72. The following code indicates:
    REPORT ZLISTTST.
    START-OF-SELECTION.
    WRITE: text-001.
    FORMAT HOTSPOT ON.
    WRITE: text-002.
    FORMAT HOTSPOT OFF.
    AT LINE-SELECTION.
    WRITE / text-003.
    A: Text-002 may not be selected.
    B: The value of text-002 is stored in a special memory area.
    C: Text-002 may be clicked once to trigger the output of text-003.
    D: None of the above.
    Ans : C
    73. The ____ type of ABAP Dictionary view consists of one or more transparent tables and may be accessed by an ABAP program using Open SQL.
    A: Database view
    B: Projection view
    C: Help view
    D: Entity view
    Ans : A
    74. A concrete field is associated with a field-symbol via ABAP keyword
    A: MOVE
    B: WRITE
    C: ASSIGN
    D: VALUE
    Ans : C
    75. The output for the following code will be:
    report zabaprg.
    DATA: char_field type C.
    char_field = 'ABAP data'.
    WRITE char_field.
    A: ABAP data
    B: A
    C: Nothing, there is a syntax error
    D: None of the above
    Ans : B
    76. Page footers are coded in the event:
    A: TOP-OF-PAGE.
    B: END-OF-SELECTION.
    C: NEW-PAGE.
    D: END-OF-PAGE.
    Ans : D
    77. The event AT SELECTION-SCREEN OUTPUT. occurs before the selection screen is displayed and is the best event for assigning default values to selection criteria.
    A: True
    B: False
    Ans : B
    78. The TABLES statement declares a data object.
    A: True
    B: False
    Ans : A
    79. Assuming tab1-fld7 is not a key field, how can you prevent reading all the table rows?
    SELECT fld1 fld2 fld3 FROM tab1 INTO (fld4, fld5, fld6)
    WHERE fld7 = pfld7.
    WRITE: /1 fld4, fld5, fld6.
    ENDSELECT.
    A: Take fld7 out of the WHERE clause.
    B: Create an index in the ABAP Dictionary for tab1-fld7.
    C: Use INTO TABLE instead of just INTO.
    D: Take the WRITE statement out of the SELECT_ENDSELECT.
    Ans :
    80. Which of the following is NOT a required attribute when creating an ABAP program?
    A: Application
    B: Title
    C: Status
    D: Type
    Ans : A
    81. When creating a transparent table in the ABAP Dictionary, which step automatically creates the table in the underlying database?
    A: Adding technical settings to the table
    B: Checking the table syntax
    C: Saving the table
    D: Activating the table
    Ans : D
    82. Within the ABAP program attributes, Type = 1 represents:
    A: INCLUDE program
    B: Online program
    C: Module pool
    D: Function group
    E: Subroutine pool
    Ans : B
    83. If this code results in an error, the remedy is:
    SELECT fld1 SUM( fld1 ) FROM tab1 INTO_
    A: Remove the spaces from SUM( fld1 ).
    B: Move SUM( fld1 ) before fld1.
    C: Add GROUP BY f1.
    D: Change to SUM( DISTINCT f1 ).
    Ans : C
    84. Which keyword adds rows to an internal table while accumulating numeric values?
    A: INSERT
    B: APPEND
    C: COLLECT
    D: GROUP
    Ans : C
    85. Assuming itab has a header line, what will be output by the following code?
    READ TABLE itab INDEX 3 TRANSPORTING field1.
    WRITE: /1 itab-field1, itab-field2.
    A: The contents of the third row's itab-field1.
    B: The contents of the third row's itab-field1 and itab-field2.
    C: The contents of the third row's itab-field2.
    D: Nothing.
    Ans ; A
    86. The following code indicates:
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    PARAMETERS: myparam(10) type C,
    Myparam2(10) type N,
    SELECTION-SCREEN END OF BLOCK.
    A: Draw a box around myparam and myparam2 on the selection screen.
    B: Allow myparam and myparam2 to be ready for input during an error dialog.
    C: Do not display myparam and myparam2 on the selection screen.
    D: Display myparam and myparam2 only if both fields have default values.
    Ans : A
    87. Which statement will sort the data of an internal table with fields FRUIT, QTY, and PRICE so that it appears as follows?
    FRUIT QTY PRICE
    Apples 12 22.50
    Apples 9 18.25
    Oranges 15 17.35
    Bananas 20 10.20
    Bananas 15 6.89
    Bananas 5 2.75
    A: SORT itab DESCENDING BY QTY PRICE.
    B: SORT itab BY PRICE FRUIT.
    C: SORT itab.
    D: SORT itab BY PRICE DESCENDING.
    Ans : D
    88. Which keyword adds a line anywhere within an internal table?
    A: APPEND
    B: MODIFY
    C: ADD
    D: INSERT
    Ans : D
    89. To read a single line of an internal table, use the following:
    A: LOOP AT itab. _ ENDLOOP.
    B: READ itab.
    C: SELECT SINGLE * FROM itab.
    D: READ TABLE itab.
    Ans : D
    90. Which Open SQL statement should not be used with cluster databases?
    A: UPDATE
    B: MODIFY
    C: DELETE
    D: INSERT
    Ans :
    91. To include a field on your screen that is not in the ABAP Dictionary, which include program should contain the data declaration for the field?
    A: PBO module include program
    B: TOP include program
    C: PAI module include program
    D: Subroutine include program
    Ans : B
    92. This flow logic statement is used to make multiple fields open for input after an error or warning message.
    A: GROUP
    B: FIELD-GROUP
    C: CHAIN
    D: LOOP AT SCREEN
    Ans ; C
    93. Given:
    PERFORM subroutine USING var.
    The var field is known as what type of parameter?
    A: Formal
    B: Actual
    C: Static
    D: Value
    Ans : B

  • Performance issue and functional question regarding updates on tables

    A person at my site wrote some code to update a custom field on the MARC table that was being copied from the MARA table.  Here is what I would have expected to see as the code.  Assume that both sets of code have a parameter called p_werks which is the plant in question.
    data : commit_count type i.
    select matnr zfield from mara into (wa_marc-matnr, wa_marc-zfield).
      update marc set zfield = wa_marc-zfield
         where werks = p_werks and matnr = wa_matnr.
      commit work and wait.
    endselect.
    I would have committed every 200 rows instead of every one row, but here's the actual code and my question isn't around the commits but something else.  In this case an internal table was built with two elements - MATNR and WERKS - could have done that above too, but that's not my question.
                DO.
                  " Lock the record that needs to be update with material creation date
                  CALL FUNCTION 'ENQUEUE_EMMARCS'
                    EXPORTING
                      mode_marc      = 'S'
                      mandt          = sy-mandt
                      matnr          = wa_marc-matnr
                      werks          = wa_marc-werks
                    EXCEPTIONS
                      foreign_lock   = 1
                      system_failure = 2
                      OTHERS         = 3.
                  IF sy-subrc <> 0.
                    " Wait, if the records not able to perform as lock
                    CALL FUNCTION 'RZL_SLEEP'.
                  ELSE.
                    EXIT.
                  ENDIF.
                ENDDO.
                " Update the record in the table MARC with material creation date
                UPDATE marc SET zzdate = wa_mara-zzdate
                           WHERE matnr = wa_mara-matnr AND
                                 werks = wa_marc-werks.    " IN s_werks.
                IF sy-subrc EQ 0.
                  " Save record in the database table MARC
                  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                    EXPORTING
                      wait   = 'X'
                    IMPORTING
                      return = wa_return.
                  wa_log-matnr   = wa_marc-matnr.
                  wa_log-werks   = wa_marc-werks.
                  wa_log-type    = 'S'.
                  " text-010 - 'Material creation date has updated'.
                  wa_log-message = text-010.
                  wa_log-zzdate  = wa_mara-zzdate.
                  APPEND wa_log TO tb_log.
                  CLEAR: wa_return,wa_log.
                ELSE.
                  " Roll back the record(un save), if there is any issue occurs
                  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
                    IMPORTING
                      return = wa_return.
                  wa_log-matnr   = wa_marc-matnr.
                  wa_log-werks   = wa_marc-werks.
                  wa_log-type    = 'E'.
                  " 'Material creation date does not updated'.
                  wa_log-message = text-011.
                  wa_log-zzdate  = wa_mara-zzdate..
                  APPEND wa_log TO tb_log.
                  CLEAR: wa_return, wa_log.
                ENDIF.
                " Unlock the record from data base
                CALL FUNCTION 'DEQUEUE_EMMARCS'
                  EXPORTING
                    mode_marc = 'S'
                    mandt     = sy-mandt
                    matnr     = wa_marc-matnr
                    werks     = wa_marc-werks.
              ENDIF.
    Here's the question - why did this person enqueue and dequeue explicit locks like this ?  They claimed it was to prevent issues - what issues ???  Is there something special about updating tables that we don't know about ?  We've actually seen it where the system runs out of these ENQUEUE locks.
    Before you all go off the deep end and ask why not just do the update, keep in mind that you don't want to update a million + rows and then do a commit either - that locks up the entire table!

    The ENQUEUE lock insure that another program called by another user will not update the data at the same time, so preventing database coherence to be lost. In fact, another user on a SAP correct transaction, has read the record and locked it, so when it will be updated your modifications will be lost, also you could override modifications made by another user in another luw.
    You cannot use a COMMIT WORK in a SELECT - ENDSELECT, because COMMIT WORK will close each and every opened database cursor, so your first idea would dump after the first update. (so the internal table is mandatory)
    Go through some documentation like [Updates in the R/3 System (BC-CST-UP)|http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCSTUP/BCCSTUP_PT.pdf]
    Regards

  • Questions on Locking-- URGENT

    Here are my questions on Locking.:
    1)
    How do I use v$lock to figure out lock details ? Details like
    whos has locked,on which table,who else is waiting, and what type
    of locking (shared or exlusive ?), since when it is locked.
    2)
    Why and when exclusive/shared locks are used ? Could you give me
    example please ?
    3)
    Could you tell me significance of v$mystat and v$locked_object ?
    4)
    Do we have page level locking in Oracle ?
    Thanks in advance,
    DN

    Details about locks : All locks acquired by statements within a transaction are held for the duration of the transaction.
    Oracle releases all locks acquired by the statements within a transaction when an explict or implied commit or roll back is executed. Oracle also releases locks acquired after a savepoint when rolling back to the savepoint.
    Note: Only transactions not waiting for the previously locked resources can acquire locks on now available resources. Waiting transactions continue to wait until after the original transaction commits or completely rolls back.
    1. How do I use v$lock to figure out lock details? Details like
    whos has locked,on which table,who else is waiting, and what type
    of locking (shared or exlusive ?), since when it is locked.
    Better way is to use Oracle OEM. The TYPE column in v$lock shows the type of wait events and we also have the LMODE column (lock mode) and REQUEST columns.
    Here is a comprehensive v$lock query by Deepak Baranwal, listing the lock types:
    set echo off
    col sid form 9999
    col id1 form 9999999999
    col id2 form 999999999
    col lmode head "Lock Held" form a14
    col request1 head "Lock Request" form a16
    col type head "Lock Type" form a15
    col ctime head "Time|Held" form 999999
    col block head "No Of |Sessions|Waiting|For This|Lock" form 99999
    select sid,
    DECODE(TYPE,
    'BL','Buffer hash table',
    'CF','Control File Transaction',
    'CI','Cross Instance Call',
    'CS','Control File Schema',
    'CU','Bind Enqueue',
    'DF','Data File',
    'DL','Direct-loader index-creation',
    'DM','Mount/startup db primary/secondary instance',
    'DR','Distributed Recovery Process',
    'DX','Distributed Transaction Entry',
    'FI','SGA Open-File Information',
    'FS','File Set',
    'IN','Instance Number',
    'IR','Instance Recovery Serialization',
    'IS','Instance State',
    'IV','Library Cache InValidation',
    'JQ','Job Queue',
    'KK','Redo Log "Kick"',
    'LS','Log Start/Log Switch',
    'MB','Master Buffer hash table',
    'MM','Mount Definition',
    'MR','Media Recovery',
    'PF','Password File',
    'PI','Parallel Slaves',
    'PR','Process Startup',
    'PS','Parallel Slaves Synchronization',
    'RE','USE_ROW_ENQUEUE Enforcement',
    'RT','Redo Thread',
    'RW','Row Wait',
    'SC','System Commit Number',
    'SH','System Commit Number HWM',
    'SM','SMON',
    'SQ','Sequence Number',
    'SR','Synchronized Replication',
    'SS','Sort Segment',
    'ST','Space Transaction',
    'SV','Sequence Number Value',
    'TA','Transaction Recovery',
    'TD','DDL enqueue',
    'TE','Extend-segment enqueue',
    'TM','DML enqueue',
    'TS','Temporary Segment',
    'TT','Temporary Table',
    'TX','Transaction',
    'UL','User-defined Lock',
    'UN','User Name',
    'US','Undo Segment Serialization',
    'WL','Being-written redo log instance',
    'WS','Write-atomic-log-switch global enqueue',
    'XA','Instance Attribute',
    'XI','Instance Registration',
    decode(substr(TYPE,1,1),
    'L','Library Cache ('||substr(TYPE,2,1)||')',
    'N','Library Cache Pin ('||substr(TYPE,2,1)||')',
    'Q','Row Cache ('||substr(TYPE,2,1)||')',
    '????')) TYPE,
    id1,id2,
    decode(lmode,
    0,'None(0)',
    1,'Null(1)',
    2,'Row Share(2)',
    3,'Row Exclu(3)',
    4,'Share(4)',
    5,'Share Row Ex(5)',
    6,'Exclusive(6)') lmode,
    decode(request,
    0,'None(0)',
    1,'Null(1)',
    2,'Row Share(2)',
    3,'Row Exclu(3)',
    4,'Share(4)',
    5,'Share Row Ex(5)',
    6,'Exclusive(6)') request1,
    ctime, block
    from
    v$lock
    where sid>5
    and type not in ('MR','RT')
    order by decode(request,0,0,2),block,5
    2 .Why and when exclusive/shared locks are used ? Could you give me
    example please ?
    Exclusive Lock Mode : Prevents the associates resource from being shared. This lock mode is obtained to modify data. The first transaction to lock a resource exclusively is the only transaction that can alter the resource until the exclusive lock is released.
    Share Lock Mode : Allows the associated resource to be shared, depending on the operations involved. Multiple users reading data can share the data, holding share locks to prevent concurrent access by a writer (who needs an exclusive lock). Several transactions can acquire share locks on the same resource.
    Oracle Lock Types
    DML locks (data locks)
    DDL locks (dictionary locks)
    Oracle Internal Locks/Latches
    Oracle Distributed Locks
    Oracle Parallell Cache Management Locks
    3. Could you tell me significance of v$mystat and v$locked_object ?
    v$locked_object show the information about Who is locking and what object they locking. This view is similar to v$mystat except that it shows cumulated statistics for all sessions.
    4. Do we have page level locking in Oracle ? No
    Sachin

  • Error: 28005, Severity: 16, State: 2...An exception occurred while enqueueing a message in the target queue. Error: 15517, State: 1. Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impe

    I've seen some similar questions, but want to make sure I can get an answer quickly and how to fix.
    Thanks,
    Paul
    spid24s     Error: 28005, Severity: 16, State: 2
    spid24s     An exception occurred while enqueueing a message in the target queue. Error: 15517, State: 1. Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated,
    or you do not have permission.

    Hi Paul,
    I also had the same error on one of my servers, and it was because the user that created the database no longer worked for the company.
    So when his AD account got deleted, the database had NULL as owner
    Using the following query I asked for the owners of the databases:
    select name, suser_sname(sid) from master.dbo.sysdatabases
    So changing the owner of the databases that had a NULL owner solved the issue for me.
    use <databasesname>
    go
    exec sp_changedbowner 'sa'
    Thanks for triggering the solution.
    Peter

  • How to dequeue messages that were enqueued when app was offline

    I have 2 question. The following is the scenario -
    I have 2 different process. Process A and Process B.
    Process A enqueue's the message in the message queue.
    Process B dequeue's the message from the message queue.
    1) Process B shuts down for some time but Process A continues to enqueue the message in the queue. When Process B comes back live how to dequeue the messages in the message queue that were posted by Process A when Process B was offline?
    2) The queue that I am using is multiple consumer queue as there needs to be more than 1 Process B to dequeue the message. The logic behind the design is if one of the process B dies the other process B can still continue to process. At the same time if 1 instance of Process B has picked up a message it should notify other Process B to not process the message.
    I coudn't find any samples. Any help is greatly appreciated.

    Hello,
    The messages that process A enqueues and are not consumed while process B is down will remain in the queue until process B restarts.
    It sounds as though you don't need to use a multi-consumer queue as all you appear to want to do is consume the messages as quickly as possible. Is that correct? If it is you could have multiple process Bs consuming messages from the same single consumer queue. Messages that one process is consuming will not be available to another and this is handled internally.
    You can also have multiple processes consuming messages associated with the same consumer on a multi-cosnumer queue and the same applied.
    Or you could have multiple processes on a multi-consumer queue associated with different subscribers which are all interested in the same message.
    What you use depends on what your design requires but each message will be consumed only once in the case of a single consumer queue and only once per subscriber/recipient in a multi-consumer queue.
    Thanks
    Peter

  • Question regarding MSCS post upgrade.

    We currently have ECC 5.0 ABAP only system (NO JAVA) running in MSCS environment. ( Windows-SQL server)
    Currently we have Two nodes such as  Node 1 and Node 2. At a given time we have all resources running either on Node 1 or Node 2.
    Now, we have completed upgrade of above ECC 5.0 to ECC 6.0 ( again we do not have Java in ECC 6.0 ).
    Asper upgrade guide Page # 141 Section 6.2 some post-upgrade activities are necessary for an MSCS configuration, for this follow OSS note 941092.
    After reading these notes and as per OSS note 941092 / 1011190 / 919046 we have to install
    1)"ASCS" instance and
    2) Enqueue Replication server
    3) Additional ABAP dialog instance on other node.
    We will not be adding JAVA in future  OR we do not want JAVA isntance at all.
    So, my question is do we really have to do above step 1 , 2 & 3?
    Can we leave system after upgrade as it is? i.e not to install ASCS and enqueue replication.
    What is the necessity to install ASCS?

    in earlier version
    Central Instance = Message Server + Enqueue server + disp+work
    in newer version
    ASCS = Message Server + Enqueue server (only)
    you need to install CI (disp + work) + Enqueue Replication server in main node and DI (disp + work) + Enqueue Replication Server in additional node
    from my understanding only ASCS and DB Instance are clustered
    for example in my recent project
    BEFORE UPGRADE
    NODE 1 : CI Active + (DB INSTANCE passive)
    NODE 2 : DB INSTANCE Active + (CI Passive)
    AFTER UPGRADE
    NODE 1 : ASCS (Active) + (DB INSTANCE passive) + ENQ Replication Server (Active) + Central Instance (Active)
    NODE 2 : DB INSTANCE (Active) + ASCS (Passive) + ENQ Replication Server (Active) + Dialog Instance (Active)
    Dialog Instance is optional but please do remember without Dialog instance, once your CI down, you dont have Application Server
    Dialog Instance can be installed in additional node (node 2 in example above) or you can install in separate server
    all this information you can read from Upgrade Guide and SAP Notes

  • Controlfile on ASM performance question

    Seeing Controlfile Enqueue performance spikes, consideration are to move control file to separater diskgroup(need outage) ? or add some disk(from different luns,( i prefer this approach) in the same disk group , seems like slow disk is casing this issue...
    2nd question :can snapshot controlfile be placed on ASM storage?

    Following points may help:
    - Separating the control file to another diskgroup may make things even worse in case that the total number of disks are insufficient in the new disk group.
    - Those control file contention issues are usually nothing to do with the storage throughput you have but the number of operations requiring different levels of exclusion on the control files.
    - Since multiple copies of controlfiles are updated concurrently a possible, sometimes, problem is that the secondary copy of controlfile is slower than the other. Please check that this is not the issue (different tiers of storage may cause such problems)
    Regards,
    Husnu Sensoy

  • How to dequeue Oracle queue(enqueue in Ora) in java using JMS text message

    I'm trying below java code but its giving me error:
    public class testq {
    public static void main(String[] args) throws Exception {
    testq q = new testq();
    AQSession aq_sess = createSession();
    q.runTest(aq_sess);
    public static AQSession createSession() {
    Connection db_conn;
    AQSession aq_sess = null;
    try {
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    /* Load the Oracle8i AQ driver: */
    Class.forName("oracle.AQ.AQOracleDriver");
    db_conn = DriverManager.getConnection("jdbc:oracle:thin:@10.10.10.10:1521:demo", "demo_app", "demo");
    System.out.println("JDBC Connection opened ");
    db_conn.setAutoCommit(false);
    /* Creating an AQ Session: */
    aq_sess = AQDriverManager.createAQSession(db_conn);
    System.out.println("Successfully created AQSession ");
    catch (Exception ex) {
    System.out.println("Exception: " + ex);
    ex.printStackTrace();
    return aq_sess;
    public void runTest(AQSession aq_sess) {
    //AQQueueTable q_table;
    AQQueue queue;
    AQMessage message;
    AQRawPayload raw_payload;
    AQDequeueOption deq_option;
    byte[] b_array;
    Connection db_conn;
    try {
    db_conn = ((AQOracleSession)aq_sess).getDBConnection();
    /* Get a handle to a queue - aq_queue4 in aquser schema: */
    queue = aq_sess.getQueue ("myadmin", "STREAM_QUEUE_DEMO");
    System.out.println("Successful getQueue");
    /* Creating a AQDequeueOption object with default options: */
    deq_option = new AQDequeueOption();
    deq_option.setDequeueMode(AQDequeueOption.DEQUEUE_REMOVE);
    /* Set wait time to 10 seconds: */
    deq_option.setWaitTime(10);
    /* Dequeue a message: */
    message = queue.dequeue(deq_option);
    System.out.println("Successful dequeue");
    /* Retrieve raw data from the message: */
    raw_payload = message.getRawPayload();
    b_array = raw_payload.getBytes();
    db_conn.commit();
    String value = new String(b_array);
    System.out.println("queue="+value);
    } catch(Exception e) {
    e.printStackTrace();
    The error says "oracle.AQ.AQException: JMS-174: Class must be specified for queues with object payloads
    Use dequeue(deq_option, payload_fact) or dequeue(deq_option, sql_data_cl)"
    Can any one tell me how to fix this error & how to get bulk dequeue messages?
    And i am using sys.AQ$_JMS_TEXT_MESSAGE payload type during enqueue.
    Can any one tell me how to fix this Java program to dequeue it?
    Thanks in advance...Please its urgent
    Thanks!

    the code is as bellow
    File fBlob = new File ("test.pdf");
    FileInputStream fIS = new FileInputStream(fBlob);
    pstUpdate= con.prepareStatement("UPDATE table set file = ? where id = ?");
    pstUpdate.setBinaryStream(1, fIS, (int) fBlob.length());
    pstUpdate.setString(2, rs.getString("id"));
    pstUpdate.execute();
    con.commit();

  • How to enqueue custom AWT event?

    hi,
    in my applet I need to use custom AWT events. I subclass them from java.awt.AWTEvent and set their id to higher as AWTEvent.RESERVED_ID_MAX - as recomended in documentation.
    But how to enqueue such event? A tried to use following approach:
    getToolkit().getSystemEventQueue().postEvent( myEvent );
    and it works fine - but only in browsers usings Sun's VM implementation. In browsers using Microsoft's VM I'm getting following exception:
    com.ms.security.SecurityExceptionEx[matlu/client/ClientConnection.enQueue]: Event queue access denied.
    So the question is: is there any other way to enqueue custom event, which will keep Microsoft's security manager happy?
    thak you very much
    Lubo Matecka

    I know it must be visible... (But it doesnt have to be bigger than 1 pixel...)
    The code I posted is just to illustrate the idea.
    If you need to post multiple events you just replace the AWTEvent member with a LinkedList (or some similar FIFO).
    Then in postEvent you do theLinkedList.addFirst(yourEvent)
    And in paint() you do AWTEvent ev = (AWTEvent)theLinkedList.removeLast();
    process ev.
    if(theLinkedList.size() > 0)
       repaint();Yes. I have run into the same problem, and I did not use the repaint- trick...
    My applet communicates with the server in a separate thread. When a response receives the communication thread should post an event to the AWT- thread to get the response processed.
    My solution here is to process the thread in the communicator- thread. This is a bad solution because it might create multithreading bugs.... but it has proven to work ok in practice.
    Another example is like this. The use presses the mouse at Component B so that:
    1 Component A gets a focusLost event.
    2 Component B gets a mousePressed.
    3 I want to do something in component A that should be done after component B has processed the mousePressed event. This can be solved without using events. You just have to write some more code (You are already in the right thread).

  • Standby destination control file enqueue unavailable

    Hi,
    more than two days ..totally i tried 3 times for creating standby database in oralce 10g ..everthing working fine but i didnt get archive log from primary database..please help me
    NOTE: both primary and standby database on same system
    *#standby database 'stby' (omitted common parameters)*
    *.compatible='10.2.0.3.0'
    *.control_files='d:\oracle\product\10.2.0\oradata\stby\controlsb01.ctl','d:\oracle\product\10.2.0\oradata\stby\controlsb02.ctl','d:\oracle\product\10.2.0\oradata\stby\controlsb03.ctl'
    *.db_file_name_convert='D:\oracle\product\10.2.0\oradata\live','D:\oracle\product\10.2.0\oradata\stby'
    *.db_name='live'
    *.fal_client='stby'
    *.fal_server='live'
    *.log_archive_config='DG_CONFIG=(live,stby)'
    *.log_archive_dest_1='LOCATION=D:\oracle\product\10.2.0\flash_recovery_area\stby VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stby'
    *.log_archive_dest_2='SERVICE=live ARCH ASYNC VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=live'
    *.log_file_name_convert='D:\oracle\product\10.2.0\oradata\live','D:\oracle\product\10.2.0\oradata\stby'
    *.remote_login_passwordfile=EXCLUSIVE
    *.standby_file_management='AUTO'
    *.instance_name=stby
    *.db_unique_name=stby
    *#primary database 'live'*
    *.compatible='10.2.0.3.0'
    *.control_files='d:\oracle\product\10.2.0\oradata\live\control01.ctl','d:\oracle\product\10.2.0\oradata\live\control02.ctl','d:\oracle\product\10.2.0\oradata\live\control03.ctl'
    *.db_file_name_convert='D:\oracle\product\10.2.0\oradata\stby','D:\oracle\product\10.2.0\oradata\live'
    *.db_name='live'
    *.fal_client='live'
    *.fal_server='stby'
    *.log_archive_config='DG_CONFIG=(live,stby)'
    *.log_archive_dest_1='LOCATION=D:\oracle\product\10.2.0\flash_recovery_area\live VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=live'
    *.log_archive_dest_2='SERVICE=stby ARCH ASYNC VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=stby'
    *.log_file_name_convert='D:\oracle\product\10.2.0\oradata\stby','D:\oracle\product\10.2.0\oradata\live'
    *.remote_login_passwordfile=EXCLUSIVE
    *.standby_file_management='AUTO'
    *.instance_name=live
    *.DB_UNIQUE_NAME=live
    *#standby database*
    SQL> STARTUP MOUNT
    ORACLE instance started.
    Total System Global Area 251658240 bytes
    Fixed Size 1290012 bytes
    Variable Size 159383780 bytes
    Database Buffers 83886080 bytes
    Redo Buffers 7098368 bytes
    Database mounted.
    SQL> alter database recover managed standby database disconnect from session;
    Database altered.
    SQL> select group#,member from v$logfile;
    GROUP#
    MEMBER
    3
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\STBY\REDO03.LOG
    2
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\STBY\REDO02.LOG
    1
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\STBY\REDO01.LOG
    GROUP#
    MEMBER
    4
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\STBY\SREDO04.LOG
    5
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\STBY\SREDO05.LOG
    6
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\STBY\SREDO06.LOG
    6 rows selected.
    *#primary database*
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    SQL> select SEQUENCE#, applied from v$archived_log;
    SEQUENCE# APP
    15 NO
    16 NO
    17 NO
    18 NO
    19 NO
    20 NO
    SQL> SELECT SEQUENCE#,STATUS FROM V$MANAGED_STANDBY;
    SEQUENCE# STATUS
    0 CONNECTED
    19 CLOSING
    20 CLOSING
    0 CONNECTED
    0 CONNECTED
    0 CONNECTED
    0 CONNECTED
    0 CONNECTED
    *#standby database*
    SQL> select * from v$archived_log;
    no rows selected
    *#see even my standby database open .*
    SQL> alter database open;
    Database altered.
    *# listener.ora*
    STBY =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = selvaPC)(PORT = 2031))
    LIVE =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = selvaPC)(PORT = 2030))
    SID_LIST_STBY =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = live)
    (SID_NAME = stby)
    SID_LIST_LIVE =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = live)
    (SID_NAME = live)
    *# tnsnames.ora*
    STBY =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = selvaPC)(PORT = 2030))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = live)
    LIVE =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = selvaPC)(PORT = 2031))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = stby)
    *#Error in alert file..during startup primary database*
    Controlfile lock conflict at host 'stby'
    Possible invalid cross-instance archival configuration
    ORA-16146: standby destination control file enqueue unavailable
    thanks
    selva..

    If you user this then a lot of information ( threads) can be found with the same problem.
    Anyway the original ORA-message/solution is:
    Error:     ORA-16146 (ORA-16146)
    Text:     standby destination control file enqueue unavailable
    Cause:     The target standby destination control file is currently
         unavailable to the Remote File Server (RFS) process. This
         indicates that the target destination is the primary database
         itself.
    Action:     Check for and eliminate the standby destination archive log
         parameter in question.
    This means you have an error in the log_archive_dest entries on the standby server.
    Can you use Dataguard Manager (dgmgrl) to verify the configuration?
    Edit:
    Our Dataguard config e.g. has on primary:
    log_archive_config='dg_config=(STDBY)'
    On the standby it is:
    log_archive_config='dg_config=(PRIMARY)'

Maybe you are looking for