ФМы для чтения ИТ и ЛБД в HR. Почему их надо использовать

Немного сумбурных мыслей.
Информация для разработчиков, которые ранее не работали с модулем HR и не очень понимают, зачем при разработке в данном модуле использовать ЛБД или ФМ для выборки данных вместо селектов. Как всегда более подробно в курсах. В данном случае это HR350. Не претендую на идеальное и полное изложение материала. 

Читать далее «ФМы для чтения ИТ и ЛБД в HR. Почему их надо использовать»

BADI. Поиск и использование

Business Add-Ins

User-Exits позволяют клиентам прикрепить дополнительный код для стандартных SAP исходный код без необходимости изменения исходного объекта. Business Add-Ins SAP методика расширений, основанная на ABAP Objects.

Служат для того, чтобы вносить модификацию в алгоритм обработки объекта и свести к минимуму работы при обновлении системы.

Основным преимуществом данной концепции является возможность повторного использования. BAdI может быть реализован несколько раз.

Читать далее «BADI. Поиск и использование»

Генерация XML документа средствами ABAP

Создать документ xml можно несколькими способами. Например, трансформации, использование специальных ФМов и классов.

Класс if_ixml_document позволяет создавать новый и  получать данные из готового документа.

Пример создания простого xml файла:

Читать далее «Генерация XML документа средствами ABAP»

ЛБД PNPCE пропускает табельный

Бывает, что табельный номер не попадает в выборку  события GET pernr. Одна из причин - нехватка полномочий на один из инфо-типов или даже подтипов. Если у нас нет возможности добавить полномочий пользователю, можно использовать макрос  pnp_sw_skip_pernr = N. Табельный номер не будет пропущен, но данные выберутся только из подтипов на которые есть полномочия.

Дополнительные поля в Инфо-Наборе

Для заполнения дополнительных полей в инфо-наборе можно сделать следующее:

1. Создать расширенную структуру CI_Pnnnn_AF для ИТ;
2. Создать ФМ для заполнения дополнительных полей. Для образца можно взять ФМ RPAQ_GET_AF_NNNN;
3. В таблице T770AF прописать структуру и ФМ для заполнения дополнительных полей к ней;
4. В таблице T77ID прописать дополнительную структуру для ИТ;(Скорее всего необходимость данного пункта была из-за особенностей моей системы. В идеале запись должна создаваться автоматически)
5. Актуализируем дополнительные поля в инфо-наборе Инфо-набор->Другие функции->Актуализировать дополн. поля в HR.

Добавление нового поля в таблицу с записями.

В результате тестирования разработки оказалось, что при выборке из Z* таблицы выбираются не все значения.
В таблице у нас находятся 15 записей. В se11 мы видим, что у пяти записей в поле del_flag = 'X', у десяти del_flag пустой.

Далее выполняем три запроса к таблице:

В результате имеем: все 15 записей в таблице lt_table_1, 5 записей с del_flag = 'X' в таблице lt_table_2 и ТОЛЬКО 5 записей в таблице lt_table_3 с del_flag 'X'. Куда же делись еще 5 записей, которые должны были выбраться в таблицу ls_table_3 ?

Читать далее «Добавление нового поля в таблицу с записями.»

CALL TRANSACTION ‘QE01’

В одной из программ потребовалось вызвать транзакцию QE01 ввести там данные и вернуться в исходную транзакцию. Но в некоторых случаях вместо возврата в исходную программу, возвращалиcь в меню SAP. Оказалось, что транзакция в некоторых случаях вызывала другие при помощи LEAVE TO TRANSACTION, причем экраны были практически идентичны. А LEAVE очищает стек вызовов, и после выполнения транзакции просто некуда было возвращаться. В нашем случае, если были частичные партии, вызывалась транзакция QE14. Проблему решили тем, что теперь мы вызываем две транзакции в зависимости от наличия частичных партий QE01 и QE14 соответственно. Проблема с возвратом в исходную программу решена.