Ver Mensaje Individual
  #2  
Viejo 31/08/06, 13:54:14
LouieBoy LouieBoy is offline
Member
 
Fecha de Ingreso: ago 2006
Mensajes: 86
Solucionado

Bueno, despuesde de un par de dias ya he dado con la solución, no veas.....
En fin al turroooon!!.

En primer lugar os dire que la orden es de tipo Workbench, según tengo entendido las de customizing es algo más complicado.
Como ya habia dicho se utilizan estas dos funciones TRINT_ORDER_CHOICE y TRINT_APPEND_TO_COMM_ARRAYS.

Para que os sea un poco más facil de entender, os explicare de que trata la aplicación que he hecho...se trata de un BI mediante call transaction el cual hace una PARAMETRIZACIÓN a la tabla T9KRE mediante la transacción YK22, está transacción por cada registro que parametrizas te devuelve una clave, las cuales tinenes q ir apuntando como un campeon, para luego ir a las se16 seleccionarlas y transportar las entradas, lo q es un coñazo, si te llegan 91 claves...como me paso a mi el otro dia.....

La verdad es que no se bien bien bien com funciona todo el tema de transportes mi solucion se ha basado en ir a la transacción SE16 y seleccionar unas entradas y luego crear una orden, a partir de ahi he debuggeado y copiado la información que se les pasa a las funciones, el caso es que funciona, pero a fecha de hoy 31-08-2006 llevo 5 meses programando asi que, como ya os podeis imaginar, no tengo ni zorra.
La primera función, por lo que he entendido es la que se encarga de crear una orden o nos permite utilizar una orden existente

1- llamamos a esta funicion, que aparentemente es para gestionar ids de ordenes y tareas.
CALL FUNCTION 'TRINT_ORDER_CHOICE'
EXPORTING
wi_order_type = 'K' <- para ordenes workbench
wi_task_type = 'S' <- para ordenes workbench
wi_category = 'SYST'
WI_CLIENT = SY-MANDT
Wi_cli_dep = 'X'
WI_REMOVE_LOCKS = 'X'
IMPORTING
we_order = order <- id orden de transporte
we_task = task <- id de tarea asociada a la orden transporte
TABLES
wt_e071 = objects
wt_e071k = keys
EXCEPTIONS
no_correction_selected = 1
display_mode = 2
object_append_error = 3
recursive_call = 4
wrong_order_type = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

2- Hay que informar la tabla objects con los siguientes parametros:

CLEAR: objects[], objects.
objects-PGMID = 'R3TR'.
objects-OBJECT = 'TABU'.
objects-OBJ_NAME = 'T9KRE'. <- tabla destino para la info
objects-OBJFUNC = 'K'. <- orden workbench
APPEND objects.

3-Hay que informar la tabla keys con los siguientes parametros(OJO A ESTO)

CLEAR KEYS[].
Por cada registro que queremos transportar
KEYS-PGMID = 'R3TR'.
KEYS-OBJECT = 'TABU'.
KEYS-OBJNAME = 'T9KRE'.
KEYS-MASTERTYPE = 'TABU'.
KEYS-MASTERNAME = 'T9KRE'.
ATENCION!!! en el campo KEYS-TABKEY va toda la información a transportar, osease, todo el registro, en mi caso, habia un campo que no debe incluirse, para aseguraros os recomiendo que primero hagais la orden manualmente y luego con este metodo con la misma informacion y la compareis.
Yo os recomiendo que utiliceis una estructura con los campos exactos, hagais un move-correspoding de la tabla interna a la structura y luego luego move hacia keys-tabkey.
MOVE-CORRESPONDING IT_CLAVES TO WA_CLAVES.
MOVE WA_CLAVES TO KEYS-TABKEY.
APPEND KEYS.
FIn bucle.


* IF NOT task IS INITIAL.
CALL FUNCTION 'TRINT_APPEND_TO_COMM_ARRAYS'
EXPORTING
wi_trkorr = task <- id de tarea asociada a la orden de transporte
TABLES
wt_e071 = objects
wt_e071k = keys
EXCEPTIONS
key_check_keysyntax_error = 1
ob_check_obj_error = 2
tr_lockmod_failed = 3
tr_lock_enqueue_failed = 4
tr_wrong_order_type = 5
tr_order_update_error = 6
file_access_error = 7
ob_no_systemname = 8
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
ENDIF.
En principio esto es todo, dudo mucho que esta sea la solucion oficial ejjeje, pero almenos os servira para haceros una idea de como hacerlo, luego quien sepa mas o decida profundizar, pues ya hara sus aportaciones, a mi de momento me ha funcionado, pero repito que no es una solucion generica, sino todo al contrario, por lo que sigo recomendando que antes estudieis como hace sap todo esto, de manera manual, y luego lo automatizais con este metodo...o mejorado...ya que la mas de la mitad de parametros no se para que sirven jejejeje

En fin espero haber sido de ayuda.

Un saludo

LouieBoy
Responder Con Cita