1
votes

Comment ajouter un colis complet à une demande de transport par code?

Ma tâche consiste à effectuer toutes ces étapes par programme:

  • Créer une nouvelle demande de transport, j'ai réussi à le faire avec TR_INSERT_REQUEST_WITH_TASKS
  • Ajoutez le contenu du package au transport nouvellement créé, c'est la partie dans laquelle je suis coincé.
  • Libérez le transport, j'ai réussi à le faire avec 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.


0 commentaires

3 Réponses :


-1
votes

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.


3 commentaires

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!



1
votes

Dans votre programme, vous devez:

  • Récupérez d'abord la liste des objets appartenant au package, via le tableau TADIR (objet dans les colonnes PGMID , OBJECT , OBJ_NAME et package dans la colonne DEVCLASS )
  • Et ajoutez ces objets à la tâche ou à la demande de transport via les modules fonction non validés TRINT_APPEND_COMM ou TR_APPEND_TO_COMM_OBJS_KEYS .

1 commentaires

Merci c'était la réponse à mon problème!



1
votes

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.


0 commentaires