Академический Документы
Профессиональный Документы
Культура Документы
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
Native SQL: Generic and dynamic programming:
EXEC SQL _native_statement Get data object type as string:
Files on application server: DESCRIBE FIELD _var TYPE _s_var
OPEN DATABASE _file_path FOR _operation New way(RTTS: RTTI, RTTC):
IN _mode _t_var = cl_abap_typedescr=>
TRANSFER _var TO _file_path describe_by_data( _var )
READ DATASET _file_path INTO _var _s_var = _t_var->get_relative_name()
CLOSE DATASET _file_path Get structure components type names:
_operation: DATA _s_var TYPE REF TO cl_abap_structdescr
APPENDING, OUTPUT, INPUT _s_var ?= cl_abap_typedescr=>
_mode: describe_by_data( _var )
BINARY MODE, TEXT MODE DATA _component TYPE abap_compdescr
Field symbols(generic handling, pointers): LOOP AT _s_var->components INTO _component
FIELD-SYMBOLS <_field_symbol> TYPE _type _component-name, _component-type_kind, ...
ASSIGN _var TO <_field_symbol> Create and access data object dynamicaly:
ASSIGN COMPONENT _component OF STRUCTURE DATA _var TYPE REF TO data
_structure TO <_field_symbol> CREATE DATA _var TYPE (_value)
Access dynamicaly created object:
Check existance:
FIELD-SYMBOLS <symbol> TYPE data
_var IS INITIAL
_field_symbol IS ASSIGNED ASSIGN _var->* TO <symbol>
IN _table and from then on use <symbol>
MESSAGE _value TYPE _m_type
Adressing subfields:
_var+_offset_value(_length_value) MESSAGE _t_nnn(_m_class)
_t_nnn:
Unit testing(inline comment must be written):
_T is _m_type, _nnn are 3 digits in _m_class
CLASS _t_class DEFINITION FOR TESTING. „#AU
_m_type:
Risk_Level Harmless
'A', 'E', 'I', 'S', 'W', 'X'
METHODS:
*if _t_nnn has & in definition, they are
_t_method FOR TESTING.
replaced with _char.._char:
CLASS _t_class IMPLEMENTATION.
MESSAGE _t_nnn(_m_class) WITH _chars.._chars
METHOD _t_method
*execute function and other statements FORM _subroutine
USING _var (pass by reference)
cl_aunit_assert=>assert_equals(
USING VALUE(_var) (pass by value)
act = _returned_result ,
exp = _expected_result, PERFORM _subroutine
msg = 'Display when false')
Math func: ABS, SIGN, CEIL, FLOOR, TRUNC, FRAC,
all trigonometric, EXP, LOG, LOG10, SQRT
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