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




 
 
 
Herramientas Buscar en Tema Desplegado
Prev Mensaje Previo   Próximo Mensaje Próx
  #1  
Viejo 22/07/10, 15:02:39
Yessica Suarez Yessica Suarez is offline
Junior Member
 
Fecha de Ingreso: jun 2010
Mensajes: 1
Red face optimizar mi programa

Tengo estas dos rutinas me gustaria mejorarlas ya que duran ucho en la ejecucion, me podrian ayudar?



FORM buscar_datos.

SELECT banfn bnfpo sakto kostl lstar
INTO CORRESPONDING FIELDS OF TABLE t_ebkn FROM ebkn
WHERE kostl IN p_ceco.

SORT t_ebkn.
DESCRIBE TABLE t_ebkn LINES v_cont.
CHECK v_cont NE 0. CLEAR v_cont.

SELECT banfn bnfpo loekz txz01 menge badat lfdat preis ebeln ebelp
bedat waers
INTO CORRESPONDING FIELDS OF TABLE t_eban FROM eban
FOR ALL ENTRIES IN t_ebkn
WHERE banfn = t_ebkn-banfn AND
bnfpo = t_ebkn-bnfpo AND
BADAT IN p_fech.
* lfdat IN p_fech.

*
SORT t_eban.
DESCRIBE TABLE t_eban LINES v_cont.
CHECK v_cont NE 0. CLEAR v_cont.
*
SORT t_ebkn BY banfn bnfpo.
LOOP AT t_ebkn.
CLEAR t_eban.
READ TABLE t_eban WITH KEY banfn = t_ebkn-banfn
bnfpo = t_ebkn-bnfpo.
IF sy-subrc EQ 0.
PERFORM blanquea.
IF NOT t_eban-ebeln IS INITIAL.
PERFORM buscar_pedido.
IF w_ent EQ 0.
PERFORM validar_partidas.
ENDIF.
ELSE.
PERFORM validar_partidas.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " BUSCAR_DATOS






FORM buscar_pedido.


SELECT * FROM eket WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp AND
banfn = t_eban-banfn AND
bnfpo = t_eban-bnfpo.
MOVE eket-eindt TO w_eindt.
EXIT.
ENDSELECT.

SELECT SINGLE * FROM ekpo WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp.
IF sy-subrc EQ 0.
MOVE ekpo-ebeln TO w_ebeln.
MOVE ekpo-ebelp TO w_ebelp.
MOVE ekpo-txz01 TO w_txz01.
MOVE ekpo-netwr TO w_netwr.
MOVE ekpo-loekz TO w_loekz.
SELECT SINGLE * FROM ekko WHERE ebeln = ekpo-ebeln.
IF sy-subrc EQ 0.
MOVE ekko-waers TO w_waers.
SELECT SINGLE * FROM lfa1 WHERE lifnr = ekko-lifnr.
IF sy-subrc EQ 0.
MOVE ekko-lifnr TO w_lifnr.
MOVE lfa1-name1 TO w_name1.
ENDIF.
ENDIF.
ENDIF.

SELECT * FROM ekkn WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp.
MOVE ekkn-loekz TO w_loekz1.
IF t_eban-ebeln+0(2) EQ '51'.
MOVE t_eban-bedat TO w_aedat.
ELSE.
MOVE ekkn-aedat TO w_aedat.
ENDIF.
EXIT.
ENDSELECT.

REFRESH: t_ekbe,
t_ekbe1,
t_ekbe2,
t_ekbe3.

CLEAR: t_ekbe,
t_ekbe1,
t_ekbe2,
t_ekbe3.

SELECT ebeln ebelp vgabe gjahr belnr buzei bwart
budat wrbtr waers lfbnr
INTO CORRESPONDING FIELDS OF TABLE t_ekbe2 FROM ekbe
WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp AND
vgabe = '1' AND
bwart = '101' AND
wrbtr <> 0.

SELECT ebeln ebelp vgabe gjahr belnr buzei bwart
budat wrbtr waers lfbnr
INTO CORRESPONDING FIELDS OF TABLE t_ekbe3 FROM ekbe
WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp AND
vgabe = '1' AND
bwart = '102' AND
wrbtr <> 0.
.
MOVE 1 TO w_index.
LOOP AT t_ekbe2.
READ TABLE t_ekbe3 INDEX w_index.
IF sy-subrc NE 0.
MOVE-CORRESPONDING t_ekbe2 TO t_ekbe.
APPEND t_ekbe.
ENDIF.
ADD 1 TO w_index.
ENDLOOP.

DESCRIBE TABLE t_ekbe LINES v_cont1.

SELECT ebeln ebelp vgabe gjahr belnr buzei bwart
budat wrbtr waers lfbnr
INTO CORRESPONDING FIELDS OF TABLE t_ekbe1 FROM ekbe
WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp AND
( vgabe = '2' OR
vgabe = 'P' ).

DESCRIBE TABLE t_ekbe1 LINES v_cont2.

LOOP AT t_ekbe1.
SELECT SINGLE * FROM rbkp WHERE gjahr = t_ekbe1-gjahr AND
belnr = t_ekbe1-belnr.
IF sy-subrc EQ 0.
IF rbkp-stblg NE space.
DELETE t_ekbe1.
ENDIF.
ENDIF.
ENDLOOP.

SORT t_ekbe BY lfbnr.
MOVE 1 TO w_index.
LOOP AT t_ekbe.
MOVE space TO w_belnr.
MOVE 0 TO w_wrbtr1.
MOVE 0 TO w_dif.
LOOP AT t_ekbe1 WHERE lfbnr = t_ekbe-lfbnr.
IF t_ekbe-wrbtr GT t_ekbe1-wrbtr.
w_dif = t_ekbe-wrbtr - t_ekbe1-wrbtr.
ELSE.
IF t_ekbe-wrbtr LT t_ekbe1-wrbtr.
w_dif = t_ekbe1-wrbtr - t_ekbe-wrbtr.
ELSE.
w_dif = t_ekbe1-wrbtr - t_ekbe-wrbtr.
ENDIF.
ENDIF.
IF w_dif GE 0 AND
w_dif LE 1.
MOVE t_ekbe1-belnr TO w_belnr.
MOVE t_ekbe1-wrbtr TO w_wrbtr1.
PERFORM buscar_doccont.
EXIT.
ENDIF.
ENDLOOP.
** MOVE t_ekbe-lfbnr TO w_lfbnr.
MOVE t_ekbe-belnr TO w_belnr1.
MOVE t_ekbe-budat TO w_budat.
MOVE t_ekbe-waers TO w_waers1.
MOVE t_ekbe-wrbtr TO w_wrbtr.
MOVE 1 TO w_ent.
PERFORM validar_partidas.
ADD 1 TO w_index.
ENDLOOP.
IF v_cont1 EQ 0 AND v_cont2 NE 0.
LOOP AT t_ekbe1.
MOVE t_ekbe1-belnr TO w_belnr.
MOVE t_ekbe1-wrbtr TO w_wrbtr1.
PERFORM buscar_doccont.
MOVE 1 TO w_ent.
PERFORM validar_partidas.
ENDLOOP.
ENDIF.

ENDFORM. " buscar_pedido
Responder Con Cita
 


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:33:46.


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