FIELD-SYMBOLS
Field-Symbols זה מצביע , ומי שיש לו טיפה רקע תכנותי מכיר את המושג אך למי שלא מכיר את המושג אני אסביר תחילה בצורה שלא קשורה לתכנות ואחר כך אגע באיך זה בפועל בABAP:
נניח שאני רוצה להראות לחבר שלי עץ שנמצא בעיר שאני גר בה, בצורה הרגילה אני אצטרך לקחת אותו לאותו העץ כדי להראות לו אותו, אבל אם יש לי גוגל מפות אז אני פשוט יכול להצביע על העץ הזה והחבר יוכל לראות אותו.
מצביע זה גוגל מפות קסום, שלא רק שאני יכול להראות לחבר את העץ אני גם יכול לשנות את העץ(גודל, צבע, מספר תפוחים וכו…) וכשאני משנה אותו במפה הוא ישר ישתנה באמת גם איפה שהוא נמצא.
עכשיו נעבור על איך זה עובד בפועל בABAP.
יש לי בתוכנית את הטבלה הפנימית הזו
אם אני רוצה עכשיו להוסיף לו נותנים אני נצטרך להשתמש בWORK-AREA ולעשות את זה בצורה הבאה
הגדרנו WA לIT_MINI_MARA
הכנסנו נתונים לאותו WA
ולאחר מכן הכנסנו את הWA לטבלה הפנימית.
עם שימוש במצביע הקוד יראה כך:
ועכשיו נפרק ונסביר את הקוד:
בשורה זו יצרנו מצביע מאותו סוג כמו הטבלה הפנימית שלנו,בעצם עכשיו יש לנו מצביע אבל המצביע לא מצביע לנו על כלום.
בשורה זו קוראים שני דברים
אחד זה הוספת שורה ריקה לטבלה הפנימית
שתיים זה להגדיר את המצביע שיצביע על השורה
(אפשרי לעשות את שני השורות האלו בשורה אחת באמצעות Inline Declaration
למידע יותר מעמיק על Inline Declaration לחץ כאן
כעת המצביע שלנו מצביע על שורה בתוך הטבלה הפנימית וכאשר נשנה את המצביע השורה תשתנה בהתאם.
והנה בשורות האלו אנחנו משנים את הנתונים שיש לנו במצביע ואכן הם משתנים בטבלה הפנימית גם.
וכמו שאפשר לרוץ על טבלה פנימית באמצעות WA :
אפשר גם לרוץ על טבלה פנימית באמצעות מצביע :
ראינו את ההבדלים בין שימוש בWA לשימוש עם מצביע עכשיו נשארת השאלה “למה?”,
כדי לענות על השאלה הזאת נעבור על היתרונות והחסרונות של שימוש במצביעים.
יתרונות:
- חסכון במקום : עבודה עם מצביעים מאפשר לשנות נתונים מבלי להעתיק אותם למשתנה חדש מה שחוסך מקום, במיוחד אם מדובר בטבלאות גדולות .
- קוד נקי יותר : כאשר משתמשים במצביעים יש שימוש קטן יותר במשתנים זמניים כמו WA.
-
מהיר יותר: בגלל שהמצביע עובד ישירות עם הטבלה והזיכרון הקוד רץ מהר יותר.
חסרונות:
- פוטנציאל לתקלות: בשימוש לא נכון מצביע יכול להצביע על מידע שנמחק כבר מה שיכול להוביל לתקלות בזמן ריצה.
- דיבאג מסובך יותר: לעשות דיבאג לקוד מבוסס מצביעים יכול להיות מסובך בגלל הדינמיות של המצביע.