के साथ itab पढ़ना मैं एक आंतरिक तालिका को पढ़ने के लिए एक तरीका काम करने की कोशिश कर रहा हूं जिसे गतिशील रूप से बनाया जाना है। मैंने निम्न रिपोर्ट बनाई है जो डेटा के साथ गतिशील आंतरिक तालिका भरती है। आखिरी पंक्ति पर मैं इसे एक कुंजी के साथ पढ़ने की कोशिश कर रहा हूं (उदाहरण के लिए mandt
)। समस्या यह है कि मुझे त्रुटि मिलती है, "निर्दिष्ट प्रकार की कोई संरचना नहीं है और इसके लिए कोई घटक नहीं है जिसे MANDT कहा जाता है"।गतिशील कुंजी विनिर्देश
मैंने डीबग किया है और मैं देख सकता हूं कि सफलतापूर्वक पॉप्युलेट किया गया है और तालिका (फ़ील्ड नाम) की संरचना सही है। जब मैं कार्य क्षेत्र में तालिका को पढ़ने की कोशिश करता हूं तो समस्या स्वयं प्रस्तुत होती है। हो सकता है कि यह गलत कर रहा हो, लेकिन ऐसा कुछ ऐसा लगता है जो संभव होना चाहिए, और मुझे लगता है कि मुझे कुछ छोटा लगता है।
कारण मैं यह कोशिश कर रहा हूं कि मुझे एक कार्यक्रम में समान चयन मिलते हैं और स्मृति में रिकॉर्ड बफर करना चाहते हैं और डीबी एक्सेस से बचने के लिए वहां से उन्हें पढ़ना चाहते हैं। यह कार्यान्वित करना आसान है, हालांकि मैंने यह नहीं किया है जब तालिका, where
खंड और into
ओपन एसक्यूएल कथन का खंड मैं अनुकूलित करने की कोशिश कर रहा हूं गतिशील हैं।
चीयर्स।
DATA: t681_rep TYPE TABLE OF t681 , wa_681 LIKE LINE OF t681_rep,
tabref TYPE REF TO data , waref TYPE REF TO data.
FIELD-SYMBOLS: <any_tab> TYPE ANY TABLE,
<any_wa> TYPE ANY,
<var1> TYPE ANY.
"fill t681_rep
SELECT *
FROM t681
INTO TABLE t681_rep
UP TO 1 ROWS WHERE kotab = 'A002'.
READ TABLE t681_rep INTO wa_681 WITH KEY kotab = 'A002'.
IF sy-subrc = 0.
"if A002 is found create a table of that type and fill it
CREATE DATA tabref TYPE TABLE OF (wa_681-kotab).
ASSIGN tabref->* TO <any_tab>.
SELECT * UP TO 10 ROWS
FROM (wa_681-kotab)
INTO TABLE <any_tab>.
ENDIF.
CREATE DATA waref TYPE a002.
ASSIGN waref->* TO <any_wa>.
READ TABLE <any_tab> ASSIGNING <any_wa> WITH KEY mandt = '800'. <- problem area
IF sy-subrc = 0.
"do stuff with <any_wa>...
ENDIF.
हाय ब्रायन, आपके उत्तर के लिए धन्यवाद। यह काम करता है, हालांकि मैं पूरी तरह से गतिशील समाधान की तलाश में हूं। छद्म कोड में कुछ ऐसा है: –
उस टिप्पणी से कुछ याद आ रही है ... –