среда, 18 июля 2018 г.

Изящная очистка таблицы от чего-либо


*"  Очистка от null
    gt_fields CAST cl_abap_structdescr(
        CAST cl_abap_tabledescr(
            cl_abap_tabledescr=>describe_by_dataRESULT_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.

четверг, 12 июля 2018 г.

2LIS_02_ITM и другие 2LIS сегмента 02. Удаление позиции документа.


Оказывается, что наличие индикатора «последний счет» и «конечная поставка» при удаленной позиции в заказе, заказ не считается удаленным.



Ссылки:


ROCANCEL - Cancellation of Data Record

This field can contain the following values:
·        ‘blank‘ – New data record
·        ‘X’ – Cancellation of data record
·        ‘R’ – Deletion of data record
For more information, see SAP Note 578471Deleted Items in BW and Statistics



среда, 11 июля 2018 г.

Курсы валют


Мы уже не первый раз сталкиваемся с проблемой пересчета курсов валют не через RUB, т.к. ЦБ отдает курс только к этой валюте, а для переводов типа EUR -> JPY, приходится изобретать переходы типа EUR -> RUB -> JPY.


Можно настроить пересчёт для любого типа курса по-умолчанию через выбранную валюту. Это глобальная настройка – ракурс V_TCURV, поле – BWAER (Базовая валюта для пересчета валют):


вторник, 10 июля 2018 г.

Пример AMDP на поле в трансформации

METHOD PROCEDURE BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY
  using /BIC/MZV01001
.
 -INSERT YOUR CODING HERE

    outTab =
        select
           map(wbs_elem."/BIC/ZV01911", null, '1', '2') as "/BIC/ZFA2020"
           src.RECORD
           src.SQL__PROCEDURE__SOURCE__RECORD
        from :inTab src
            left join "/BIC/MZV01001" as wbs_elem
              on src.zps_psp_pnr wbs_elem."/BIC/ZV01911"
                and wbs_elem."/BIC/ZV01901" = 'IV'
                and src.bedat between wbs_elem.datefrom and wbs_elem.dateto
        ;


    if :i_error_handling 'TRUE' then
        errorTab =
            select
                'Duplicate WBS elem mapping' as ERROR_TEXT
                SQL__PROCEDURE__SOURCE__RECORD
            from :outTab
            group by SQL__PROCEDURE__SOURCE__RECORD
            having count(11
        ;
    end if;
ENDMETHOD.