SAP ERP / ABAP Useful Resources

Honestly, I am writing this article even more for myself - in order to somehow systematize information on the internal programming language ABAP / 4 of the SAP R / 3 system in one place. Nevertheless, I will be very glad if someone else finds it useful and saves time. I must say right away that the article is aimed at beginners who are just starting to learn ABAP / 4 (which, to some extent, I myself am).

I was immediately interested in "/ 4" and "/ 3" in the names of the product and the programming language (hereinafter referred to as the PL) for it. However, everything is very commonplace. According to Wikipedia, the letter R from R / 3 is the initial letter of the word "Realtime" and means the immediate posting and updating of data that, within the framework of integration, is immediately available to all interested departments of the enterprise. The number 3 means that the system implements the client / application server architecture / database management system (three-tier model), unlike R / 2, which worked on mainframes. And the name ABAP stands for Advanced Business Application Programming, and the number "4" symbolizes the attitude to the fourth generation of PL. The language was created in 1980 to work with the SAP R / 2 system, later inherited in SAP R / 3.directly to the wiki .

A little more detailed information compared to the wiki can be found here . In addition, on the same site you can find a book with which I would recommend starting the study of the material. Despite the fact that it was released 17 (!) Years ago, b aboutmost of the information in it remains relevant. In addition, its significant plus is that it is one of the few books on the subject, translated into Russian. Of course, the fact that the PL almost did not change over such a period of time and remains relevant to this day has caused considerable surprise (at least for me), but at least its “fundamentality” is felt. However, there is a list of functional modules (FM) in the system, which are considered obsolete. You can find it here .

Actually, my career was such that I suddenly had to retrain from a C # programmer to “abaper”. In many ways, this happened because of the crisis (I was laid off from my previous position), but, strangely enough, development for SAP turned out to be in demand. For the provincial city where I live, most factories and 1C are considered luxury, but here SAP ... However, quite lyrical.

In general, it is usually recommended to start studying with courses BC400, BC401, BC402, etc. I have 400 and 402 translated into Russian. I can drop it off by mail. The translated 401 course was found in electronic form here: Part 1 _______ Part 2
If English is also comfortable (in fact, it’s even better - nevertheless, translators often play the role of a “broken phone”), then herethere is a large list of different courses; Everything can be downloaded via direct links.

Also useful for beginners, I would include this resource . Here the author sequentially teaches step by step how to work in the system (according to him this is a necessary minimum for the Junior ABAP programmer). The last article there was written on June 7, 2015, and about alv. At first it’s very useful, but, of course, I would like the site not to be “abandoned”. By the way, some of the links indicated by me are also in a similar topic , as well as basic information on the syntax of the language.

Small understandable examples can be found here (although there are not many, but neatly designed): abapmaster.com .

I want to immediately notice that now they try not to use the method of displaying information on the screen using the WRITE keyword - it is almost completely replaced by the so-called ALV reports .
Official ALV Help .

By the way, here you can see a list of all the keywords used in the YAP AVAR / 4. And here everything is the same, only with brief examples, but not so convenient for viewing. In general, there is quite a lot of information on alv (I started from here ) and aboutmost of the time the developer will deal with this. Users always have desires like “Can I have such a z-report so that, as in an xxx transaction, is it simpler and with other tables?”

(Note: In SAP R / 3, all programs, tables, etc. created by users must begin with the letters y or z ).

Many examples with source can be taken from here . This resource offers to learn everything in 21 days ... Very optimistic, but the articles are really good. Everything is in English.

Here and here AVAR developers' blogs; You can find some useful tips.
By the way, those who do not want to understand all these matters for a long time havespecial magic link . Those who are extremely serious and determined are not required to go on it. There are a lot of goodies for beginning developers here, and in general there are useful things on the site - hiding source codes, checking source codes for "hardcode" and so on.

Next are already large sites - not only for beginners, but also for seasoned “sappers”. About ABAP in general and about ALV in particular . A little about BADI and WebDyn technologies is written here (English). Here, too, I found useful things, but the resource is English.
From here I took a lot of examples (in particular, small tricks for working with transactions). Responsive Forum. Good resources in Russian.

The official reference on AVAR . Those who want to test themselves or prepare for certification can download the application or read the book . Here are random questions with relatively detailed answers.
Examples of certification questions:

  • 50 questions with answers to abap-iq.blogspot.ru
  • 100 questions with answers to abap-iq.blogspot.ru
  • 29 questions with answers at the end of pdf
  • 16 questions with answers at the end of pdf
  • 90 questions (but no answers)
  • More links ...
  • 93 more questions with 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: ABCD
    C: B
    D: BCD


    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


Also in SAP, they like to give “non-speaking” names to tables and variables, but they came up with

mnemonic rhyme in English to remember the names of some basic tables
Ring the bells of all SAP tables.
Remember Bank tables start with B, say «BKNF, BKPF».
Remember Customer tables start with K, say «KNA1,KONV».
Remember Material tables start with M, say «MARA, MAKT, MARC».
Remember Master data tables start with T, say «T001, T001W».
Remember Purchasing tables start with E, say «EKKO, EKPO»
Remember Sales table start with V, say «VBAK,VBAP».
Remember Vendor tables start with L, say «LFA1».
Ring the bells of all SAP tables.
Six main FI tables, six important FI tables.
They contain an I if it is an open item.
They contain an A if it is a closed item.
They contain an S if a GL account say «BSIS, BSAS».
Ring the bells of all SAP tables.
As i was remembering the table names of Billing, Delivery, Sales and Purchasing.
Each table had a K if it is a header data, say «VBAK, VBAP, LIKP, VBRK, EKKO».
Each table had a P if it is an item data, say «VBAP, LIPS, VBRP, EKPO».
Ring the bells of all SAP tables.
With a D at the end, the table is a Customer
With a K at the end, the table is a Vendor.
Finally TSTC tables danced for keeping the list of all transaction codes
Ring the bells of all SAP tables.

Кроме того, много информации есть и в самой системе:
Транзакция ABAPDOCU – ABAP документация и примеры.
Транзакция ABAPHELP — Документация по ключевому слову.
Транзакция BIBS – примеры пользовательского интерфейса для ABAP программ.
Транзакция DWDM – демо примеры с использованием Enjoy контролов.
Транзакция SE83 – библиотека REUSE примеров с ALV и прочими контролами.
Программа ADBC_DEMO – демо программа ADBC API (для подключения к внешним базам данных).
Программа BALVBT01 – демонстрация множественного использования ALV.
Программа SHOWICON – список всех иконок.
Программа SHOWCOLO – все цвета используемые во WRITE или ALV.
Программа SHOWLINE – всевозможные линии во write отчётах.
Программа SHOWSYMB – символы.
Программа RPR_ABAP_SOURCE_SCAN – поиск в исходных кодах.
Программа RSBDCOS0 – выполнение системных команд на сервере.
Программа REPTRAN – массовая выгрузка исходников.
Программа RSINCL00 – получить внешние вызовы ФМ, транзакций и проч.

Пример удобного способа последовательного выбора параметров:
  1. REPORT zre_test.
  2.  
  3. PARAMETERS:
  4.   p_matnr TYPE matnr,       " Материал
  5.   p_werks TYPE werks,       " Завод
  6.   p_lgort TYPE mard-lgort.  " Склад
  7.  
  8. AT SELECTION-SCREEN OUTPUT.
  9.   LOOP AT SCREEN.
  10.     IF screen-NAME = 'P_WERKS' AND p_matnr IS INITIAL.
  11.       screen-INPUT = '0'.
  12.       CLEAR p_werks.
  13.       MODIFY SCREEN.
  14.     ENDIF.
  15.     IF screen-NAME = 'P_LGORT' AND p_werks IS INITIAL.
  16.       screen-INPUT = '0'.
  17.       CLEAR p_lgort.
  18.       MODIFY SCREEN.
  19.     ENDIF.
  20.   ENDLOOP.
  21.  
  22. AT SELECTION-SCREEN ON p_matnr.
  23.   SELECT SINGLE matnr INTO (p_matnr) FROM mara WHERE matnr = p_matnr.
  24.   IF sy-subrc NE 0.
  25.     p_matnr = ''.
  26.   ELSE.
  27.     LOOP AT SCREEN.
  28.       IF screen-NAME = 'P_WERKS'.
  29.         screen-INPUT = '1'.
  30.         MODIFY SCREEN.
  31.       ENDIF.
  32.     ENDLOOP.
  33.   ENDIF.
  34.  
  35. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.
  36.   CALL FUNCTION 'EINGABEWERTE_WERK'
  37.     EXPORTING
  38.       kzall         = ' '
  39.       kzbew_werk    = ' '
  40.       matnr         = p_matnr
  41.     IMPORTING
  42.       werks         = p_werks.
  43.  
  44. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_lgort.
  45.   CALL FUNCTION 'EINGABEWERTE_LGORT'
  46.     EXPORTING
  47.       kzall         = ' '
  48.       matnr         = p_matnr
  49.       werks         = p_werks
  50.     IMPORTING
  51.       lagerort      = p_lgort
  52.       werks         = p_werks
  53.     EXCEPTIONS
  54.       ERROR_MESSAGE = 1.


The standard IDE themes in the SAP GUI do not imply a dark theme, but I prefer to use it.

Here you can download the settings.

Link to the article on how to, and how not to program (relevant not only for AVAR). Well, to continue the topic, here are some examples of the implementation of "design patterns" on ABAP / 4:


You can learn more about templates (and not only) here .

A couple of links on functional modules (FM) for displaying pop-ups in AVAR:

  1. Here are screenshots and small examples on the use of each FM
  2. Here is a listing of a comprehensive example with various kinds of pop-ups

The link contains more materials related to system administration (compiled by the site author), but there are also things to do with programming.

A small program for importing / exporting SAP tables into text files - it came in handy a couple of times.

An example implementation of a selection screen and an alv report within a single screen.

In general, the presentation turned out to be a little crumpled, but to be honest, I'm not a writer. Once again, I note that almost all links will be of interest exclusively to beginners (I would be happy if I found a similar article in due time). Those who have been studying the subject for at least six months, most likely, have already found all the material on their own on the Internet. I will be glad to any of your corrections / additions in the comments. Thanks.

I’ll update the article a bit. I found another resource, it looks good: sapbrainsonline.com

More links from comments:

irvil November 6, 2015 at 20:08:
On sapland.ru there are often useful articles on ABAP. There is also a Russian-language forum sapforum.biz .

amok November 7, 2015 at 09:38:
Official help has been updated to version 7.50

Also popular now: