#1
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|