MUNDOSAP

MUNDOSAP (foro/index.php)
-   RUEGOS Y PREGUNTAS (foro/forumdisplay.php?f=20)
-   -   Añadir campos en ALV (foro/showthread.php?t=73383)

tabi.rivero 29/01/15 18:10:07

Añadir campos en ALV
 
Hola
Tengo una duda. Soy Abap Jr apenas 3 semanas con esto de abap :( . Tengo un problemita con un ALV. Me pidieron una modificación, agregar 2 columnas: denominación de tipo de material y denominación de Gpo. de Artículos.

Aparte del TYPE-POOLS: slis, el FM = REUSE_ALV_GRID_DISPLAY y el catálogo, tengo esto que creo es importante.
Tengo esto:

* Tablas.
TABLES: mara, "Maestro de Materiales.
makt. "Textos breves - Material.

TYPES: BEGIN OF ty_lista,
matnr LIKE mara-matnr, "No. Material.
maktx LIKE makt-maktx, "Descrip. Material.
ersda LIKE mara-ersda, "Fecha de Creación.
mtart LIKE mara-mtart, "Tipo de Material
matkl LIKE mara-matkl, "Gpo. de Artículos.
meins LIKE mara-meins, "UMB.
gewei LIKE mara-gewei, "UM Peso.
mtbez LIKE t134t-mtbez, "Add 29.01.2015
wgbez LIKE t023t-wgbez, "Add 29.01.2015
END OF ty_lista,

* Inicio modif. 29.01.2015
BEGIN OF ty_mtart,
mtart LIKE t134t-mtart, "Tipo de Material.
mtbez LIKE t134t-mtbez, "Descrip. Tipo de Material.
END OF ty_mtart,

BEGIN OF ty_matkl,
matkl LIKE t023t-matkl, "Gpo. Artículos.
wgbez LIKE t023t-wgbez, "Descrip. Gpo. Artículos.
END OF ty_matkl.
* Final modif. 29.01.2015

* Declaración de tablas internas.
DATA: lt_lista TYPE STANDARD TABLE OF ty_lista WITH HEADER LINE,
lt_mtart TYPE STANDARD TABLE OF ty_mtart WITH HEADER LINE, "Add 29.01.2015
lt_matkl TYPE STANDARD TABLE OF ty_matkl WITH HEADER LINE. "Add 29.01.2015

* Declaraciones del ALV.
DATA: ls_layout TYPE slis_layout_alv,
lt_catalog TYPE slis_t_fieldcat_alv,
ls_catalog TYPE slis_fieldcat_alv.

* Pantalla de selección.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: so_matnr FOR mara-matnr OBLIGATORY,
so_ersda FOR mara-ersda,
so_mtart FOR mara-mtart.
SELECTION-SCREEN: END OF BLOCK b1.

START-OF-SELECTION.
PERFORM obtener_datos.
PERFORM catalogo_alv.
PERFORM llamar_alv.

FORM obtener_datos.
* Extracción de datos de materiales.
SELECT mara~matnr
maktx
ersda
mtart
matkl
meins
gewei
FROM mara INNER JOIN makt
ON mara~matnr EQ makt~matnr
INTO TABLE lt_lista
WHERE mara~matnr IN so_matnr
AND ersda IN so_ersda
AND mtart IN so_ersda
AND spras EQ sy-langu.

* Inicio modif. 29.01.2015
* Extracción de denominaciones de tipo de material.
SELECT mtart
mtbez
FROM t134t
INTO TABLE lt_mtart
WHERE spras EQ sy-langu.

* Extracción de denominaciones de Gpo. Artículos.
SELECT matkl
wgbez
FROM t023t
INTO TABLE lt_matkl
WHERE spras EQ sy-langu.

LOOP AT lt_lista.
READ TABLE lt_lista WITH KEY mtart = lt_lista-mtart.
IF sy-subrc EQ 0.
MODIFY lt_lista INDEX sy-tabix TRANSPORTING mtbez.
ENDIF.

READ TABLE lt_matkl WITH KEY matkl = lt_lista-matkl.
IF sy-subrc EQ 0.
ENDIF.
ENDLOOP.
* Final modif. 29.01.2015
ENDFORM. " OBTENER_DATOS

En el debug se muestran ya las 2 columnas (ya están en el catálogo) que me piden, pero no hay datos. Hice lo del MODIFY, pero creo que no es eso. No se como unir datos de 2 o mas tablas internas :confused:

Espero puedan ayudarme.

Saludos.

ABellamy 19/02/15 22:21:39

Añadir campos en ALV
 
Hola tabi.rivero
No tendría caso corregirte pues es algo básico y muy importante en cualquier desarrollo las operaciones con tablas internas, mejor te paso un link del que te puedes aprender, practicar y debugear:
Sirve de mucho, lo que no entiendas presiona F1, lee la ayuda, realiza muchos ejercicios y debugea, no queda de otra

Suerte
Saludos

sconoredhot 20/02/15 10:36:17

hola
 
Hola,

Si, como dicen arriba deberías debuguearlo.

Pero fijate que el mayor problema está aca:

LOOP AT lt_lista.
READ TABLE lt_lista WITH KEY mtart = lt_lista-mtart.
***** aca tenes que leer la otra tabla, no lt_lista ********
IF sy-subrc EQ 0.
MODIFY lt_lista INDEX sy-tabix TRANSPORTING mtbez.
ENDIF.

READ TABLE lt_matkl WITH KEY matkl = lt_lista-matkl.
IF sy-subrc EQ 0.
******* aca te falta pasar el valor a lt_lista **********
ENDIF.
ENDLOOP


Husos Horarios son GMT. La hora en este momento es 23:39:53.

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