استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

كما تعلم ، تقدم SAP مجموعة كاملة من البرامج ، سواء للحفاظ على بيانات المعاملات أو لمعالجة هذه البيانات في أنظمة التحليل وإعداد التقارير. على وجه الخصوص ، تعد منصة SAP Business Warehouse (SAP BW) مجموعة أدوات لتخزين البيانات وتحليلها مع إمكانات تقنية واسعة. مع كل مزاياها الموضوعية ، فإن نظام SAP BW له عيب كبير. هذه تكلفة عالية لتخزين البيانات ومعالجتها ، ويمكن ملاحظتها بشكل خاص عند استخدام SAP BW المستند إلى مجموعة النظراء على Hana.

ولكن ماذا لو بدأت في استخدام منتج لا يتبع SAP ويفضل أن يكون منتجًا مفتوح المصدر كمستودع؟ اخترنا في 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

يمكن أن يكون هناك عدد كبير من أنواع الكائنات ، بالإضافة إلى أنواع الوصلات بينها. هناك كلا من الاتصالات القياسية بين الكائنات ، وتلك المخصصة لاحتياجاتك الخاصة. على سبيل المثال ، تشير العلاقة القياسية B012 بين الوحدة التنظيمية وموظف الموظفين إلى رئيس القسم.

عرض مدير في SAP:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

التخزين في جدول قاعدة البيانات:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

يتم تخزين بيانات الموظف في جداول pa *. على سبيل المثال ، يتم تخزين البيانات الخاصة بأنشطة الموظفين لموظف في الجدول pa0000

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

لقد اتخذنا قرارًا بأن GreenPlum سيجمع البيانات "الخام" ، أي. فقط قم بنسخها من جداول SAP. وبالفعل مباشرة في GreenPlum ستتم معالجتها وتحويلها إلى كائنات مادية (على سبيل المثال ، قسم أو موظف) ومقاييس (على سبيل المثال ، متوسط ​​عدد الموظفين).

تم تحديد حوالي 70 جدولًا ، يجب نقل البيانات منها إلى GreenPlum. بعد ذلك ، بدأنا في إيجاد طريقة لنقل هذه البيانات.

تقدم SAP عددًا كبيرًا من آليات التكامل. لكن أسهل طريقة هي أن الوصول المباشر إلى قاعدة البيانات محظور بسبب قيود الترخيص. وبالتالي ، يجب تنفيذ جميع تدفقات التكامل على مستوى خادم التطبيق.
كانت المشكلة التالية هي نقص البيانات حول السجلات المحذوفة في قاعدة بيانات SAP. عند حذف صف في قاعدة البيانات ، يتم حذفه فعليًا. أولئك. لم يكن من الممكن تشكيل دلتا من التغييرات خلال وقت التغيير.

بالطبع ، لدى SAP HCM آليات لإصلاح تغييرات البيانات. على سبيل المثال ، بالنسبة للنقل اللاحق إلى أنظمة المستلمين ، توجد مؤشرات تغيير تعمل على إصلاح أي تغييرات وعلى أساسها يتم تكوين Idoc (كائن يتم نقله إلى أنظمة خارجية).

مثال على مستند إثبات هوية لتغيير نوع المعلومات 0302 لموظف برقم الموظف 1251445:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

أو تسجيل تغييرات البيانات في جدول DBTABLOG.

مثال لسجل لحذف إدخال بالمفتاح QK53216375 من جدول hrp1000:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

لكن هذه الآليات غير متاحة لجميع البيانات الضرورية ، ويمكن أن تستهلك معالجتها على مستوى خادم التطبيق قدرًا كبيرًا من الموارد. لذلك ، يمكن أن يؤدي التضمين الشامل للتسجيل في جميع الجداول الضرورية إلى تدهور ملحوظ في أداء النظام.

كانت المشكلة الكبيرة التالية هي الجداول العنقودية. يتم تخزين بيانات تقييم الوقت وكشوف المرتبات في إصدار RDBMS من SAP HCM كمجموعة من الجداول المنطقية لكل موظف لكل قائمة رواتب. يتم تخزين هذه الجداول المنطقية كبيانات ثنائية في جدول pcl2.

كتلة الرواتب:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

لا يمكن قراءة البيانات من الجداول المجمعة كأمر SQL ، ولكن يلزم استخدام وحدات ماكرو SAP HCM أو وحدات دالة خاصة. وفقًا لذلك ، ستكون سرعة قراءة هذه الجداول منخفضة جدًا. من ناحية أخرى ، تقوم هذه المجموعات بتخزين البيانات المطلوبة مرة واحدة فقط في الشهر - كشوف المرتبات النهائية وتقديرات الوقت. لذا فإن السرعة في هذه الحالة ليست حرجة للغاية.

بتقييم الخيارات مع تشكيل دلتا تغيير البيانات ، قررنا أيضًا النظر في الخيار مع تحميل كامل. لا يمكن أن يبدو خيار نقل غيغابايت من البيانات غير المتغيرة بين الأنظمة كل يوم جميلاً. ومع ذلك ، فإنه يحتوي أيضًا على عدد من المزايا - ليست هناك حاجة لكل من تنفيذ دلتا على جانب المصدر وتنفيذ تضمين هذه الدلتا على جانب المستقبِل. وفقًا لذلك ، يتم تقليل التكلفة ووقت التنفيذ ، وزيادة موثوقية التكامل. في الوقت نفسه ، تم تحديد أن جميع التغييرات تقريبًا في SAP HR تحدث في غضون ثلاثة أشهر قبل التاريخ الحالي. وبالتالي ، فقد تقرر التوقف عند التحميل اليومي الكامل للبيانات من SAP HR قبل أشهر من التاريخ الحالي وتحميل كامل شهريًا. تعتمد المعلمة N على الجدول المحدد
وتتراوح من 1 إلى 15.

تم اقتراح المخطط التالي لاستخراج البيانات:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

يقوم النظام الخارجي بإنشاء طلب وإرساله إلى SAP HCM ، حيث يتم التحقق من هذا الطلب للتأكد من اكتمال البيانات والأذونات للوصول إلى الجداول. في حالة نجاح الفحص ، يدير SAP HCM برنامجًا يجمع البيانات الضرورية وينقلها إلى حل تكامل Fuse. يحدد فيوز الموضوع المطلوب في كافكا ويمرر البيانات هناك. علاوة على ذلك ، يتم نقل البيانات من كافكا إلى منطقة المرحلة GP.

في هذه السلسلة ، نحن مهتمون بمسألة استخراج البيانات من SAP HCM. دعونا نتناولها بمزيد من التفصيل.

مخطط تفاعل SAP HCM-FUSE.

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

يحدد النظام الخارجي وقت آخر طلب ناجح لـ SAP.
يمكن تشغيل العملية بواسطة مؤقت أو حدث آخر ، بما في ذلك تعيين مهلة انتظار استجابة ببيانات من SAP وبدء طلب إعادة المحاولة. ثم يقوم بإنشاء استعلام دلتا وإرساله إلى SAP.

يتم تمرير بيانات الطلب إلى النص بتنسيق json.
طريقة http: POST.
طلب مثال:

استخراج البيانات من SAP HCM إلى مستودعات البيانات غير التابعة لـ SAP

تتحكم خدمة SAP في طلب الاكتمال والامتثال لهيكل SAP الحالي وتوافر الإذن للوصول إلى الجدول المطلوب.

في حالة وجود أخطاء ، تقوم الخدمة بإرجاع استجابة بالرمز والوصف المناسبين. في حالة التحكم الناجح ، فإنه ينشئ عملية خلفية لأخذ العينات ، وينشئ ويعيد بشكل متزامن معرف جلسة فريد.

يقوم النظام الخارجي بتسجيل الخطأ في حالة حدوث خطأ. في حالة الاستجابة الناجحة ، فإنه يمرر معرف الجلسة واسم الجدول الذي تم تقديم الطلب عليه.

يقوم النظام الخارجي بتسجيل الجلسة الحالية على أنها مفتوحة. إذا كانت هناك جلسات أخرى في هذا الجدول ، فسيتم إغلاقها مع تسجيل تحذير.

تنشئ وظيفة SAP الخلفية مؤشرًا بالمعلمات المحددة وحزمة بيانات بالحجم المحدد. حجم الدُفعة - الحد الأقصى لعدد السجلات التي تقرأها العملية من قاعدة البيانات. القيمة الافتراضية هي 2000. إذا كان هناك عدد أكبر من السجلات في اختيار قاعدة البيانات من حجم الحزمة المستخدمة ، بعد إرسال الحزمة الأولى ، يتم تشكيل الكتلة التالية مع الإزاحة المقابلة ورقم الحزمة المتزايد. يتم زيادة الأرقام بمقدار 1 ويتم إرسالها بشكل صارم بالتسلسل.

بعد ذلك ، يمرر SAP الحزمة إلى إدخال خدمة الويب للنظام الخارجي. وهو النظام الذي يقوم بالتحكم في الحزمة الواردة. يجب تسجيل جلسة بالمعرف المستلم في النظام ويجب أن تكون في حالة مفتوحة. إذا كان رقم الحزمة> 1 ، يجب على النظام تسجيل الاستلام الناجح للحزمة السابقة (package_id-1).

في حالة التحكم الناجح ، يوزع النظام الخارجي بيانات الجدول ويحفظها.

بالإضافة إلى ذلك ، إذا كانت العلامة النهائية موجودة في الحزمة ونجحت عملية التسلسل ، يتم إخطار وحدة التكامل بأن معالجة الجلسة قد اكتملت بنجاح وتقوم الوحدة بتحديث حالة الجلسة.

في حالة وجود خطأ في التحكم / التحليل ، يتم تسجيل الخطأ وسيتم رفض الحزم الخاصة بهذه الجلسة من قبل النظام الخارجي.

وبالمثل ، في الحالة المعاكسة ، عندما يُرجع النظام الخارجي خطأً ، يتم تسجيله ويتوقف إرسال الحزم.

لطلب بيانات على جانب SAP HCM ، تم تنفيذ خدمة تكامل. يتم تنفيذ الخدمة في إطار عمل ICF (SAP Internet Communication Framework - help.sap.com/viewer/6da7259a6c4b1014b7d5e759cc76fd22/7.01.22/en-US/488d6e0ea6ed72d5e10000000a42189c.html). يسمح لك بالاستعلام عن البيانات من نظام SAP HCM لجداول محددة. عند تكوين طلب بيانات ، من الممكن تحديد قائمة الحقول المحددة ومعلمات التصفية من أجل الحصول على البيانات اللازمة. في الوقت نفسه ، لا يعني تنفيذ الخدمة أي منطق أعمال. يتم أيضًا تنفيذ خوارزميات لحساب دلتا ومعلمات الاستعلام ومراقبة السلامة وما إلى ذلك على جانب النظام الخارجي.

تتيح لك هذه الآلية جمع ونقل جميع البيانات الضرورية في غضون ساعات قليلة. هذه السرعة على وشك أن تكون مقبولة ، لذلك يعتبر هذا القرار من قبلنا قرارًا مؤقتًا ، مما سمح لنا بإغلاق الحاجة إلى أداة استخراج في المشروع.
في الصورة المستهدفة ، لحل مشكلة استخراج البيانات ، يجري تطوير خيارات لاستخدام أنظمة CDC مثل Oracle Golden Gate أو أدوات ETL مثل SAP DS.

المصدر: www.habr.com

إضافة تعليق