Привет!
В результате изучения различных решений я пришел к выводу, что проще и универсальнее сделать расчет производственной премии следующим образом. Для расчета мне нужны некоторые цифры, а именно среднесписочная численность по МВЗ, производственные показатели, суммы. На первом этапе внедрения механизма мы решили сделать полуавтоматический режим. В этом случае численность и сами сотрудники берутся из BW-HR, производственные показатели пока вводятся вручную (как только настроим модуль PP, то будем тоже брать из BW-PP).
В HR системе делаем правило для формирования вида времени с численностью. В правиле мы считаем, что сотруднику положен бонус, если он не отсутствовал по ряду причин. Искомый вид времени 9BW2.
Создаем вид времени для целей отчетности в кластере ракурсов VC_T557I и присваиваем этот вид времени 9BW2. Теперь система BW может получать данные из этого вида времени. У меня логика простая — человек считается за единицу каждый календарный день, если он трудоспособен.
В системе BW сделан куб, в который загружаются данные из HR в разрезе: сотрудник, МВЗ, календарный день, вид времени. С помощью средств того же BW мы можем подсчитать количество дней между двумя датами. Поэтому сделаны два отчета:
- Численность по МВЗ
- Список сотрудников по МВЗ
Первый отчет выдает общее количество сотрудников, кому положен бонус. Это наш делитель для общей суммы бонуса. Второй отчет показывает этих сотрудников поименно.
Теперь начинаем творить фокусы. Для фокуса создается отдельная роль в BW, создается отдельная рабочая книга. В этой книге и происходит весь расчет бонуса с помощью формул MS Excel. Иными словами, я загружаю два отчета из BW на один лист Excel. С помощью формул MS Excel рассчитываю бонус. А по кнопке с небольшим VBA кодом формируется выходной файл вида: сотрудник, сумма бонуса. Этот файл и будет загружаться в HR с помощью либо LSMW, либо WinShuttle. Пока что я новичок в BW, поэтому все выглядит немного страшненько, но вот так добавляются два отчета в рабочую книгу.
А вот так выглядит кнопка запуска. Поля с датами связаны через ссылки в Excel, что позволяет на одном экране задать параметры фильтров, нажать кнопку, передать параметры в наши отчеты.
Плюс маленький макрос для формирования выходного файла:
Sub Run()
Dim sSheet As Object
Set sSheet = ThisWorkbook.Worksheets(«SAPDATA»)
sSheet.BUTTON_2_Click
sSheet.BUTTON_3_Click
MsgBox («Data was updated»)
End Sub
Sub ExportData()
Dim iSource
Dim iDest
‘ Go through all employees
iSource = 2
iDest = 1
Worksheets(«Export»).Cells.ClearContents
Do While Not IsEmpty(Worksheets(«SAPDATA»).Range(«E» & iSource).Value)
If Round(Worksheets(«SAPDATA»).Range(«E» & iSource).Value, 0) > 0 Then
bonus = getBonus(Worksheets(«SAPDATA»).Range(«B» & iSource).Value)
If bonus > 0 Then
Worksheets(«Export»).Range(«A» & iDest).Value = Worksheets(«SAPDATA»).Range(«A» & iSource).Value
Worksheets(«Export»).Range(«B» & iDest).Value = Worksheets(«SAPDATA»).Range(«B» & iSource).Value
Worksheets(«Export»).Range(«C» & iDest).Value = Worksheets(«SAPDATA»).Range(«C» & iSource).Value
Worksheets(«Export»).Range(«D» & iDest).Value = Worksheets(«SAPDATA»).Range(«D» & iSource).Value
Worksheets(«Export»).Range(«E» & iDest).Value = bonus
iDest = iDest + 1
End If
End If
iSource = iSource + 1
Loop
MsgBox («Data was exported»)
Worksheets(«Export»).Select
End Sub
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.