Узнать откуда вызвали RFC

Буквально вчера пришлось выяснять как изнутри RFC ФМ узнать систему из которой он вызвался.
Скажу кратко ФМ - 'RFC_SYSTEM_INFO' вызываем его как DESTINATION 'BACK'.
Пример вызова:

Если мы вызовем ФМ таким образом не через RFC то он ничего не возвращает.

или можно вызвать ФМ 'RFC_GET_ATTRIBUTES' тоже вернет информацию о системе

Добавить файл в архив

Не часто в abap возникает задача поместить сгенерированный программой файл в архив. Мне такое пригодилось только один раз, когда понадобилось обойти ограничение почтового сервера на пересылку файлов определенного типа.
Для работы с архивом можно использовать класс cl_abap_zip
Пример кода:
Читать далее «Добавить файл в архив»

Изменение доступности опций выбора в Select-Options.

Практически в каждом отчете мы используем Select-options. При этом по умолчанию нам доступны все опции выбора.

Но  что делать если нам нужен только четкое равенство? Постоянно проверять ввод с экрана? Нет, можно убрать ненужные опции выбора.
для этого напишем следующий код:

Читать далее «Изменение доступности опций выбора в Select-Options.»

Получить унаследованное значение BUKRS\KOSTL

В транзакциях PPOSE\PPOME на вкладке "Контировка" мы можем увидеть значения, унаследованные от вышестоящих организационных единиц в структуре. При этом для текущей единицы записи в ИТ 1008 не создается.
Многие пытаются писать свои велосипеды для поиска значений.

Получить значения, а также их периоды можем при помощи ФМ RH_ACC_FIND_OM


Чтение оценки времени

На одном из проектов, столкнулся со странным чтением кластера оценки времени. Кто-то лезет запросом, кто-то макросом.
Мне кажется, удобнее использовать ФМ HR_TIME_RESULTS_IN_INTERVAL он читает данные как из кластера B1 так и из B2. Проблем с ним не возникало.

Просмотр кластера оценки времени:
RPCLSTB1 - просмотр кластера B1
RPCLSTB2 - просмотр кластера B2

Удаление оценки времени:
RPUP1D00 - очистка PCL1
RPUP2D00 - очистка PCL2

Сторно документа измерения (PM)

Для сторно в фоновом режиме используем ФМ MEASUREM_DOCUM_RFC_CANCEL

 

Связь ИТ 2001 и 2006. Проблемы с неправильным списанием лимитов.

Записи ИТ 2001 "Отсутствия" и ИТ 2006 "Лимиты отсутствия" связаны между собой через таблицу PTQUODED поля QUONR и DOCNR. Связь происходит автоматически.
Бывает, что в процессе эксплуатации по тем или иным причинам записи лимитов становятся не корректными, т.к. отсутствия списаны не правильно. Исправить данную ситуацию поможет отчет - RPTBPC10.

Причем на одном из рабочих мест не знали этого и потеряли таким образом почти месяц моего отпуска, пришлось показать как работает. Будьте внимательны, берегите себя и свои лимиты)))

QA12 и QA14 отмена разрешения об использовании

Для отмены РИ можно использовать расширение QEVA0008 в CMOD. Там же есть пример кода - LXQEVF10. Просто копипастим его в инклуд и все готово. В транзакции можем вызвать пользовательскую функцию из меню:

Читать далее «QA12 и QA14 отмена разрешения об использовании»

cl_reca_gui_f4_popup – класс для создания справки

cl_reca_gui_f4_popup -   класс обертка позволяющая  быстро выводить средство поиска. Можно использовать как один из вариантов для f4

 

REUSE_ALV_FIELDCATALOG_MERGE – крик души

Пожалуйста, прекратите использовать это г***о, нормально этот ФМ никогда не работал и уже не будет работать.
Проблемы:

  1. Ошибка при наличии слишком длинной строки 72 символа в ПРОГРАММЕ. ПРОГРАММЕ, КАРЛ!!!;
  2. Не возможность использования локальных типов, а если их нельзя использовать, то и смысла нет в применении именно этого ФМ;
  3. Проблема со старыми записями в буфере ALV, т.е. если вы изменили структуру иногда необходимо сбросить буфер при помощи программ
    BALVBUFDEL или BCALV_BUFFER_DEL_SHARED. 

Если вы думаете, что использование данного ФМ экономит время разработки - то это не так. Позже начинаются танцы с бубном при переименовании полей, например.
Был случай с тем, что просто перестал искать структуру в INCLUDE и помогло только указание имени программы в параметр i_inclname.
Гораздо проще и удобнее, создать структуру в словаре и строить каталог полей при помощи ФМ LVC_FIELDCATALOG_MERGE

Если не прав, жду ваших замечаний