Ma tâche consiste à effectuer toutes ces étapes par programme:
TR_INSERT_REQUEST_WITH_TASKS
TR_RELEASE_REQUEST
Mon problème est que je peux ajouter manuellement le package à la demande de transport via la transaction SE03
puis le libérer avec FM TR_RELEASE_REQUEST
, mais ce n'est pas le but, tout de l'étape 1 à 3 doit se produire en une seule exécution du programme si quelqu'un peut me guider comment faire l'étape 2, ce serait très utile, merci d'avance.
3 Réponses :
Vous pouvez vérifier le code derrière, Écrire l'entrée de transport dans SE80 cliquez avec le bouton droit sur le menu du package.
Je suis désolé mais ce n'est pas le but, j'essaye de l'exécuter dans le backend avec un rapport, pas manuellement.
J'essaie de dire que vous pouvez trouver du code derrière ce bouton et utiliser du code dans votre propre implémentation. Sandra a partagé la FM exacte pour vous.
Oui merci j'ai réussi à trouver ce dont j'avais besoin après avoir débogué le bouton!
Dans votre programme, vous devez:
TADIR
(objet dans les colonnes PGMID
, OBJECT
, OBJ_NAME
et package dans la colonne DEVCLASS
) TRINT_APPEND_COMM
ou TR_APPEND_TO_COMM_OBJS_KEYS
. Merci c'était la réponse à mon problème!
Pour ajouter l'ensemble du projet à la requête, vous devez d'abord sélectionner tous les objets du package et les ajouter un par un. Vous pouvez le faire comme ceci:
DATA: l_trkorr TYPE trkorr, l_package TYPE devclass VALUE 'ZPACKAGE'. cl_pak_package_queries=>get_all_subpackages( EXPORTING im_package = l_package IMPORTING et_subpackages = DATA(lt_descendant) ). INSERT VALUE cl_pak_package_queries=>ty_subpackage_info( package = l_package ) INTO TABLE lt_descendant. SELECT pgmid, object, obj_name FROM tadir INTO TABLE @DATA(lt_segw_objects) FOR ALL ENTRIES IN @lt_descendant WHERE devclass = @lt_descendant-package. DATA(instance) = cl_adt_cts_management=>create_instance( ). LOOP AT lt_segw_objects ASSIGNING FIELD-SYMBOL(<fs_obj>). TRY. instance->insert_objects_in_wb_request( EXPORTING pgmid = <fs_obj>-pgmid object = <fs_obj>-object obj_name = CONV trobj_name( <fs_obj>-obj_name ) IMPORTING result = DATA(result) request = DATA(request) CHANGING trkorr = l_trkorr ). CATCH cx_adt_cts_insert_error. ENDTRY. ENDLOOP.
Notez que vous ne pouvez pas ajouter des objets qui sont déjà verrouillés dans une autre requête, cela vous donnera cx_adt_cts_insert_error exception. Il n'y a aucun moyen de déverrouiller des objets par programmation, uniquement via l'outil SE03.