вторник, 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 ) ).

четверг, 27 сентября 2018 г.

Сжимаем таблицу в HANA

После сжатия куба вручную запускаем сжатие на таблице:

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 ).

понедельник, 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.

среда, 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.