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 12/01/16, 17:09:51
naotosx naotosx is offline
Junior Member
 
Fecha de Ingreso: dic 2015
Mensajes: 5
Unhappy Duda con tablas internas en un ejercicio

Ok, he leído algo sobre tablas internas y he hehco varios ejercicios pero no se me aclara en el momento que estoy haciendo algo. Ejemplo:

(Obvien el hecho que no he construido el ALV)

REPORT Z_NA_ALVPRACTICA.

TABLES: EKKO, EKPO, EKBE.

TYPES: BEGIN OF ty_ekbe,
EBELN TYPE EBELN,
VGABE TYPE VGABE,
BELNR TYPE MBLNR,
WAERS TYPE WAERS,
END OF ty_ekbe,

BEGIN OF ty_ekko,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
ERDAT TYPE ERDAT,
ERNAM TYPE ERNAM,
SPRAS TYPE SPRAS,
END OF ty_ekko,

BEGIN OF ty_ekpo,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
MATNR TYPE MATNR,
MATKL TYPE MATKL,
WERKS TYPE EWERK,
LOEKZ TYPE ELOEK,
END OF ty_ekpo.

DATA: lt_ekbe type standard table of ty_ekbe,
wa_ekbe type table of ty_ekbe,
lt_ekko type standard table of ty_ekko,
wa_ekko type table of ty_ekko,
lt_ekpo type standard table of ty_ekpo,
wa_ekpo type table of ty_ekpo.

TYPE-POOLS: SLIS.
DATA: alv_git_fieldcat TYPE slis_t_fieldcat_alv,
wa_alv_get_fieldcat LIKE LINE OF alv_git_fieldcat,
*Estructura de Parametros del ALV
lf_layout TYPE slis_layout_ALV, "Maneja Diseño del ALV
it_topheader TYPE slis_t_listheader, "Maneja Cabecera del ALV
wa_top LIKE LINE OF it_topheader, "Linea para la cabecera
it_events TYPE slis_t_event WITH HEADER LINE,"Maneja TabladEventos
it_sort TYPE slis_t_sortinfo_ALV. "Para Ordenar la Tabla

SELECT-OPTIONS: s_ebeln for WA_ekko-ebeln OBLIGATORY,
s_ebelp for wa_ekpo-EBELP.


START-OF-SELECTION.

SELECT EBELN VGABE BELNR WAERS
FROM EKBE
INTO TABLE LT_EKBE
WHERE EBELN IN WA_EKBE-EBELN

SELECT EBELN BUKRS ERDAT ERNAM SPRAS
FROM EKKO
INTO TABLE LT_EKKO
WHERE EBELN IN WA_EKKO-EBELN

SELECT EBELN EBELP MATNR MATKL WERKS LOEKZ
FROM EKPO
INTO TABLE LT_EKPO
FOR ALL ENTRIES IN LT_EKBE
WHERE EBELN IN WA_EKKO-EBELN


LOOP AT lt_EKBE INTO wa_EKBE.
READ TABLE lt_EKKO INTO wa_EKKO
READ TABLE LT_EKPO INTO WA_EKPO
WITH KEY S_EBELN = wa_LT_EKBE-EBELN.


END-OF-SELECTION.


Mi duda son las siguientes: yo se que cuando creo tablas con types , hago mi tabla interna y luego mi cabecera (workarea como yo lo veo) que es las que me ira guardando cada dato en la tabla. Se que en mi pantalla de seleccion creo una que se llama s_ebeln for (aqui no se si pongo workarea y cual)-ebeln y otro parametro ebelp for wa_ekpo-ebelp (supongo que es esta porque es la que contiene ese campo). Ok voy con mis selects se que tengo que extrar data de mi tabla x, por ejemplo :

SELECT EBELN EBELP MATNR MATKL WERKS LOEKZ
FROM EKPO
INTO TABLE LT_EKPO
FOR ALL ENTRIES IN LT_EKBE
WHERE EBELN IN WA_EKKO-EBELN

la introduzco la data enm lt_ekpo que posteriormente hare mi loop para que guarde los registros pero no he trabajado con 3 tablas y por eso tengo mas dudas, mi otra gran importante pregunte es el el where, principalmente porque no se como leerlo es decir where mi_campo_clave esté_en mi_tabla_con_cabecera??? o where ebeln in lt_ekbe ???? que es la tabla interna.

Y el loop lo hago primero en una tabla, luego en la segunda y despues en la tercera? o si me pueden escribir esa parte del codigo corregida se los agradeceria y explicada claro y por ultimo como funciona el for all entries, como usarlo y cuando, yo ya he leido pero no es lo mismo que uno lea e interprete a que alguien que ya sabe usarlo se lo explique a uno xD

Cualquier error o informacion, correcion, asesoramiento, consejo, experiencia, documento es bienvenido porque me parece que si no tengo esto claro me costara mucho realizar otras cosas. Saludos y muchas gracias.
Responder Con Cita
  #2  
Viejo 18/01/16, 11:34:30
monkeyisland1 monkeyisland1 is offline
Junior Member
 
Fecha de Ingreso: jun 2012
Mensajes: 15
Tabvlas internas

Buenas compañero.

El uso de tablas internas es fundamental en SAP.

Los RANGOS, son parejos a las tablas internas, pero se usan para tener varios valores de un campo. En tu caso por ejemplo, el S_EBELN es un RANGO para indicar varios documentos (pedidos...). En un rango se pueden indicar valores fijos (EQ), valores desde-hasta (BT), etc.

Las tablas internas puedes definirlas a medida, con o sin cabecera (el work área) o en base a otras tablas o TIPOS (TYPES) predefinidos para crear varias tablas internas, como has hecho en tu ejemplo. Por ejemplo: TI_EKPO type table of EKPO, definirías una tabla interna con la estructura de la tabla EKPO. O por ejemplo, TI_EKPO LIKE EKPO OCCURS 0... lo mismo.

Cuando haces:

SELECT EBELN VGABE BELNR WAERS
FROM EKBE
INTO TABLE LT_EKBE
WHERE EBELN IN WA_EKBE-EBELN

no creo que haga gran cosa, porque cuando haces una selección multiple a una tabla BBDD, usando una tabla interna, le tienes que indicar el campo a usar:

SELECT EBELN VGABE BELNR WAERS
FROM EKBE
INTO TABLE LT_EKBE
WHERE EBELN = LT_EKBE-EBELN .

Asi, seleccionarías todos los registros de la EKBE cuyos documentos EBELN estén en tu tabla LT_EKBE.

En la SELECT los IN se suelen usar entre otros para los rangos o los selec-options o cadenas de valores.

Si tienes varias tablas internas y quieres recuperar o leer otras tablas internas dentro, no te quedara otra que hacer varios LOOPS encadenados, o hacer un READ TABLE dentro de un LOOP, etc. Dependiendo de lo que quieres hacer.

Espero haberte ayudado un poco ...
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 13:22:39.


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