Autor Tema: Crear Ordenes de Trasporte para una Tabla del Tipo Transparente  (Leído 6107 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Enrique.Borroni

  • Moderador_
  • Usuario Completo
  • *****
  • Mensajes: 86
    • Ver Perfil
Crear Ordenes de Trasporte para una Tabla del Tipo Transparente
« en: 08 de Agosto de 2009, 09:34:44 am »
Este Reporte sirve para transportar tablas transparentes, es util a la hora de querer migrar datos de tablas "Z" o SAP desde
un mandante a otro...Este ejemplo genera una Orden de Transporte por Tabla.

*----------------------------------------------------------------------*
* REPORT   : Y_TRANSPORTE_TABLAS
* OBJETIVO : CREAR ORDENES DE TRANSPORTE DADO UNA TABLA DEL TIPO
*            TRANSPARENTE SELECCIONADA POR PANTALLA.
*----------------------------------------------------------------------*
*
REPORT Y_TRANSPORTE_TABLAS.
*
*----------------------------------------------------------------------*
* DECLARACION DE TABLAS
*----------------------------------------------------------------------*
TABLES : dd02l.
*----------------------------------------------------------------------*
* SELECCION DE PARAMETRO NOMBRE_TABLA POR PANTALLA
*----------------------------------------------------------------------*
PARAMETERS : table LIKE dd02l-tabname OBLIGATORY.
*----------------------------------------------------------------------*
* DECLARACION DE VARIABLES
*----------------------------------------------------------------------*
DATA : w_tabclass     LIKE dd02l-tabclass,
       w_desc_orden   LIKE e07t-as4text,
       w_nume_orden   LIKE e070-trkorr,
       wa_e070        LIKE e070,
       wa_e07t        LIKE e07t,
       wa_e070c       LIKE e070c,
       tbi_e071       LIKE e071  OCCURS 1 WITH HEADER LINE,
       tbi_e071k      LIKE e071k OCCURS 1 WITH HEADER LINE.

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
*
* ---------------------------------------------------------------------*
*  Validar que la Tabla exista y que sea del tipo Transparente
* ---------------------------------------------------------------------*
*
  CLEAR : w_tabclass.
  SELECT SINGLE tabclass INTO w_tabclass FROM  dd02l
         WHERE  tabname   EQ table
         AND    as4local  EQ 'A'.
  IF ( sy-subrc NE 0 ).
    MESSAGE w208(00) WITH 'Tabla No Existe..'(e01).
    LEAVE PROGRAM.
  ELSEIF ( w_tabclass NE 'TRANSP' ).
    MESSAGE w208(00) WITH 'No es Tabla Transparente'(e05).
    LEAVE PROGRAM.
  ENDIF.
*
* ---------------------------------------------------------------------*
*  Agregar Datos de la Orden de Transporte a Tablas Internas
* ---------------------------------------------------------------------*
*
  CONCATENATE 'TRANSPORTE DE TABLA : ('
              table ') DESDE MANDANTE :' sy-mandt
         INTO w_desc_orden SEPARATED BY space.
*
  tbi_e071-pgmid        = 'R3TR'.
  tbi_e071-object       = 'TABU'.
  tbi_e071-obj_name     = table.
  tbi_e071-objfunc      = 'K'.
  APPEND tbi_e071.
*
  tbi_e071k-pgmid       = 'R3TR'.
  tbi_e071k-object      = 'TABU'.
  tbi_e071k-objname     = table.
  tbi_e071k-mastertype  = 'TABU'.
  tbi_e071k-mastername  = table.
*
  IF ( dd02l-clidep EQ 'X' ).
    CONCATENATE sy-mandt '*' INTO tbi_e071k-tabkey.
  ELSE.
    tbi_e071k-tabkey = '*'.
  ENDIF.
*
  APPEND tbi_e071k.
*
* ---------------------------------------------------------------------*
*  Crea una Nueva Orden de Transporte con la Tabla Seleccionada
* ---------------------------------------------------------------------*
*
  CALL FUNCTION 'TRINT_INSERT_NEW_COMM'
    EXPORTING
      wi_kurztext       = w_desc_orden
      wi_trfunction     = 'K'
      iv_username       = sy-uname
    IMPORTING
      we_trkorr         = w_nume_orden
      we_e070           = wa_e070
      we_e07t           = wa_e07t
      we_e070c          = wa_e070c
    EXCEPTIONS
      no_systemname     = 1
      no_systemtype     = 2
      no_authorization  = 3
      db_access_error   = 4
      file_access_error = 5
      enqueue_error     = 6
      number_range_full = 7
      invalid_input     = 8
      OTHERS            = 9.
*
  IF sy-subrc IS INITIAL.
*
    CALL FUNCTION 'TRINT_MODIFY_COMM'
      EXPORTING
        wi_e070                        = wa_e070
        wi_e07t                        = wa_e07t
        wi_e070c                       = wa_e070c
        wi_sel_e071                    = 'X'
        wi_sel_e071k                   = 'X'
        iv_no_namespace_check          = 'X'
      TABLES
        wt_e071                        = tbi_e071
        wt_e071k                       = tbi_e071k
      EXCEPTIONS
        chosen_project_closed          = 1
        e070_insert_error              = 2
        e070_update_error              = 3
        e071k_insert_error             = 4
        e071k_update_error             = 5
        e071_insert_error              = 6
        e071_update_error              = 7
        e07t_insert_error              = 8
        e07t_update_error              = 9
        e070c_insert_error             = 10
        e070c_update_error             = 11
        locked_entries                 = 12
        locked_object_not_deleted      = 13
        ordername_forbidden            = 14
        order_change_but_locked_object = 15
        order_released                 = 16
        order_user_locked              = 17
        tr_check_keysyntax_error       = 18
        no_authorization               = 19
        wrong_client                   = 20
        unallowed_source_client        = 21
        unallowed_user                 = 22
        unallowed_trfunction           = 23
        unallowed_trstatus             = 24
        no_systemname                  = 25
        no_systemtype                  = 26
        OTHERS                         = 27.
*
    IF ( sy-subrc EQ 0 ).
      MESSAGE i368(00) WITH 'Nueva Orden Creada : '(e02) w_nume_orden.
    ELSE.
      MESSAGE e368(00) WITH
        'TRINT_MODIFY_COMM Error : '(e03) sy-subrc.
    ENDIF.
  ELSE.
    MESSAGE e368(00) WITH
      'TRINT_INSERT_NEW_COMM Error : '(e04) sy-subrc.
  ENDIF.
*----------------------------------------------------------------------*
Saludos.

Atte.,
Enrique Borroni

maito : enrique.borroni@abap.es