אפשרויות המתכנת ב-IT
Programmer's Options in IT
שמישות (Usability) · שיעור 4
- שכבת-תכנות: Upstream, BAPI, Web, Customer Exits, BAdI/Enhancement.
- גמישות-מקסימלית מול עלות/סיכון/שדרוג מקסימליים.
- העדף Released APIs ו-Clean Core.
- Upstream = מסך-קלט מקדים שעוטף את התקנית.
מטרת השיעור
ידע אצורהשכבה העליונה: שיפורי-שמישות הדורשים פיתוח-ABAP. כוללת Upstream Transactions (טרנזקציה-מקדימה שאוספת קלט ומפעילה את התקנית), BAPI (ממשק-תכנותי יציב לאובייקטי-PM), Web Interface (ממשק-Web/OData מותאם), Customer Exits (נקודות-הרחבה מאושרות-SAP), וטכניקות-תכנות נוספות (BAdI, Enhancement Framework, BTE). הגמישות מקסימלית, אך כך גם העלות, הסיכון ונטל-השדרוג. טרנזקציות-מקדימות (Upstream) — Upstream Transaction היא טרנזקציה/מסך מותאם הממוקם 'לפני' הטרנזקציה התקנית: הוא אוסף את הקלט בפורמט-פשוט ופר-תפקיד, ואז מפעיל את התקנית (Call Transaction/BDC/BAPI) עם הערכים. כך המשתמש רואה מסך-מינימלי ייעודי, בעוד הלוגיקה התקנית רצה מאחורי-הקלעים. BAPI — BAPI (Business Application Programming Interface) הוא ממשק-תכנותי יציב ו-Released, חשוף כמתודה של Business Object ו-RFC-enabled, ליצירה/שינוי/קריאה של אובייקטי-PM. הוא מאפשר אינטגרציה ו-Upstream מבלי לגעת במסכים, עם חוזה-נתונים מוגדר — בסיס בטוח לשיפורי-שמישות ואוטומציה. ממשק-Web — ממשק-Web מותאם (SAPUI5/Fiori מותאם, Web Dynpro, או שירות-OData ייעודי) חושף תהליכי-PM בדפדפן בצורה מותאמת-לארגון — מעבר לאפליקציות-Fiori התקניות. הוא משלב פיתוח-Frontend (UI5) עם Backend (OData/CDS/BAPI) ומאפשר חוויות-Web ייחודיות לתפקיד או ללקוח-חיצוני. Customer Exits — Customer Exits הם נקודות-הרחבה מאושרות-SAP (SMOD/CMOD) המאפשרות להוסיף לוגיקה (Function-module exits), שדות-מסך (Screen exits) ותפריטים (Menu exits) מבלי לשנות קוד-תקני — מה שמשפר שמישות (שדות/בדיקות מותאמים) תוך שמירה על יכולת-שדרוג. טכניקות-תכנות נוספות — מעבר ל-Upstream/BAPI/Web/Exits קיימות טכניקות-תכנות נוספות לשיפור-שמישות: BAdI (OO, מרובה-מימושים), Enhancement Framework (Implicit/Explicit Enhancement-points), BTE (Business Transaction Events), Workflow (SAP Business Workflow), והרחבות-RAP/CDS ב-S/4HANA. כל אחת מתאימה לתרחיש שונה, עם פרופיל-יציבות ושדרוג משלה.
למה זה חשוב
ידע אצורכשהכלים-ללא-קוד לא מספיקים, מתכנתים יכולים לבנות פתרון: מסך-מקדים שאוסף את כל הקלט ואז ממלא את ה-SAP לבד, ממשק-תכנותי (BAPI) שמערכת אחרת קוראת לו, ממשק-Web מותאם, או 'נקודות-וו' (Exits) שמוסיפות לוגיקה במקומות שSAP אישרה. הכי גמיש — אבל הכי יקר ומסוכן. טרנזקציות-מקדימות (Upstream) — במקום לתת לטכנאי את מסך-ה-SAP המלא, בונים לו מסך-קטן עם רק השדות שהוא צריך. הוא ממלא אותם, לוחץ 'שלח', והתוכנית-שמאחורי ממלאת בשבילו את מסך-ה-SAP האמיתי. הוא לא רואה את המורכבות — רק מסך-פשוט. BAPI — BAPI הוא 'דלת רשמית' לתוך SAP לתוכניות. במקום לדמות הקלדה במסך, תוכנית קוראת ל-BAPI ומעבירה לו נתונים, וה-BAPI יוצר את ההודעה/ההזמנה כמו ש-SAP עצמה הייתה עושה — בצורה יציבה ובטוחה. כך מערכות אחרות וחיישנים יכולים 'לדבר' עם SAP. ממשק-Web — כשהאפליקציות התקניות לא מספיקות, מפתחים יכולים לבנות 'אתר' פנימי קטן שמדבר עם SAP: דף-Web מותאם בדיוק לתהליך-הארגון, שעובד בדפדפן ובטלפון. מאחור הוא משתמש ב-OData/BAPI כדי לקרוא ולכתוב נתונים ב-SAP. Customer Exits — SAP השאירה 'נקודות-וו' מוכנות בתוכנה שלה. במקום לשנות את הקוד שלה (מסוכן בשדרוג), מוסיפים את הלוגיקה שלך בנקודות-האלה — תוספת-בדיקה, שדה-נוסף במסך, או פריט-תפריט. הכול במקומות ש-SAP אישרה מראש, כך ששדרוג לא מוחק את העבודה. טכניקות-תכנות נוספות — יש עוד 'כלים-לתכנתים': BAdI (גרסה מודרנית של Exits), נקודות-הרחבה בכל מקום בקוד, אירועים שמפעילים לוגיקה (BTE), ו-Workflow שמנתב משימות אוטומטית. כל אחד פותר סוג-בעיה אחר, וכולם נועדו להוסיף יכולת בלי 'לשבור' את SAP.
ערך עסקי
ידע אצורלספק יכולת-שיפור בלתי-מוגבלת כשאין מענה בכלים-תקניים — מסכים-ייעודיים, אינטגרציות וממשקים מותאמים — תוך-מודעות לעלות-החיים-המלאה (תחזוקה, רגרסיה, שדרוג). טרנזקציות-מקדימות (Upstream) — להציג למשתמש מסך-קלט מינימלי ופר-תפקיד מבלי לחשוף את מורכבות-הטרנזקציה התקנית — שיפור-שמישות דרך 'עטיפה'. BAPI — לספק נקודת-כניסה תכנותית יציבה לאוטומציה, אינטגרציה ו-Upstream — מבלי תלות-במסכים ובלי שבירת-שדרוג. ממשק-Web — לספק חוויית-Web מותאמת-במדויק (פנים/חוץ-ארגונית) כשאפליקציות-Fiori התקניות אינן מכסות את הצורך — שמישות-שיא לתרחיש-ייעודי. Customer Exits — להוסיף לוגיקה/שדות/בדיקות מותאמים לשיפור-שמישות ותהליך — בנקודות-הרחבה רשמיות שאינן נשברות בשדרוג כמו Modifications. טכניקות-תכנות נוספות — להשלים את ארגז-הכלים התכנותי לתרחישים מגוונים (אירועים, ניתוב-משימות, הרחבות-מודל) — תוך-העדפת הטכניקה היציבה והמאושרת ביותר לכל-מקרה.
היכן בשימוש
ידע אצור• Tools ► ABAP Workbench ► Development (SE80) / Function Builder (SE37) • Tools ► ABAP Workbench ► Utilities ► Business Add-Ins ► Definition (SE18) / Implementation (SE19) • BAPI Explorer (BAPI) • Tools ► ABAP Workbench ► Development (SE80) ► custom screen/program • Call standard transaction via BAPI / Call Transaction • BAPI Explorer (transaction BAPI) ► Plant Maintenance • Function Builder (SE37) ► BAPI_ALM_* • Tools ► ABAP Workbench (SE80) / Business Application Studio ► UI5 app • Activate OData service (/IWFND/MAINT_SERVICE) • Tools ► ABAP Workbench ► Utilities ► Enhancements ► Project Management (CMOD) / Definition (SMOD) • Tools ► ABAP Workbench ► Utilities ► Business Add-Ins (SE18/SE19) • Tools ► Business Workflow ► Development ► Definition Tools (SWDD) • FIBF (Business Transaction Events)
מושגי מפתח
ידע אצור- שכבת-תכנות: Upstream, BAPI, Web, Customer Exits, BAdI/Enhancement.
- גמישות-מקסימלית מול עלות/סיכון/שדרוג מקסימליים.
- העדף Released APIs ו-Clean Core.
- Upstream = מסך-קלט מקדים שעוטף את התקנית.
- העדף הפעלה דרך BAPI.
- חוויה ממוקדת-משימה, אך כפילות-תלות בתקנית.
- BAPI = ממשק Released ויציב לאובייקטי-PM.
- BAPI_ALM_NOTIF/ORDER/CONF הם המרכזיים.
- תמיד בדוק Return ובצע COMMIT.
- ממשק-Web = UI5/OData/BAPI מותאם מעבר ל-Fiori תקני.
- העדף RAP/Fiori על Web Dynpro חדש.
- אבטח חשיפה חיצונית ושמור Clean Core.
- Customer Exits = נקודות-הרחבה מאושרות (SMOD/CMOD).
- סוגים: Function/Screen/Menu exit.
- העדף BAdI ושמור Clean Core.
- כלים-נוספים: BAdI, Enhancement Framework, BTE, Workflow, RAP/CDS.
- העדף Released/Explicit ו-BAdI על Implicit/Modification.
- כל טכניקה לתרחיש שלה, תחת Clean Core.
דוגמה מ-CBC
ידע אצורבארגון חיישני-קו (IoT) יוצרים הודעות-תחזוקה אוטומטית דרך BAPI; מסך-Upstream מותאם מאחד דיווח-גמר ובדיקת-QA למסך-יחיד; הרחבות נעשות דרך BAdI מאושרים בלבד לשמירת Clean Core לקראת/אחרי המעבר ל-S/4. אינטגרציה: מערכת-SCADA מזהה תקלת-מכונה ושולחת קריאה ל-BAPI_ALM_NOTIF_CREATE שיוצרת הודעת-PM אוטומטית עם הציוד וקוד-התקלה — דיווח-תקלה ללא מגע-אדם, דרך ממשק-תכנותי יציב. טרנזקציות-מקדימות (Upstream) — בארגון מסך-Upstream לדיווח-תקלות-קו פשט את התהליך לשלושה-שדות; מאחור הוא יוצר הודעת-PM מלאה דרך BAPI — שמישות-מרבית לטכנאי בלי לוותר על שלמות-הנתונים. מסך-Upstream 'דיווח-תקלת-קו' עם שלושה-שדות (קו, תופעה, דחיפות) מפעיל מאחורי-הקלעים BAPI_ALM_NOTIF_CREATE עם כל השדות-הארגוניים שממולאים אוטומטית; הטכנאי רואה רק שלושה-שדות. BAPI — בארגון חיישני-IoT בקווי-המילוי קוראים ל-BAPI_ALM_NOTIF_CREATE ביצירת-תקלה אוטומטית; ממשק-הסנכרון של אפליקציית-המובייל יוצר דיווחי-גמר דרך BAPI_ALM_CONF_CREATE — הכול דרך ממשקים יציבים. תוכנית-אצווה יוצרת הזמנות-תחזוקה-מונעת המוניות דרך BAPI_ALM_ORDER_MAINTAIN, בודקת את ה-Return table, וקוראת BAPI_TRANSACTION_COMMIT — מאות הזמנות נוצרות אמינות ללא-מגע. ממשק-Web — בארגון נבנה דשבורד-Web מותאם למנהל-התחזוקה המציג זמינות-קווים, Backlog ו-Bad Actors בתצוגה אחת מותאמת-לארגון, מעל OData/CDS — מעבר למה שאריחי-Fiori התקניים נתנו. פורטל-קבלנים: קבלן-חוץ פותח דף-Web מותאם, מדווח תקלה על-ציוד שבאחריותו; הקלט עובר דרך OData ל-BAPI_ALM_NOTIF_CREATE ויוצר הודעת-PM — ללא גישת-GUI לקבלן. Customer Exits — בארגון הוטמע BAdI על הזמנת-עבודה שממלא אוטומטית את קוד-הקו (Production Line) מתוך ה-Functional Location בעת יצירת-פק"ע — שיפור-שמישות (פחות שדה למלא) דרך נקודת-הרחבה מאושרת, שומר Clean Core. Function Exit ב-Notification מאמת שכאשר Priority='חירום' שדה-טלפון-איש-קשר חובה; הבדיקה רצה בשמירה דרך נקודת-Exit מאושרת, בלי לגעת בקוד התקני של ה-Notification. טכניקות-תכנות נוספות — בארגון Workflow מנתב הזמנות-תחזוקה דחופות לאישור-מנהל-משמרת מיידי, ו-BAdI מאמת זמינות-חלפים בשחרור — אוטומציות שמקצרות זמן-תגובה לתקלות-קו, דרך נקודות-הרחבה מאושרות. Workflow מנתב הזמנת-תחזוקה מעל-תקציב לאישור-מנהל אוטומטית; BAdI מוסיף בדיקת-בטיחות בשחרור-הזמנה; BTE מפעיל התראה בשינוי-סטטוס — שילוב-טכניקות לזרימה-חלקה.
תהליך
ידע אצורטבלאות
ידע אצור| טבלה | תיאור |
|---|---|
| TFDIR | TFDIR |
| ENLFDIR | ENLFDIR |
| MODSAP | MODSAP |
| SXC_EXIT | SXC_EXIT |
| TSTC | TSTC |
| QMEL | QMEL |
| AUFK | AUFK |
| AFRU | AFRU |
| /IWFND/* | /IWFND/* |
| MODACT | MODACT |
| SXS_ATTR | SXS_ATTR |
| TBE01 | TBE01 |
| SWWWIHEAD | SWWWIHEAD |
טרנזקציות
ידע אצוראפליקציות Fiori
ידע אצורקונפיגורציה (SPRO)
ידע אצור• פיתוח דורש Package + Transport + תקני-פיתוח; רישום-אובייקטים (SSCR) ל-Modifications. • העדף Released BAPI/BAdI; תעד כל הרחבה ונקודת-העיגון שלה. • ב-S/4HANA: היצמד ל-Clean Core — Released APIs ו-Extension Points רשמיים. טרנזקציות-מקדימות (Upstream) • בנה מסך-Z (Module Pool/Web Dynpro/Fiori) האוסף קלט ומאמת. • הפעל את התקנית דרך BAPI (עדיף) או Call Transaction/BDC; טפל בהחזרת-שגיאות. BAPI • אתר BAPI ב-BAPI Explorer/SE37; בדוק חתימה ו-Return table. • קרא תמיד BAPI_TRANSACTION_COMMIT (או ROLLBACK) ובדוק Type E/W ב-Return. • ב-S/4HANA העדף Released OData/CDS APIs כשקיימים. ממשק-Web • פתח UI5/Fiori app (RAP/CAP) ושירות-OData; הפעל ב-Gateway. • הגדר Authentication (SAML/OAuth) ל-external-facing; שמור Clean Core (RAP מעל Web Dynpro חדש). Customer Exits • Customer Exit: אתר Enhancement (SMOD/SE84), צור Project (CMOD), ממש רכיב (Function/Screen/Menu), הפעל. • BAdI (מודרני): SE18 הגדרה, SE19 מימוש (OO, מרובה-מימושים). • העדף BAdI/Released Enhancement; הימנע מ-Modifications. טכניקות-תכנות נוספות • BAdI: SE18 הגדרה / SE19 מימוש (OO, Filter, מרובה). • Enhancement Framework: העדף Explicit Enhancement-points על Implicit. • Workflow (SWDD) לניתוב-משימות; BTE (FIBF) לאירועים; ב-S/4 RAP/CDS Extensions (Clean Core).
הערות
ידע אצורשאלות ראיון מהו עיקרון Clean Core ב-S/4HANA? להימנע משינוי-הליבה התקנית ולהרחיב רק דרך Released APIs ו-Extension Points רשמיים (BAdI/Enhancement נקיים), כדי לשמור על יכולת-שדרוג. מדוע להעדיף BAPI על Call Transaction? BAPI הוא ממשק-Released יציב עם חוזה-נתונים מוגדר; Call Transaction תלוי במבנה-המסך ושביר בשדרוג. מהי Upstream Transaction? מסך/טרנזקציה מותאמת שאוספת קלט מינימלי ומפעילה את הטרנזקציה התקנית (עדיף דרך BAPI) — חוויה ממוקדת-משימה שמסתירה מורכבות. מדוע להפעיל דרך BAPI ולא BDC? BAPI יציב ומוגדר-חוזה; BDC/Call Transaction תלוי-מסך ושביר בשדרוג. מהו ה-BAPI המרכזי לתחזוקת-הזמנת-PM? BAPI_ALM_ORDER_MAINTAIN — יצירה/שינוי של Maintenance Order; להודעה BAPI_ALM_NOTIF_CREATE ולדיווח-גמר BAPI_ALM_CONF_CREATE. מה חובה לעשות אחרי קריאת-BAPI מעדכן? לבדוק את ה-Return table (Type E/W) ולקרוא BAPI_TRANSACTION_COMMIT (או ROLLBACK בכישלון). מהו ה-Stack של ממשק-Web מותאם ל-PM? SAPUI5/Fiori (Frontend) → OData (Gateway/RAP-CDS) → BAPI/CDS Behavior (Backend). מתי לבנות ממשק-Web מותאם? כשאפליקציות-Fiori התקניות אינן מכסות צורך-ייעודי (פורטל-קבלנים, דשבורד-מותאם), ורצוי ב-RAP לשמירת Clean Core. מהם סוגי רכיבי Customer Exit? Function-module exit (EXIT_*), Screen exit (subscreen) ו-Menu exit (+CUS). מה ההיררכיה המועדפת להרחבה? BAdI > Customer Exit > Explicit/Implicit Enhancement > Modification — לפי יציבות-שדרוג; ב-S/4HANA Released BAdI/Extension Points (Clean Core). מה ההבדל בין Explicit ל-Implicit Enhancement? Explicit = נקודות-הרחבה שSAP הגדירה מראש (יציבות); Implicit = תחילת/סוף-יחידות-קוד אוטומטיות (גמישות אך שבירות ופחות-מומלצות). מתי להשתמש ב-Workflow לשמישות? לניתוב-משימות ואישורים אוטומטי (למשל אישור-הזמנה מעל-תקציב), שמשפר זרימה ומפחית טיפול-ידני. נושאים קשורים • PM · אינטגרציות ו-IDocs • אובייקט · CMOD • אובייקט · SE19
טעויות נפוצות
ידע אצור- פיתוח היכן שכלי-ללא-קוד מספיק.
- Modifications/Implicit Enhancements שמכבידים על שדרוג.
- Call Transaction שביר במקום BAPI יציב.
- שימוש ב-BDC שביר במקום BAPI.
- כפילות-לוגיקת-אימות שלא מתואמת עם התקנית.
- התעלמות מהחזרת-הודעות-שגיאה למשתמש.
- אי-קריאת BAPI_TRANSACTION_COMMIT ➔ הנתונים לא נשמרים.
- התעלמות מ-Return table ➔ כשל-שקט.
- שימוש ב-BAPI לא-Released ➔ סיכון-שדרוג.
- בניית Web Dynpro חדש במקום RAP/Fiori.
- התעלמות מ-Authentication/אבטחה ל-external.
- כפילות מול אפליקציות-Fiori תקניות קיימות.
- שימוש ב-Modification במקום Exit/BAdI מאושר.
- אי-הפעלת ה-Project ב-CMOD ➔ ה-Exit לא רץ.
- לוגיקה-כבדה ב-Exit הפוגעת בביצועים/שדרוג.
- שימוש ב-Implicit Enhancement היכן ש-BAdI/Explicit קיים.
- Workflow מורכב-מדי שקשה-לתחזק.
- ערבוב-טכניקות ללא אסטרטגיית-הרחבה.
פתרון תקלות
ידע אצור• אינטגרציה נכשלת ➔ בדוק החזרי-BAPI (Return table) ו-COMMIT (BAPI_TRANSACTION_COMMIT). • הרחבה נשברת בשדרוג ➔ Implicit Enhancement/Modification; עבור ל-BAdI מאושר. טרנזקציות-מקדימות (Upstream) • יצירה נכשלת בשקט ➔ לא נבדק Return של ה-BAPI/Call. • ערכים-חסרים ➔ מיפוי-שדות מהמסך-המקדים לתקנית לקוי. BAPI • הרשומה לא נוצרת ➔ חסר COMMIT או Return מכיל Type E. • נעילה/קונפליקט ➔ Enqueue או חוסר ROLLBACK בכישלון. ממשק-Web • אפליקציה לא טוענת נתונים ➔ OData לא-פעיל/שגיאת-Gateway (/IWFND/ERROR_LOG). • גישה נדחית ➔ Authentication/הרשאות-OData. Customer Exits • Exit לא מופעל ➔ Project לא-פעיל ב-CMOD או Enhancement לא-מוקצה. • BAdI לא רץ ➔ מימוש לא-פעיל (SE19) או Filter לא-תואם. טכניקות-תכנות נוספות • Workflow תקוע ➔ בדוק SWI1/SWI2_FREQ ושגיאות-Binding. • BAdI/Enhancement לא רץ ➔ מימוש לא-פעיל או Filter/נקודה לא-תואמים.
שיטות עבודה מומלצות
ידע אצור- העדף Released BAPI ו-BAdI; הימנע מ-Modifications.
- שמור Clean Core ב-S/4HANA — Extension Points רשמיים בלבד.
- תעד, בדוק-רגרסיה ותכנן עלות-חיים-מלאה לכל פיתוח.
- הפעל את התקנית דרך BAPI ולא BDC.
- החזר הודעות-שגיאה ברורות למשתמש.
- שמור את ה-Upstream דק — קלט בלבד, לוגיקה בתקנית.
- השתמש ב-Released BAPIs בלבד.
- בדוק Return ובצע COMMIT/ROLLBACK מפורש.
- ב-S/4HANA העדף Released OData APIs.
- בדוק קודם אם Fiori תקני מכסה.
- השתמש ב-RAP/OData מודרני (Clean Core).
- אבטח חשיפה חיצונית ב-OAuth/SAML.
- העדף BAdI על Customer Exit על Modification.
- שמור לוגיקת-Exit רזה ומתועדת.
- ב-S/4HANA היצמד ל-Extension Points רשמיים (Clean Core).
- העדף BAdI ו-Explicit Enhancement.
- השתמש ב-Workflow לניתוב-משימות אמיתי בלבד.
- ב-S/4HANA RAP/CDS Extensions ו-Clean Core.
טיפים
ידע אצור- מאפיינים: Upstream/Call Transaction או BDC עוטף את הטרנזקציה התקנית; BAPI (Business Object methods, RFC-enabled) מספק ממשק יציב ל-Notification/Order/Confirmation; Web/OData (Gateway/CDS, SAPUI5) בונה ממשק-מותאם; Customer Exits (SMOD/CMOD), BAdI (SE18/SE19), Enhancement Framework (Implicit/Explicit), ו-BTE — נקודות-הרחבה מדורגות מבחינת-יציבות. עיקרון-זהב: העדף Released BAPI ו-BAdI על Call Transaction ו-Implicit Enhancement; כל פיתוח = נטל-רגרסיה ושדרוג. ב-S/4HANA: Clean Core — העדף Released APIs ו-Extension Points רשמיים בלבד.
- טרנזקציות-מקדימות (Upstream) — מימוש: מסך-Z (Module Pool/Web Dynpro/Fiori) אוסף קלט, מאמת, ומפעיל את התקנית ב-Call Transaction/BDC (שביר) או עדיף ב-BAPI (יציב). שיקול-מפתח: עיבוד-שגיאות והחזרת-הודעות מהתקנית למסך-המקדים. יתרון: חוויה ממוקדת-משימה; חיסרון: כפילות-לוגיקה ותלות בתקנית. ב-S/4HANA העדפה ברורה ל-Upstream-Fiori מעל-BAPI על-פני BDC.
- BAPI — BAPIs ל-PM: BAPI_ALM_NOTIF_CREATE/_DATA_ADD (הודעה), BAPI_ALM_ORDER_MAINTAIN (הזמנה, מרכזי), BAPI_ALM_CONF_CREATE (דיווח-גמר). מאפיינים: RFC-enabled, אטומיים-לוגית, עם Return table (Type E/W/S) ו-COMMIT/ROLLBACK נפרדים (BAPI_TRANSACTION_COMMIT). שלא-כמו Call Transaction — חוזה-נתונים יציב לאורך-גרסאות (Released). ב-S/4HANA רבים נעטפים ב-OData/CDS כ-Released APIs ל-Fiori ול-Side-by-side extensibility. תמיד בדוק Return ובצע COMMIT מפורש.
- ממשק-Web — Stack: SAPUI5/Fiori (Frontend) → OData v2/v4 (Gateway/RAP-CDS) → Backend (BAPI/CDS Behavior). אפשרויות: Custom Fiori app (RAP/CAP), Web Dynpro ABAP (Legacy), או External-facing portal. שיקולים: Authentication (SAML/OAuth), Caching, Versioning, ו-Clean Core (העדף RAP על Web Dynpro חדש). ב-PM שכיח לחשוף דיווח-תקלה לקבלני-חוץ או דשבורד-תחזוקה מותאם. נטל: מחזור-חיים מלא של אפליקציית-Web.
- Customer Exits — Customer Exits הם הדור-המוקדם של ה-Enhancement: מאוגדים ב-Enhancement Project (CMOD) על Enhancements (SMOD), עם רכיבים — Function Exit (EXIT_*), Screen Exit (Subscreen+CALL CUSTOMER-SUBSCREEN), Menu Exit (+CUS). ב-PM שכיחים Exits ב-Notification/Order. הדור-החדש: BAdI (SE18/SE19, OO, מרובה-מימושים) ו-Enhancement Framework (Implicit/Explicit). העדפת-יציבות: BAdI > Customer Exit > Implicit Enhancement > Modification. ב-S/4HANA מועדפים BAdI מאושרים ו-Extension Points רשמיים (Clean Core).
- טכניקות-תכנות נוספות — BAdI (SE18/SE19) — OO, Filter-based, מרובה-מימושים, הדור-המומלץ. Enhancement Framework — Explicit (Enhancement-points/sections מוגדרי-SAP) ו-Implicit (תחילת/סוף-FM, שביר יותר). BTE (FIBF) — Publish&Subscribe/Process events. SAP Business Workflow (SWDD) — ניתוב-משימות אוטומטי לשיפור-זרימה (למשל אישור-הזמנה). ב-S/4HANA: RAP Behavior Extensions, CDS Extend, Side-by-side ב-BTP. עיקרון: Clean Core — Released Enhancement Points בלבד; הימנע מ-Implicit/Modification.
סיכום
ידע אצור• שכבת-תכנות: Upstream, BAPI, Web, Customer Exits, BAdI/Enhancement. • גמישות-מקסימלית מול עלות/סיכון/שדרוג מקסימליים. • העדף Released APIs ו-Clean Core. • Upstream = מסך-קלט מקדים שעוטף את התקנית. • העדף הפעלה דרך BAPI. • חוויה ממוקדת-משימה, אך כפילות-תלות בתקנית. • BAPI = ממשק Released ויציב לאובייקטי-PM. • BAPI_ALM_NOTIF/ORDER/CONF הם המרכזיים. • תמיד בדוק Return ובצע COMMIT. • ממשק-Web = UI5/OData/BAPI מותאם מעבר ל-Fiori תקני. • העדף RAP/Fiori על Web Dynpro חדש. • אבטח חשיפה חיצונית ושמור Clean Core. • Customer Exits = נקודות-הרחבה מאושרות (SMOD/CMOD). • סוגים: Function/Screen/Menu exit. • העדף BAdI ושמור Clean Core. • כלים-נוספים: BAdI, Enhancement Framework, BTE, Workflow, RAP/CDS. • העדף Released/Explicit ו-BAdI על Implicit/Modification. • כל טכניקה לתרחיש שלה, תחת Clean Core.