SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Таны мэдэж байгаагаар SAP нь гүйлгээний өгөгдлийг хадгалах, дүн шинжилгээ хийх, тайлагнах системд эдгээр өгөгдлийг боловсруулахад зориулагдсан бүх төрлийн програм хангамжийг санал болгодог. Ялангуяа SAP Business Warehouse (SAP BW) платформ нь техникийн өргөн боломж бүхий өгөгдлийг хадгалах, дүн шинжилгээ хийх хэрэгсэл юм. Бүх объектив давуу талуудын хувьд SAP BW систем нь нэг чухал сул талтай. Энэ нь өгөгдлийг хадгалах, боловсруулах өндөр зардал бөгөөд ялангуяа Hana дээр үүлд суурилсан SAP BW ашиглах үед мэдэгдэхүйц юм.

Хэрэв та SAP бус, илүү тохиромжтой OpenSource бүтээгдэхүүнийг хадгалах сан болгон ашиглаж эхэлбэл яах вэ? X5 Retail Group-ийн бид GreenPlum-ийг сонгосон. Энэ нь мэдээжийн хэрэг зардлын асуудлыг шийддэг боловч үүнтэй зэрэгцэн SAP BW-ийг ашиглах үед бараг анхдагчаар шийдэгдсэн асуудлууд нэн даруй гарч ирдэг.

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Ялангуяа SAP шийдлүүд нь гол төлөв эх системээс өгөгдлийг хэрхэн татаж авах вэ?

Хүний нөөцийн хэмжүүр бол энэ асуудлыг шийдвэрлэх шаардлагатай анхны төсөл юм. Бидний зорилго бол хүний ​​нөөцийн мэдээллийн санг бий болгох, ажилтнуудтай ажиллах чиглэлээр аналитик тайлан гаргах явдал байв. Энэ тохиолдолд мэдээллийн гол эх сурвалж нь SAP HCM гүйлгээний систем бөгөөд үүнд боловсон хүчин, зохион байгуулалт, цалин хөлсний бүх үйл ажиллагаа явагддаг.

Өгөгдөл олборлолт

SAP BW-д SAP системд зориулсан стандарт өгөгдөл олборлогч байдаг. Эдгээр олборлогч нь шаардлагатай өгөгдлийг автоматаар цуглуулж, түүний бүрэн бүтэн байдлыг хянаж, өөрчлөлтийн дельтийг тодорхойлох боломжтой. Жишээлбэл, 0EMPLOYEE_ATTR ажилтны шинж чанаруудын стандарт мэдээллийн эх сурвалж энд байна:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Нэг ажилтны хувьд үүнээс өгөгдөл гаргаж авсны үр дүн:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Шаардлагатай бол ийм олборлогчийг өөрийн шаардлагад нийцүүлэн өөрчлөх эсвэл өөрийн олборлогчийг бий болгож болно.

Хамгийн түрүүнд гарч ирсэн санаа бол тэдгээрийг дахин ашиглах боломж байв. Харамсалтай нь энэ нь боломжгүй ажил болж хувирав. Ихэнх логик нь SAP BW тал дээр хэрэгждэг бөгөөд олборлогчийг SAP BW-ээс эх үүсвэрээс нь өвдөлтгүй салгах боломжгүй байв.

Бид SAP системээс өгөгдөл гаргаж авах механизмаа боловсруулах хэрэгтэй болох нь тодорхой болсон.

SAP HCM дахь өгөгдөл хадгалах бүтэц

Ийм механизмд тавигдах шаардлагыг ойлгохын тулд эхлээд бидэнд ямар өгөгдөл хэрэгтэйг тодорхойлох хэрэгтэй.

SAP HCM дахь ихэнх өгөгдөл нь хавтгай SQL хүснэгтэд хадгалагддаг. Энэхүү өгөгдөл дээр үндэслэн SAP програмууд нь байгууллагын бүтэц, ажилтнууд болон хүний ​​нөөцийн бусад мэдээллийг хэрэглэгчдэд дүрслэн харуулдаг. Жишээлбэл, SAP HCM-д зохион байгуулалтын бүтэц иймэрхүү харагдаж байна.

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Физикийн хувьд ийм модыг хоёр хүснэгтэд хадгалдаг - hrp1000 объект, hrp1001-д эдгээр объектуудын хоорондын холболтууд.

"Хэлтэс 1" ба "Оффис 1" объектууд:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Объектуудын хоорондын хамаарал:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Хоёр төрлийн объект, тэдгээрийн хоорондын холболтын төрлүүд асар олон байж болно. Объектуудын хооронд стандарт холболтууд болон өөрийн хэрэгцээнд тохируулсан холболтууд байдаг. Жишээлбэл, зохион байгуулалтын нэгж болон орон тооны албан тушаалын хоорондох стандарт В012 харилцаа нь хэлтсийн даргыг заадаг.

SAP дээрх менежерийн дэлгэц:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Өгөгдлийн сангийн хүснэгтэд хадгалах:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Ажилчдын мэдээллийг pa* хүснэгтэд хадгалдаг. Жишээлбэл, ажилтны боловсон хүчний үйл явдлын талаархи мэдээллийг pa0000 хүснэгтэд хадгалдаг

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

GreenPlum нь "түүхий" өгөгдлийг авахаар шийдсэн, өөрөөр хэлбэл. зүгээр л SAP хүснэгтээс хуулж ав. GreenPlum-д тэдгээрийг шууд боловсруулж, физик объект (жишээлбэл, хэлтэс эсвэл ажилтан) болон хэмжигдэхүүн (жишээлбэл, дундаж ажилтны тоо) болгон хувиргах болно.

70 орчим хүснэгтийг тодорхойлсон бөгөөд тэдгээрийн өгөгдлийг GreenPlum руу шилжүүлэх ёстой. Үүний дараа бид энэ өгөгдлийг дамжуулах аргыг боловсруулж эхлэв.

SAP нь нэлээд олон тооны интеграцийн механизмуудыг санал болгодог. Гэхдээ хамгийн хялбар арга бол лицензийн хязгаарлалтын улмаас мэдээллийн санд шууд нэвтрэхийг хориглодог. Тиймээс бүх интеграцийн урсгалыг програмын серверийн түвшинд хэрэгжүүлэх ёстой.
Дараагийн асуудал бол SAP мэдээллийн санд устгасан бичлэгийн талаарх мэдээлэл дутмаг байсан. Өгөгдлийн сан дахь мөрийг устгахад энэ нь физик байдлаар устгагдана. Тэдгээр. өөрчлөлтийн цаг дээр суурилсан өөрчлөлтийн дельта үүсэх боломжгүй байсан.

Мэдээжийн хэрэг, SAP HCM нь өгөгдлийн өөрчлөлтийг бүртгэх механизмтай байдаг. Жишээлбэл, дараа нь хүлээн авагчийн системд шилжүүлэхийн тулд аливаа өөрчлөлтийг бүртгэдэг өөрчлөлтийн заагчууд байдаг бөгөөд үүний үндсэн дээр Idoc (гадаад систем рүү шилжүүлэх объект) үүсдэг.

0302 дугаартай ажилтны 1251445 мэдээллийн төрлийг өөрчлөх IDoc жишээ:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Эсвэл DBTABLOG хүснэгтэд өгөгдлийн өөрчлөлтийн бүртгэл хөтлөх.

hrp53216375 хүснэгтээс QK1000 түлхүүр бүхий бичлэгийг устгах бүртгэлийн жишээ:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Гэхдээ эдгээр механизмууд нь шаардлагатай бүх өгөгдөлд байдаггүй бөгөөд тэдгээрийг програмын серверийн түвшинд боловсруулахад маш их нөөцийг зарцуулдаг. Тиймээс шаардлагатай бүх хүснэгтэд бүртгэлийг их хэмжээгээр идэвхжүүлэх нь системийн гүйцэтгэлийн мэдэгдэхүйц доройтолд хүргэж болзошгүй юм.

Дараагийн гол асуудал бол кластер хүснэгтүүд байв. SAP HCM-ийн RDBMS хувилбар дахь цагийн тооцоо, цалингийн мэдээллийг ажилтан бүрийн логик хүснэгтийн багц хэлбэрээр хадгалдаг. Эдгээр логик хүснэгтүүд нь pcl2 хүснэгтэд хоёртын өгөгдөл хэлбэрээр хадгалагддаг.

Цалингийн кластер:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Кластерт хүснэгтийн өгөгдлийг SQL команд гэж үзэх боломжгүй, гэхдээ SAP HCM макро эсвэл тусгай функцийн модулиудыг ашиглах шаардлагатай. Үүний дагуу ийм хүснэгтүүдийг унших хурд нэлээд бага байх болно. Нөгөөтэйгүүр, ийм кластерууд сард нэг л удаа шаардлагатай өгөгдлийг хадгалдаг - эцсийн цалингийн тооцоо, цаг хугацааны тооцоо. Тиймээс энэ тохиолдолд хурд нь тийм ч чухал биш юм.

Өгөгдлийн өөрчлөлтийн гурвалжин үүсгэх хувилбаруудыг үнэлэхдээ бид бүрэн буулгах сонголтыг авч үзэхээр шийдсэн. Өдөр бүр систем хооронд өөрчлөгдөөгүй гигабайт өгөгдлийг дамжуулах сонголт тийм ч сайн харагдахгүй байж магадгүй юм. Гэсэн хэдий ч, энэ нь бас хэд хэдэн давуу талтай байдаг - эх талдаа дельтийг хэрэгжүүлэх, хүлээн авагч тал дээр энэ дельтагийн суулгацыг хэрэгжүүлэх шаардлагагүй. Үүний дагуу зардал, хэрэгжүүлэх хугацаа багасч, интеграцийн найдвартай байдал нэмэгддэг. Үүний зэрэгцээ, SAP HR-ийн бараг бүх өөрчлөлт нь одоогийн өдрөөс гурван сарын өмнө тохиолддог болохыг тогтоосон. Тиймээс, SAP HR N сарын өмнө өдөр бүр бүрэн татаж авах, сар бүр бүрэн татаж авах сонголт хийхээр шийдсэн. N параметр нь тодорхой хүснэгтээс хамаарна
1-ээс 15 хүртэл хэлбэлздэг.

Мэдээлэл гаргахын тулд дараахь схемийг санал болгосон.

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Гадны систем нь хүсэлтийг үүсгэж, SAP HCM руу илгээдэг бөгөөд энэ хүсэлтийг өгөгдлийн бүрэн бүтэн байдал, хүснэгтэд хандах зөвшөөрлийг шалгадаг. Шалгалт амжилттай бол SAP HCM нь шаардлагатай өгөгдлийг цуглуулж, Fuse интеграцийн шийдэл рүү шилжүүлдэг программыг ажиллуулдаг. Fuse нь Кафка дахь шаардлагатай сэдвийг тодорхойлж, өгөгдлийг тэнд шилжүүлдэг. Дараа нь Кафкагийн өгөгдлийг Stage Area GP рүү шилжүүлнэ.

Энэ хэлхээнд бид SAP HCM-ээс өгөгдөл гаргаж авах асуудлыг сонирхож байна. Үүнийг илүү нарийвчлан авч үзье.

SAP HCM-FUSE харилцан үйлчлэлийн диаграм.

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

Гадны систем нь SAP-д хамгийн сүүлд амжилттай хүсэлт гаргасан цагийг тодорхойлдог.
Үйл явцыг таймер эсвэл бусад үйл явдлаар эхлүүлж болно, үүнд SAP-аас өгөгдөлтэй хариу хүлээж, давтан хүсэлтийг эхлүүлэхийн тулд завсарлага тохируулах боломжтой. Дараа нь энэ нь дельта хүсэлтийг үүсгэж, SAP руу илгээдэг.

Хүсэлтийн өгөгдлийг json форматаар бие рүү илгээдэг.
Арга http: POST.
Жишээ хүсэлт:

SAP HCM-ээс SAP бус мэдээллийн агуулах руу өгөгдөл задлах

SAP үйлчилгээ нь хүсэлтийн бүрэн бүтэн байдал, одоогийн SAP бүтэцтэй нийцэж байгаа эсэх, хүссэн хүснэгтэд хандах зөвшөөрөл байгаа эсэхийг хянадаг.

Алдаа гарсан тохиолдолд үйлчилгээ нь зохих код, тайлбар бүхий хариултыг буцаана. Хэрэв хяналт амжилттай болвол дээж үүсгэх суурь процессыг үүсгэж, өвөрмөц сешн id-г үүсгэж, синхроноор буцаана.

Алдаа гарсан тохиолдолд гадаад систем үүнийг бүртгэлд бүртгэдэг. Амжилттай хариу өгсөн тохиолдолд сессийн id болон хүсэлт гаргасан хүснэгтийн нэрийг дамжуулдаг.

Гадаад систем нь одоогийн сессийг нээлттэй гэж бүртгэдэг. Хэрэв энэ хүснэгтэд өөр сесс байгаа бол тэдгээр нь анхааруулга бүртгэгдсэнээр хаагдана.

SAP-ийн суурь ажил нь заасан параметрүүд болон заасан хэмжээтэй өгөгдлийн багц дээр үндэслэн курсор үүсгэдэг. Багцын хэмжээ гэдэг нь мэдээллийн сангаас процесс уншдаг бичлэгийн хамгийн их тоо юм. Анхдагчаар 2000-тай тэнцүү гэж үздэг. Өгөгдлийн сангийн дээжид ашигласан пакетийн хэмжээнээс олон бичлэг байгаа бол эхний пакетийг дамжуулсны дараа дараагийн блокыг харгалзах офсет болон нэмэгдсэн пакетийн дугаараар үүсгэнэ. Тоонуудыг 1-ээр нэмэгдүүлж, дарааллаар нь илгээнэ.

Дараа нь SAP нь пакетийг гадаад системийн вэб үйлчилгээнд оролт болгон дамжуулдаг. Мөн систем нь ирж буй пакет дээр хяналтыг гүйцэтгэдэг. Хүлээн авсан id-тэй сесс системд бүртгэгдсэн байх ёстой бөгөөд энэ нь нээлттэй төлөвт байх ёстой. Хэрэв багцын дугаар > 1 бол систем нь өмнөх багцыг амжилттай хүлээн авсныг бүртгэх ёстой (package_id-1).

Хэрэв хяналт амжилттай бол гадаад систем нь хүснэгтийн өгөгдлийг задлан шинжилж хадгалдаг.

Нэмж дурдахад, хэрэв багцад эцсийн туг байгаа бөгөөд цуваа амжилттай болсон бол интеграцийн модульд сесс боловсруулалт амжилттай дууссан тухай мэдэгдэх ба модуль нь сессийн статусыг шинэчилдэг.

Хяналт/шинжилгээний алдаа гарсан тохиолдолд алдааг бүртгэж, энэ сессийн пакетуудыг гадаад системээс татгалзах болно.

Үүний нэгэн адил, эсрэг тохиолдолд гадаад систем алдаа буцаах үед үүнийг бүртгэж, пакет дамжуулалтыг зогсооно.

SAP HСM талаас мэдээлэл авахын тулд интеграцийн үйлчилгээг хэрэгжүүлсэн. Үйлчилгээ нь ICF хүрээ (SAP Internet Communication Framework -) дээр хэрэгждэг. help.sap.com/viewer/6da7259a6c4b1014b7d5e759cc76fd22/7.01.22/en-US/488d6e0ea6ed72d5e10000000a42189c.html). Энэ нь тодорхой хүснэгтүүдийг ашиглан SAP HCM системээс өгөгдөл хайх боломжийг танд олгоно. Өгөгдлийн хүсэлтийг үүсгэх үед шаардлагатай өгөгдлийг олж авахын тулд тодорхой талбаруудын жагсаалт, шүүлтүүрийн параметрүүдийг зааж өгөх боломжтой. Үүний зэрэгцээ, үйлчилгээг хэрэгжүүлэх нь ямар ч бизнесийн логикийг илэрхийлдэггүй. Дельта, асуулгын параметр, бүрэн бүтэн байдлын хяналт гэх мэтийг тооцоолох алгоритмууд нь гадаад системийн талд хэрэгждэг.

Энэ механизм нь шаардлагатай бүх өгөгдлийг хэдхэн цагийн дотор цуглуулж, дамжуулах боломжийг олгодог. Энэ хурд нь зөвшөөрөгдөх хэмжээнд байгаа тул бид энэ шийдлийг түр зуурын шийдэл гэж үзэж байгаа нь төсөл дээр олборлох хэрэгслийн хэрэгцээг нөхөх боломжтой болсон.
Зорилтот зураг дээр өгөгдөл олборлох асуудлыг шийдэхийн тулд Oracle Golden Gate гэх мэт CDC систем эсвэл SAP DS зэрэг ETL хэрэгслийг ашиглах хувилбаруудыг судалж байна.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх