SAP ABAP तालिका नियंत्रण उदाहरण सहित
⚡ स्मार्ट सारांश
SAP ABAP टेबल कंट्रोल, स्क्रीन में निर्मित आंतरिक तालिका को स्क्रॉल करने योग्य ग्रिड के रूप में प्रदर्शित करता है। Painterयह पृष्ठ इसकी विशेषताओं, CONTROLS घोषणा, कर्सर हैंडलिंग, PBO और PAI लूप और कॉलम विशेषताओं की व्याख्या करता है।

टेबल कंट्रोल क्या है? SAP एबीएपी?
टेबल नियंत्रण और स्टेप लूप स्क्रीन टेबल डिस्प्ले के लिए ऑब्जेक्ट हैं जिन्हें आप स्क्रीन में जोड़ते हैं Painter.
प्रोग्रामिंग के दृष्टिकोण से, टेबल कंट्रोल और स्टेप लूप लगभग एक जैसे ही हैं। टेबल कंट्रोल बस बेहतर स्टेप लूप हैं जो डेस्कटॉप एप्लीकेशन में टेबल से जुड़े लुक और फील के साथ डेटा प्रदर्शित करते हैं।
ABAP तालिका नियंत्रण की विशेषताएं
तालिका नियंत्रणों के साथ, उपयोगकर्ता यह कर सकता है:
- तालिका को लंबवत और क्षैतिज रूप से स्क्रॉल करें
- कॉलम की चौड़ाई का आकार बदलें
- किसी फ़ील्ड के भीतर स्क्रॉल करें (जब फ़ील्ड की सामग्री फ़ील्ड से अधिक चौड़ी हो)
- तालिका पंक्तियाँ या स्तंभ चुनें
- स्तंभों के अनुक्रम को पुनः व्यवस्थित करें
- भविष्य में उपयोग के लिए वर्तमान प्रदर्शन सेटिंग्स सहेजें
टेबल नियंत्रण विशेष स्वरूपण सुविधाएँ भी प्रदान करते हैं (कुछ स्वचालित, कुछ वैकल्पिक) जो टेबल को देखना और उपयोग करना आसान बनाते हैं। टेबल नियंत्रण प्रदान करता है –
- जब उपयोगकर्ता विंडो का आकार बदलता है तो स्वचालित रूप से तालिका का आकार बदलना (ऊर्ध्वाधर और क्षैतिज)
- पंक्तियों के बीच और स्तंभों के बीच विभाजक रेखाएँ (ऊर्ध्वाधर और क्षैतिज)
- सभी स्तंभों के लिए स्तंभ शीर्षलेख फ़ील्ड
सामान्यतः, टेबल नियंत्रण द्वारा प्रदान की गई कई सुविधाएँ आपके सिस्टम द्वारा स्थानीय रूप से नियंत्रित की जाती हैं। SAPgui फ्रंटएंड, इसलिए आपको उन्हें खुद प्रोग्राम करने की ज़रूरत नहीं है। इसका एकमात्र उल्लेखनीय अपवाद वर्टिकल स्क्रॉलिंग है.
उदाहरण (लेनदेन TZ60)
ऊपर दिए गए ट्रांज़ैक्शन TZ60 में अंतिम परिणाम दिखाया गया है: कॉलम हेडर, विभाजक रेखाओं और एक चयन कॉलम वाला ग्रिड। पुराने स्टेप लूप से अंतरों का सारांश आगे दिया गया है।
टेबल कंट्रोल बनाम स्टेप लूप
स्टेप लूप की एक विशेषता यह है कि उनकी टेबल पंक्तियाँ स्क्रीन पर एक से अधिक लाइन में फैल सकती हैं। दूसरी ओर, टेबल कंट्रोल की एक पंक्ति हमेशा एक ही लाइन में समाहित होनी चाहिए (हालाँकि स्क्रॉलिंग संभव है)। नीचे दी गई तालिका इन दोनों स्क्रीन तत्वों की तुलना करती है।
| मापदंड | टेबल नियंत्रण | स्टेप लूप |
|---|---|---|
| पंक्ति लेआउट | एक पंक्ति हमेशा एक स्क्रीन लाइन होती है | एक पंक्ति कई स्क्रीन लाइनों तक फैल सकती है |
| कॉलम हैंडलिंग | उपयोगकर्ता द्वारा कॉलम का आकार बदला जा सकता है, उन्हें पुनर्व्यवस्थित किया जा सकता है और उन्हें छिपाया जा सकता है। | स्क्रीन पर परिभाषित निश्चित कॉलम लेआउट |
| स्क्रॉल | फ्रंटएंड द्वारा क्षैतिज स्क्रॉलिंग, पीएआई में प्रोग्राम की गई ऊर्ध्वाधर स्क्रॉलिंग | पूरी तरह से ABAP कोड में प्रोग्राम किया गया है |
| घोषणा | नियंत्रण … स्क्रीन का उपयोग करके टेबलव्यू टाइप करें | प्रोग्राम में कोई नियंत्रण संरचना नहीं है |
| प्रदर्शन सेटिंग्स | उपयोगकर्ता अपना निजी लेआउट सहेज सकता है। | अनुपलब्ध |
क्योंकि टेबल कंट्रोल आधुनिक तत्व है, इसलिए इस पृष्ठ का शेष भाग उसी को प्रोग्राम करता है।
टेबल कंट्रोल कैसे बनाएं और प्रोग्राम करें
टेबल कंट्रोल के लिए एक स्क्रीन एलिमेंट, प्रोग्राम में एक कंट्रोल स्ट्रक्चर और PBO तथा PAI दोनों में एक लूप की आवश्यकता होती है। नीचे दिए गए उपखंड इसी क्रम का पालन करते हैं।
नियंत्रण की घोषणा करना
ABAP प्रोग्रामों में तालिका नियंत्रणों को संभालने के लिए, आपको निम्नलिखित कथन का उपयोग करके प्रत्येक तालिका नियंत्रण के लिए प्रोग्राम के घोषणा भाग में एक नियंत्रण घोषित करना होगा:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
कहाँ ABAP प्रोग्राम में स्क्रीन पर टेबल कंट्रोल का नाम है। यह कंट्रोल ABAP प्रोग्राम को टेबल कंट्रोल की विशेषताओं को पढ़ने और कंट्रोल को प्रभावित करने की अनुमति देता है। यहाँ, वह स्क्रीन संख्या है जहाँ तालिका के प्रारंभिक मान लोड किए जाते हैं।
कर्सर की स्थिति निर्धारित करना और पढ़ना
तालिका नियंत्रण के लिए कर्सर स्थिति निम्नलिखित तरीकों से सेट की जा सकती है:
पीबीओ में आप कर्सर को तालिका नियंत्रण की किसी विशिष्ट पंक्ति के विशिष्ट क्षेत्र पर सेट कर सकते हैं।
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
वैकल्पिक अतिरिक्त OFFSET का उपयोग करके, आप फ़ील्ड में कर्सर का ऑफसेट दर्ज कर सकते हैं जैसा कि कर्सर स्थिति सेट करना के अंतर्गत वर्णित है।
PAI पर आप वर्तमान कर्सर स्थिति पढ़ सकते हैं।
GET CURSOR FIELD <f> LINE <lin> ...
कर्सर की स्थिति का पता लगाना के अंतर्गत दी गई जानकारी के अतिरिक्त, फ़ील्ड इसमें यह जानकारी होती है कि कर्सर वर्तमान में टेबल कंट्रोल की किस पंक्ति पर है। आप इसका उपयोग भी कर सकते हैं
GET CURSOR LINE <lin>.
टेबल कंट्रोल की पंक्ति निर्धारित करने के लिए। SY-SUBRC आपको यह जांचने की अनुमति देता है कि कर्सर टेबल कंट्रोल की किसी पंक्ति में स्थित है या नहीं।
संबंधित आंतरिक तालिका पंक्ति को पढ़ना
की संगत पंक्ति प्राप्त करने के लिए आंतरिक तालिका:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
सिस्टम वैरिएबल stepl - लूप में मौजूदा टेबल लाइन इंडेक्स को शामिल करता है... endloop. Loopc - टेबल में दिखाई देने वाली लाइनों की संख्या को शामिल करता है
स्क्रीन में नियंत्रण बनाना Painter
तालिका नियंत्रण बनाने के लिए
- अपनी स्क्रीन में एक टेबल कंट्रोल एलिमेंट जोड़ें
- टेबल कंट्रोल को एक नाम दें। ABAP प्रोग्राम में उसी नाम से एक संरचना घोषित करें (CONTROLS)। टाइप टेबलव्यू यूजिंग स्क्रीन )
- फ़ील्ड बनाने के लिए Dict./Program fields फ़ंक्शन पर जाएं।
- उस संरचना का नाम दर्ज करें जिसके फ़ील्ड आप चाहते हैं। (यदि आप इसे अपने प्रोग्राम के शब्दकोश से चुनना चाहते हैं तो संबंधित बटन पर क्लिक करें)।
- फ़ील्ड सूची में अपनी इच्छित फ़ील्ड चुनें और ओके चुनें।
- तालिका नियंत्रण क्षेत्र में क्लिक करें
यदि आप चयन कॉलम चाहते हैं, तो विशेषताओं में उपयुक्त चेक बॉक्स को चेक करें और उसे एक नाम दें। फ़ील्ड बनाएँ एबीएपी कार्यक्रम.
पीबीओ और पीएआई लूप्स की कोडिंग
पीबीओ में आपके पास यह कथन होना चाहिए
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
पीएआई में आपके पास होना चाहिए।
LOOP at <itab>. ENDLOOP.
लूप के भीतर ही स्क्रीन और आंतरिक तालिका के बीच डेटा का स्थानांतरण होता है। आंतरिक तालिका में डेटा भरते समय DESCRIBE TABLE कमांड का उपयोग करें। LINEएस -lines, कंट्रोल में लाइनों की कुल संख्या को स्टोर करने के लिए। FIELD स्टेटमेंट का उपयोग डेटा ट्रांसफर कब होता है, इसे नियंत्रित करने के लिए किया जा सकता है।
⚠️ चेतावनी: PBO लूप में कंट्रोल को नाम देते समय "USING CONTROL" का प्रयोग करना आवश्यक है। इसके बिना कंट्रोल को यह पता नहीं चलता कि कितनी लाइनें मौजूद हैं, और वर्टिकल स्क्रॉलिंग काम करना बंद कर देती है।
रनटाइम पर कॉलम विशेषताओं को बदलना
व्यक्तिगत कक्षों की विशेषताओं को बदलने के लिए PBO में SCREEN तालिका को अस्थायी रूप से बदलें। आप CONTROLS कथन द्वारा बनाई गई संरचना की विशेषताओं को बदल सकते हैं
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.
💡टिप: लूप ओवर किसी दिए गए उपयोगकर्ता भूमिका के लिए किसी कॉलम को छिपाने या सुरक्षित करने के लिए PBO में -cols का उपयोग करें, बजाय दूसरी स्क्रीन बनाने के।

