USO DEL 'RH_DYNAMIC_WHERE_BUILD'
LOOP AT <fs>
LOOP AT it ASSIGNING wa. 0.57800
LOOP AT it ASSIGNING <fs>
DATA: lv_flag TYPE flag,
lv_sta_time TYPE timestampl,
lv_end_time TYPE timestampl,
lv_diff_w TYPE p DECIMALS 5.
TYPES: BEGIN OF tybseg,
belnr TYPE belnr_d,
augdt TYPE augdt,
bukrs TYPE bukrs,
buzei TYPE buzei,
END OF tybseg.
*********************IT <>
FIELD-SYMBOLS:
FIELD-SYMBOLS:
FIELD-SYMBOLS:
DATA: it_tab TYPE REF TO data.
DATA: it_pos TYPE REF TO data.
DATA: it_out TYPE REF TO data.
DATA: it_out2 TYPE REF TO data.
DATA : r_where TYPE STANDARD TABLE OF hrcond,
s_where LIKE hrcond.
TYPES: BEGIN OF ty_s_clause,
line TYPE char72.
TYPES: END OF ty_s_clause.
DATA cond_where TYPE STANDARD TABLE OF ty_s_clause WITH DEFAULT KEY.
CREATE DATA it_tab TYPE STANDARD TABLE OF bkpf.
ASSIGN it_tab->* TO
CREATE DATA it_pos TYPE STANDARD TABLE OF bseg.
ASSIGN it_pos->* TO
CREATE DATA it_out TYPE TABLE OF tybseg.
ASSIGN it_out->* TO
CREATE DATA it_out TYPE tybseg.
ASSIGN it_out->* TO
*********************IT <>
*********************WORK AREA normal
DATA it TYPE TABLE OF bkpf.
DATA wa LIKE LINE OF it.
DATA pos TYPE TABLE OF bseg.
DATA wapos LIKE LINE OF pos.
DATA wapos2 TYPE tybseg.
DATA out TYPE TABLE OF tybseg.
*********************WORK AREA normal
*********************WORK AREA FIELD-SYMBOLS
FIELD-SYMBOLS
FIELD-SYMBOLS
FIELD-SYMBOLS
DATA out2 TYPE TABLE OF tybseg.
CREATE DATA it_out2 TYPE tybseg.
ASSIGN it_out2->* TO
*********************WORK AREA FIELD-SYMBOLS
SELECT * FROM bkpf INTO TABLE
SELECT * FROM bseg
INTO TABLE
AND ('BELNR =
AND ('GJAHR =
SELECT * FROM bkpf INTO TABLE
it WHERE gjahr = '2014'.
SELECT * FROM bseg
INTO TABLE pos
FOR ALL ENTRIES IN it
WHERE belnr = it-belnr AND bukrs = it-bukrs
AND gjahr = it-gjahr.
*Inicia tiempo de tratamiento tabla
GET TIME STAMP FIELD lv_sta_time.
LOOP AT
REFRESH: r_where,cond_where.
PERFORM add_where USING 'BELNR' 'EQ'
LOOP AT
MOVE-CORRESPONDING
READ TABLE
IF sy-subrc = 0.
APPEND
ENDIF.
CLEAR:
ENDLOOP.
REFRESH: r_where,cond_where.
PERFORM add_where USING 'BELNR' 'EQ'
PERFORM add_where USING 'BUZEI' 'EQ' '002' ''.
DELETE
CLEAR:
ENDLOOP.
*Finaliza tiempo de tratamiento tabla
GET TIME STAMP FIELD lv_end_time.
lv_diff_w = lv_end_time - lv_sta_time.
WRITE: / 'De una tabla
WRITE: / lv_diff_w.
WRITE: / .
CLEAR: lv_diff_w, lv_end_time, lv_sta_time.
*Inicia tiempo de tratamiento tabla normal
GET TIME STAMP FIELD lv_sta_time.
LOOP AT it INTO wa.
LOOP AT pos INTO wapos WHERE belnr = wa-belnr.
MOVE-CORRESPONDING wapos TO wapos2.
READ TABLE it WITH KEY belnr = wapos2-belnr TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND wapos2 TO out.
ENDIF.
CLEAR: wapos, wapos2.
ENDLOOP.
DELETE out WHERE belnr EQ wa-belnr AND buzei EQ '002'.
CLEAR: wa ,wapos2.
ENDLOOP.
*Inicia tiempo de tratamiento tabla normal
GET TIME STAMP FIELD lv_end_time.
lv_diff_w = lv_end_time - lv_sta_time.
WRITE: / 'De una tabla normal a Work Area normal'.
WRITE: / lv_diff_w.
WRITE: / .
CLEAR: lv_diff_w, lv_end_time, lv_sta_time.
*Inicia tiempo de tratamiento tabla normal con work area
GET TIME STAMP FIELD lv_sta_time.
LOOP AT it ASSIGNING
LOOP AT pos ASSIGNING
MOVE-CORRESPONDING
READ TABLE it WITH KEY belnr =
IF sy-subrc = 0.
APPEND
ENDIF.
CLEAR:
ENDLOOP.
DELETE out2 WHERE belnr EQ
CLEAR:
ENDLOOP.
*Finaliza tiempo de tratamiento tabla normal con work area
GET TIME STAMP FIELD lv_end_time.
lv_diff_w = lv_end_time - lv_sta_time.
WRITE: / 'De una tabla normal a un Work Area
WRITE: / lv_diff_w.
WRITE: / .
*&---------------------------------------------------------------------*
*& Form ADD_WHERE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELD text
* -->P_OPERA text
* -->P_LOW text
* -->P_HIGH text
*----------------------------------------------------------------------*
FORM add_where USING p_field
p_opera
p_low
p_high.
CLEAR : s_where.
s_where-field = p_field.
s_where-opera = p_opera.
s_where-low = p_low.
s_where-high = p_high.
APPEND s_where TO r_where.
CALL FUNCTION 'RH_DYNAMIC_WHERE_BUILD'
EXPORTING
dbtable = space " can be empty
TABLES
condtab = r_where
where_clause = cond_where
EXCEPTIONS
empty_condtab = 01
no_db_field = 02
unknown_db = 03
wrong_condition = 04.
ENDFORM. " ADD_WHERE
No hay comentarios:
Publicar un comentario