No, te lo puse porque vi que filtrabas por KUNNR en el select.
Entonces seria asi:
SELECT VKBUR PLTYP VKGRP
INTO (KNVV-VKBUR KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKGRP
AND VKGRP EQ VKGRP.
Saludos.
No, te lo puse porque vi que filtrabas por KUNNR en el select.
Entonces seria asi:
SELECT VKBUR PLTYP VKGRP
INTO (KNVV-VKBUR KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKGRP
AND VKGRP EQ VKGRP.
Saludos.
@sconoredhot ahí ya sigo con el select para que me traiga el kunnr o el siguiente select es para la tabla knvp
y, ya te convendria tener el KUNNR para poder hacer los selects a la KNA1 con el cliente.
De hecho, te lo puedes traer en el select que acabamos de hacer:
SELECT KUNNR VKBUR PLTYP VKGRP
INTO (KNVV-KUNNR, KNVV-VKBUR, KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKGRP
AND VKGRP EQ VKGRP.
Y luego con el KNVV-KUNNR puedes hacer el resto de los selects que necesites.
ME DICEN QUE PARA TRAER EL INTERLOCUTOR VENDEDOR debo ingresar primero a la tabla knvp de ahí traer el campo parvw (funcion interlocutor) de ahí hacer creo otro select con tabla pa0001(registro maestro personal)y de esa manera me trae el interlocutor vendedor pero no lo entiendo porfa necesito ayuda para realizar este proceso gracias
Hola,
No me cierra lo que comentas, y te muestro el motivo:
Si es así como dices, puedes hacer el select a la KNVP pero en lugar de traerte el campo PARVW, deberias traerte el campo PERNR. Por otro lado, la tabla KNVP no tiene los campos VKGRP y VKBUR, entonces vas a tener que ver con que campos filtrar (posiblemente VKORG y VTWEG).
Luego, con ese campo PERNR, si puedes hacer el select a la PA001, pero esta tabla, no veo que tenga un campo que diga interlocutor / Vendedor / etc. No se si despues de esta se debe acceder a otra tabla de HR.
Quizas deberias pedir que te den mas detalle de lo que necesitan.
Saludos,
Sebastián
Hola a todos amigos, luisa_aldana2 has intentado usar la SQVI, hace mucho tiempo deje de hacer reportes desde 0, ya todos los inicio desde allí, claro, luego edito el o los select.
@Dlanor20777 no he intentado al igual soy nueva en abap que no he tenido la oportunidad de usarlo pero si es una manera practica de desarrollar un reporte me encantaría aprender.
Gracias
Es que del campo PARVW necesito el valor (ve) y del campo PERNR necesito este (607) y me dicen que con estos dos ya puedo hacer el select con la tabla PA0001
SELECT PERNR PARVW
INTO (KNVP-PERNR, KNVP-PARVW)
FROM KNVP
WHERE KUNNR EQ KNVV-KUNNR
AND PERNR EQ 'V'
AND PARVW EQ '607'.
Bueno, te cuidado que los filtros los tienes invertidos
AND PERNR EQ 'V'
AND PARVW EQ '607'.
Creo que deberia ser, si hay datos de lo que dices:
AND PERNR EQ '607'
AND PARVW EQ 'VE'.
Entonces, si, con el PERNR ya puedes acceder a la tabla PA001, pero no sé que campos tienes que traer de ahi, eso ya te lo dejo para que revises
Saludos.
@sconoredhot Disculpa el campo que utilice WHERE KUNNR EQ KNVV-KUNNR
si puede ir ahí ya que lo amarra con el select anterior o me equivoco
SELECT KUNNR VKBUR PLTYP VKGRP
INTO (KNVV-KUNNR, KNVV-VKBUR, KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKBUR
AND VKGRP EQ VKGRP.
SELECT PERNR PARVW
INTO (KNVP-PERNR, KNVP-PARVW)
FROM KNVP
WHERE KUNNR EQ KNVV-KUNNR
AND PERNR EQ '607'
AND PARVW EQ 'VE'.
ENDSELECT.
ENDSELECT.
Si, a simple vista esos dos selects se ven bien.
Solo a modo de comentario, fijate que estas tomando de la tabla KNVP, los valores PERNR y PARVW, que son los mismos con los cuales filtras… o sea, hacer ese select, es lo mismo que hacer:
KNVP-PERNR = ‘607’.
KNVP-PARVW = ‘VE’.
Pero entiendo que se puede hacer para comprobar la existencia del registro.
Sigue con el requerimiento y nos cuentas como te fue.
Saludos.
ahí ya están todas las tablas que me pidieron en el reporte si algo está mal porfa háganmelo saber
SELECT KUNNR VKBUR PLTYP VKGRP
INTO (KNVV-KUNNR, KNVV-VKBUR, KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKBUR
AND VKGRP EQ VKGRP.
SELECT SINGLE PERNR
INTO KNVP-PERNR
FROM KNVP
WHERE KUNNR EQ KNVV-KUNNR
AND PARVW EQ 'VE'.
IF SY-SUBRC NE 0.
CLEAR KNVP-PERNR.
ENDIF.
SELECT SINGLE SNAME
INTO PA0001-SNAME
FROM PA0001
WHERE PERNR EQ KNVP-PERNR.
SELECT SINGLE NAME1 ORT01 STCD1
INTO (KNA1-NAME1, KNA1-ORT01, KNA1-STCD1)
FROM KNA1
WHERE KUNNR EQ KNVV-KUNNR.
ENDSELECT.
Va tomando forma!
Parece todo OK, recuerda appendear los resultados a LISTADO antes del ENDSELECT para que te los tome el ALV.
Saludos,
@sconoredhot No se en que estoy fallando no me salen datos de nada
ayuda plis
SELECT KUNNR VKBUR PLTYP VKGRP
INTO (KNVV-KUNNR, KNVV-VKBUR, KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKBUR
AND VKGRP EQ VKGRP.
SELECT SINGLE PERNR
INTO KNVP-PERNR
FROM KNVP
WHERE KUNNR EQ KNVV-KUNNR
AND PARVW EQ 'VE'.
IF SY-SUBRC NE 0.
CLEAR KNVP-PERNR.
SELECT SINGLE SNAME
INTO PA0001-SNAME
FROM PA0001
WHERE PERNR EQ KNVP-PERNR.
SELECT SINGLE NAME1 ORT01 STCD1
INTO (KNA1-NAME1, KNA1-ORT01, KNA1-STCD1)
FROM KNA1
WHERE KUNNR EQ KNVV-KUNNR.
LISTADO-VKBUR = KNVV-VKBUR.
LISTADO-VKGRP = KNVV-VKGRP.
LISTADO-PLTYP = KNVV-PLTYP.
LISTADO-KUNNR = KNVV-KUNNR.
LISTADO-PERNR = KNVP-PERNR.
LISTADO-PARVW = 'VE'.
LISTADO-SNAME = PA0001-SNAME.
LISTADO-NAME1 = KNA1-NAME1.
LISTADO-ORT01 = KNA1-ORT01.
LISTADO-STCD1 = KNA1-STCD1.
APPEND LISTADO.
CLEAR LISTADO.
ENDIF.
ENDSELECT.
PERFORM CAMPOS_ALV.
PERFORM ORDENAR_ALV.
PERFORM LAYOUT.
PERFORM ALV_REPORT.
ENDFORM.
deberías debuguear para ver en que punto falla pero veo varias cosillas :
Nunca uso select - enselect compromete el rendimiento pero creo que con esa sentencia hace falta un append para que se guarden los datos
no tiene sentido si no encuentras el pernr en la knvp lo borras y lo pones como condición para un select? supongo que lo que quieres hacer es justo lo contrario
F SY-SUBRC eq 0.
SELECT SINGLE SNAME
INTO PA0001-SNAME
FROM PA0001
WHERE PERNR EQ KNVP-PERNR.
intenta poner todos los campos clave que puedas en los where para mejorar la búsqueda.
Si, eso se lo comenté en un punto más arriba pero como está aprendiendo quizás no esté mal que primero aprenda el select - end select y luego otros métodos.
Coincido con todo lo que dice @adalove, intenta hacer esas cosas y debuguearlo, a ver en que punto exacto no te está trayendo datos, o si solo faltaba el append.
Saludos.
@sconoredhot @adalove he estado realizando el debugging y me salta hasta el final no esta pasando por ningún select
has comprobado que la tabla tenga datos para el primer select?
Si no está pasando por NINGÚN select, debe haber alguna sentencia previa que esté impidiendo llegar.
Cualquier cosa pásanos el código completo.
*&---------------------------------------------------------------------*
*& Report ZSD_LISTADO_DE_CLIENTES
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSD_LISTADO_DE_CLIENTES.
TABLES: KNA1, KNVV, KNVP, VBAK, VBAP,PA0001.
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
WA_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
GD_REPID LIKE SY-REPID,
GT_EVENTS TYPE SLIS_T_EVENT,
GD_PRNTPARAMS TYPE SLIS_PRINT_ALV,
IT_SORTCAT TYPE SLIS_T_SORTINFO_ALV,
TEXTO(120).
DATA: BEGIN OF LISTADO OCCURS 0,
STCD1 TYPE KNA1-STCD1,
ORT01 TYPE KNA1-ORT01,
NAME1 TYPE KNA1-NAME1,
VKBUR TYPE KNVV-VKBUR,
VKGRP TYPE KNVV-VKGRP,
PLTYP TYPE KNVV-PLTYP,
KUNNR TYPE KNVP-KUNNR,
PERNR TYPE KNVP-PERNR,
PARVW TYPE KNVP-PARVW,
SNAME TYPE PA0001-SNAME,
END OF LISTADO.
SELECTION-SCREEN BEGIN OF BLOCK TEXT-001 WITH FRAME TITLE TEXT-004.
PARAMETERS: VKBUR TYPE KNVV-VKBUR DEFAULT '008' OBLIGATORY,
VKGRP TYPE KNVV-VKGRP DEFAULT '004' OBLIGATORY.
SELECTION-SCREEN END OF BLOCK TEXT-001.
START-OF-SELECTION.
PERFORM DATOS.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form DATOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DATOS.
SELECT KUNNR VKBUR PLTYP VKGRP
INTO (KNVV-KUNNR, KNVV-VKBUR, KNVV-PLTYP, KNVV-VKGRP)
FROM KNVV
WHERE VKBUR EQ VKBUR
AND VKGRP EQ VKGRP.
SELECT SINGLE PERNR
INTO KNVP-PERNR
FROM KNVP
WHERE KUNNR EQ KNVV-KUNNR
AND PARVW EQ 'VE'.
IF SY-SUBRC NE 0.
SELECT SINGLE SNAME
INTO PA0001-SNAME
FROM PA0001
WHERE PERNR EQ KNVP-PERNR.
SELECT SINGLE NAME1 ORT01 STCD1
INTO (KNA1-NAME1, KNA1-ORT01, KNA1-STCD1)
FROM KNA1
WHERE KUNNR EQ KNVV-KUNNR.
LISTADO-VKBUR = KNVV-VKBUR.
LISTADO-VKGRP = KNVV-VKGRP.
LISTADO-PLTYP = KNVV-PLTYP.
LISTADO-KUNNR = KNVV-KUNNR.
LISTADO-PERNR = KNVP-PERNR.
LISTADO-PARVW = 'VE'.
LISTADO-SNAME = PA0001-SNAME.
LISTADO-NAME1 = KNA1-NAME1.
LISTADO-ORT01 = KNA1-ORT01.
LISTADO-STCD1 = KNA1-STCD1.
APPEND LISTADO.
CLEAR LISTADO.
ENDIF.
ENDSELECT.
PERFORM CAMPOS_ALV.
PERFORM ORDENAR_ALV.
PERFORM LAYOUT.
PERFORM ALV_REPORT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CAMPOS_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CAMPOS_ALV .
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'NAME1' .
it_fieldcat-tabname = 'LISTADO'.
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'NOM. CLIENTE'.
IT_FIELDCAT-OUTPUTLEN = '16'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'KUNNR' .
it_fieldcat-tabname = 'LISTADO'.
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'COD. CLIENTE'.
IT_FIELDCAT-OUTPUTLEN = '16'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'STCD1' .
it_fieldcat-tabname = 'LISTADO' .
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'NIT'.
IT_FIELDCAT-OUTPUTLEN = '16'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'ORT01' .
it_fieldcat-tabname = 'LISTADO' .
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'CIUDAD'.
IT_FIELDCAT-OUTPUTLEN = '16'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'VKBUR' .
it_fieldcat-tabname = 'LISTADO' .
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'OFI. VENTA'.
IT_FIELDCAT-OUTPUTLEN = '10'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'VKGRP' .
it_fieldcat-tabname = 'LISTADO'.
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'GRUP. VENDEDOR'.
IT_FIELDCAT-OUTPUTLEN = '10'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'PARVW' .
it_fieldcat-tabname = 'LISTADO'.
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'INTERL. VENDEDOR'.
IT_FIELDCAT-OUTPUTLEN = '10'.
APPEND it_fieldcat to wa_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'PLTYP' .
it_fieldcat-tabname = 'LISTADO'.
it_fieldcat-key = 'X'.
IT_FIELDCAT-SELTEXT_M = 'LIST. PRECIOS'.
IT_FIELDCAT-OUTPUTLEN = '10'.
APPEND it_fieldcat to wa_fieldcat.
ENDFORM. " CAMPOS_ALV
*&---------------------------------------------------------------------*
*& Form ORDENAR_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ORDENAR_ALV .
SORT LISTADO BY NAME1.
DATA: IT_sort TYPE slis_sortinfo_alv.
* CLEAR IT_SORT.
* IT_sort-spos = 1.
* IT_sort-fieldname = 'CHECK'.
* IT_sort-up = 'X'.
* IT_sort-subtot = 'X'.
* IT_SORT-EXPA = 'X'. " Sirve para que salgan los subtotales
* APPEND IT_sort TO IT_SORTCAT.
CLEAR IT_SORT.
IT_sort-spos = 1.
IT_sort-fieldname = 'NAME1'.
IT_sort-up = 'X'.
IT_sort-subtot = 'X'.
* IT_SORT-EXPA = 'X'. " Sirve para que salgan los subtotales
APPEND IT_sort TO IT_SORTCAT.
ENDFORM. " ORDENAR_ALV
*&---------------------------------------------------------------------*
*& Form LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LAYOUT .
GD_LAYOUT-NO_INPUT = 'X'.
GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GD_LAYOUT-TOTALS_TEXT = 'TOTALS'(201).
GD_LAYOUT-ZEBRA = 'X'.
ENDFORM. " LAYOUT
*------------------------------------------------------------------*
* FORM USER_COMMAND *
*------------------------------------------------------------------*
* --> R_UCOMM *
* --> RS_SELFIELD *
*------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
RS_SELFIELD-REFRESH = 'X'.
* Check function code
CASE R_UCOMM.
WHEN '&IC1' OR 'PICK' .
RS_SELFIELD-REFRESH = 'X'. "REFRESCAR PANTALLA
ENDCASE.
CLEAR R_UCOMM.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form ALV_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_REPORT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_GRID_TITLE = 'BUSCAR LISTADO'
IT_SORT = IT_SORTCAT[]
IS_LAYOUT = GD_LAYOUT
IT_FIELDCAT = WA_FIELDCAT[]
I_SAVE = 'X'
TABLES
T_OUTTAB = LISTADO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " ALV_REPORT
eso es todo lo que estoy haciendo y no pasa nada y @adalove LAS TABLAS SI TIENE DATOS