*&---------------------------------------------------------------------*
*& Report ZCPRUEBA_DSIERRA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zcprueba_dsierra.
* -------------------------------------------------------------------- *
* Tables *
* -------------------------------------------------------------------- *
tables: equi,
egerh.
* -------------------------------------------------------------------- *
* Types *
* -------------------------------------------------------------------- *
TYPES: BEGIN OF type_equi,
equnr TYPE equi-equnr,
matnr TYPE equi-matnr,
herst TYPE equi-herst,
typbz TYPE equi-typbz,
objnr TYPE equi-objnr,
werk TYPE equi-werk,
sernr TYPE equi-sernr,
lager TYPE equi-lager,
charge TYPE equi-charge,
END OF type_equi.
TYPES: BEGIN OF type_egerh,
equnr TYPE egerh-equnr,
END OF type_egerh.
* -------------------------------------------------------------------- *
* Internal Tables *
* -------------------------------------------------------------------- *
DATA: ti_equi TYPE STANDARD TABLE OF type_equi.
DATA: ti_egerh TYPE STANDARD TABLE OF type_egerh.
* -------------------------------------------------------------------- *
* FIELD-SYMBOLS *
* -------------------------------------------------------------------- *
FIELD-SYMBOLS:
FIELD-SYMBOLS:
* -------------------------------------------------------------------- *
* SELECT-OPTIONS and PARAMETERS *
* -------------------------------------------------------------------- *
selection-screen begin of block b1 with frame title text-001.
SELECT-OPTIONS: sc_matnr FOR equi-matnr. "Stuff
SELECT-OPTIONS: sc_sern FOR equi-sernr. "No. of series
SELECT-OPTIONS: sc_werk FOR equi-werk. "Centre
SELECT-OPTIONS: sc_lager FOR equi-lager. "Filing
SELECT-OPTIONS: sc_char FOR equi-charge. "Lot of Inventories
SELECT-OPTIONS: sd_datum FOR sy-datum OBLIGATORY DEFAULT sy-datum. "Period
SELECTION-SCREEN END OF BLOCK b1.
REFRESH ti_equi. "Limpieza de tabla
REFRESH ti_egerh. "Limpieza de tabla
*--Equipamento dados mestres
SELECT equnr
matnr
herst
typbz
objnr
sernr
werk
lager
charge
FROM equi
INTO TABLE ti_equi
WHERE matnr IN sc_matnr
AND sernr IN sc_sern
AND werk IN sc_werk
AND lager IN sc_lager
AND charge IN sc_char
AND erdat IN sd_datum.
IF NOT ti_equi[] IS INITIAL.
SORT ti_equi
BY equnr.
*Delete Duplicates
DELETE ADJACENT DUPLICATES FROM ti_equi.
SELECT equnr
FROM egerh
INTO TABLE ti_egerh
FOR ALL ENTRIES IN ti_equi
WHERE equnr = ti_equi-equnr
AND bis = '9999'
AND ( ( kombinat = 'Z' )
OR ( kombinat = 'W' )
OR ( kombinat = 'S' ) ).
IF sy-subrc EQ 0.
SORT ti_egerh "Necesario ordenar la tabla para hacer read con binary search
BY equnr.
ENDIF.
LOOP AT ti_equi
ASSIGNING
READ TABLE ti_egerh
ASSIGNING
WITH KEY
equnr =
BINARY SEARCH. "Lectura binaria
IF sy-subrc EQ 0.
*proceso o guardo algo.
ENDIF.
ENDLOOP.
ENDIF.
No hay comentarios:
Publicar un comentario