PDA

Ver la Versión Completa : Otro Nuevo en ABAP


lopezquekk
11/12/07, 16:54:28
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
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
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 ichi_sama@hotmail.com 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: c_orozco16@hotmail.com

gabideas
26/07/10, 19:31:45
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
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