среда, 10 октября 2018 г.
вторник, 2 октября 2018 г.
Новый синтаксис АБАП. Перекладка записей между таблицами, с заполнением полей константами. Круто
lt_map_filtr = VALUE #(
FOR entry IN lt_load_param
INDEX INTO ind ( VALUE #(
BASE CORRESPONDING #( entry )
numb = ind
analytics = `CALMONTH`
opti = entry-cm_option
low = entry-cm_low
high = entry-cm_high
)
)
).
lv_tab type table of string,
lv_tab = VALUE #( for entry in lv_range ( entry-low && | | && entry-high ) ).
FOR entry IN lt_load_param
INDEX INTO ind ( VALUE #(
BASE CORRESPONDING #( entry )
numb = ind
analytics = `CALMONTH`
opti = entry-cm_option
low = entry-cm_low
high = entry-cm_high
)
)
).
lv_tab type table of string,
lv_tab = VALUE #( for entry in lv_range ( entry-low && | | && entry-high ) ).
четверг, 27 сентября 2018 г.
Сжимаем таблицу в HANA
После сжатия куба вручную запускаем сжатие на таблице:
UPDATE "SAPMBP"."/BIC/FZFA5XT01" WITH PARAMETERS ('OPTIMIZE_COMPRESSION' = 'FORCE');
UPDATE "SAPMBP"."/BIC/FZFA5XT01" WITH PARAMETERS ('OPTIMIZE_COMPRESSION' = 'FORCE');
пятница, 21 сентября 2018 г.
понедельник, 17 сентября 2018 г.
BAPI_EXCHANGERATE_CREATE/BAPI_EXCHRATE_CREATEMULTIPLE. Ошибка E! 005
Однако, со старыми ФМниками нужно осторожнее работать.
Курсы валют хотели загружать, через PI\PO, так как централизованно ведутся в MDM, а ERP на общем типе валют ведёт свои z-пересчёты.
Стандартное решение - BAPI_EXCHANGERATE_CREATE/BAPI_EXCHRATE_CREATEMULTIPLE. Особенность в том, что руками эти ФМ не протестировать, так как нужен commit после вызова.
Пример кода, чтобы не забыть:
DATA: exch_rate LIKE bapi1093_0 OCCURS 1 WITH HEADER LINE,
rettab LIKE bapiret2 OCCURS 1 WITH HEADER LINE.
exch_rate-rate_type = 'M'.
exch_rate-from_curr = 'USD'.
exch_rate-to_currncy = 'RUB'.
exch_rate-valid_from = '20180918'.
exch_rate-exch_rate = '66'.
exch_rate-from_factor = 1.
exch_rate-to_factor = 1.
CALL FUNCTION 'BAPI_EXCHANGERATE_CREATE'
EXPORTING
exch_rate = exch_rate
* UPD_ALLOW = ' '
* CHG_FIXED = ' '
* DEV_ALLOW = '000'
IMPORTING
return = rettab
* RATE_TYPE =
* FROM_CURR =
* TO_CURRNCY =
.
READ TABLE rettab INTO DATA(ls_return) WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
cl_demo_output=>display( rettab ).
Курсы валют хотели загружать, через PI\PO, так как централизованно ведутся в MDM, а ERP на общем типе валют ведёт свои z-пересчёты.
Стандартное решение - BAPI_EXCHANGERATE_CREATE/BAPI_EXCHRATE_CREATEMULTIPLE. Особенность в том, что руками эти ФМ не протестировать, так как нужен commit после вызова.
Пример кода, чтобы не забыть:
DATA: exch_rate LIKE bapi1093_0 OCCURS 1 WITH HEADER LINE,
rettab LIKE bapiret2 OCCURS 1 WITH HEADER LINE.
exch_rate-rate_type = 'M'.
exch_rate-from_curr = 'USD'.
exch_rate-to_currncy = 'RUB'.
exch_rate-valid_from = '20180918'.
exch_rate-exch_rate = '66'.
exch_rate-from_factor = 1.
exch_rate-to_factor = 1.
CALL FUNCTION 'BAPI_EXCHANGERATE_CREATE'
EXPORTING
exch_rate = exch_rate
* UPD_ALLOW = ' '
* CHG_FIXED = ' '
* DEV_ALLOW = '000'
IMPORTING
return = rettab
* RATE_TYPE =
* FROM_CURR =
* TO_CURRNCY =
.
READ TABLE rettab INTO DATA(ls_return) WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
cl_demo_output=>display( rettab ).
понедельник, 10 сентября 2018 г.
Function module 'TRINT_TADIR_QUERY' not: found.: :
Обновились до 7.5 11sp, и сразу при переносах web-экстракторов стали ловить ошибку:
Function module 'TRINT_TADIR_QUERY' not: found.: :
Ошибка при активации Источник данных ZX02_MTR_MD_01 WEB
Лечится нотой 2553661.
Function module 'TRINT_TADIR_QUERY' not: found.: :
Ошибка при активации Источник данных ZX02_MTR_MD_01 WEB
Лечится нотой 2553661.
среда, 18 июля 2018 г.
Изящная очистка таблицы от чего-либо
*" Очистка от null
gt_fields = CAST cl_abap_structdescr(
CAST cl_abap_tabledescr(
cl_abap_tabledescr=>describe_by_data( RESULT_PACKAGE )
)->get_table_line_type(
)
)->get_components(
).
LOOP AT RESULT_PACKAGE ASSIGNING <result_fields>.
LOOP AT gt_fields ASSIGNING FIELD-SYMBOL(<fs_fields>).
ASSIGN COMPONENT <fs_fields>-name OF STRUCTURE <result_fields>
TO FIELD-SYMBOL(<fs_field>).
field = <fs_field>.
REPLACE ALL OCCURRENCES OF `null`
IN field
WITH ``
IGNORING CASE.
<fs_field> = field.
ENDLOOP.
ENDLOOP.
Подписаться на:
Сообщения (Atom)