Краткая инструкция по установке ядра SAP KERNEL 7.21



Ноты:

1 . Скачиваем пакет с установочными файлами ядра 51049977_6, в нем находим папки:
\51049977_6\Krnl_7.21_WIN__IA32__IA64__x64__SP09_\DATA_UNITS\K_721_U_WINDOWS_X86_64\DBINDEP
\51049977_6\Krnl_7.21_WIN__IA32__IA64__x64__SP09_\DATA_UNITS\K_721_U_WINDOWS_X86_64\ORA
Выбранные пакеты распаковываем в новую папку <new_kernel>.
2. Далее следуем ноте 1713986 (начиная с раздела 5.2) выполняем установку.
3. Стартовали систему, проверили, что все работает. Остановили систему.
4. Ставим патчи на ядро:
  • 4.1 Сначала ставим те, что не зависят от ядра: https://support.sap.com/software/patches.html -> Browse Download Catalog -> Additional Components -> SAP Kernel -> SAP KERNEL 64-BIT UNICODE -> SAP KERNEL 7.21 64-BIT UNICODE -> Windows on x64 64bit -> #Database independent
  • 4.2 Ставим те, которые соответствуют нашей БД Oracle: https://support.sap.com/software/patches.html -> Browse Download Catalog -> Additional Components -> SAP Kernel -> SAP KERNEL 64-BIT UNICODE -> SAP KERNEL 7.21 64-BIT UNICODE -> Windows on x64 64bit -> ORACLE
5. Стартуем систему проверяем, система работает.

Перечень выходных документов при внедрении SAP ERP

Данная тема не актуальна для консалтинговых компаний, так как там с этим все понятно, ну а если вы руководите внутренним проектом внедрения/перевнедрения/развития системы, то думаю, что сегодняшний обзор вам понравится.



Изначально хотели сделать список только тех документов, которые необходимы для внутренних проектов, но останавливаться не стали - решили сделать список всех возможных, чтобы можно было выбрать нужный по необходимости.

ERP - как система управления

Сегодня пост будет посвящен не отдельному модулю ERP, а системе, как систему управления в целом. SAP ERP называют системой управления предприятием, но так ли это на самом деле - попробуем порассуждать. Тема очень широкая, поэтому статья будет очень поверхностная и направлена, в первую очередь, на то, чтобы просто дать пищу для размышлений, во-вторую, чтобы зафиксировать свои рассуждения.


В теории система управления строится на понятиях: планирование, организация, мотивация и контроль. Говоря простым языком, чтобы добиться успеха, необходимо спланировать работу, организовать процесс по ее исполнению, мотивировать персонал на достижение результата и проконтролировать выполнение.


Использование трассировки ST05

Итак, пока готовится большой пост по FI, сегодня будет короткий на тему трассировки с помощью транзакции ST05.

ST05 - Трассировка

Если вы разрабатываете технические задания, а вы их непременно разрабатываете, если работаете с SAP, то вы должны уметь искать необходимые таблицы. Зачастую простой вызов F1 по полю ничего не дает, вот тогда один из вариантов это воспользоваться ST05.

Установка SAP Solution Manager 7.1

Подвернулась возможность немного позаниматься базисом, решил воспользоваться. Установил SAP Solution Manager 7.1 на Windows 2008 R2, база Oracle. До этого никогда не сталкивался, но разобрался. Благо есть документация на портале support.sap.com и конечно же на блоге у Вячеслава Шиболова http://sidadm.blogspot.ru/, за что ему отдельное спасибо.


Отмечу моменты, которые необходимо добавить в его инструкции:

  1. На чистую Win2008 R2 перед установкой надо ставить пакет Microsoft Visual С++ 2008.
  2. Если Oracle у вас выше 11-го, то не используйте в паролях символ '@'.
  3. Сразу расширьте файл подкачки до 20гб, и проверьте чтобы оперативной памяти у сервера было хотя бы 6-8Гб.
На этом пока всё, делаем бекап существующей установки и будем обновлять стек.

Подпрограмма для получения отфильтрованной таблицы при работе с cl_salv_table

Есть у меня программа, которая формирует график платежей построенный на Z-таблицах. Решили ее доработать и сделать нормальный выбор записей по кнопке "Выбрать все", если ALV отфильтрован.

Проблема была в том, что если предварительно отфильтровать ALV, а потом нажать выбрать все, то в программе выбирались все записи, включая и те, что не попали под значения фильтра. Стандартного метода у cl_salv_table по получению отфильтрованных значений нет и это немного усложнило задачу.

Свое решение я выкладываю ниже:

DATA: lt_comp_details TYPE abap_compdescr_tab,
        ls_comp_details TYPE abap_compdescr,
        ref_descr TYPE REF TO cl_abap_structdescr,
        lt_output type standard table of ts_sdata_bot,
        lo_cols TYPE REF TO cl_salv_columns,
        lo_cols_tab TYPE salv_t_column_ref,
        lo_col LIKE LINE OF lo_cols_tab,
        lo_filters TYPE REF TO cl_salv_filters,
        lo_filter TYPE REF TO cl_salv_filter,
        lv_filter_val TYPE salv_t_selopt_ref,
        lr_range TYPE RANGE OF char80,
        lv_index type sytabix,
        lo_selopt TYPE REF TO cl_salv_selopt,
        lwa_range LIKE LINE OF lr_range,
        indx      TYPE i.

  TYPES: BEGIN OF ty_filters,
    index type sytabix,
    fname type NAME_KOMP,
    range LIKE lr_range,
  END OF ty_filters.
  DATA: lt_filters TYPE SORTED TABLE OF ty_filters WITH NON-UNIQUE key index,
        ls_filters type ty_filters.

  FIELD-SYMBOLS: <lt_output> like line of  lt_output,
                 <comp> TYPE ANY.


  ref_descr ?= cl_abap_typedescr=>describe_by_name( 'TS_SDATA_BOT' ).
  lt_comp_details[] = ref_descr->components[].
  lt_output[] = gt_sdata_bot[].

  TRY .
* Columns and Filters
    lo_cols = go_grid_bot->get_columns( ).
    lo_cols_tab = lo_cols->get( ).
    lo_filters = go_grid_bot->get_filters( ).

    LOOP AT lt_output ASSIGNING  <lt_output>.
      AT FIRST.
        CLEAR: ls_filters, lt_filters[].
        LOOP AT lt_comp_details INTO ls_comp_details.
          CLEAR: lr_range, lr_range[].
          lv_index = sy-tabix.
          TRY .
* Получаем имя колонки с фильтром
            lo_filter = lo_filters->get_filter( ls_comp_details-name ).
            lv_filter_val = lo_filter->get( ).
            LOOP AT lv_filter_val INTO lo_selopt.
              lwa_range-sign = lo_selopt->get_sign( ).
              lwa_range-option = lo_selopt->get_option( ).
              lwa_range-low = lo_selopt->get_low( ).
              lwa_range-high = lo_selopt->get_high( ).

              ls_filters-fname = ls_comp_details-name.
              ls_filters-index = lv_index.
              APPEND lwa_range to lr_range.
              ls_filters-range = lr_range.
              INSERT ls_filters INTO TABLE lt_filters.
              CLEAR: lwa_range.
            ENDLOOP.
          CATCH cx_salv_not_found.
          ENDTRY.
        ENDLOOP.
      ENDAT.

      LOOP AT lt_filters INTO ls_filters.
        ASSIGN COMPONENT ls_filters-index OF STRUCTURE <lt_output> to <comp>.
        IF <comp> NOT IN ls_filters-range.
          DELETE lt_output.
          EXIT.
        ENDIF.
      ENDLOOP.
    ENDLOOP.
  CATCH CX_SY_REF_IS_INITIAL.

  ENDTRY.
**************************************************************************

  DATA: ls_output LIKE LINE OF lt_output.
  LOOP AT lt_output INTO ls_output.
    LOOP AT gt_sdata_bot INTO gl_sdata_bot
      WHERE ebeln EQ ls_output-ebeln
        AND ebelp EQ ls_output-ebelp
        AND kolvo EQ ls_output-kolvo.
      gl_sdata_bot-sel = 'X'.
      MODIFY gt_sdata_bot INDEX sy-tabix FROM gl_sdata_bot.
    ENDLOOP.
  ENDLOOP.
  go_grid_bot->refresh( refresh_mode = IF_SALV_C_REFRESH=>FULL ).

Основная идея взята отсюда: https://scn.sap.com/message/10767989#10767989

Возврат ранее уплаченного аванса с точки зрения FM

Бывают ситуации когда перечислили деньги поставщику, а услуга не была оказана и поставщик возвращает вам деньги. С точки зрения FI все понятно, провели через банковскую выписку выровняли исходящий платеж с входящим, открытые позиции на счете кредитора при это закрылись и все хорошо. Но что при этом происходит в FM?
Интересно? Тогда об этом и будет сегодняшний пост.

Итак, имеем следующие условия: заключили договор с поставщиком, создали Заказ на поставку, создали Требование авансового платежа, Оплатили (загрузили выписку в систему).

Технические настройки в модуле FM: 350-й профиль обновления, два регистра АКН - 9H и 9I. В АКН участвуют следующие документы: Заказ на поставку, Счет-фактура - БО; ТАП и Платеж - БП.

Итого, после всего ранее проделанного, на момент платежа у нас по бюджетам БО и БП виден расход на сумму Заказа на поставку для БО, Платежа для БП. Т.е. бюджет потреблен.

И тут вдруг происходит какое-то событие, после которого Поставщик не оказывает нам услуги, а возвращает платеж. В данном случае, бухгалтер загрузит выписку и входящий платеж будет проведен с техническими контировками, в отчетах по бюджету по нашей статье мы входящий документ не увидим. И это не ошибка - так работает стандарт. Для того, чтобы все встало на место и финансовые средства вернулись в бюджет именно нашей расходной статьи, а не висели на технической - нужно сделать выравнивание входящего платежа с исходящим.
До выравнивания обратите внимание, какой тип документа имеет Документ УБ для входящего платежа - он должен быть "счет-фактура". Если все так, то проводим выравнивание. Платеж обновит контировки счета-фактуры и вернет денежные средства в бюджет платежей (БП).

Но не забывайте, что в БО у вас тоже денежные средства израсходованы. Чтобы их вернуть идем в Заказ на поставку и на вкладке "Счет-фактура" поднимаем галочку "Последний счет".

После этого проверяем БО и БП - все должно быть ОК.

В одной из следующих статей я попытаюсь раскрыть такие важные моменты, как настройка счетов, финансовых позиций и типов финансовых позиций для того, чтобы вся цепочка работала так, как я описал выше.