SECTION 1 — ESCAPING OF HOST
VARIABLES (15 MCQs)
1. In Open SQL, host variables must be escaped using:
a) :variable
b) @variable
c) $variable
d) #variable
Answer: b
2. Without escaping @, ABAP assumes host variable is a(n):
a) SQL field
b) ABAP structure
c) Literal
d) Column name
Answer: d
3. Which is correct syntax?
a) SELECT * FROM scarr WHERE carrid = @id
b) SELECT * FROM scarr WHERE carrid = id
c) SELECT * FROM scarr WHERE carrid = :id
d) SELECT * FROM scarr WHERE carrid = #id
Answer: a
4. Comma-separated column list is allowed from which version?
a) 7.31
b) 7.40
c) 7.50
d) 7.52
Answer: b
5. Which is valid?
a) SELECT carrid, connid INTO TABLE @DATA(tab) FROM spfli
b) SELECT carrid connid INTO TABLE @DATA(tab) FROM spfli
c) SELECT (carrid, connid) INTO TABLE @DATA(tab) FROM spfli
d) SELECT {carrid, connid} INTO TABLE @DATA(tab) FROM spfli
Answer: a
6. For escaping host variables in ORDER BY:
a) ORDER BY @x
b) ORDER BY (x)
c) ORDER BY (@x)
d) ORDER BY (x)
Answer: d
13. Which variable must be escaped in INTO clause?
a) INTO @DATA(result)
b) INTO DATA(result)
c) INTO @result ONLY
d) INTO result
Answer: a
15. Error occurs if host variables NOT escaped in:
a) WHERE
b) HAVING
c) ORDER BY dynamic
d) All of the above
Answer: d
SECTION 2 — ARITHMETIC
EXPRESSIONS (10 MCQs)
16. Which arithmetic expression is valid?
a) lv_sum = a + b * c.
b) lv_sum = a * (b + c).
c) lv_sum = a ** b.
d) Both a & b
Answer: d
18. Which operator performs integer division?
a) /
b) DIV
c) MOD
d) **
Answer: b
20. Operator to calculate remainder?
a) REM
b) DIV
c) MOD
d) %
Answer: c
22. Which is valid assignment?
a) result = a + b - c.
b) result += a.
c) result ++.
d) result = sum(a,b).
Answer: a
SECTION 3 — STRING EXPRESSIONS (15
MCQs)
26. New string template syntax is:
a) |text|
b) text
c) 'text'
d) $text$
Answer: a
29. What is result?
lv = |ABAP { 2 + 3 }|
a) ABAP 23
b) ABAP 5
c) ABAP {2 + 3}
d) ABAP 2+3
Answer: b
31. Which function removes spaces?
a) condense( )
b) shift( )
c) escape( )
d) to_upper( )
Answer: a
34. Which is valid string template?
a) |{ lv_text ALPHA = IN }|
b) |ALPHA IN = { lv_text }|
c) |{ lv_text CASE = UPPER }|
d) Both a & c
Answer: d
SECTION 4 — CONDITIONAL
EXPRESSIONS (20 MCQs)
36. Conditional operator is:
a) COND
b) CASE
c) WHEN
d) IF
Answer: a
37. Which syntax is correct?
a) result = COND #( WHEN a > b THEN a ELSE b ).
b) result = COND ( WHEN a > b THEN a ELSE b ).
c) result = COND_IF #( a > b ).
d) result = WHEN #( a > b THEN a ).
Answer: a
40. Switch expression syntax?
a) SWITCH #( … )
b) CASE #( … )
c) WHEN #( … )
d) IF #( … )
Answer: a
45. Purpose of SWITCH?
a) Multi-branch return expression
b) Loop
c) Compare tables
d) Escape variables
Answer: a
50. In COND, ELSE is:
a) Mandatory
b) Optional
c) Forbidden
d) Only in loops
Answer: a
SECTION 5 — INLINE DECLARATIONS
(10 MCQs)
51. Inline declaration operator is:
a) @
b) #
c) DATA(#)
d) DATA(x)
Answer: c
52. LET expression is used for:
a) Temporary variables inside expressions
b) LOOPS only
c) DB connections
d) Method declarations
Answer: a
55. Correct syntax:
a) DATA(lv) = 10.
b) DATA(lv) TYPE i = 10.
c) DATA(lv) = 'A'.
d) All of them
Answer: d
SECTION 6 — ADVANCED TABLE
OPERATIONS (20 MCQs)
61. NEW operator is used for:
a) Create object
b) Create structure/table row
c) Create class
d) None
Answer: b
62. VALUE operator used for:
a) Filling internal tables
b) Filling structures
c) Both
d) None
Answer: c
63. FILTER operator returns:
a) All fields
b) Filtered internal table
c) Key only
d) Structure
Answer: b
65. REDUCE is used for:
a) Summation loops
b) Accumulation
c) Conversions
d) Both a & b
Answer: d
68. LOOP AT GROUP is used in:
a) Grouped loops
b) AT NEW / AT END
c) Control level
d) All of the above
Answer: d
70. FOR is used in:
a) Table comprehension
b) DO loops
c) WHILE
d) SQL
Answer: a
75. SORTED table ensures:
a) Unique key
b) Sorted order
c) Binary search
d) All
Answer: d
SECTION 7 — OPEN SQL
ENHANCEMENTS (20 MCQs)
76. LIMIT clause introduced in:
a) 7.31
b) 7.40
c) 7.52
d) 7.70
Answer: b
77. OFFSET used to:
a) Skip rows
b) Skip characters
c) Skip columns
d) Skip bytes
Answer: a
78. ORDER BY PRIMARY KEY is:
a) Valid
b) Invalid
c) Deprecated
d) Only for cluster tables
Answer: a
80. UNION in SQL returns:
a) Duplicate rows also
b) Only distinct rows
c) Both based on option
d) Not allowed
Answer: c
82. SQL expression to compare structures:
a) CORRESPONDING FIELDS OF
b) CORRESPONDING #( )
c) CORRELATE( )
d) ALIGN #( )
Answer: b
85. Open SQL supports:
a) RIGHT OUTER JOIN
b) FULL OUTER JOIN
c) BOTH
d) ONLY LEFT OUTER JOIN
Answer: a
88. IN clause now supports:
a) Table variables
b) Ranges
c) Internal table of values
d) All
Answer: d
90. Aggregations can be used with:
a) GROUP BY
b) HAVING
c) JOIN
d) All
Answer: d
Done!
60 ADVANCED ABAP MCQs
INLINE DECLARATION (10 MCQs)
1. Inline declaration is NOT allowed in:
a) DATA()
b) FINAL()
c) SELECT … INTO @DATA(x)
d) FORM parameters
Answer: d
2. Which is valid inline declaration?
a) DATA(var) TYPE string.
b) DATA(var) = 'ABAP'.
c) DATA: var TYPE string VALUE 'ABAP'.
d) Both a & b
Answer: d
3. Inline declaration creates:
a) Local variable
b) Global variable
c) Static attribute
d) Constant only
Answer: a
4. FINAL( ) is used for:
a) Constants
b) Read-only variable
c) SQL field
d) Return values only
Answer: b
5. LET expression is used for:
a) Declaring temp variables inside expressions
b) Declaring constants
c) SQL clauses
d) Declaring events
Answer: a
6. Inline declaration NOT allowed in:
a) CALL FUNCTION parameter
b) LOOP AT INTO DATA(x)
c) READ TABLE INTO DATA(x)
d) SELECT … INTO @DATA(result)
Answer: a
7. Which gives a syntax error?
a) LOOP AT itab INTO DATA(row).
b) CATCH cx_root INTO DATA(lx).
c) fld = VALUE #( ).
d) WRITE DATA(x).
Answer: d
8. Inline declarations default type from:
a) Dictionary
b) Data source
c) RHS expression
d) System type
Answer: c
9. Inline declarations with VALUE create:
a) Immutable variable
b) Temporary anonymous data
c) Deep structure
d) Internal table
Answer: b
10. Inline declaration inside COND:
a) Allowed using LET
b) Never allowed
c) Only with SWITCH
d) Only with CORRESPONDING
Answer: a
EXACT OPERATOR (5 MCQs)
11. EXACT operator is used to:
a) Prevent lossless conversions
b) Force strict type checking
c) Catch conversion errors
d) All of above
Answer: d
12. What happens?
lv_i = EXACT i( '123X' ).
a) lv_i = 123
b) lv_i = 0
c) Runtime error
d) Syntax error
Answer: c
13. EXACT is mainly used with:
a) Table keys
b) Numeric/string conversions
c) SQL conversions
d) Object references
Answer: b
14. EXACT operator used inside:
a) VALUE
b) COND
c) Constructor operators
d) All above
Answer: d
15. EXACT fails if:
a) String contains non-numeric
b) Data loss occurs
c) Overflow occurs
d) All above
Answer: d
REFERENCE OPERATOR (REF / GET
REFERENCE) (10 MCQs)
16. REF operator creates:
a) Hard link
b) Reference variable
c) Deep copy
d) None
Answer: b
17. Which is valid?
a) DATA(ref) = REF #( var ).
b) ref = GET REFERENCE OF var.
c) ref->* = var.
d) All
Answer: d
18. Dereferencing a reference is done using:
a) ->
b) ->*
c) *->
d) *ref
Answer: b
19. REF #( ) refers to:
a) Address of variable
b) Value of variable
c) Deep copy
d) Class only
Answer: a
20. Field symbols + references used for:
a) Runtime assignments
b) Dynamic access
c) Performance
d) All
Answer: d
21. Which reference type points to objects?
a) DATA REF TO data
b) DATA REF TO object
c) DATA object TYPE REF TO data
d) DATA data TYPE REF TO object
Answer: d
22. GET REFERENCE OF works on:
a) Any variable
b) Only objects
c) Only structures
d) Only internal tables
Answer: a
23. ref-> is used to:*
a) Move reference
b) Assign reference
c) Dereference
d) Free memory
Answer: c
24. You use reference operator when you want:
a) Copy semantics
b) Alias semantics
c) SQL enhancements
d) Casting
Answer: b
25. Assigning reference to field symbol:
a) ASSIGN ref->* TO <fs>
b) ASSIGN ref-* TO <fs>
c) ASSIGN ref => <fs>
d) None
Answer: a
COND (Conditional Operator) (5 MCQs)
26. COND returns:
a) Boolean
b) Any data type
c) Only char
d) Only numeric
Answer: b
27. COND without ELSE causes:
a) Warning
b) Error
c) Fallback to initial value
d) Runtime error
Answer: b
28. Syntax of COND:
a) COND #( WHEN… THEN… ELSE… )
b) COND( … )
c) COND…ENDCOND
d) LET…COND
Answer: a
29. LET inside COND allows:
a) Inline temporary vars
b) SQL variables
c) Range tables
d) Constant pools
Answer: a
30. COND evaluates:
a) All WHEN
b) Only first matching WHEN
c) Last WHEN
d) Random
Answer: b
SWITCH Operator (5 MCQs)
31. SWITCH is used for:
a) Multi-branch expression
b) SQL
c) Loop control
d) Object creation
Answer: a
32. SWITCH requires:
a) ELSE mandatory
b) ELSE optional
c) ELSE forbidden
d) ELSE only with CASE
Answer: a
33. Switching based on:
a) Field-symbol
b) Data objects
c) Calculated expressions
d) All
Answer: d
34. Syntax:
a) SWITCH type #( value WHEN val THEN … ELSE … )
b) SWITCH #( … )
c) CASE #( … )
d) COND #( … )
Answer: a
35. SWITCH differs from CASE because:
a) It’s expression-based
b) No END statement
c) No fall-through
d) All
Answer: d
line_exists( ) (5 MCQs)
36. line_exists( ) returns:
a) Boolean (abap_bool)
b) Index
c) Line itself
d) XSTRING
Answer: a
37. What does this return?
IF line_exists( itab[ key = 10 ] ).
a) TRUE
b) FALSE
c) SY-SUBRC
d) LINE NUMBER
Answer: a/b (depends on table)
38. line_exists is faster than:
a) READ TABLE
b) LOOP AT
c) FILTER
d) SORT
Answer: a
39. line_exists needs:
a) Unique key
b) Fully specified key
c) Any partial key
d) No key
Answer: b
40. For hashed tables, line_exists uses:
a) Binary search
b) Hash lookup
c) Linear search
d) Tree search
Answer: b
REDUCE Operator (10 MCQs)
41. REDUCE used for:
a) Summing values
b) Counting
c) Text concatenation
d) All
Answer: d
42. REDUCE needs:
a) INIT & NEXT
b) LET only
c) INTO keyword
d) GROUP BY
Answer: a
43. Syntax:
a) REDUCE type( INIT x = 0 NEXT x = x + 1 ).
b) REDUCE #( … )
c) REDUCE{…}
d) ACCUMULATE #( … )
Answer: a
44. Does REDUCE allow FOR expressions?
a) Yes
b) No
Answer: a
45. What does REDUCE return?
a) Internal table
b) Single value
c) Structure
d) Object
Answer: b
46. REDUCE iterates on:
a) Explicit loop
b) FOR expression
c) Iterator
d) All
Answer: d
47. REDUCE cannot:
a) Build table
b) Build string
c) Sum integers
d) Build structure
Answer: a
48. In REDUCE, INIT defines:
a) Initial accumulator
b) Final result
c) Loop index
d) Table key
Answer: a
49. NEXT block:
a) Executes per iteration
b) Executes after loop
c) Executes before loop
d) Executes twice
Answer: a
50. REDUCE performance equals:
a) LOOP
b) DO
c) WHILE
d) All
Answer: d
FILTER Operator (5 MCQs)
51. FILTER requires:
a) Sorted table
b) Hashed table
c) Internal table with key
d) DB table
Answer: c
52. FILTER returns:
a) New internal table
b) New structure
c) Index
d) Boolean
Answer: a
53. FILTER #( itab USING KEY keyname WHERE field = value )
a) Valid
b) Invalid
Answer: a
54. FILTER with EXCEPT:
a) Exists
b) Does not exist
Answer: b
55. FILTER operates:
a) Always with binary search
b) Based on table key definition
c) Linear scan
d) SQL lookup
Answer: b
ADVANCED ABAP TOPICS (5 MCQs)
56. Constructor operator VALUE used for:
a) Build structures/tables
b) Build strings
c) Build objects
d) All
Answer: a
57. NEW creates:
a) Data reference with fresh memory
b) Object instance
c) Table row
d) All above
Answer: d
58. LOOP AT GROUP is used in:
a) Grouped loops (GROUP BY)
b) Normal loop
c) For internal tables only
d) For objects only
Answer: a
59. FOR expression used for:
a) Table comprehension
b) Generating new tables
c) Filling structures
d) All
Answer: d
60. CORRESPONDING #( ) used for:
a) Move corresponding with mapping
b) Create deep copy
c) Filter fields
d) Convert types
Answer: a