SAP ABAP आंतरिक तालिका: बनाएँ, पढ़ें, आबाद करें, कॉपी करें & हटाएं

विषय - सूची:

Anonim

एक आंतरिक तालिका क्या है?

आंतरिक उपयोग का उपयोग ABAP में गतिशील उपयोग के लिए एक निश्चित संरचना से डेटा प्राप्त करने के लिए किया जाता है। आंतरिक तालिका की प्रत्येक पंक्ति में समान फ़ील्ड संरचना होती है। आंतरिक तालिकाओं के लिए मुख्य उपयोग प्रोग्राम के भीतर डेटाबेस तालिका से डेटा संग्रहीत और प्रारूपित करने के लिए है।

इस ट्यूटोरियल में आप सीखेंगे:

  • एक आंतरिक तालिका क्या है?
  • कार्य क्षेत्र क्या है?
  • आंतरिक तालिका और कार्य क्षेत्र के बीच अंतर?
  • आंतरिक तालिकाओं के प्रकार
  • आंतरिक तालिकाओं का निर्माण
  • आंतरिक तालिकाओं को आबाद करना
  • आंतरिक तालिकाओं की नकल करना
  • आंतरिक पढ़ना
  • आंतरिक तालिकाओं को हटाना

कार्य क्षेत्र क्या है?

कार्य क्षेत्र डेटा की एकल पंक्तियाँ हैं। उनके पास किसी भी आंतरिक तालिकाओं के समान प्रारूप होना चाहिए। इसका उपयोग एक समय में एक आंतरिक तालिका एक पंक्ति में डेटा को संसाधित करने के लिए किया जाता है।

आंतरिक तालिका और कार्य क्षेत्र के बीच अंतर?

एक तस्वीर बहुत कुछ कहती है :-)

आंतरिक तालिकाओं के प्रकार

आंतरिक तालिकाओं के दो प्रकार हैं।

  1. हेडर लाइन के साथ आंतरिक टेबल
  2. हेडर लाइन के बिना आंतरिक टेबल।

हेडर लाइन के साथ आंतरिक तालिकाओं

  • यहां सिस्टम स्वचालित रूप से कार्य क्षेत्र बनाता है।
  • कार्य क्षेत्र में आंतरिक तालिका के समान डेटा प्रकार है।
  • इस कार्य क्षेत्र को हेडर लाइन कहा जाता है।
  • यह यहां है कि तालिका की सामग्री पर सभी परिवर्तन या कोई भी कार्रवाई की जाती है। इसके परिणामस्वरूप रिकॉर्ड्स को सीधे टेबल में डाला जा सकता है या सीधे आंतरिक टेबल से एक्सेस किया जा सकता है।

हेडर लाइन के बिना आंतरिक तालिकाएँ :

  • यहां टेबल से जुड़ा कोई कार्य क्षेत्र नहीं है।
  • जब हमें ऐसी तालिकाओं का उपयोग करने की आवश्यकता होती है, तो कार्य क्षेत्र स्पष्ट रूप से निर्दिष्ट किया जाता है।
  • इसलिए इन तालिकाओं को सीधे एक्सेस नहीं किया जा सकता है।

आंतरिक तालिकाओं का निर्माण

आंतरिक तालिका बनाने के कई तरीके हैं। आओ हम उन्हें एक-एक करके देखते हैं-
1. टाइप स्टेटमेंट का उपयोग करके
अब हम TYPE स्टेटमेंट का उपयोग करके एक आंतरिक टेबल इटैब बनाते हैं।
वाक्य रचना है -

प्रकार: लाइन की शुरुआत,कॉलम 1 प्रकार I,कॉलम 2 प्रकार I,पंक्ति का अंत।

उदाहरण:

प्रकार: लाइन की शुरुआत,एम्पनो टाइप I,empname (20) प्रकार c,पंक्ति का अंत।

TYPES कथन परिभाषित के रूप में एक संरचना रेखा बनाता है।
वास्तव में एक आंतरिक तालिका बनाने के लिए itab निम्नलिखित कमांड का उपयोग करें-

डेटा itab टाइप लाइन 10 होती है।

एक आंतरिक तालिका itab को लाइन की संरचना के साथ बनाया गया है। आंतरिक तालिका की संरचना की घोषणा करने के अलावा, OCCURS क्लॉज यह भी परिभाषित करता है कि मुख्य संग्रहण में (इस मामले में 10) कितनी टेबल प्रविष्टियां बनी हुई हैं। पेजिंग क्षेत्र के लिए अतिरिक्त रिकॉर्ड लिखे गए हैं और प्रदर्शन को प्रभावित कर सकते हैं।
2. किसी अन्य तालिका का जिक्र करते हुए
आप मौजूदा तालिका का संदर्भ देकर आंतरिक तालिका बना सकते हैं। मौजूदा तालिका एक मानक SAP तालिका, एक Z तालिका या दूसरी आंतरिक तालिका हो सकती है।
वाक्य - विन्यास-

डेटा  <टाइप> [हेडर लाइन के साथ]।

उदाहरण-

DATA itab TYPE लाइन OCCURS 10 हेडर लाइन के साथ।

यहां एक आंतरिक टेबल itab हेडर लाइन के साथ टाइप लाइन से बना है। कृपया ध्यान दें "हेडर लाइन के साथ" वैकल्पिक
है। मौजूदा संरचना
सिंटैक्स का उल्लेख करते हुए 3.By-

डेटा  LIKE <स्ट्रक्चर> हेडर लाइन के साथ n [] होता है।

उदाहरण-

DATA itab LIKE sline OCCURS 10।

यहाँ एक टेबल इटैब को एक संरचना के रूप में बनाया गया है जो कि sline
4 के रूप में है। एक नई संरचना का
निर्माण करें। आइए अब हम अपनी स्वयं की संरचना के साथ एक आंतरिक तालिका बनाएं। यहां टेबल को हेडर लाइन के साथ डिफ़ॉल्ट रूप से बनाया गया है
वाक्य - विन्यास -

डेटा: की शुरुआत  होती है ,<घटक घोषणा>, ...का अंत  है।

उदाहरण -

डेटा: इटैब की शुरुआत 10 से होती है,कॉलम 1 प्रकार I,कॉलम 2 (4) टाइप सी,कॉलम 3 जैसे मारा-इरनाम,इटब का अंत।

आंतरिक तालिका itab बनाया गया है

आंतरिक तालिकाओं को आबाद करना

अब जब हमने कुछ आंतरिक तालिकाओं का सफलतापूर्वक निर्माण कर लिया है, तो आइए देखें कि हम उन्हें किस प्रकार कुछ अभिलेखों के साथ आबाद करते हैं। तालिकाओं को पॉप्युलेट करने के लिए विभिन्न विधियाँ उपलब्ध हैं। 1. लाइन द्वारा डेटा लाइन लाइन करें पहली उपलब्ध विधि APPEND स्टेटमेंट का उपयोग है।
APPEND स्टेटमेंट का उपयोग करके हम या तो किसी अन्य कार्य क्षेत्र से आंतरिक तालिका में एक पंक्ति जोड़ सकते हैं या हम आंतरिक तालिका में एक प्रारंभिक रेखा जोड़ सकते हैं ...
सिंटैक्स -
APPEND [ TO / INITIAL LINE TO] 
यहां कार्य क्षेत्र <वा> या प्रारंभिक रेखा आंतरिक तालिका से जुड़ी है।
सिस्टम वेरिएबल SY-TABIX में एपेंडेड लाइन का इंडेक्स है।
उदाहरण:
डेटा: इटैब की शुरुआत 10 से होती है,col1 प्रकार C,col2 प्रकार I,itab का अंत।इटाब के लिए प्रारंभिक पंक्ति में जोड़ें।

परिणाम: '' '0'
आरंभिक लाइनें तालिका के प्रकार के लिए सही मान के साथ आरंभ की गई एक पंक्ति जोड़ती हैं। यहाँ, col1 एक वर्ण है और col2 एक पूर्णांक है। इसके बाद प्रारंभिक पंक्ति, कॉलम के डेटा प्रकार के संबंध में इनिशियलाइज़ की गई एक लाइन को जोड़ता है, यानी col2 के लिए col1 और 0 के लिए स्थान। 2. COLLECT स्टेटमेंटका उपयोग करना COLLECT, आंतरिक तालिकाओं को पॉप्युलेट करने के लिए उपयोग किए जाने वाले स्टेटमेंट का दूसरा रूप है। आमतौर पर COLLECT का उपयोग अद्वितीय मानक कुंजी के साथ आंतरिक तालिका में लाइनें सम्मिलित करते समय किया जाता है।
वाक्य - विन्यास-
COLLECT [ INTO] 

हैडर लाइन के साथ तालिकाओं का उपयोग, INTO विकल्प छोड़ा गया है। मान लीजिए कि पहले से ही एक एंट्री है, जिसमें एक कुंजी है जिसे आप जोड़ने की कोशिश कर रहे हैं, तो एक नई लाइन को टेबल पर नहीं जोड़ा जाता है, लेकिन दोनों प्रविष्टियों के संख्यात्मक क्षेत्र जोड़े जाते हैं और कुंजी के अनुरूप केवल एक प्रविष्टि मौजूद है । SY-TABIX का मान मूल प्रविष्टि की पंक्ति में बदल जाता है। एप्स END और SY-TABIX के समान ही एलीस कोलक्ट में प्रोसेस्ड लाइन का इंडेक्स होता है। INSERT कथन का उपयोग करना INSERT कथनआंतरिक तालिका में एक पंक्ति / कार्य क्षेत्र जोड़ता है। आप उस स्थिति को निर्दिष्ट कर सकते हैं जिस पर INSERT स्टेटमेंट के साथ INDEX क्लॉज का उपयोग करके नई लाइन जोड़ी जानी है।
वाक्य - विन्यास
INSERT [ INTO / INITIAL LINE INTO]  [index ]।
यहां, कार्य क्षेत्र या INITIAL LINE आंतरिक तालिका पर सूचकांक में डाला गया है।

आंतरिक तालिकाओं की नकल करना

APPEND LINES या INSERT LINES स्टेटमेंट का उपयोग करके एक आंतरिक तालिका की सामग्री को दूसरे में कॉपी किया जा सकता है। एक अधिक सरल तरीका निम्नलिखित सिंटैक्स की usetany है।
MOVE  को ।या = 

ये ITAB1 की सामग्री को ITAB2 में कॉपी करते हैं। हेडर लाइन के साथ आंतरिक तालिकाओं का उपयोग हमें कार्य क्षेत्र से अलग करने के लिए [] इनवर्टर का उपयोग करना होगा। तो, हेडर लाइन के साथ आंतरिक तालिकाओं की सामग्री को कॉपी करने के लिए सिंटैक्स बन जाता है,
itab1 [] = itab2 []

आंतरिक तालिकाएँ पढ़ें

अब हम आंतरिक तालिकाओं के निर्माण और डेटा के साथ उन्हें आबाद करने से परिचित हैं। अब हम देखेंगे कि हम वास्तव में डेटा का उपयोग कैसे करते हैं या आंतरिक तालिकाओं से डेटा को पुनः प्राप्त करते हैं। 1. लूप का उपयोग -एंड्लूपआंतरिक तालिका तक पहुंचने या पढ़ने के तरीकों में से एक LOOP-ENDLOOP का उपयोग करके है।
वाक्य - विन्यास
लोड करें

यहां जब आप LOOP AT ITABLE कहते हैं, तब आंतरिक तालिका ITABLE को लाइन द्वारा लाइन में पढ़ा जाता है। आप LOOP-ENDLOOP संरचना के किसी भी भाग के दौरान उस पंक्ति के स्तंभों के मानों तक पहुँच सकते हैं। SY-SUBRC का मान 0 पर सेट है , भले ही केवल एक रिकॉर्ड पढ़ा गया हो। 2. READका उपयोग करना READ स्टेटमेंट का उपयोग करके आंतरिक तालिका पढ़ने की अन्य विधि है।
वाक्य - विन्यास-
READ TABLE  [INTO ] INDEX 

यह कथन इंडेक्स द्वारा निर्दिष्ट वर्तमान लाइन या लाइन को पढ़ता है। SY-TABIX का मान रेखा पढ़े जाने का सूचकांक है। यदि निर्दिष्ट सूचकांक के साथ एक प्रविष्टि पाई जाती है, तो SY-SUBRC 0. पर सेट किया जाता है। यदि निर्दिष्ट सूचकांक 0 से कम है, तो रन-टाइम त्रुटि होती है। यदि निर्दिष्ट सूचकांक तालिका आकार से अधिक है तो SY-SUBRC 4 पर सेट है।

आंतरिक तालिकाओं को हटाना

आंतरिक तालिका से लाइनें हटाने के कई तरीके हैं। 1. एक लूप में लाइनों को जोड़ने।
यह लाइनों को हटाने का सबसे सरल तरीका है।
साइटैक्स
DELETE 

यह कथन केवल एक लूप के भीतर काम करता है। यह वर्तमान लाइन को हटा देता है। आप WHERE क्लॉज जोड़कर सशर्त रूप से लूप में लाइनें हटा सकते हैं। 2. सूचकांक का उपयोग कर लाइनों को जोड़ने।
इसका उपयोग किसी भी इंडेक्स पर आंतरिक तालिका से एक पंक्ति को हटाने के लिए किया जाता है।
वाक्य - विन्यास
DELETE  INDEX 
इंडेक्स के साथ लाइन हटाई गई है। निम्नलिखित पंक्ति के सूचकांक को 1 से घटाया जाता है।