Εκμάθηση υποοθονών ABAP: Καλέστε την υποοθόνη εισόδου SAP

⚡ Έξυπνη Σύνοψη

Οι δευτερεύουσες οθόνες ABAP ενσωματώνουν μια οθόνη μέσα σε μια περιοχή μιας άλλης οθόνης κατά τον χρόνο εκτέλεσης, μαζί με τη λογική ροής της. Αυτή η σελίδα εξηγεί τις περιοχές δευτερεύουσας οθόνης, την πρόταση CALL SUBSCREEN σε PBO και PAI, τη μεταφορά δεδομένων και τους περιορισμούς που προκαλούν σφάλματα χρόνου εκτέλεσης.

  • 🪟 Βασικός Ορισμός: Μια δευτερεύουσα οθόνη είναι μια ανεξάρτητη οθόνη που εμφανίζεται μέσα σε μια καθορισμένη περιοχή μιας κύριας οθόνης και πολλές δευτερεύουσες οθόνες μπορούν να μοιράζονται μία κύρια οθόνη.
  • 🧩 Συμπεριλάβετε αναλογία: Η λογική ροής της ενσωματωμένης οθόνης εισάγεται στη λογική ροής της κύριας οθόνης, ακριβώς όπως εισάγεται μια συμπερίληψη σε ένα πρόγραμμα.
  • 🪜 Τρία Βήματα: Ορίστε την περιοχή δευτερεύουσας οθόνης, ορίστε την οθόνη δευτερεύουσας οθόνης και, στη συνέχεια, συμπεριλάβετε αυτήν την οθόνη στην περιοχή.
  • Κλήση PBO: ΣΥΝΔΡΟΜΗ ΚΛΗΣΗΣ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ αντιστοιχίζει έναν αριθμό οθόνης τεσσάρων χαρακτήρων στην περιοχή και εκτελεί τη λογική PBO.
  • Κλήση PAI: ΣΥΝΔΡΟΜΗ ΚΛΗΣΗΣ στο PAI εκτελεί τη λογική PAI της ενσωματωμένης οθόνης και μεταφέρει τα δεδομένα πεδίων με το ίδιο όνομα.
  • 🚫 Περιορισμοί: Μια δευτερεύουσα οθόνη δεν επιτρέπεται να χρησιμοποιεί τις εντολές SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, έναν δικό της OK_CODE ή AT EXIT-COMMAND.
  • 🌐 Παγκόσμια Πεδία: Τα πεδία που χρησιμοποιούνται από μια δευτερεύουσα οθόνη είναι καθολικά πεδία που δηλώνονται στο TOP include του προγράμματος.

Υποοθόνες ABAP

Τι είναι μια δευτερεύουσα οθόνη στο SAP ABAP;

Πριν διαβάσετε αυτό το σεμινάριο, βεβαιωθείτε ότι γνωρίζετε τι Πρόγραμμα διαλόγου είναι.

  • Μια υποοθόνη είναι μια ανεξάρτητη οθόνη που εμφανίζεται σε μια περιοχή μιας άλλης ("κύριας") οθόνης.
  • Οι δευτερεύουσες οθόνες σάς επιτρέπουν να ενσωματώνετε μια οθόνη σε μια άλλη κατά το χρόνο εκτέλεσης. Μπορείτε να συμπεριλάβετε πολλές υποοθόνες στην κύρια οθόνη.
  • Ο όρος υποοθόνη ισχύει τόσο για την οθόνη που ενσωματώνετε όσο και για την περιοχή στην κύρια οθόνη στην οποία την τοποθετείτε. Αυτό το σεμινάριο αφορά τις περιοχές υποοθόνης. Οι πραγματικές οθόνες που δημιουργούνται μέσω της συναλλαγής SE51, ονομάζονται οθόνες υποοθόνης εάν ορίζονται στα χαρακτηριστικά οθόνης.
  • Όταν χρησιμοποιείτε μια υποοθόνη, η λογική ροής της ενσωματωμένης οθόνης είναι επίσης ενσωματωμένη στη λογική ροής της κύριας οθόνης. Ως εκ τούτου, η χρήση υποοθονών σε οθόνες είναι σαν να χρησιμοποιείτε τα περιλαμβάνει σε Προγράμματα ABAP.

Για να χρησιμοποιήσετε μια υποοθόνη, πρέπει να ακολουθήσετε τρία απλά βήματα

  1. Καθορίστε τις περιοχές υποοθόνης σε μια οθόνη
  2. Ορίστε τις κατάλληλες οθόνες υποοθόνης
  3. Συμπεριλάβετε την οθόνη υποοθόνης στην περιοχή της υποοθόνης.

Επίσης, πρέπει να προσαρμόσετε το πλαίσιο της υποοθόνης και της κύριας οθόνης. Πρέπει να το ονομάσετε στο πεδίο όνομα πεδίου.

Επιπλέον, πρέπει επίσης να προσαρμόσετε τα πεδία στην υποοθόνη για να εμφανίζονται στην κύρια οθόνη. Σε περίπτωση που η υποοθόνη οριστεί ότι είναι μεγαλύτερη από τη διαθέσιμη περιοχή στην κύρια οθόνη, θα είναι ορατό μόνο το τμήμα της υποοθόνης που ταιριάζει στη διαθέσιμη περιοχή. Η περιοχή μετριέται πάντα από την επάνω αριστερή γωνία της οθόνης. Ως εκ τούτου, θα πρέπει να προσέχετε επαρκώς κατά τον καθορισμό περιοχών υποοθονών και τη δημιουργία υποοθονών.

ΚΛΗΣΗ ΥΠΟΟΘΟΝΗΣ

ΠΑΡΑΔΕΙΓΜΑ

Για παράδειγμα, εδώ έχουμε ορίσει δύο περιοχές υποοθόνης στην κύρια οθόνη και έχουμε συνδέσει δύο διαφορετικές υποοθόνες σε αντίστοιχες περιοχές. Κάθε φορά που καλείται η κύρια οθόνη, καλείται το PBO της κύριας οθόνης. Αλλά πριν από την εμφάνιση, καλούνται επίσης τα PBO κάθε οθόνης που συνδέονται με περιοχές υποοθόνης στην κύρια οθόνη.

Κλήση στην υποοθόνη SAP

Το στιγμιότυπο οθόνης δείχνει την κύρια οθόνη με τις δύο περιοχές δευτερεύουσας οθόνης να γεμίζουν με δύο ξεχωριστές οθόνες δευτερεύουσας οθόνης.

Μπορείτε να συμπεριλάβετε μια οθόνη υποοθόνης χρησιμοποιώντας τη δήλωση CALL SUBSCREEN στη λογική ροής της κύριας οθόνης.

Κλήση της δευτερεύουσας οθόνης στο PBO

Για να συμπεριλάβετε μια οθόνη υποοθόνης στην περιοχή υποοθόνης της κύριας οθόνης και να καλέσετε τη λογική ροής PBO, χρησιμοποιήστε την ακόλουθη δήλωση στο συμβάν PBO της κύριας οθόνης:

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.

Αυτή η δήλωση εκχωρεί στην οθόνη υποοθόνης αριθμό στην περιοχή υποοθόνης που ονομάζεται . Μπορείτε επίσης να καθορίσετε το πρόγραμμα στο οποίο ορίζεται η οθόνη υποοθόνης (προαιρετικό). Εάν δεν προσδιορίσετε ρητά το πρόγραμμα, το σύστημα αναζητά την οθόνη υποοθόνης στο ίδιο πρόγραμμα ABAP με το κύριο πρόγραμμα. Εάν δεν βρει την αντίστοιχη οθόνη υποοθόνης, παρουσιάζεται σφάλμα χρόνου εκτέλεσης. Στο ίδιο σημείο περιλαμβάνεται και η λογική ροής PBO της οθόνης υποοθόνης. Αυτό μπορεί να καλέσει μονάδες PBO του προγράμματος ABAP στο οποίο ορίζεται η οθόνη υποοθόνης. Στο τέλος της υποοθόνης PBO, τα καθολικά πεδία από το πρόγραμμα μεταβιβάζονται σε οποιαδήποτε πεδία οθόνης με το ίδιο όνομα στην οθόνη υποοθόνης. Η λογική ροής PBO της οθόνης υποοθόνης μπορεί να περιλαμβάνει περαιτέρω υποοθόνες.

Το όνομα της περιοχής της υποοθόνης πρέπει να εισαχθεί απευθείας χωρίς ανεστραμμένα κόμματα. Μπορείτε να καθορίσετε τα ονόματα και είτε ως κυριολεκτικά είτε ως μεταβλητές. Εάν χρησιμοποιείτε μεταβλητές, πρέπει να δηλώσετε και να συμπληρώσετε μεταβλητές με το ίδιο όνομα στο πρόγραμμα ABAP. Ο αριθμός οθόνης πρέπει να είναι 4 χαρακτήρες. Εάν δεν αντιστοιχίσετε μια οθόνη υποοθόνης σε μια περιοχή, αυτή παραμένει κενή.

Κλήση της δευτερεύουσας οθόνης στο PAI

Για να καλέσετε τη λογική ροής PAI της υποοθόνης, χρησιμοποιήστε την ακόλουθη δήλωση στη λογική ροής PAI της κύριας οθόνης:

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

Αυτή η δήλωση περιλαμβάνει τη λογική ροής PAI της οθόνης υποοθόνης που περιλαμβάνεται στην περιοχή υποοθόνης στην εκδήλωση PBO. Αυτό μπορεί να καλέσει μονάδες PAI του προγράμματος ABAP στο οποίο ορίζεται η οθόνη υποοθόνης. Τα δεδομένα μεταφέρονται μεταξύ πεδίων με το ίδιο όνομα στην οθόνη υποοθόνης και στο πρόγραμμα ABAP είτε όταν ενεργοποιείται το συμβάν PAI είτε στις αντίστοιχες δηλώσεις FIELD στη λογική ροής PAI της οθόνης υποοθόνης.

Πώς να δημιουργήσετε και να ενσωματώσετε μια δευτερεύουσα οθόνη

Τα τρία βήματα που αναφέρθηκαν προηγουμένως εκτελούνται στην οθόνη Painter και στη λογική ροής της κύριας οθόνης. Η παρακάτω ακολουθία δημιουργεί μία κύρια οθόνη με μία μόνο περιοχή δευτερεύουσας οθόνης.

  1. Δημιουργήστε την περιοχή δευτερεύουσας οθόνης: Ανοίξτε την κύρια οθόνη, για παράδειγμα την οθόνη 100, στην οθόνη Painter (SE51). Επιλέξτε το Υποοθόνη από τη γραμμή στοιχείων, σχεδιάστε το στη διάταξη και εισαγάγετε ένα όνομα όπως SUB_AREA στο πεδίο Όνομα. Αυτό το όνομα χρησιμοποιείται αργότερα στην πρόταση CALL SUBSCREEN.
  2. Δημιουργήστε την οθόνη δευτερεύουσας οθόνης: Δημιουργήστε μια δεύτερη οθόνη, για παράδειγμα την οθόνη 110, και ορίστε τον τύπο οθόνης της σε Υποοθόνη στα χαρακτηριστικά. Μια οθόνη δευτερεύουσας οθόνης δεν έχει πεδίο κωδικού OK και δεν έχει δική της κατάσταση GUI.
  3. Τοποθετήστε τα πεδία: Σχεδιάστε τα πεδία εισαγωγής στην οθόνη 110. Διατηρήστε τη διάταξη εντός του μεγέθους της περιοχής της δευτερεύουσας οθόνης, επειδή εμφανίζεται μόνο το τμήμα που ταιριάζει, μετρημένο από την επάνω αριστερή γωνία.
  4. Δηλώστε τα παγκόσμια δεδομένα: Τοποθετήστε τα πεδία στο TOP include της ομάδας λειτουργικών μονάδων, έτσι ώστε τόσο η κύρια οθόνη όσο και η δευτερεύουσα οθόνη να διαβάζουν τις ίδιες καθολικές μεταβλητές.
  5. Καλέστε την δευτερεύουσα οθόνη: Προσθέστε την επιλογή CALL SUBSCREEN στο PBO και στο PAI της κύριας οθόνης, όπως φαίνεται παρακάτω.
  6. Ενεργοποίηση και δοκιμή: Ενεργοποιήστε τις οθόνες και το πρόγραμμα και, στη συνέχεια, ξεκινήστε τη συναλλαγή. Η περιοχή της υποοθόνης γεμίζει με την οθόνη 110 και οι ενότητες της εκτελούνται εντός της λογικής ροής της οθόνης 100.
* Flow logic of the main screen 100
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'.

PROCESS AFTER INPUT.
  CALL SUBSCREEN sub_area.
  MODULE user_command_0100.

💡 Συμβουλές: Αποθηκεύστε τον αριθμό οθόνης σε μια καθολική μεταβλητή αντί για μια κυριολεκτική εντολή όταν η περιοχή πρέπει να εμφανίζει διαφορετική δευτερεύουσα οθόνη ανάλογα με την είσοδο του χρήστη. Η μεταβλητή πρέπει να έχει το ίδιο όνομα στο πρόγραμμα και στην πρόταση CALL SUBSCREEN.

Σημεία για να θυμάστε

  • Τα ονόματα των στοιχείων των υποοθονών σε μια οθόνη πρέπει να είναι μοναδικά
  • Δεν πρέπει να έχετε OK_CODE ή FCODE συνδεδεμένο με υπο-οθόνη. Το OK_CODE της ίδιας της κύριας οθόνης είναι OK_CODE της δευτερεύουσας οθόνης
  • Οι υποοθόνες δεν μπορούν να έχουν λειτουργικές μονάδες διαλόγου που να περιέχουν SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN ή LEAVE TO SCREEN. Αυτό θα προκαλέσει σφάλμα χρόνου εκτέλεσης.
  • Πρέπει να το καλέσετε στη λογική ροής (τόσο PBO όσο και PAI) της κύριας οθόνης.
  • Το CALL SUBSCREEN δεν επιτρέπεται στις δηλώσεις CHAIN..ENDCHAIN ​​και LOOP ENDLOOP
  • Δεν είναι δυνατή η ύπαρξη μονάδας AT EXIT-COMMAND
  • Τα πεδία που χρησιμοποιείτε είναι τα καθολικά πεδία. Πρέπει να δηλώνονται στο επάνω μέρος
  • Εάν χρησιμοποιείτε υποοθόνες από άλλη πρόγραμμα διαλόγου η μεταφορά δεδομένων δεν θα πραγματοποιηθεί αν δεν προσθέσετε συγκεκριμένο κωδικό.

⚠️ Προειδοποίηση: Η τοποθέτηση της συνάρτησης CALL SUBSCREEN μέσα στο CHAIN ​​… ENDCHAIN ​​ή μέσα σε έναν βρόχο οθόνης παράγει ένα συντακτικό σφάλμα και η κλήση ενός αριθμού οθόνης που δεν υπάρχει παράγει ένα σφάλμα χρόνου εκτέλεσης στην πρώτη εμφάνιση.

Συχνές Ερωτήσεις

Μια γραμμή καρτελών είναι ένα κοντέινερ του οποίου οι σελίδες καρτελών είναι οι ίδιες περιοχές δευτερεύουσας οθόνης. Η δευτερεύουσα οθόνη είναι το περιεχόμενο και η γραμμή καρτελών αποφασίζει μόνο ποια από αυτές τις δευτερεύουσες οθόνες είναι ορατή στον χρήστη τη δεδομένη στιγμή.

Μια κύρια οθόνη μπορεί να περιέχει αρκετές υποπεριοχές οθονών και κάθε περιοχή εμφανίζει μία υποοθόνη κάθε φορά. Μια υποοθόνη μπορεί να ενσωματώσει η ίδια περαιτέρω υποοθόνες, επομένως η ένθεση περιορίζεται μόνο από το μέγεθος της οθόνης και την αναγνωσιμότητα.

Τα δεδομένα μεταφέρονται μόνο μεταξύ πεδίων οθόνης και πεδίων προγράμματος που φέρουν πανομοιότυπα ονόματα και δηλώνονται καθολικά. Μια δευτερεύουσα οθόνη που λαμβάνεται από άλλο πρόγραμμα δεν μεταφέρει τίποτα, εκτός εάν οι τιμές διαβιβάζονται ρητά μέσω κώδικα.

Ναι. Οι βοηθοί τεχνητής νοημοσύνης διαβάζουν το σύντομο αρχείο dump και τη λογική ροής και, στη συνέχεια, υποδεικνύουν τις συνήθεις αιτίες, όπως έναν αριθμό οθόνης που λείπει, μια απαγορευμένη ρύθμιση SET PF-STATUS μέσα στην υποοθόνη ή μια υποοθόνη κλήσης που τοποθετείται μέσα στην CHAIN.

Τα εργαλεία ανάλυσης τεχνητής νοημοσύνης σαρώνουν μια ομάδα μονάδων, εντοπίζουν οθόνες με διπλότυπες διατάξεις και προτείνουν μια ενιαία επαναχρησιμοποιήσιμη δευτερεύουσα οθόνη με τις εντολές CALL SUBSCREEN που τις αντικαθιστούν. Η πρόταση εξετάζεται πριν από τη διαγραφή των οθονών.

Συνοψίστε αυτήν την ανάρτηση με: