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 27/05/14, 15:38:53
awas90 awas90 is offline
Member
 
Fecha de Ingreso: may 2014
Mensajes: 68
No estaras haciendo un select single de campos no clave no?
Responder Con Cita
  #2  
Viejo 28/05/14, 17:44:00
aaron alfonso aaron alfonso is offline
Junior Member
 
Fecha de Ingreso: may 2014
Localización: culiacan mexico
Mensajes: 27
Desmoquattro

HOLA PUES AMIGO PARECE QUE SI ES CORRECTO TODO LO UNICO QUE NO ENTIENDO ES QUE AL MOMENTO DE CHECAR NO TRAE NADA .
SUPONGO SEA POR DONDE COLOCASTE EL APPEND DENTRO DEL LOOP.
PERO YA LO SAQUE NO ME MANDA NADA AL ALV.
CREO QUE TENGO COLOCARE TODO MI CODIGO ESPERO ESTE ENTENDIBLE.

__________________
tenchy

Úlima edición por aaron alfonso fecha: 28/05/14 a las 17:48:40.
Responder Con Cita
  #3  
Viejo 28/05/14, 17:44:54
aaron alfonso aaron alfonso is offline
Junior Member
 
Fecha de Ingreso: may 2014
Localización: culiacan mexico
Mensajes: 27
Codigo


REPORT ZCONSULTA_DOCFI.

TABLES:BKPF,BSEG.
TYPES: BEGIN OF TY_BKPF,
BUKRS TYPE BKPF-BUKRS,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
XBLNR TYPE BKPF-XBLNR,
BKTXT TYPE BKPF-BKTXT,
BLART TYPE BKPF-BLART,
END OF TY_BKPF.

TYPES: BEGIN OF TY_BSEG,
BUKRS TYPE BSEG-BUKRS,
BELNR TYPE BSEG-BELNR,
GJAHR TYPE BSEG-GJAHR,
SGTXT TYPE BSEG-SGTXT,
PRCTR TYPE BSEG-PRCTR,
END OF TY_BSEG.

TYPES: BEGIN OF TY_DATOS,
BUKRS TYPE BKPF-BUKRS,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
XBLNR TYPE BKPF-BKTXT,
BKTXT TYPE BKPF-bktxt,
BLART TYPE BKPF-BLART,
SGTXT TYPE BSEG-SGTXT,
PRCTR TYPE BSEG-PRCTR,
END OF TY_DATOS.

DATA:e_layout TYPE lvc_s_layo,
t_fcat TYPE lvc_t_fcat,
fldtext TYPE char50.

DATA: T_DATOS TYPE STANDARD TABLE OF TY_DATOS,
T_BKPF TYPE STANDARD TABLE OF TY_BKPF,
T_BSEG TYPE STANDARD TABLE OF TY_BSEG.

DATA: WA_BKPF TYPE TY_BKPF,
WA_BSEG TYPE TY_BSEG,
WA_DATOS TYPE TY_DATOS.

" FILTROS DE BUSQUEDA DE CAMPOS
SELECT-OPTIONS:
S_BELNR FOR BKPF-BELNR,
S_BLDAT FOR BKPF-BLDAT,
S_GJAHR FOR BKPF-GJAHR,
S_BUDAT FOR BKPF-BUDAT,
S_XBLNR FOR BKPF-XBLNR,
S_BLART FOR BKPF-BLART.
PARAMETERS:
P_BUKRS LIKE BKPF-BUKRS OBLIGATORY.
*&--------------------------------------------------------------------*
START-OF-SELECTION."Ejecuta sub-rutinas
PERFORM PIDE_DATOS. "Sub-rutina paso 1
PERFORM REPORTE_ALV."Sub-rutina paso 2
*&--------------------------------------------------------------------*
FORM PIDE_DATOS.
SELECT BUKRS BELNR GJAHR BLDAT BUDAT XBLNR BKTXT BLART
FROM BKPF INTO TABLE T_BKPF
WHERE BUKRS EQ P_BUKRS
AND BELNR IN S_BELNR
AND GJAHR IN S_GJAHR.

IF T_BKPF[] IS NOT INITIAL.
SELECT BUKRS BELNR GJAHR SGTXT PRCTR
FROM BSEG INTO TABLE T_BSEG
FOR ALL ENTRIES IN T_BKPF
WHERE BUKRS EQ T_BKPF-BUKRS
AND BELNR EQ T_BKPF-BELNR
AND GJAHR EQ T_BKPF-GJAHR.
ENDIF.

LOOP AT T_BKPF INTO WA_BKPF.
** Movés los campos de wa_bkpf a wa_datos.
LOOP AT T_BSEG INTO WA_BSEG
WHERE BUKRS EQ WA_BKPF-BUKRS
AND BELNR EQ WA_BKPF-BELNR
AND GJAHR EQ WA_BKPF-GJAHR.
** Movés los campos de wa_bseg a wa_datos.
ENDLOOP.
ENDLOOP.

APPEND WA_DATOS TO T_DATOS.
CLEAR WA_DATOS.
ENDFORM.
*&--------------------------------------------------------------------*
*REPORTE_ALV.- "SUBRUTINA" (SI AHI DATOS EMPIEZA)SI HAY DATOS,CARGA LOS DATOS Y EL CATALOGO.
*SI NO(NO PRESENTA DATOS)
*&--------------------------------------------------------------------*
FORM REPORTE_ALV.
CHECK NOT T_DATOS[] IS INITIAL." REVISA SI REALMENTE AHI DATOS EN (TAB.INT.) T_DATOS
PERFORM catalogo_fcat.
e_layout-zebra = 'X'.
e_layout-sel_mode = 'D'.
e_layout-no_rowmove = 'X'.
e_layout-col_opt = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' "LLAMADO DE FUNCION ALV.
EXPORTING
i_callback_program = sy-repid
i_callback_html_top_of_page = 'MY_HTML_TOP_PAGE'
is_layout_lvc = e_layout
it_fieldcat_lvc = t_fcat
TABLES
t_outtab = T_DATOS
EXCEPTIONS
program_error = 1.

IF SY-TCODE ='ZCONSULTA_DOCFI'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
* CATALOGO.- COLOCA LAS CABECERAS DEL ALV
*&---------------------------------------------------------------------*
FORM catalogo_fcat.
PERFORM agrega_campos USING:
'BUKRS' 'BUKRS' 'BKPF' space space,
'BELNR' 'BELNR' 'BKPF' space space,
'GJAHR' 'GJAHR' 'BKPF' space space,
'BLDAT' 'BLDAT' 'BKPF' space space,
'BUDAT' 'BUDAT' 'BKPF' space space,
'XBLNR' 'XBLNR' 'BKPF' space space,
'BKTXT' 'BKTXT' 'BKPF' space space,
'BLART' 'BLART' 'BKPF' space space,
'SGTXT' 'SGTXT' 'BSEG' space space,
'PRCTR' 'PRCTR' 'BSEG' space space.
ENDFORM. " CATALOGO_FCAT
*&---------------------------------------------------------------------*
* AGREGA CAMPOS
*&---------------------------------------------------------------------*
FORM agrega_campos USING
value(p1) value(p2) value(p3) value(p4) value(p5).
DATA l_fcat TYPE lvc_s_fcat.
l_fcat-fieldname = p1.
l_fcat-ref_field = p2.
l_fcat-ref_table = p3.
l_fcat-coltext = p4.
l_fcat-inttype = p5.
l_fcat-col_opt = 'X'.
IF p5 NE space.
l_fcat-intlen = 20.
l_fcat-decimals = 2.
l_fcat-decimals_o = 2.
ENDIF.
APPEND l_fcat TO t_fcat.
ENDFORM. " finliza agrega_campos
*&---------------------------------------------------------------------*
*&Form MY_USER_COMMAND
*&---------------------------------------------------------------------*
FORM my_user_command USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN 'REGR' OR 'SALI'.
p_selfield-exit = abap_true.
ENDCASE.

ENDFORM. " MY_USER_COMMAND
*-----------------------------------------------------------------------*
__________________
tenchy
Responder Con Cita
  #4  
Viejo 28/05/14, 18:21:40
Ripper87 Ripper87 is offline
Member
 
Fecha de Ingreso: dic 2011
Mensajes: 37
Puedes hacer todo en un solo INNER JOIN:


Por razones de rendimiento, no deberias hacer un SELECT dentro de un LOOP, imaginate que tengas 1000 registros en el LOOP vas a realizar 1000 consultas a la base de datos, cuando puedes hacer una sola consulta que te traiga toda la data.

Úlima edición por Ripper87 fecha: 28/05/14 a las 18:24:30.
Responder Con Cita
  #5  
Viejo 28/05/14, 18:56:13
aaron alfonso aaron alfonso is offline
Junior Member
 
Fecha de Ingreso: may 2014
Localización: culiacan mexico
Mensajes: 27
Ripper

me parece buena tu observación ripper pero el problema es la tabla bseg


*Para tablas pool, tablas cluster y vistas de supresión no se permite JOIN:BSEG
__________________
tenchy
Responder Con Cita
  #6  
Viejo 28/05/14, 19:20:57
Ripper87 Ripper87 is offline
Member
 
Fecha de Ingreso: dic 2011
Mensajes: 37
Tienes razón, se me olvidó...

Entonces hay que hacerlo como te lo colocó el amigo más arriba, solo te faltaría hacer el APPEND a la tabla, y yo agregaría el campo BUZEI a las consultas y condiciones, ya que es un campo clave que identifica la posición del documento, si un documento tiene varias posiciones y no verificas ese campo puedes estar mezclando datos de posiciones diferentes y traerte data erronea.

Responder Con Cita
  #7  
Viejo 02/06/14, 23:32:23
aaron alfonso aaron alfonso is offline
Junior Member
 
Fecha de Ingreso: may 2014
Localización: culiacan mexico
Mensajes: 27
Modificando Aun


EL UNICO DETALLE QUE ASI COMO LO TIENES NO TRAE NADA PERO SI LO MODIFICO SOLO UN POCO ME TRAE SOLO 1 REGISTRO SE SUPONE QUE TRAIGA MUCHOS REGISTROS. TODOS LOS QUE EXISTA EN UN AÑO, O DEL TIPO ZC O DE CIERTO CENTRO :


SELECT BUKRS BELNR GJAHR BLDAT BUDAT XBLNR BKTXT BLART
FROM BKPF INTO TABLE T_BKPF
WHERE
BUKRS EQ P_BUKRS
AND BELNR IN S_BELNR
AND GJAHR IN S_GJAHR
AND BLART IN S_BLART.

IF T_BKPF[] IS NOT INITIAL.

SELECT BUKRS BELNR GJAHR SGTXT PRCTR
FROM BSEG INTO TABLE T_BSEG
FOR ALL ENTRIES IN T_BKPF
WHERE
BUKRS EQ T_BKPF-BUKRS
AND BELNR EQ T_BKPF-BELNR
AND GJAHR EQ T_BKPF-GJAHR.
ENDIF.

LOOP AT T_BKPF INTO WA_BKPF.
WA_DATOS-BUKRS = WA_BKPF-BUKRS.
WA_DATOS-BELNR = WA_BKPF-BELNR.
WA_DATOS-GJAHR = WA_BKPF-GJAHR.
WA_DATOS-XBLNR = WA_BKPF-XBLNR.
WA_DATOS-BKTXT = WA_BKPF-BKTXT.
WA_DATOS-BLART = WA_BKPF-BLART.
WA_DATOS-BUDAT = WA_BKPF-BUDAT.
WA_DATOS-BLDAT = WA_BKPF-BLDAT.
WA_DATOS-SGTXT = WA_BSEG-SGTXT.
WA_DATOS-PRCTR = WA_BSEG-PRCTR.

ENDLOOP.

IF SY-SUBRC EQ 0.
WA_DATOS-SGTXT = WA_BSEG-SGTXT.
WA_DATOS-PRCTR = WA_BSEG-PRCTR.
ENDIF.

READ TABLE T_BKPF INTO WA_BKPF
WITH KEY
BUKRS = WA_BKPF-BUKRS
BELNR = WA_BKPF-BELNR
GJAHR = WA_BKPF-GJAHR.

APPEND WA_DATOS TO T_DATOS.
CLEAR WA_DATOS.
__________________
tenchy
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 16:46:36.


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