Новости в ABAP

Вот пробежала ссылочка на днях: http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/18115

Очуметь! Не прошло и десяти лет! Наконец-то двадцать первый век наступил !

Особенно в числе прочих порадовала вот эта диаграммка:

ABAP 7.02

То есть: стало больше функций и !!наконец-то!! можно использовать вложенные выражения!

Я когда на язык ABAP переходил с Delphi/Pascal, то долго бился головой об стол, сетуя на ущербность языка и среды разработки. С тех пор появился новый редактор и новый отладчик, а теперь и язык хоть как-то стал ближе.

Раскраска ALV по ячейкам в ‘REUSE_ALV_GRID_DISPLAY’

Стараюсь в написанных мною отчётиках использовать ‘REUSE_ALV_GRID_DISPLAY’ почаще. Текст вызова кочует из программы в программу методом копи-паста. Но вот до раскраски дело обычно не доходило.

Спросил тут у сотрудника, который вроде как что-то недавно делал что-то подобное. А он мне ответил, что там всё так сложно и нетривиально.

Копнул, попробовал и сходу всё заработало. Запишу себе, чтоб не забыть.

В программу понадобилось внести:

1. Прописать в выходной внутренней таблице специальное поле:

data: begin of  it_detail_line.
              …
              data: cellcolors TYPE lvc_t_scol.
data end of it_detail_line .
data: it_detail like it_detail_line OCCURS 0 WITH HEADER LINE.

 

2. Прописать это поле при вызове ALV

alv_layout-coltab_fieldname = ‘CELLCOLORS’.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’

              IS_LAYOUT                = alv_layout

3. Сделать раскраску по собственному условию

loop at it_detail.

Data ls_cellcolor TYPE lvc_s_scol.
clear it_detail-cellcolors.
if it_detail-d_wrbtr < 0.
              ls_cellcolor-fname =  ‘D_WRBTR’.
              ls_cellcolor-color-col = ‘6’ .
              ls_cellcolor-color-inv = ‘0’ .
              ls_cellcolor-color-int = ‘0’ .
              APPEND ls_cellcolor TO it_detail-cellcolors.
endif.


MODIFY it_detail.
endloop.

Запускаю и вижу, что раскрас произошел успешно.

image

Пошёл, пожалуй, стукну сотрудника чем-нибудь тяжёлым…

Багофича в кишках SAP

Использовал тут в одной программке FM ‘FI_ITEMS_MASS_CHANGE’. Вроде как хорошая помогалка. Мне нужно менять только поле BSEG-ZLSPR.

С помощью этого модуля я массово менял бухгалтерские документы с памятными позициями ТАП (созданные из транзакции F-47). Всё вроде почти нормально. Даже прикрутил в выходной форме теперь любимый мной BAL.

Но когда я натравил туда документы платежного требования (из транзакции F-59, код ОГК = P), то изменения не сохранялись, а в сообщениях появилась ошибка:

Данные пакетного ввода для экрана SAPMF05L 0306 отсутствуют.

№ сообщения 00 344

Вот и развалился внутренний пакетный ввод на транзакции FB02.

Стал искать внутри, нашел загвоздку в FM ‘NEXT_DYNPRO_SEARCH’.

В табличке T019 делается выход на запись:

A    K    X        303

Хотя по факту он должен выходить на запись:

A    ‘ ‘    P        306

Если пакетник запускать в отладке в видимом режиме, то видно, что включается именно 306 экран, и никак не 303.

Просто потому, что там кое-что прописано напрямую в коде, а именно все ОГК за исключением оговорённых считаются = ‘X’.

Поискал ноты на этот счёт – не нашел ничего стоящего.

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

Вставка пакетного ввода в SM35

Пока читал всякие документы по программированию, наткнулся в том числе на краткий экскурс в пакетный ввод.

Ещё один из подходов к массовому вводу всякой всячины. Однако он годится только для пакетного ввода и не касается остальных способов, таких как BAPI.

(далее…)

Выгрузка сложного отчета в Excel

Захотелось мне создать некоторый сложный отчет. Однако если это пробовать это реализовать встроенными в SAP и ABAP средствами, то легко и просто тут ничего не получится. Однако если допустить, что можно такие данные выводить напрямую в Excel, то всё может оказаться гораздо проще.

(далее…)

Результат выполнения массовых проводок и Application Log

Я раньше как бы предполагал, что в SAP есть специальные механизмы для обработки и показа ошибок, но наконец-то решил попробовать.

Скажем типовая программа по массовой проводке или обработке документов в SAP строится по следующей схеме:

1. Выборка или сбор нужных данных

2. Подтверждение обрабатываемых данных

3. Цикл по подтверждённым данным

3.1 Запуск BAPI или BDC

3.2. Анализ результата

3.3. Красивый вывод

3.*. Конец цикла

4. Вывод итоговой информации

(далее…)

Автоматическое обновление курсов валют

Почему-то меня интересовала эта тема, причем уже достаточно давно. Копнул.

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

Ой, как я очень это богатство люблю и уважаю!

Теперь мне видится, что если немного ещё приложить в части обрамляющей алгоритмической постановки и пользовательского интерфейса – то сложится вполне и вполне красивое и действенное решение. А может даже “ноу-хау”.

SUBMIT REPORT – мелочь, а приятно

Вот понадобилось сделать проваливание в созданный документ бюджета BCS. Нашел транзакцию — FMEDD. Понажимал на ней F1 – и не нашел айдишек для вызова посредством конструкций типа:

SET PARAMETER ID ‘AAA’ FIELD AAA.
CALL TRANSACTION ‘FMEDD’ AND SKIP FIRST SCREEN.

(далее…)