Техническое описание технологии FDQM Smart Merge.
Итак, в данный скоуп работ входит следующее :
-
1) Создание вспомогательной технической таблицы, в которую будем вносить все события выгрузки данных из FDQM
-
2) Создание механизма сохранения событий выгрузки
-
3) Расширение операции выгрузки данных.
Далее, чуть подробнее, по каждому пункту. Конечно, это не готовое решение, а лишь руководство к действию.
Для хранения событий выгрузки нам потребуется следующая техническая информация:
1) PoV – Point of View, который состоит из LOCATION (площадка), PERIOD, TARGET_PERIOD, SRC_CAT, TARGET_CAT
2) Имени файла FILE_NAME
3) Тип файла FILE_TYPE
4) И необязательная информация, которая может быть использована для целей аудита. Это имя пользователя (USER_NAME), дата выгрузки (LOAD_DATE), статус выгрузки (PROCESS_STATE)
Эту таблицу (XXFDM_LOAD_ACT_HISTORY) будем заполнять в момент формирование файла, для этого расширяем базовый функционал с помощью расширения события “BefLoad” .
Часть информации, мы стандартно получаем с помощью переданных параметров
(strLoc (LOCATION) , strCat(SRC_CAT) , strPer(PERIOD) , strTCat(TARGET_CAT) , strTPer(TARGET_PERIOD), strFile(FILE_NAME)). Остальное собираем с помощью API :
strUserName = DW.Connection.PstrUserID
lngStatus = API.MaintenanceMgr.fProcessStatus(CStr(strLoc), CStr(strCat), CStr(strPerName)).lngStatus
Записываем все переданные параметры в нашу таблицу логов (XXFDM_LOAD_ACT_HISTORY)
strSQL = “insert into XXFDM_LOAD_ACT_HISTORY(LOCATION,” & _
“PERIOD,” & _
“TARGET_PERIOD,” & _
“SRC_CAT,” & _
“TARGET_CAT,” & _
“FILE_NAME,” & _
“FILE_TYPE,” & _
“USER_NAME,” & _
“LOAD_DATE,” & _
“PROCESS_STATE,” & _
“PROCESS_STETE_DEC)” & _
“VALUES(‘” & strLoc & “‘,” & _
“‘” & strPerName & “‘,” & _
“‘” & strTPerName & “‘,” & _
“‘” & strCat & “‘,” & _
“‘” & strTCat & “‘,” & _
“‘” & strFile & “‘,” & _
“‘” & strFileType & “‘,” & _
“‘” & strUserName & “‘,” & _
“sysdate,” & _
CStr(lngStatus) & “,” & _
“‘” & strStatusDesc & “‘)”
DW.DataManipulation.fExecuteDML(strSQL)
Подготовка системы к работе выполнена, теперь собственно операция “FDQM Smart Merge”.
Снова расширяем события FDQM, на этот раз нам потребуется “AftExportToDat”.
Тут есть нюансы : В Hyperion Financial Managment загружаются данные следующих типов
-
1) Оборотная -сальдовая ведомость деятельности предприятия за указанный период. Данные загружаются как PERiodic. Для этого случая нам нужна история загрузки в разрезе
LOCATION,PERIOD,CAT
-
2) Журнальные корректировки деятельности предприятия за год. Данные загружаются нарастающим итогом с начала года (YTD). Для этого случая нам нужна история загрузки в разрезе LOCATION,CAT
После того, как сформировали SQL , выбрав имена файлов по заданным параметрам, организуем по этому курсору цикл.
Dim rsSQL
Set rsSQL = DW.DataAccess.farsSnap(strSQL)
Do While Not rsSQL.eof
Call ParseFile (rsSQL.Fields(“FILE_NAME”).Value,strFile,strTPer(0),CInt(rsSQL.Fields(“isYtd”)), rsSQL.Fields(“data”))rsSQL.movenext()
Loop
rsSQL.Close()
WriteLogEvent Err.Number & ” ” & Err.Description
WriteLogEvent ” ” & “Загрузка завершена ”
End Sub
“isYtd” – признак того, что данные идут либо за PERiodic, либо YTD
“data” – чем заменять данные , либо “0”, либо “NODATA”
В процедуре ParseFile, построчно читаем файлы, полученные из курсора и меняем в них значения на NODATA или 0 (в случае YTD). Так же для YTD меняем загружаемый период.
Это все что требуется сделать, для реализации технологии FDQM Smart Merge