MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Otro Nuevo en ABAP (foro/showthread.php?t=9654)

lopezquekk 11/12/07 16:54:28

Otro Nuevo en ABAP
 
Hola soy recontra novato en SAP y por este motivo estoy repleto de dudasy por eso creo qeu los secaré de tanto preguntar.

Resulta qeu empece con los Reports y quiero hacer un report en el cual tengo que incluir varios datos de distintas tablas pero no se si todos esos campos los paso a una tabla interna o nesecito tantas tablas internar como tablas de SAP.

En Cualquiera de los dos casos ¿Como sería el select?
Gracias.

ibecerra 11/12/07 18:33:03

bueno yo te diria q depende de la situación
ejemplo
1. si tengo una tabla a y deseo obtener la info de la tabla c
pero antes debo obtener el dato de b para con eso dato completo busca a c
entonces debere de cargar la informacion de la tabla a luego ir a la tabla b
completar o guardalod en una tabla interna xx y luego ir a la tabla c.
2. la otra es simple obtener la informacion de la tabla a y la tabla b y volcarlo a tabla interna hago un join.

lopezquekk 11/12/07 19:31:34

un inner join, me podrias dar un peqeño ejemplo por favor

ibecerra 11/12/07 20:21:07

este es un inner join con varias tablas!!

SELECT
MARA~MATNR MARA~BISMT MARA~MATKL MARA~MEINS
MARA~MTART MAKT~MAKTX MARC~WERKS MBEW~BWKEY
MBEW~LPLPR MBEW~STPRS MBEW~VERPR MBEW~VPLPR
MBEW~ZPLPR MBEW~PEINH MARC~LOSGR MARA~FERTH
INTO TABLE TI_DATA
FROM MARA
INNER JOIN MAKT
ON MAKT~MATNR = MARA~MATNR
INNER JOIN MARC
ON MARC~MATNR = MAKT~MATNR
INNER JOIN MBEW
ON MBEW~MATNR = MARC~MATNR
AND MBEW~BWKEY = MARC~WERKS
WHERE MARA~MATNR IN S_MATNR
AND MARA~MTART IN S_MTART
AND MAKT~MAKTX IN S_MAKTX
AND MARC~WERKS IN S_WERKS
AND MBEW~STPRS IN S_STPRS
AND MBEW~VERPR IN S_VERPR.

lopezquekk 14/12/07 02:37:25

La verdad no quiero ser canson con este tema pero alguien e puede explicar con mas calma este inner join la verdad no lo entiendo.

Gracias de Antemano

vickxo 14/12/07 11:02:53

Hola
 
Quer tal, bueno te comento que los innner join no son lo mas adecuado para hacer una consulta sobre SAP. Considera la mecanica de un inner join y considera la cantidad de datos que maneja un sistema SAP, el tiempo de consulta crece mounstruosamente al usar innner joins.
Es comun presentar informacion de varias tablas SAP en un reporte lo habitual es tener una tabla interna por cada tabla que consultes y manipules la informacion en memoria.
La estructura de un SELEC es similar al SELECT SQL, aunque no es SQL. Para consultar la sintaxis del SELEC de SAP pulsa F1 sobre esta palabra reservada y automaticamente de mandara a la ayuda de SAP.
Usa la transaccion ABAPDOCU ahi viene una serie de ejemplos de diferentes programas en done puede ver la estructura de un report.
Chao

fer_saikyo 21/12/07 14:46:42

Miralo que funciona!
 
Hola! yo tambien soy muy novato en esto, de hecho estaba buscando ejemplos pero al ver tu inquietud quise ver si podia colaborar con vos. Copialo y pegalo tal cual esta allí. Lo unico que tendrias que variar seria el nombre de report (que lo pones vos obviamente) cualquier cosa agregame y cambiamos info Suerte!

*REPORT zinnerj.

TABLES: sflight, saplane.

* Creo un registro 'reg' con dos tablas transparentes.
DATA: BEGIN OF reg ,
* Para vinvular las dos tablas voy a usar el mandante
* de cada una de ellas:
*-----------------------------------------------------
mdta TYPE sflight-mandt ,
mdtb TYPE saplane-mandt ,
*-----------------------------------------------------
*Desde sflight traemos los sigtes campos:
carr TYPE sflight-carrid ,
fech TYPE sflight-fldate ,
prec TYPE sflight-price ,
plan TYPE sflight-planetype ,
*y desde saplane:
seam TYPE saplane-seatsmax ,
weit TYPE saplane-weight,

END OF reg.

*Ahora creamos la tabla interna 'ti':
DATA: BEGIN OF ti OCCURS 0 .
INCLUDE STRUCTURE reg .
DATA END OF ti .

*Y finalmente llenamos con un INNER JOIN nuestra tabla conbinada:
* 1. Seleccionamos las dos tablas y desde donde las vinculamos.
* el chirimbolito ~ es como decir tabla - campo, o sea .. eso
* y se usan alias = f : sflight p : saplane, que se declaran debajo.
SELECT f~mandt p~mandt

* 2. Se volvaran a la tabla interna:
INTO CORRESPONDING FIELDS OF TABLE ti

* 3. Y aqui se muestran los famosos INNER JOIN, y los alias.
FROM ( sflight AS f INNER JOIN saplane AS p ON
f~mandt = p~mandt ).

* una vez que hayas que hayas visto el programita "juga" con la
* sentencia WHERE para ver formas de comportamiento de la tabla.

* WHERE tabla-campo operador valor_campo ... .

* Loopeamos la tabla interna para listar los datos:

LOOP AT ti.

WRITE: ti-mdta ,
ti-carr ,
ti-fech ,
ti-prec ,
ti-plan ,
ti-seam ,
ti-weit .

ENDLOOP.

corozco 28/01/08 16:31:46

Excelente explicacion de un inner join mi amigo, me ayudo bastante en entenderlo y tambien como soy nuevo en ABAP me ayudara bastante.
Para intercambiar info te dejo mi MSN:

gabideas 26/07/10 19:31:45

Inner Join
 
Hola soy otra nueva en abap y siguiendo este tema , tengo un tp pra hacer debo hacer un inner para vincular 2 tablas transparentes, se como se hace y la guardo en una tabla interna pero debo combinar ésto con una database (SE 11) creada por mi, es decir debo Hacer un Insert ztab from ???? y ahi viene el tema desde donde la inserto desde la tabla interna donde esta el join?:confused: Por favor qe alguien me conteste esto, despues creo que seguiré preguntando otras cosas.GRAciass!!!!:)

Jonathan Barrio 27/07/10 10:39:50

ES Facil, INSERT o MODIFY.
 
Hola.

Antes de nada un consejo. Si haces una consulta, intenta aclararlo lo mejor posible en el título, porque yo he entrado por curiosidad, pero no sabía que era para esta consulta.

Tu pregunta es sencilla.

insert: TABLAZ from table TABLA_INTERNA[].
modify: TABLAZ from table TABLA_INTERNA[].

Los dos puntos no son necesarios
( son para seguir poniendo más parametros a esa sentencia separandolos con comas )

El símbolo '[]' indica que cojo una tabla y no un wa (línea de cabecera). No es necesario porque ya lo indicamo en la sentencia 'FROM TABLE', es una manía mia.

La diferencia entre el INSERT y el MODIFY:

INSERT es más efectivo y lo más importante, INSERTA UN REGISTRO NUEVO, si la clave de ese registro existe, DA UN DUMP (error-terminación anormal del programa).

MODIFY: Si el registro NO EXISTE (LA CLAVE), lo CREA, si EXISTE (un registro con la misma clave), LO MODIFICA.

Nunca se hace esto en una tabla del sistema, o sea que NO EMPIECE por "Z" o "Y" (Habría que saber muy bien que datos se están modificando).

Pulsa F1 con el cursor sobre la sentencia, para ver la ayuda en SAP. Te recomiendo hacer pruebas y mirar los resultados de los efectos


Husos Horarios son GMT. La hora en este momento es 17:44:10.

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