АО БК Софт
Илья Чаркин
Май 2019
ABAP Releases
Слайд 2
Основы
• только юникод
с системной кодовой страницей UTF-16
• INT8
от
-9223372036854775808 до +9223372036854775807.
Слайд 3
Выражения и функции
• IS INSTANCE OF
• CASE TYPE OF
• Класс CL_ABAP_CORRESPONDING
Слайд 4
IS INSTANCE OF
До 7.50 С 7.50
TRY. IF typedescr IS INSTANCE OF cl_abap_elemdescr.
elemdescr ?= typedescr. DATA(elemdescr) = CAST cl_abap_elemdescr( typedescr ).
... ...
CATCH cx_sy_move_cast_error. ELSEIF typedescr IS INSTANCE OF cl_abap_structdescr.
TRY. DATA(structdescr) = CAST cl_abap_structdescr( typedescr ).
structdescr ?= typedescr. ...
... ELSEIF typedescr IS INSTANCE OF cl_abap_tabledescr.
CATCH cx_sy_move_cast_error. DATA(tabledescr) = CAST cl_abap_tabledescr( typedescr ).
TRY. ...
tabledescr ?= typedescr. ELSE.
... ...
CATCH cx_sy_move_cast_error. ENDIF.
...
ENDTRY.
ENDTRY.
ENDTRY.
Слайд 5
CASE TYPE OF
DATA(typedescr) = cl_abap_typedescr=>describe_by_data(
param ).
CASE TYPE OF typedescr.
WHEN TYPE cl_abap_elemdescr INTO DATA(elemdescr).
...
WHEN TYPE cl_abap_structdescr INTO DATA(structdescr).
...
WHEN TYPE cl_abap_tabledescr INTO DATA(tabledescr).
...
WHEN OTHERS.
...
ENDCASE.
Слайд 6
Object Component Selector ->
itab[ ... ]->comp ... data(n1) = itab[ 1 ]->value.
Слайд 7
CL_ABAP_CORRESPONDING
DATA(mapper) =
cl_abap_corresponding=>create(
source = struct1
destination = struct2
mapping = VALUE cl_abap_corresponding=>mapping_table(
( level = 0 kind = 1 srcname = 'a1' dstname = 'b3' )
( level = 0 kind = 1 srcname = 'a3' dstname = 'b1' )
( level = 0 kind = 3 ) ) ).
mapper->execute( EXPORTING source = struct1
CHANGING destination = struct2 ).
Слайд 8
Open SQL Release 7.5
• Более высокая выразительность в
выражениях Open SQL благодаря
улучшенному синтаксису
• Новые и улучшенные функции и
выражения SQL, такие как CONCAT,
LPAD, REPLACE, расширенный
COALESCE
• Поддержка UNION / UNION ALL
• Подзапросы как источник данных
INSERT
• Доступ к глобальным временным
таблицам
Слайд 9
HOST expressions
… @( abap_expression ) …
SELECT carrid, connid, cityfrom, cityto
FROM spfli
WHERE carrid =
@( VALUE spfli-carrid( carriers[ KEY name
carrname = name ]-carrid
OPTIONAL ) )
INTO TABLE @DATA(result).
Слайд 10
Expressions SQL
SELECT carrid, connid, fldate, seatsmax, seatsocc,
seatsmax – seatsocc AS seatsfree
FROM sflight
WHERE seatsmax – seatsocc > @( meth( ) )
INTO TABLE @DATA(result).
ROUND , CONCAT , LPAD , LENGTH ,
REPLACE , RIGHT , RTRIM , SUBSTRING .
Слайд 11
SELECT UNION
До 7.5 С 7.5
DATA prog_range TYPE RANGE OF trdir-name. DATA prog_range TYPE RANGE OF trdir-name.
SELECT 'I' AS sign, 'EQ' AS option, SELECT 'I' AS sign, 'EQ' AS option, obj_name AS low, ' ' AS high
obj_name AS low, ' ' AS high FROM tadir
FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND devclass =
WHERE pgmid = 'R3TR' AND object = 'PROG' AND devclass @devclass
= @devclass
INTO TABLE @prog_range. UNION
SELECT 'I' AS sign, 'EQ' AS option,
SELECT 'I' AS sign, 'EQ' AS option, 'SAPL' && obj_name AS low, ' ' AS high
'SAPL' && obj_name AS low, ' ' AS high FROM tadir
FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND devclass =
WHERE pgmid = 'R3TR' AND object = 'FUGR' AND devclass @devclass
= @devclass INTO TABLE @prog_range.
APPENDING TABLE @prog_range.
Слайд 12
Подзапросы как источник
данных INSERT
INSERT demo_sumdist_agg FROM
( SELECT
FROM scarr AS s
INNER JOIN spfli AS p ON s~carrid = p~carrid
FIELDS s~carrname,
p~distid,
SUM( p~distance ) AS sum_distance
GROUP BY s~mandt, s~carrname, p~distid ).
Слайд 13
Глобальные временные
таблицы (GTTs)
Слайд 14
Динамические RFC-адреса
Класс cl_dynamic_destination
DATA(dest) =
cl_dynamic_destination=>create_rfc_destination(
logon_client = …
logon_user = …
logon_language = …
sid = …
server = …
group = …
… ).
CALL FUNCTION ‘DEMO_RFM_PARAMETERS’
DESTINATION dest
EXPORTING …
Слайд 15
Converting Messages into
Exceptions
meth( EXCEPTIONS exception = 4 ).
IF sy-subrc = 4.
RAISE EXCEPTION TYPE cx_demo_dyn_t100
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Слайд 16
Вопросы?
Более подробная информация есть в материалах SAP:
https://blogs.sap.com/2015/11/27/abap-language-news-for-release-75
0
/
https://
help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/index.htm?fi
le=abennews-750.htm
Слайд 17
Спасибо за внимание!
Слайд 18