
Περιεχόμενα
- Διάγνωση: από το σύμπτωμα στον πρώτο έλεγχο
- Τι άλλαξε στο BTP από το 2024 έως το 2026
- Πρόβλημα 1: 401 unauthorized με διαπιστευτήρια service key
- Πρόβλημα 2: Internal Server Errors στο άνοιγμα του Integration Suite
- Πρόβλημα 3: Χαλασμένη πλοήγηση και νεκροί σύνδεσμοι
- Πρόβλημα 4: Αποτυχίες destination σε εφαρμογές CAP
- Πρόβλημα 5: Εφαρμογές που σταματούν τη νύχτα σε trial και free tier
- Συχνές ερωτήσεις
Αν το SAP BTP Cockpit σας πετάει σφάλματα, πρόκειται πιθανότατα για ένα από πέντε πράγματα. Ένα 401 από ένα service key είναι σχεδόν πάντα το αίτημα OAuth και όχι τα διαπιστευτήρια. Ένα Internal Server Error στο Integration Suite σημαίνει συνήθως ελλιπείς role collections ή παλιά συνεδρία. Οι νεκροί σύνδεσμοι προέρχονται από boosters που ρυθμίστηκαν πριν αλλάξει το subaccount. Οι αποτυχίες destination στο CAP είναι συνήθως ασυμφωνία ονόματος ή έλλειψη binding. Και μια εφαρμογή που δούλευε χθες σε λογαριασμό trial μπορεί να έχει χάσει τη βάση δεδομένων της μέσα στη νύχτα. Ο οδηγός αυτός απευθύνεται σε προγραμματιστές και συμβούλους ενσωμάτωσης που δουλεύουν σε subaccounts Cloud Foundry. Ο πίνακας διάγνωσης παρακάτω σας λέει τι να ελέγξετε πρώτα.
Την πρώτη φορά που είδα το κόκκινο banner σφάλματος στο SAP BTP Cockpit, υπέθεσα ότι είχα κάνει κάτι λάθος. Λάθος σύνδεσμος, ληγμένη συνεδρία.
Μετά την τρίτη ή την τέταρτη φορά ήταν σαφές ότι δεν ήταν μόνο εγώ.
Τις επόμενες εβδομάδες κρατούσα ένα σημειωματάριο και κατέγραφα κάθε φορά που κάτι χαλούσε. Internal Server Errors στο άνοιγμα του Integration Suite. Destinations που φαίνονταν έγκυρα και αρνούνταν να συνδεθούν. Εφαρμογές που δούλευαν χθες και κρέμαγαν σήμερα. Εμφανίστηκαν μοτίβα. Λίγα από αυτά ήταν τεκμηριωμένα κάπου χρήσιμα και το ίδιο το Cockpit δεν δίνει σχεδόν τίποτα για να δουλέψετε.
| Σύμπτωμα | Πιθανότερη αιτία | Ελέγξτε πρώτα |
|---|---|---|
| 401 Unauthorized κατά την κλήση API με service key | Λάθος grant type, token URL ή ελλιπείς authorities | Αποκωδικοποιήστε το token και διαβάστε τα aud και scope |
| Internal Server Error στο άνοιγμα του Integration Suite | Ελλιπείς role collections ή παλιά συνεδρία | Τις role collections του χρήστη σας, μετά πλήρη αποσύνδεση |
| Booster ή tile ανοίγει κενή ή λάθος σελίδα | Το subaccount άλλαξε μετά την εκτέλεση του booster | Πλοηγηθείτε μέσα από το δέντρο του Cockpit |
| Εφαρμογή CAP: «destination not found» ή σφάλματα ταυτοποίησης | Ασυμφωνία ονόματος, έλλειψη binding, λάθος είδος OData | cds.requires και xs-app.json σε σχέση με το όνομα στο Cockpit |
| Η εφαρμογή δούλευε χθες, κρέμασε σήμερα (trial) | Το στιγμιότυπο HANA Cloud σταμάτησε μέσα στη νύχτα | Κατάσταση του στιγμιοτύπου βάσης στο SAP HANA Cloud Central |
Το Cloud Foundry, το Kyma και το ABAP environment τρέχουν στο multi-cloud θεμέλιο της SAP, που είναι η προεπιλογή για νέους πελάτες από το 2020. Το παλαιότερο περιβάλλον Neo παίρνει μόνο ενημερώσεις ασφάλειας και συμμόρφωσης και η SAP έχει ορίσει το τέλος του στις 31 Δεκεμβρίου 2028. Σχεδόν κάθε πρόβλημα παρακάτω είναι πρόβλημα Cloud Foundry.
Δύο μετονομασίες μπερδεύουν ακόμη όσους διαβάζουν παλαιότερους οδηγούς. Η υπηρεσία SAP Launchpad έγινε SAP Build Work Zone, standard edition, τον Ιανουάριο του 2023. Και πολλά tiles και boosters ξαναχτίστηκαν καθώς μεγάλωνε το SAP Build, οπότε στιγμιότυπα οθόνης του 2022 συχνά δεν ταιριάζουν πια με ό,τι βλέπετε.
Στο RISE with SAP, το BTP φτάνει συνήθως ως δικαίωμα βασισμένο σε credits μέσα στη σύμβαση. Το Cockpit είναι το ίδιο. Αυτό που διαφέρει είναι ποιος στον οργανισμό σας ελέγχει τον global account, γι' αυτό βρείτε αυτό το άτομο πριν χρειαστείτε νέο entitlement.
Δημιουργείτε ένα service instance, παράγετε ένα service key, αντιγράφετε το client ID και το secret στο Postman, προσθέτετε το token URL και στέλνετε το αίτημα. 401. Καμία λεπτομέρεια.
Αντιγράφετε ξανά το secret. Πάλι αποτυγχάνει. Η υπηρεσία είναι εντάξει. Η ροή OAuth δεν είναι.
Τι να ελέγξετε, με τη σειρά:
- Grant type. Η τεχνική πρόσβαση στα περισσότερα API υπηρεσιών του BTP χρησιμοποιεί
client_credentials. Ορίστε το ρητά στο Postman. Μην εμπιστεύεστε την προεπιλογή. - Token URL. Πάρτε το από το service key. Μερικά keys δίνουν
tokenurl· άλλα δίνουν τοurlτου XSUAA, στο οποίο προσθέτετε/oauth/token. Μην δανείζεστε ποτέ ένα από άλλο subaccount. - Headers. Για άμεση κλήση token, στείλτε
Content-Type: application/x-www-form-urlencodedκαιAuthorization: Basic <base64(clientid:clientsecret)>. - Authorities. Με client credentials, το token μεταφέρει μόνο τα scopes που έχουν παραχωρηθεί σε εκείνο το service instance. Αν το API χρειάζεται έναν ρόλο που το instance δεν έχει, πάλι παίρνετε token και το API πάλι λέει όχι. Διορθώστε το στις παραμέτρους του instance (για παράδειγμα, στους ρόλους ενός instance του API plan του Integration Suite) και όχι στο αίτημα.
- Audience. Αν έχετε token και το API το απορρίπτει, αποκωδικοποιήστε το token και διαβάστε το claim
aud. Αν δεν ταιριάζει με το API που καλείτε, χρησιμοποιείτε key από λάθος service instance.
Ανοίγετε το Integration Suite και παίρνετε ένα κόκκινο banner «Internal Server Error». Κανένα log. Ανανεώνετε, αλλάζετε browser, ίδιο αποτέλεσμα.
Συμβαίνει συνήθως αφού η υπηρεσία έχει μείνει αχρησιμοποίητη για λίγο: ανοίγει το πρωί, μένει για λίγες ώρες, χρησιμοποιείται ξανά αργότερα. Τα νήματα της κοινότητας και η βάση γνώσεων της SAP δείχνουν δύο συνηθισμένες αιτίες: ελλιπείς role collections και παλιές συνεδρίες.
Τι συνήθως το λύνει:
- Ελέγξτε τις role collections. Ο χρήστης σας χρειάζεται το
Integration_Provisionerγια να στήσει το tenant και τις σχετικές role collectionsPI_(διαχειριστής, προγραμματιστής ενσωμάτωσης, business expert) για να δουλεύει σε αυτό. Αναθέστε τες στο subaccount, κάτω από το Security. - Αποσυνδεθείτε πλήρως. Οι αλλαγές ρόλων φτάνουν στη συνεδρία σας μόνο μετά από νέα σύνδεση. Κλείστε κάθε καρτέλα BTP και Integration Suite, αποσυνδεθείτε και μετά συνδεθείτε ξανά.
- Καθαρίστε τα cookies για τα domains του BTP αν το σφάλμα επιμένει μετά από νέα σύνδεση. Ένα παλιό cookie συνεδρίας μπορεί να ζήσει περισσότερο από τη συνεδρία.
- Χρησιμοποιήστε μία συνεδρία Cockpit. Πολλές καρτέλες ή προφίλ browser στο ίδιο subaccount προκαλούν συγκρούσεις συνεδριών που μοιάζουν ακριβώς με αυτό το σφάλμα.
Το πραγματικό πρόβλημα είναι η ορατότητα. Το Cockpit δεν σας λέει τίποτα για το τι απέτυχε, οπότε καταλήγετε να μαντεύετε. Αντί γι' αυτό, δουλέψτε τη λίστα με τη σειρά. Για μια ευρύτερη εικόνα του γιατί κολλούν τα προγράμματα ενσωμάτωσης, δείτε το κείμενό μου για τις καθυστερήσεις παράδοσης στο SAP Integration Suite.
Πατάτε «Go to Application» και παίρνετε μια κενή οθόνη, μια γενική σελίδα προορισμού ή μια ανακατεύθυνση που δεν βγάζει νόημα.
Ακολουθεί μοτίβα:
- Οι σύνδεσμοι των boosters χαλούν όταν η ρύθμιση του subaccount αλλάζει μετά την εκτέλεση του booster. Η ανακατεύθυνση δείχνει κάπου που δεν υπάρχει πια.
- Τα tiles του Integration Suite κάποτε δουλεύουν, κάποτε βγάζουν σφάλμα, κάποτε λήγουν, συνήθως για τους λόγους συνεδρίας που αναφέρθηκαν παραπάνω.
- Οι σύνδεσμοι του SAP Build Work Zone δείχνουν «connection denied» όταν υπάρχει η συνδρομή αλλά ο χρήστης σας δεν έχει την role collection για το site.
- Πολλές καρτέλες ή προφίλ browser ανοίγουν συνδέσμους σε ληγμένα πλαίσια.
Τι δουλεύει: πλοηγηθείτε μέσα από το δέντρο του Cockpit (subaccount, μετά Services, μετά Instances and Subscriptions) και αποθηκεύστε τα άμεσα URL για το Integration Suite, τα destinations και το Work Zone. Χρησιμοποιήστε μία συνεδρία σε καθαρό προφίλ browser. Όταν ένας σύνδεσμος αποτυγχάνει κάθε τρίτη φορά, παύετε να εμπιστεύεστε την πλατφόρμα και αρχίζετε να χτίζετε παρακάμψεις. Οι σελιδοδείκτες είναι η φθηνότερη παράκαμψη που υπάρχει. Αν ακόμη προσπαθείτε να προσανατολιστείτε, η περιήγησή μου στο BTP Cockpit καλύπτει τη βασική πλοήγηση.
Αναπτύσσετε μια εφαρμογή CAP, ρυθμίζετε ένα destination στο Cockpit και τα αιτήματα εξακολουθούν να αποτυγχάνουν με «destination not found» ή σφάλματα ταυτοποίησης. Το destination φαίνεται στη λίστα. Η εφαρμογή τρέχει. Τα μηνύματα σφάλματος δεν δείχνουν πουθενά χρήσιμα.
Η τεκμηρίωση του CAP της SAP είναι σαφής για το πώς πρέπει να συνδεθούν τα πράγματα: η απομακρυσμένη υπηρεσία δηλώνεται κάτω από το cds.requires στο package.json (ή στο .cdsrc.json) με ένα kind, και το όνομα του destination μπαίνει κάτω από το credentials.destination. Η εφαρμογή χρειάζεται επίσης bindings και στην υπηρεσία Destination και στο XSUAA. Οι περισσότερες αποτυχίες είναι μια διακοπή κάπου σε αυτή την αλυσίδα.
- cds.requiresΔηλώνει την απομακρυσμένη υπηρεσία, το είδος της και το όνομα του destination
- Προφίλ παραγωγήςΚρατά τα διαπιστευτήρια του destination μετά την ανάπτυξη
- Service bindingsΗ εφαρμογή δένεται με το Destination και το XSUAA
- Destination στο CockpitΊδιο όνομα με το cds.requires και το xs-app.json, με τα κεφαλαία και τα πεζά
- Απομακρυσμένη υπηρεσίαodata-v2 για υπηρεσία V2, odata για V4
Τα αιτήματα φτάνουν στην απομακρυσμένη υπηρεσία
| Σύμπτωμα | Διόρθωση |
|---|---|
| Το destination φαίνεται στη λίστα, αλλά η εφαρμογή δεν το βρίσκει | Συγκρίνετε το όνομα στο cds.requires και στις διαδρομές του xs-app.json με το Cockpit, χαρακτήρα προς χαρακτήρα, συμπεριλαμβανομένων των κεφαλαίων και πεζών |
| Δουλεύει τοπικά, αποτυγχάνει μετά την ανάπτυξη | Ελέγξτε ότι το προφίλ [production] περιέχει πράγματι τα διαπιστευτήρια του destination και ότι η εφαρμογή είναι δεμένη με το Destination και το XSUAA |
| Η απομακρυσμένη υπηρεσία OData V2 επιστρέφει σφάλματα | Ορίστε το kind σε odata-v2 για υπηρεσία V2 και odata για V4. Χρησιμοποιήστε V4 όπου το επιτρέπουν και οι δύο πλευρές |
| Μια εφαρμογή UI5 χρειάζεται V2 αλλά η υπηρεσία CAP σας είναι V4 | Προσθέστε το plugin @cap-js-community/odata-v2-adapter. Το παλαιότερο @sap/cds-odata-v2-adapter-proxy είναι deprecated |
| Η ταυτοποίηση αποτυγχάνει με έγκυρα διαπιστευτήρια | Ξεκινήστε με OAuth2ClientCredentials ή BasicAuthentication. Χρησιμοποιήστε SAML ή principal propagation μόνο όταν το σενάριο το απαιτεί |
| Δεν είστε σίγουροι ότι ο στόχος είναι καν προσβάσιμος | Χρησιμοποιήστε το «Check Connection» στο destination μέσα στο Cockpit πριν κάνετε debug την εφαρμογή |
Οι ομάδες που το χειρίζονται καλά κρατούν μια σύντομη λίστα ελέγχου destination ανά εφαρμογή. Όχι επειδή η ρύθμιση είναι σύνθετη. Επειδή μια λάθος παραδοχή για το όνομα, το binding ή το είδος OData αποτυγχάνει σιωπηλά και παίρνει πολύ περισσότερο χρόνο να βρεθεί παρά να προληφθεί.
Το SAP BTP Cockpit δίνει πολύ λίγη ανατροφοδότηση όταν κάτι χαλάσει. Το μεγαλύτερο μέρος του debugging γίνεται με δοκιμή και λάθος. Η γνώση των μοτίβων γλιτώνει τις ώρες.
Μια εφαρμογή CAP που δούλευε χθες τώρα κρέμασε. Κανένα σφάλμα. Το Cockpit τη δείχνει να τρέχει. Την επανεκκινείτε. Τίποτα.
Ελέγξτε πρώτα τη βάση δεδομένων. Το σεμινάριο της ίδιας της SAP για το HANA Cloud trial αναφέρει ότι τα στιγμιότυπα free-tier σταματούν κάθε νύχτα και πρέπει να επανεκκινούνται κάθε μέρα που δουλεύετε. Ο ίδιος ο λογαριασμός trial διαρκεί έως 90 ημέρες αν συνδέεστε τακτικά. Η εφαρμογή σας είναι εντάξει. Η βάση της κοιμάται.
Τι βοηθά:
- Επανεκκινήστε το στιγμιότυπο HANA Cloud από το SAP HANA Cloud Central πριν αρχίσετε να κάνετε debug τον κώδικα.
- Χρησιμοποιήστε το CLI (
cf apps,cf services) για να δείτε τη χρήση μνήμης και υπηρεσιών. Το UI του Cockpit δείχνει πολύ λιγότερα. - Διαγράψτε τα αχρησιμοποίητα service instances πριν δημιουργήσετε νέα. Οι ποσοστώσεις του trial ισχύουν για ολόκληρο τον λογαριασμό και όχι για μία μόνο εφαρμογή.
- Κρατήστε τα φορτία demo και δοκιμών σε ξεχωριστά subaccounts.
Αν χρειάζεστε περισσότερες από μία εφαρμογές και βάσεις να τρέχουν αξιόπιστα, ή σταθερό uptime για demos, μετακινηθείτε σε παραγωγικό λογαριασμό. Τα plans free-tier σε έναν παραγωγικό λογαριασμό μπορούν να αναβαθμιστούν σε πληρωμένα χωρίς να χάσετε τη δουλειά σας, κάτι που ένας λογαριασμός trial δεν μπορεί.
Γιατί παίρνω σφάλμα 401 με διαπιστευτήρια service key του SAP BTP ακόμη κι όταν φαίνονται σωστά;
Σχεδόν πάντα φταίει το αίτημα OAuth και όχι τα διαπιστευτήρια. Οι συνηθισμένες αιτίες είναι το λάθος grant type (χρησιμοποιήστε client_credentials για τεχνική πρόσβαση), ένα token URL που δεν ταιριάζει με το service key ή λάθος headers στην κλήση του token.
Αν παίρνετε token και το API εξακολουθεί να το απορρίπτει, αποκωδικοποιήστε το. Ελέγξτε ότι το claim aud ταιριάζει με το API και ελέγξτε τα scopes. Με client credentials, τα scopes προέρχονται από τις authorities που έχουν παραχωρηθεί στο service instance, γι' αυτό διορθώστε τους ρόλους που λείπουν στις παραμέτρους του instance.
Τι προκαλεί Internal Server Errors στο άνοιγμα του Integration Suite στο BTP Cockpit;
Συχνότερα ελλιπείς role collections ή παλιά συνεδρία. Βεβαιωθείτε ότι ο χρήστης σας έχει το Integration_Provisioner και τις role collections PI_ που χρειάζεστε. Μετά κλείστε κάθε καρτέλα BTP, αποσυνδεθείτε και συνδεθείτε ξανά, επειδή οι νέοι ρόλοι ισχύουν μόνο μετά από νέα σύνδεση.
Αν επιμένει, καθαρίστε τα cookies για τα domains του BTP και μείνετε σε μία μόνο συνεδρία Cockpit. Πολλές καρτέλες στο ίδιο subaccount προκαλούν το ίδιο σφάλμα.
Γιατί η εφαρμογή CAP μου αποτυγχάνει να συνδεθεί σε ένα destination που εμφανίζεται σωστά στο Cockpit;
Συνήθως ασυμφωνία ονομασίας. Το όνομα του destination στο cds.requires και στις διαδρομές του xs-app.json πρέπει να ταιριάζει ακριβώς με το Cockpit, συμπεριλαμβανομένων των κεφαλαίων και πεζών.
Αν το όνομα είναι σωστό, ελέγξτε ότι η εφαρμογή είναι δεμένη τόσο με την υπηρεσία Destination όσο και με το XSUAA, ότι το προφίλ [production] μεταφέρει τα διαπιστευτήρια και ότι το kind ταιριάζει με την απομακρυσμένη υπηρεσία: odata-v2 για V2, odata για V4. Χρησιμοποιήστε το «Check Connection» στο Cockpit για να επιβεβαιώσετε ότι ο στόχος είναι προσβάσιμος.
Γιατί η εφαρμογή μου σε SAP BTP trial σταματά να λειτουργεί τη νύχτα;
Σε plans trial και free-tier, τα στιγμιότυπα SAP HANA Cloud σταματούν κάθε νύχτα για εξοικονόμηση πόρων. Η εφαρμογή σας συνεχίζει να τρέχει αλλά δεν φτάνει τη βάση της. Επανεκκινήστε το στιγμιότυπο στο SAP HANA Cloud Central κάθε μέρα πριν δουλέψετε.
Χρησιμοποιήστε τα cf apps και cf services για να ελέγξετε τη χρήση μνήμης και υπηρεσιών, επειδή οι ποσοστώσεις του trial είναι δύσκολο να φανούν στο Cockpit. Διαγράψτε τα αχρησιμοποίητα instances πριν δημιουργήσετε νέα.
Γιατί οι σύνδεσμοι μέσα σε boosters και tiles οδηγούν σε κενές σελίδες;
Οι σύνδεσμοι των boosters χαλούν όταν η δομή του subaccount αλλάζει μετά την εκτέλεση του booster. Η ανακατεύθυνση δείχνει σε μια τοποθεσία που δεν υπάρχει πια ή δεν είχε ρυθμιστεί ποτέ πλήρως.
Πλοηγηθείτε μέσα από το δέντρο του Cockpit και αποθηκεύστε τα άμεσα URL για το Integration Suite, τα destinations και το SAP Build Work Zone. Μην βασίζεστε στην πλοήγηση που παράγουν οι boosters για οτιδήποτε χρησιμοποιείτε καθημερινά.
Πότε πρέπει να περάσω από έναν λογαριασμό BTP trial σε πληρωμένο plan;
Όταν τα όρια αρχίζουν να σας κοστίζουν χρόνο. Αν τρέχετε περισσότερες από μία εφαρμογές ή βάσεις ή χρειάζεστε σταθερό uptime για demos ή δοκιμές, το trial προκαλεί περισσότερη τριβή από όση γλιτώνει.
Τα κύρια οφέλη είναι η σταθερότητα και η σαφέστερη ορατότητα πόρων και όχι νέες λειτουργίες. Ένας παραγωγικός λογαριασμός με plans free-tier είναι ένα καλό ενδιάμεσο βήμα: μπορείτε να αναβαθμίσετε αυτά τα plans σε πληρωμένα αργότερα χωρίς να ξαναχτίσετε τίποτα.
Επόμενο βήμα
Τρέχετε ένα πρόγραμμα ERP αυτή τη στιγμή;
Αν αυτό το άρθρο αφορά ένα πρόγραμμα που τρέχετε αυτή τη στιγμή, μια συζήτηση 30 λεπτών συνήθως οδηγεί πιο μακριά από μια ακόμη εβδομάδα εσωτερικής ανάλυσης.




