viernes, 25 de julio de 2014

Trabajando con Ordenes de Trasporte de Copia (SAP-ABAP-Funcionalidad)

A menudo debemos transportar Ordenes de Transporte al ambiente de QAS desde Dasarrollo para hacer pruebas. Para no liberar la Orden que hemos creado, la cual posteriormente pasara también a QAS y luego a Producción, podemos crear una OT de "Copia", la cual tiene la particularidad que termina su ciclo en el sistema de destino elegido al crearla, para ello haremos lo siguiente:

1)  Creamos la OT de Copia (Trx SE09 o SE10):





    Debemos poner el sistema destino con su mandante correspondiente y grabamos....



    

   Por otra parte, tenemos la OT Original o Principal..... de esta
, tomamos la tarea o tareas, la(s) cual(es) incluiremos en nuestra OT de Copia....     



    Se incluye la tarea en la OT de Copia....y aceptar...


     
    Finalmente liberamos la OT de Copia.....(F9)


     

Este procedimiento lo podemos ejecutar cuantas veces sea necesario, así cuando liberemos la OT Original, será solo una OT para el proyecto o mejora que incluirá todos los objetos necesarios.




jueves, 24 de julio de 2014

Función para obtener las Ordenes de Transporte asociadas a un Objeto (SAP-ABAP-Funciones)

Primero, debemos crear la siguiente estructura (si cambian el nombre de la estructura, deberán cambiarlo en el código también):



Esto es solo para agregar la descripción de la OT.

Ahora creamos un grupo de funciones y un módulo de funciones:




En el "Import" del módulo:





En "Tablas" del módulo:




Y finalmente agregamos este código en "Cód.fte.":

  FIELD-SYMBOLS:
  <fs_head> TYPE zcfcl_es_e070,
  <fs_e070> TYPE e070.
  DATA:
  lt_e070      TYPE TABLE OF e070,
  lt_e071      TYPE TABLE OF e071,
  lt_e07t       TYPE STANDARD TABLE OF e07t,
  ls_e07t      TYPE e07t,
  ls_head     TYPE zcfcl_es_e070.

  CHECK iv_obj_name IS NOT INITIAL.
  REFRESHlt_e071[]et_detail[]lt_e070et_head[].
  SELECT FROM e071 INTO TABLE lt_e071
  WHERE obj_name EQ iv_obj_name.
  IF sy-subrc EQ 0.
    SELECT FROM e071 INTO TABLE et_detail
    FOR ALL ENTRIES IN lt_e071
    WHERE trkorr EQ lt_e071-trkorr.
    IF sy-subrc EQ 0.
      SELECT FROM e070 INTO TABLE lt_e070
      FOR ALL ENTRIES IN lt_e071
      WHERE trkorr EQ lt_e071-trkorr.
      IF sy-subrc EQ 0.
        SELECT FROM e070 INTO CORRESPONDING FIELDS OF TABLE et_head
        FOR ALL ENTRIES IN lt_e070
        WHERE trkorr EQ lt_e070-strkorr.
        IF sy-subrc NE 0.
          UNASSIGN<fs_e070>.
          CLEARls_head.
          LOOP AT lt_e070 ASSIGNING <fs_e070>.
            MOVE-CORRESPONDING <fs_e070> TO ls_head.
            APPEND ls_head TO et_head.
            CLEARls_head.
          ENDLOOP.
        ENDIF.

        SELECT FROM e07t INTO TABLE lt_e07t
        FOR ALL ENTRIES IN et_head
        WHERE trkorr EQ et_head-trkorr
          AND langu  EQ sy-langu.
        IF sy-subrc EQ 0.
          UNASSIGN <fs_head>.
          LOOP AT et_head ASSIGNING <fs_head>.
            CLEARls_e07t.
            READ TABLE lt_e07t INTO ls_e07t WITH KEY trkorr <fs_head>-trkorr.
            IF sy-subrc EQ 0.
              <fs_head>-as4text ls_e07t-as4text.
            ENDIF.
          ENDLOOP.
        ENDIF.

      ENDIF.
    ENDIF.
  ENDIF.