2008-10-22 10 views
5

के साथ मैं एक एसएपी प्रोग्राम (लेनदेन) की कार्यक्षमता को बीएपीआई के रूप में बेनकाब करना चाहता हूं। मुझे एक रिपोर्ट कॉल करने और रेंज फ़िल्टर की आपूर्ति करने की आवश्यकता है जैसे कि जीयूआई को छोड़ दिया गया है।एबीएपी में मौजूदा एसएपी रिपोर्ट को कॉल करना, जीयूआई दमन

क्या किसी के पास सबमिट का एक कामकाजी उदाहरण है ... के साथ ... ABAP निर्माण, या मुझे क्या करने की आवश्यकता है इस पर अन्य सुझाव?

उत्तर

3

यहाँ एक काम कर उदाहरण है:

SUBMIT SAPF140 
    TO SAP-SPOOL       "optional" 
    SPOOL PARAMETERS print_parameters "optional" 
    WITHOUT SPOOL DYNPRO     "optional (hides the spool pop-up)" 
    VIA JOB jobname NUMBER l_number  "optional" 
    AND RETURN       "optional - returns to the calling prog" 
    WITH EVENT = REVENT 
    WITH BUKRS IN RBUKRS 
    WITH BELNR IN lRBELNR 
    WITH GJAHR IN RGJAHR 
    WITH USNAM = SY-UNAME 
    WITH DATUM = SAVE_DATUM 
    WITH UZEIT = SAVE_UZEIT 
    WITH DELDAYS = RDELDAYS 
    WITH KAUTO = 'X' 
    WITH RPDEST = SAVE_PDEST 
    WITH TITLE = TITLE. 

सभी "के साथ" बयान में कहा जाता कार्यक्रम मैं कहाँ का उपयोग पर चयन खाने से संबंधित है = यह एक पैरामीटर बयान (एकल क्षेत्र), जहां मैं इसे में उपयोग करें

REFRESH lrbelnr. 
lrbelnr-sign = 'I'. 
lrbelnr-option = 'EQ'. 
lrbelnr-low = HBKORM-belnr. 
CLEAR lrbelnr-high. 
append lrbelnr. 
+0

धन्यवाद, लेकिन यह काम नहीं करता है। विशेष कार्यक्रम में चयन के बाद एक चेतावनी है, और यह कोशिश करने से चेतावनी प्रदर्शित करने के लिए जीयूआई लाता है ... – user26652

+0

कौन सा प्रोग्राम/ट्रांस। क्या आप बुला रहे हैं नौकरी आईडी के माध्यम से सबमिट करने से आप चेतावनी को बाईपास कर सकते हैं, क्योंकि इसे नौकरी लॉग में चेतावनी लिखनी चाहिए। वैकल्पिक रूप से एसएपी जीयूआई में एक उपयोगकर्ता विशिष्ट सेटिंग है जो आपको चेतावनियों के लिए पॉप-अप बंद करने की अनुमति देती है (यदि चेतावनी सही ढंग से लागू की गई थी)। अंतर्निहित प्रश्न को संबोधित करने के लिए – Esti

1

आप एक BAPI के रूप में आप वें रैप करने के लिए है इस कार्यक्षमता को दबाने के लिए करना चाहते हैं: एक SELECT_OPTIONS बयान (रेंज)

यहाँ कैसे एक सीमा को भरने के लिए एक सरल उदाहरण है एक रिमोट फ़ंक्शन कॉल (आरएफसी) मॉड्यूल में ई कार्यक्षमता। बस एक आरएफसी समारोह मॉड्यूल लागू करें। रिपोर्ट कैसे लागू की जाती है, यह एबीएपी ऑब्जेक्ट्स का उपयोग कर सकती है, जिसे आपके आरएफसी कार्यान्वयन से भी बुलाया जा सकता है। यह देखते हुए कि आपके पास काफी अच्छा समाधान है। जब भी रिपोर्ट समायोजित की जाती है, तो भी आपका बीएपीआई परिवर्तनों को प्रतिबिंबित करेगा। यदि यह एसएपी से एक मानक प्रोग्राम है जिसे लपेटा नहीं जा सकता है, तो इसे अपने नामस्थान में कॉपी करने और इसे समायोजित करने के बारे में सोचें। फिर भी यह कुछ परेशानी दे सकता है, जब एसएपी समर्थन पैकेज स्टैक के माध्यम से एक अद्यतन करता है और आपको इसका एहसास नहीं होगा। दो तरीकों का उत्पादन अलग है। इसके अलावा, अगर आप इसे बाहर से कॉल करना चाहते हैं, तो आरएफसी मॉड्यूल को लागू करने से कहीं और कुछ भी संभव नहीं है।

एक सबमिट रिपोर्ट बाहर के मूल्यों को वापस नहीं कर सकती है। रिपोर्ट केवल जीयूआई कार्यक्षमताओं के लिए होती है न कि डेटा का आदान-प्रदान करने के लिए। यदि आपकी रिपोर्ट चुनिंदा विकल्पों का उपयोग करती है, तो आपको किसी भी तरह से अपने आरएफसी में "हाथ से" इस सुविधा को लागू करना होगा, क्योंकि इस कथन का उपयोग आरएफसी मॉड्यूल के अंदर नहीं किया जा सकता है। मैं आम तौर पर रिपोर्ट को पुन: कार्य करने की कोशिश करता हूं, इसे मॉड्यूलर करता हूं और चयन जानकारी को केंद्रीय वर्ग में डाल सकता हूं या शायद एक अन्य फ़ंक्शन मॉड्यूल जिसे रिपोर्ट और आपके बीएपीआई फ़ंक्शन मॉड्यूल से बुलाया जा सकता है। जिन फ़िल्टरों के बारे में आप बात कर रहे हैं उन्हें स्वचालित रूप से आरएफसी में लागू नहीं किया जा सकता है। आपको उन श्रेणियों को मैन्युअल रूप से लागू करना होगा। चेतावनी जो उत्पन्न होती है उसे दबाया नहीं जा सकता है, अगर आप रिमोट सिस्टम से आरएफसी कॉल करते हैं और चेतावनी के साथ पॉपअप आता है तो आप शॉर्टडम्प के साथ समाप्त हो जाएंगे। इसलिए, आपको रिपोर्ट को पुन: कार्य करना होगा और अपनी आवश्यकताओं के लिए इसे फिर से कार्यान्वित करना होगा।

यदि आप नौकरी शेड्यूलिंग के माध्यम से इसे छोड़कर देख रहे हैं, तो एक संस्करण बनाएं और रिपोर्ट को उस संस्करण के साथ शेड्यूल करें लेकिन मुझे लगता है कि यह वह समाधान नहीं है जिसे आप ढूंढ रहे हैं।

+0

+1 (बाहरी दुनिया को उजागर करना) – Esti

1

आप इनबिल्ट BAPI का उपयोग कर सकते हैं, बस "रेंज" लिखें और F4 दबाएं।

0

आप अपनी रिपोर्ट को BATCH INPUT session पर लपेट सकते हैं और इसे फ़ंक्शन के अंदर निष्पादित कर सकते हैं। एकमात्र कमी यह है कि जब भी आप रिपोर्ट बदलते हैं तो आपको बैच इनपुट को फिर से लिखना होगा।

संबंधित मुद्दे