MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 20/05/14, 11:49:22
awas90 awas90 is offline
Member
 
Fecha de Ingreso: may 2014
Mensajes: 68
duda sobre ordenación de tablas.

Buenas compañeros, tenog una duda a ver si podeis ayudarme.

Tengo dos tablas, vamos a llamarlas t_entregas y t_doc_aux.

ambas tablas tienen la siguiente estructura:

DATA: BEGIN OF t_entregas OCCURS 0,
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr,
sernr LIKE equi-sernr,
matnr LIKE equi-matnr,
werks LIKE vbap-werks,
lgort LIKE lips-lgort.
DATA: END OF t_entregas.

DATA: BEGIN OF n_doc_aux OCCURS 0,
vbeln LIKE n_docu-vbeln,
num_pos LIKE n_docu-num_pos.
DATA: END OF n_doc_aux.

Vale, imaginemos que n_doc_aux esta ordenada por num_pos, de menor a mayor.

ahora necesito ordenar t_entregas en función de n_doc_aux.

Había pensado en pasar los datos de t_entregas a una nueva tabla auxiliar para ordenar esta, limpiar la original y pasar los datos de nuevo a t_entregas.

sin embargo, por mucho que lo intento, no logro sacar el código abap...

Alguna ayuda?
Responder Con Cita
  #2  
Viejo 20/05/14, 15:38:48
zocter zocter is offline
Member
 
Fecha de Ingreso: nov 2007
Mensajes: 36
"ahora necesito ordenar t_entregas en función de n_doc_aux."

¿En que sentido? ¿Puedes dar un ejemplo con datos y como tendría que quedar?
Responder Con Cita
  #3  
Viejo 20/05/14, 17:53:46
Ripper87 Ripper87 is offline
Member
 
Fecha de Ingreso: dic 2011
Mensajes: 37
Bueno, no se si hay una forma más facil. Pero usando la lógica que dijiste de usar una tabla auxiliar lo haría de esta forma:


Y en la tabla t_entregas_aux quedaría la tabla tal cual como quieres.
Responder Con Cita
  #4  
Viejo 20/05/14, 21:37:18
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
y porque no ocupan SORT ?
Responder Con Cita
  #5  
Viejo 21/05/14, 14:02:40
zocter zocter is offline
Member
 
Fecha de Ingreso: nov 2007
Mensajes: 36

No se yo.... Eso no tiene mucho sentido... para que quieres tener una tabla ordenada por numero de posicion de otra tabla?
Responder Con Cita
  #6  
Viejo 21/05/14, 14:20:36
Ripper87 Ripper87 is offline
Member
 
Fecha de Ingreso: dic 2011
Mensajes: 37
De los clientes se espera cualquier cosa.

Igual no veo descabellado lo que se quiere, como dije no se si hay una forma más sencilla para esto, digamos que tienes los documentos en las tablas de SAP:

123
321
456
654

Y por alguna razón del negocio, el cliente quiere que en el reporte/formulario siempre se muestre en este orden:

1. 456
2. 123
3. 654
4. 321

Pues ese orden está dado por una tablita Z que diga:

Doc Orden
123 2
321 4
456 1
654 3

Se le hace un sort a esta tabla por el campo Orden:

456 1
123 2
654 3
321 4

Y llegamos al punto en donde estaba el amigo... como ordenamos la tabla que nombre al principio con respecto a esta?
Responder Con Cita
  #7  
Viejo 21/05/14, 15:00:08
zocter zocter is offline
Member
 
Fecha de Ingreso: nov 2007
Mensajes: 36
En ese caso tú código me parece correcto, no creo que haya otra opción o no se me ocurre. Con Inner Join sobre tablas del diccionario, pero para tablas internas esa opción no me parece mal
Responder Con Cita
  #8  
Viejo 21/05/14, 17:01:11
awas90 awas90 is offline
Member
 
Fecha de Ingreso: may 2014
Mensajes: 68
Al final pude resolverlo. Pondre el codigo en pseudo-sap.

DATA: " Declaramos tabla auxiliar dónde estara el orden. (A.K.A n_doc_aux)

DATA: " Declaramos tabla auxiliar dónde volcaremos los datos ya ordenados.
(A.K.A entrega_aux)

CLEAR n_doc_aux.
REFRESH entrega_aux.

IF n_doc_aux[] is initial.
n_doc_aux[] = n_doc[] " n_doc es la tabla original.
ENDIF.

SORT n_doc_aux BY "Aqui ordenamos como lo deseemos, en este caso por
"una variable llamada num_pos (por ejemplo).

LOOP AT n_doc_aux.
LOOP AT entrega WHERE ..... " Condiciones de busqueda. entrega es la
" tabla original.
" Volcamos los datos de entrega a entrega_aux.
ENDLOOP.
ENDLOOP.

CLEAR entrega.
REFRESH entrega.

IF entrega[] is INITIAL.
entrega[] = entrega_aux[].
ENDIF.

Espero que se entienda. Así logramos que la tabla entrega esté ordenada de la forma que queriamos.

Espero que les sirva a más gente


EDIT: Pensaba que este foro respetaba las tabulaciones...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 16:51:28.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web