Αναφορές ALV σε SAP Εκμάθηση – Προβολή λίστας ABAP

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

Αναφορές ALV σε SAP, που παράγονται από το ABAP List Viewer, παρέχουν στοίχιση στηλών, ταξινόμηση, φιλτράρισμα, σύνολα και μερικά σύνολα χωρίς προσαρμοσμένη κωδικοποίηση. Αυτή η σελίδα εξηγεί τους απλούς τύπους λίστας, τους τύπους λίστας μπλοκ και τους τύπους ιεραρχικής λίστας, τις λειτουργικές μονάδες REUSE και τις παραλλαγές εμφάνισης.

  • 📋 Βασικός Σκοπός: Το ABAP List Viewer παρέχει τις τυπικές λειτουργίες λίστας μέσω έτοιμων λειτουργικών μονάδων, επομένως δεν χρειάζεται ποτέ ξανά να προγραμματιστούν.
  • 🗂️ Κατάλογος πεδίων: Η REUSE_ALV_FIELDCATALOG_MERGE δημιουργεί τον κατάλογο που περιγράφει κάθε στήλη εξόδου και μπορεί επίσης να συμπληρωθεί χειροκίνητα.
  • Λίστα και πλέγμα: Η REUSE_ALV_LIST_DISPLAY εκτυπώνει μια κλασική λίστα και η REUSE_ALV_GRID_DISPLAY εμφανίζει τα ίδια δεδομένα σε ένα στοιχείο ελέγχου πλέγματος.
  • 🧱 Αναφορά μπλοκ: Οι συναρτήσεις INIT, APPEND και DISPLAY συνδυάζουν διάφορους εσωτερικούς πίνακες σε μία έξοδο που αποτελείται από ξεχωριστά μπλοκ.
  • 🌳 Ιεραρχική Αναφορά: Η συνάρτηση REUSE_ALV_HIERSEQ_LIST_DISPLAY συνδέει έναν πίνακα κεφαλίδας και έναν πίνακα στοιχείων μέσω του κοινόχρηστου κλειδιού στο IS_KEYINFO.
  • 🧰 Τύπος SLIS ομάδας: Κάθε δομή, τύπος πίνακα και σταθερά που χρησιμοποιείται από την κλασική ALV δηλώνεται στην SLIS της ομάδας τύπων.
  • 💾 Παραλλαγές οθόνης: Μια παραλλαγή αποθηκεύει τις προεπιλογές ταξινόμησης, φιλτραρίσματος και αθροίσματος και η παράμετρος I_SAVE αποφασίζει εάν είναι συγκεκριμένη για τον χρήστη ή τυπική.

Αναφορές ALV σε SAP ABAP

Τι είναι το ALV; SAP ABAP;

Τα κοινά επιθυμητά χαρακτηριστικά οποιασδήποτε αναφοράς είναι η «ευθυγράμμιση στηλών», η ταξινόμηση, το φιλτράρισμα, τα μερικά αθροίσματα, τα σύνολα κ.λπ. Για να υλοποιηθούν αυτά από την αρχή, απαιτείται μεγάλη προσπάθεια κωδικοποίησης. Για να το αποφύγουμε αυτό, μπορούμε να χρησιμοποιήσουμε μια έννοια που ονομάζεται ABAP List Viewer (ALV).

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

Η κλασική ALV προσφέρει τρεις τύπους λίστας και ο καθένας έχει το δικό του σύνολο ενοτήτων συνάρτησης REUSE:

  • Απλή αναφορά: ένας εσωτερικός πίνακας που εμφανίζεται ως λίστα ή πλέγμα.
  • Αναφορά μπλοκ: αρκετοί εσωτερικοί πίνακες που εμφανίζονται ο ένας κάτω από τον άλλον ως ξεχωριστά μπλοκ.
  • Ιεραρχική αναφορά: ένας πίνακας κεφαλίδας και ένας πίνακας στοιχείων που συνδέονται μέσω ενός κοινόχρηστου κλειδιού.

Απλή αναφορά

Σημαντικές λειτουργικές μονάδες σε αυτές αναφέρουν είναι -

  • Reuse_alv_fieldcatalog_merge
  • Reuse_alv_list_display
  • Reuse_alv_events_get
  • Reuse_alv_grid_display
  • Reuse_alv_commentary_write

REUSE_ALV_FIELDCATALOG_MERGE

Αυτή η λειτουργική μονάδα χρησιμοποιείται για τη συμπλήρωση ενός καταλόγου πεδίου που είναι απαραίτητος για την εμφάνιση των δεδομένων στο ALV.

Εάν τα δεδομένα εξόδου προέρχονται από έναν ενιαίο πίνακα λεξικών και έχουν επιλεγεί όλες οι στήλες, τότε δεν χρειάζεται να δημιουργήσουμε αποκλειστικά τον κατάλογο πεδίων. Αρκεί να αναφέρετε το όνομα του πίνακα ως παράμετρο (I_structure_name) στο REUSE_ALV_LIST_DISPLAY. Αλλά σε άλλες περιπτώσεις πρέπει να το δημιουργήσουμε.

Σημείωση: Ο κατάλογος πεδίου μπορεί να συμπληρωθεί χειροκίνητα, συμπληρώνοντας όλες τις απαιτούμενες λεπτομέρειες στον εσωτερικό πίνακα

Σημαντικές παράμετροι είναι:

1. Εξαγωγή:

  • I_program_name : Αναγνωριστικό αναφοράς
  • I_internal_tabname : ο εσωτερικός πίνακας εξόδου
  • I_inclname : περιλαμβάνει ή το όνομα της αναφοράς όπου γίνεται ο χειρισμός όλων των δυναμικών φορμών.

2. Αλλαγή

REUSE_ALV_LIST_DISPLAY

Αυτή είναι η λειτουργική μονάδα που εκτυπώνει τα δεδομένα.

Οι σημαντικές παράμετροι είναι:

1. Εξαγωγή:

  • I_callback_program : Αναγνωριστικό αναφοράς
  • I_bypassing_buffer : 'X'
  • I_buffer_active : " "
  • I_callback_pf_status_set : ρουτίνα όπου ένας χρήστης μπορεί να ορίσει τη δική του κατάσταση pf ή να αλλάξει τη λειτουργικότητα της υπάρχουσας κατάστασης pf.
  • I_callback_user_command : ρουτίνα όπου γίνεται ο χειρισμός των κωδικών συναρτήσεων.
  • I_structure name : όνομα του πίνακα του λεξικού
  • Is_Layout : δομή για να ορίσετε τη διάταξη της αναφοράς
  • It_fieldcat: εσωτερικός πίνακας με τη λίστα όλων των πεδίων και των χαρακτηριστικών τους που πρόκειται να εκτυπωθούν (αυτός ο πίνακας μπορεί να συμπληρωθεί αυτόματα από τη συνάρτηση)
  • It_events : εσωτερικός πίνακας με μια λίστα με όλα τα πιθανά συμβάντα του ALV και τα αντίστοιχα ονόματα φόρμας.

2. Πίνακες:

  • ένα. t_outtab : εσωτερικός πίνακας με τα δεδομένα που πρέπει να εξάγονται

REUUSE_ALV_EVENTS_GET

Επιστρέφει πίνακα πιθανών συμβάντων για τύπο λίστας aa

1. Εισαγωγή:

Et_Events :Ο πίνακας συμβάντων επιστρέφεται με όλα τα πιθανά συμβάντα CALLBACK για τον καθορισμένο τύπο λίστας (στήλη 'NAME'). Για την επεξεργασία συμβάντων από το Callback, πρέπει να συμπληρωθεί το πεδίο «FORM». Εάν το πεδίο έχει αρχικοποιηθεί, το συμβάν αγνοείται. Η καταχώριση μπορεί να διαβαστεί από τον πίνακα συμβάντων, το πεδίο 'FORM' συμπληρωμένο και η καταχώρηση να τροποποιηθεί χρησιμοποιώντας σταθερές από τον τύπο pool SLIS.

2. Εξαγωγή:

I_list_type: 0 = απλή λίστα REUSE_ALV_LIST_DISPLAY

1 = ιεραρχική-διαδοχική λίστα REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = απλή λίστα μπλοκ REUSE_ALV_BLOCK_LIST_APPEND

3 = ιεραρχική-διαδοχική λίστα μπλοκ REUSE_ALV_BLOCK_LIST_HS_APPEND

REUSE_ALV_GRID_DISPLAY

Μια νέα λειτουργία από την έκδοση ABAP4.6, για εμφάνιση των αποτελεσμάτων σε πλέγμα και όχι σε προεπισκόπηση.

Παράμετροι : ίδια με την reuse_alv_list_display

Σημείωση: Το πλέγμα δεν μπορεί να χειριστεί μεγάλους όγκους δεδομένων. Συναρτήσεις όπως η ταξινόμηση και η κύλιση προς τα κάτω καταναλώνουν πολλούς πόρους / χρόνο εάν ο όγκος των δεδομένων που θα εμφανιστούν είναι μεγάλος. Δεν υπάρχει σαφής ορισμός, έτσι ώστε εάν η ποσότητα των δεδομένων είναι X να επιλέγεται λίστα ή πλέγμα, αλλά ο προγραμματιστής πρέπει να λαμβάνει μια απόφαση με βάση την εμπειρία του. Εάν δεν είστε σίγουροι, τότε η λίστα είναι η καλύτερη επιλογή.

REUSE_ALV_COMMENTARY_WRITE

Αυτό χρησιμοποιείται στο συμβάν Top-of-page για την εκτύπωση των επικεφαλίδων και άλλων σχολίων για τη λίστα.

Σημαντικές Παράμετροι

  • It_list_commentary : Εσωτερικός πίνακας με τις επικεφαλίδες του τύπου slis_t_listheader.

Αυτός ο εσωτερικός πίνακας έχει τρία πεδία:

  1. Τύπος : 'H' – κεφαλίδα, 'S' – επιλογή, 'A' – ενέργεια
  2. Κλειδί: μόνο όταν ο τύπος είναι "S".
  3. Πληροφορίες : το κείμενο που θα εκτυπωθεί

Παράδειγμα: Μια απλή αναφορά πλέγματος ALV

Το παρακάτω πρόγραμμα μετατρέπει τις παραπάνω λειτουργικές μονάδες σε μια λειτουργική αναφορά. Διαβάζει τον πίνακα χρονοδιαγράμματος πτήσεων SPFLI, δημιουργεί αυτόματα τον κατάλογο πεδίων και εμφανίζει το αποτέλεσμα σε ένα πλέγμα.

REPORT z_alv_demo.

TYPE-POOLS: slis.

DATA: lt_spfli    TYPE STANDARD TABLE OF spfli,
      lt_fieldcat TYPE slis_t_fieldcat_alv,
      ls_layout   TYPE slis_layout_alv.

START-OF-SELECTION.

  * 1. Read the data into the output table
  SELECT * FROM spfli INTO TABLE lt_spfli.

  * 2. Build the field catalog from the dictionary structure
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'LT_SPFLI'
      i_structure_name   = 'SPFLI'
    CHANGING
      ct_fieldcat        = lt_fieldcat.

  * 3. Set the layout and display the grid
  ls_layout-zebra             = 'X'.
  ls_layout-colwidth_optimize = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      is_layout          = ls_layout
      it_fieldcat        = lt_fieldcat
      i_save             = 'A'
    TABLES
      t_outtab           = lt_spfli.

Τρεις παράμετροι φέρουν το μεγαλύτερο μέρος της εργασίας. Η παράμετρος I_STRUCTURE_NAME επιτρέπει την εξαγωγή του καταλόγου πεδίων από το λεξικό, επομένως καμία στήλη δεν περιγράφεται χειροκίνητα. Η παράμετρος IS_LAYOUT ενεργοποιεί τις γραμμές με ρίγες και τα βελτιστοποιημένα πλάτη στηλών. Η παράμετρος I_SAVE = 'A' επιτρέπει την αποθήκευση τόσο των παραλλαγών εμφάνισης που αφορούν συγκεκριμένα τον χρήστη όσο και των τυπικών παραλλαγών εμφάνισης από την ολοκληρωμένη λίστα.

Αποκλεισμός αναφοράς

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

Οι σημαντικές λειτουργίες που χρησιμοποιούνται για τη δημιουργία αυτής της αναφοράς είναι:

  • REUSE_ALV_BLOCK_LIST_INIT
  • REUSE_ALV_BLOCK_LIST_APPEND
  • REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT

Αυτή η λειτουργική μονάδα χρησιμοποιείται για τον ορισμό της προεπιλεγμένης κατάστασης gui κ.λπ. Οι παράμετροι είναι παρόμοιες με αυτήν που χρησιμοποιείται στο reuse_alv_list_display ή στο reuse_alv_grid_display

REUSE_ALV_BLOCK_LIST_APPEND

Αυτή η λειτουργική μονάδα προσθέτει τα δεδομένα στο μπλοκ.

Σημαντικές Παράμετροι

1.Εξαγωγή:

  • is_layout : ρυθμίσεις διάταξης για μπλοκ
  • it_fieldcat : κατάλογος πεδίων
  • I_tabname : εσωτερικό όνομα πίνακα με όλα τα πιθανά συμβάντα

2. Πίνακες:

  • t_outtab : εσωτερικός πίνακας με δεδομένα εξόδου.

REUSE_ALV_BLOCK_LIST_DISPLAY

Αυτή η λειτουργική μονάδα εμφανίζει τη λίστα με τα δεδομένα που επισυνάπτονται από την παραπάνω λειτουργία.

Παράμετροι: Όλες οι παράμετροι είναι προαιρετικές.

Ιεραρχικές Αναφορές

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

Η λειτουργική μονάδα που χρησιμοποιείται για αυτό είναι

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Εξαγωγή:

  • I_CALLBACK_PROGRAM
  • I_CALLBACK_PF_STATUS_SET
  • I_CALLBACK_USER_COMMAND
  • IS_LAYOUT
  • It_fieldcat
  • It_events
  • I_tabname_header : Όνομα του εσωτερικού πίνακα του προγράμματος που περιέχει τα δεδομένα εξόδου του υψηλότερου επιπέδου ιεραρχίας.
  • I_tabname_item : Όνομα του εσωτερικού πίνακα του προγράμματος που περιέχει τα δεδομένα εξόδου του χαμηλότερου επιπέδου ιεραρχίας.
  • Is_keyinfo : Αυτή η δομή περιέχει τα ονόματα πεδίων του πίνακα κεφαλίδων και στοιχείων που συνδέουν τους δύο πίνακες (κοινόχρηστο κλειδί).

πίνακες

  • t_outtab_header : Πίνακας κεφαλίδων με δεδομένα προς έξοδο
  • t_outtab_item : Όνομα του εσωτερικού πίνακα του προγράμματος που περιέχει τα δεδομένα εξόδου του χαμηλότερου επιπέδου ιεραρχίας.

Όλοι οι ορισμοί των εσωτερικών πινάκων, δομών και σταθερών δηλώνονται σε μια ομάδα τύπων που ονομάζεται SLIS. Αυτός ο εσωτερικός πίνακας μπορεί να συμπληρωθεί αυτόματα χρησιμοποιώντας REUSE_ALV_FIELDCATALOG_MERGE'.

Παραλλαγές εμφάνισης

  • Οι παραλλαγές εμφάνισης χρησιμοποιούνται για τον ορισμό των προεπιλεγμένων ιδιοτήτων μιας εξόδου alv όπως κριτήρια ταξινόμησης, κριτήρια φιλτραρίσματος, άθροιση και υποσύνολο κ.λπ.
  • Οι παραλλαγές εμφάνισης μπορεί να είναι συγκεκριμένες για τον χρήστη και τυπικές (οι τυπικές παραλλαγές μπορούν να χρησιμοποιηθούν από οποιονδήποτε χρήστη)
  • Το είδος των παραλλαγών εμφάνισης που μπορούν να αποθηκευτούν ελέγχεται από την παράμετρο i_save που διαβιβάζεται στις λειτουργικές ενότητες reuse_alv_list_display / reuse_alv_grid_display
  • Μπορείτε να δώσετε μια επιλογή στην οθόνη επιλογής για να επιλέξετε ποια παραλλαγή εμφάνισης θα χρησιμοποιηθεί

Οι κοινές λειτουργικές μονάδες που σχετίζονται με την επιλογή / επικύρωση παραλλαγών οθόνης είναι

  1. Reuse_alv_variant_default_get
  2. Επαναχρησιμοποίηση_alv_variant_f4
  3. Reuse_alv_variant_existence

💡 Συμβουλές: Μεταβιβάστε την εντολή I_SAVE = 'U' για να επιτρέψετε μόνο παραλλαγές συγκεκριμένες για τον χρήστη, την εντολή 'X' μόνο για τυπικές παραλλαγές και την εντολή 'A' και για τις δύο. Μια κενή τιμή εμποδίζει εντελώς την αποθήκευση.

Αυτό είναι όλο για ABAP – Προγραμματισμός ALV!

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

Οι ενότητες REUSE ανήκουν στην κλασική, βασισμένη σε συναρτήσεις ALV. Το CL_GUI_ALV_GRID είναι ο αντικειμενοστρεφής έλεγχος που είναι ενσωματωμένος σε ένα προσαρμοσμένο κοντέινερ σε ένα dynpro και προσφέρει επεξεργάσιμα κελιά και χειρισμό συμβάντων μέσω μεθόδων.

Ορίστε την τιμή DO_SUM στον κατάλογο πεδίων για τη στήλη που πρέπει να προστεθεί και διαβιβάστε έναν πίνακα ταξινόμησης με ενεργοποιημένο το SUBTOT για τη στήλη που ομαδοποιεί τις γραμμές. Δεν απαιτείται επιπλέον κώδικας υπολογισμού.

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

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

Όχι. Το ALV παραμένει η τυπική έξοδος του SAP Αναφορές GUI. Οι βοηθοί τεχνητής νοημοσύνης προσθέτουν αξία επιπλέον, συνοψίζοντας μια μακρά λίστα, εντοπίζοντας ακραίες τιμές και απαντώντας σε ερωτήσεις σχετικά με τα εμφανιζόμενα δεδομένα σε απλή γλώσσα.

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