DATA _var TYPE _type _elementary_type: _custom_type: Commenting: „inline
DATA _var LIKE _var i, f - num TYPES _type TYPE _type *whole line CONSTANTS _var TYPE _type VALUE _value c, string - char (Internal) tables (like arrays, lists, queues): DATA _data_ref TYPE REF TO _data_object d, t - date/time DATA _table TYPE _table_type GET REFERENCE OF _var INTO _data_ref Structures: TABLE OF _line_type WITH _key_type KEY _key CLASS _class DEFINITION TYPES: BEGIN OF _structure _visibility SECTION _component TYPE _type TYPES _table TYPE _table_type OF INTERFACES _interface END OF _structure _line_type WITH _key_type _key METHODS: Access structure: _structure-_component _table_type: _instance_method _parameter_interface _parameter_interface(classes and functions): STANDARD, SORTED, HASHED CLASS-METHODS: IMPORTING _im_var TYPE _pi_type _line_type == _structure: _static_method _parameter_interface EXPORTING _ex_var TYPE _pi_type DATA _line TYPE LINE OF _line_type DATA _instance_attribute TYPE _type CHANGING _ch_var TYPE _pi_type _key_type: CLASS-DATA _static_attribute TYPE _type RETURNING VALUE(_ret_var) TYPE _pi_type UNIQUE, NON-UNIQUE _pi_type (special generics and others): Table access: CLASS _class IMPLEMENTATION ANY, ANY TABLE, INDEX TABLE, TABLE, index, key METHOD _method STANDARD TABLE, SORTED TABLE, HASHED Table index operations(different with keys): DATA _data_ref TYPE REF TO _class TABLE, _type READ TABLE _table INDEX _value INTO _line CREATE OBJECT _data_ref TYPE _object's_class Parameters in interface can be: LOOP AT _table INTO _line Constructor: method named constructor OPTIONAL, DEFAULT APPEND _line TO _table INSERT _line INTO _table INDEX _value _visibility: PRIVATE, PROTECTED, PUBLIC CALL METHOD/CALL FUNCTION DELETE _table INDEX _value EXPORTING _im_var = _var (pass by value) MODIFY _table FROM _line INDEX _value DEFINITION INHERITING FROM _superclass IMPORTING _ex_var = _var (pass by value) SORT _table „Overriding“: CHANGING _ch_var = _var (pass by reference) CLEAR _table METHODS: _superclass_method REDEFINING RECEIVING _ret_var = _var (or functional call) *sum to existing one or append new entry INTERFACE _interface COLLECT _line INTO _table Functional call(functions as operands, only has METHODS: importing and returning): SQL query: _interface_method IF _functional( _var.._var ) SELECT _db_table~_db_column.._db_column EVENTS _event Dynamic call: FROM _db_table INNER JOIN _db_table ON EXPORTING VALUE(_ev_var) TYPE _type CALL METHOD _object->(_method_name) _db_table~_db_column = _db_table~_db_column *implement in class which defines the event: CALL FUNCTION _function_name INTO (CORRESPONDING FIELDS OF) _table RAISE EVENT _event EXPORTING _ev_var = _var Pass parameters with PARAMETER-TABLE WHERE _db_column = _var.._db_column <> _var *define as public in a class which reacts: WRITE _method_name/_function_name IN GROUP BY _db_column.._db_column METHODS: _ev_handler FOR EVENT _event OF UPPERCASE LETTERS eg. 'OUTPUT_ME' HAVING _db_column = _var.._db_column <> _var _class_or_interface IMPORTING _ev_var ORDER BY _db_column ASCENDING/DESCENDING IF _expression WHILE _expression *during program execution define: WHERE additions: ELSEIF _expression DO _number TIMES SET HANDLER: _object->_ev_handler FOR _object BETWEEN, LIKE, IN ELSE _expression super->_superclass_method =, <>, AND, NOT, OR and others Aggregate functions(use GROUP BY and HAVING): _object->_instance_method_or_attribute MAX, AVG, SUM, COUNT String operations: _class=>_static_method_or_attribute Database cursor for iterative access: CONCATENATE _var.._var INTO _var _object->_interface~_interface_method OPEN CURSOR _cursor FOR _SQL_query CONDENSE _var NO-GAPS Method Class DO TRANSLATE _var TO UPPER CASE/USING _mask_pairs ABSTRACT no implementation no objects FETCH NEXT CURSOR _cursor INTO _line SEARCH _var FOR _var FINAL no overridding no inheritence IF sy-subrc <> 0. SPLIT _var AT _value INTO _var.._var „STATIC“ shared by the whole tree N/A CLOSE CURSOR. EXIT. STRLEN( _var ) Mislav Jakšić, jaksicmislav@gmail.com Dense ABAP Syntax Cheatsheet Native SQL: Math func: ABS, SIGN, CEIL, FLOOR, TRUNC, FRAC, EXEC SQL _native_statement all trigonometric, EXP, LOG, LOG10, SQRT Files on application server: Generic and dynamic programming: OPEN DATASET _file_path FOR _operation Get data object type as string: IN _mode DESCRIBE FIELD _var TYPE _s_var TRANSFER _var TO _file_path New way(RTTS: RTTI, RTTC): READ DATASET _file_path INTO _var _t_var = cl_abap_typedescr=> CLOSE DATASET _file_path describe_by_data( _var ) _operation: _s_var = _t_var->get_relative_name() APPENDING, OUTPUT, INPUT Get structure components type names: _mode: DATA _s_var TYPE REF TO cl_abap_structdescr BINARY MODE, TEXT MODE _s_var ?= cl_abap_typedescr=> Field symbols(generic handling, pointers): describe_by_data( _var ) FIELD-SYMBOLS <_field_symbol> TYPE _type DATA _component TYPE abap_compdescr ASSIGN _var TO <_field_symbol> LOOP AT _s_var->components INTO _component ASSIGN COMPONENT _component OF STRUCTURE _component-name, _component-type_kind, ... _structure TO <_field_symbol> Create and access data object dynamicaly: Check existance: DATA _var TYPE REF TO data _var IS INITIAL CREATE DATA _var TYPE (_value) _data_ref IS BOUND Access dynamicaly created object: _field_symbol IS ASSIGNED FIELD-SYMBOLS <symbol> TYPE data IN _table ASSIGN _var->* TO <symbol> and from then on use <symbol> Adressing subfields: _var+_offset_value(_length_value) MESSAGE _value TYPE _m_type MESSAGE _t_nnn(_m_class) Unit testing(inline comment must be written): _t_nnn: CLASS _t_class DEFINITION FOR TESTING. „#AU Risk_Level Harmless _T is _m_type, _nnn are 3 digits in _m_class METHODS: _m_type: 'A', 'E', 'I', 'S', 'W', 'X' _t_method FOR TESTING. CLASS _t_class IMPLEMENTATION. *if _t_nnn has & in definition, they are METHOD _t_method replaced with _char.._char: MESSAGE _t_nnn(_m_class) WITH _chars.._chars *execute function and other statements cl_aunit_assert=>assert_equals( FORM _subroutine act = _returned_result , USING _var (pass by reference) exp = _expected_result, USING CHANGING _var (pass by referense) msg = 'Display when false') USING VALUE(_var) (pass by value) PERFORM _subroutine User memory (shared by all ABAP programs): GET PARAMETER ID _field_id FIELD _var SET PARAMETER ID _field_id FIELD _var ABAP memory (shared by a call sequence): EXPORT _var TO MEMORY ID _value IMPORT _m_data = _var.._m_data = _var TO MEMORY ID _value DELETE FROM MEMORY ID _value
Mislav Jakšić, jaksicmislav@gmail.com
Dense ABAP Syntax Cheatsheet System fields(flags with values): SE02 : System Messages WE41 : Display Outbound Process Code SY-DATLO local date of the user SE03 : Transport Organizer Tools (Excellent Doc) WE42 : Display Inbound Process Code SY-TIMLO local time of the user Change Object Directory Entries:Change Package WE60 : IDoc Documentation SY-INDEX current number of loop pass SE09 : Transport Organizer WE81 : Display EDI:Logical Message Types SY-TABIX last adressed table line SE11 : ABAP Dictionary WEDI : Enter A Special Menu SY-SUBRC return value of last run command SE14 : Database Utility (Detailed and Complex) SY-TCODE name of current transaction SE15 : Repository (Search for Everything) AL11 : Application Server Directories SY-UCOMM function code triggered during PAI SE16 : Data Browser (View and Create Entries) BAPI : Business App Programming Interface SY-UNAME current user's name SE16n: General Table Display BD64 : Distribution Model SY-REPID name of current ABAP program SE18 : BAbl Builder Definition BD87 : Select IDoc, ALE Messages And many others SE19 : BAdl Builder Implementation BSVW : Event Status Creation SE24 : Class/Interface Builder SWE2 : Event Type Linkage Packages: SE30 : Runtime Analysis CG3Y : Download Files From Application Server SABAPDEMOS : ABAP program examples SE32 : Text Elements in Programs/Classes CG3Z : Upload File To Application Server SE83 : reuse library SE37 : Function Modules CMOD : SAP Enhancement Project Management SE39 : Split Screen ABAP Editor SMOD : SAP Enhancement Function modules: SE41 : Menu Painter SECATT:Make and execute eCATTs SPELL_AMOUNT : currency to words SE63 : Standard Translation Enviroment SFW5 : Switch Framework, activate functions C14W_NUMBER_CHAR_CONVERSION : number to string SHDB : Batch Input Transaction Recorder HR_HR_LAST_DAY_OF_MONTH : get the last day of SE71 : SAPscript Form Painter SMARTFORMS: Smart Forms Initial Screen the month SE72 : SAPscript Styles SPRO : Customizing SE73 : SAPscript Font/Bar Code Maintenence ST03N: Workload (User Activity by Transaction) Program: SE75 : SAPscript Settings ST22 : ABAP Runtime Error (View) RSTXSCRP : SAPscript export/import to file SE78 : SAPscript graphics STAD : Workload, Business Transaction Analysis RSUSR200 : lists data about user logons STATTRACE: Functional Trace SE80 : Object Navigator (Main Programming Tool) SU21 : Authorization Object Maintenence SE83 : Reuse Library SE90 : Transaction Maintenance SE91 : Message Maintenence SE92 : System Log Message Maintenence SE93 : Transaction Maintenence