J'apprends actuellement Abap et j'essaie de faire une amélioration mais que vous avez décomposé dans la confusion sur la manière de vous proposer de construire sur le code existant. J'ai un programme qui fonctionne périodiquement via un travail d'arrière-plan qui désactive les comptes d'utilisateur x quantité de jours (dans ce cas 90 jours d'utilisation inactive basée sur USR02 ~ trdat). p>
Je souhaite ajouter une amélioration pour informer l'utilisateur via leur adresse e-mail (résultat de USR02 ~ BName pour correspondre USR21 ~ BName pour transmettre l'USR21 ~ Persnumber et USR21 ~ Addrnumber à ADR6 qui pointera à l'ADR6 ~ Smtp_addr du Utilisateur, fournissant la relation USR02 ~ BName -> ADR6 ~ SMTP_ADDR Relation) basée sur leur dernière date de connexion étant de 30, 15, 7, 5, 3 et 1 jour du seuil d'inactivité de 90 jours avec un lien vers le système SAP pour aider leur réactivez le compte avec facilité. p>
Je commence à penser qu'une amélioration pourrait ne pas être une bonne idée, mais plutôt créer un nouveau programme et planifier le travail d'arrière-plan quotidiennement. Toute directive ou informations serait grandement appréciée ... p>
4 Réponses :
de sap wiki : P >
Le concept d'amélioration vous permet d'ajouter votre propre fonctionnalité aux applications commerciales standard de SAP sans avoir à modifier les applications d'origine. Pour modifier le comportement standard SAP conformément aux exigences du client, nous pouvons utiliser le cadre d'amélioration. P> blockQuote>
Selon votre description, cela ne ressemble pas à un cas d'utilisation pour une amélioration. Ce n'est pas une intervention dans un processus existant. Le processus d'origine et votre nouvelle exigence sont deux processus différents avec une partie logique mutuelle - sélection des jours d'inactivité des utilisateurs. Les deux ne devraient pas compter sur l'autre. P>
Structurellement, je pense qu'il est préférable d'avoir un programme distinct de calcul que les courriers électroniques doivent être envoyés et lorsque, et un programme distinct pour les envoyer réellement. P>
Je copierais votre programme d'origine en un nouveau et je le modifierais un peu de manière à ce que, au lieu de désactiver un utilisateur, il enregistre une table pour chaque utilisateur: 1) un e-mail 2) une date à laquelle envoyer 3) Combien de jours restants (30, 15, 7, etc.) 4) Statut si l'e-mail a été envoyé ou non. Initialement, vous pouvez même avoir plusieurs emplois de ce type pour chaque période (30, 15, 7 etc.) et le transmettre en tant que paramètre (que vous utilisez à l'intérieur à la place de 90). P>
Ce programme vous exécutez quotidiennement comme un travail et il remplit cette table avec des "tâches" par courrier électronique de ce qui doit être envoyé aujourd'hui. Il ajoute simplement de nouvelles lignes, alors les lignes d'hier devraient rester là-bas. P>
Le 2ème programme doit simplement lire ce tableau et envoyer des courriels réels et mettre à jour les statuts. Vous exécutez ce programme quotidiennement. P>
De cette façon, vous avez: p>
extraire puis refacteur p> et ajouter p> et Exécutez les deux rapports tous les jours. P> Ne crée pas une grande boule de boue en comprimant de nouvelles fonctionnalités dans le code existant. P> P>
Hé Florian, j'ai réussi à obtenir la sélection de l'utilisateur pour fonctionner parfaitement - ou au moins sur la façon dont je voudrais ... malheureusement, je me débats sur la partie email ... Pastebin.com/JFDCJCDB J'ai maintenant une table créée IT_USERS qui stocke tous les utilisateurs SAP IDS & Adresses e-mail (le cas échéant). J'essaie de saisir le concept maintenant de pouvoir leur envoyer un email et de le vérifier via Sost ...
Il y a quelques classes qui permettent d'envoyer des e-mails. cl_sut_job_utilities => Send_MeMails code> est celui que j'ai utilisé ces derniers temps. Il fait réellement partie du cadre d'essai de l'unité ABAP ("SUT") et habituellement utilisé pour envoyer des résultats des tests d'unité des constructions nocturnes.
Je veux clarifier votre confusion sur l'utilisation des améliorations: Vous voudriez utiliser des améliorations en termes de «quelque chose» se produit ou cela va se passer dans le système et vous voudriez changer de manière standard. P>
Que quelque chose, appelons l'événement ou le processus de cela pourrait être par exemple une commande est placée, un certain utilisateur se connecte sur le système ou un matériau est ou va être modifié. p>
Le changement pourrait notifier un autre système d'ordre ou vérifier l'utilisateur connecté avec des contrôles supplémentaires, par exemple sa version de l'interface graphique et l'avertissez-la si elles sont à jour. P>
Demandez-vous, quel processus sur le système l'exécution de votre programme ou de votre code dépend de. Quelque chose doit-il arriver avant que le programme soit exécuté? Non, seulement écoulement du temps. P>
Même si vous aviez trouvé une amélioration, vous voudriez utiliser. Si ce processus utilisant l'amélioration ne serait pas exécuté dans 90 jours, vos courriers ne seraient pas envoyés, car l'amélioration n'aurait jamais été appelée. P>
Je prolongerais la fonctionnalité de votre programme existant, car vous calculez déjà combien de jours sont laissés et que vous n'auriez qu'un seul travail à maintenir. P>
Où essayez-vous de mettre l'amélioration?