Acción al instante al dar Click en RadioButton
TABLES: sscrfields.
DATA: gv_ucomm TYPE sy-ucomm.
PARAMETERS p_p RADIOBUTTON GROUP bg USER-COMMAND ok_GO.
PARAMETERS p_1 RADIOBUTTON GROUP bg.
PARAMETERS p_2 RADIOBUTTON GROUP bg.
AT SELECTION-SCREEN OUTPUT.
CASE gv_ucomm.
WHEN 'ok_GO'.
IF p_2 = 'X'.
SUBMIT z_report VIA SELECTION-SCREEN AND RETURN.
LEAVE TO TRANSACTION sy-tcode.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN.
gv_ucomm = sscrfields-ucomm.
lunes, 1 de diciembre de 2014
CHECKBOX Acciones
Acción al instante, al dar click en Checkbox 4 inhabilita el 1, 2 y 3.
TABLES: sscrfields.
AT SELECTION-SCREEN OUTPUT.
CASE gv_ucomm.
WHEN 'CH_1' OR 'CH_2' OR 'CH_3'.
anulados = ''.
WHEN 'CH_4'.
liberado = ''.
rechazad = ''.
espera = ''.
ENDCASE.
CASE gv_ucomm.
WHEN 'CH_1' OR 'CH_2' OR 'CH_3'.
anulados = ''.
WHEN 'CH_4'.
liberado = ''.
rechazad = ''.
espera = ''.
ENDCASE.
gv_ucomm = sscrfields-ucomm.
PARAMETERS p_1 AS CHECKBOX DEFAULT 'X' USER-COMMAND ch_1.
PARAMETERS p_2 AS CHECKBOX DEFAULT 'X' USER-COMMAND ch_2.
PARAMETERS p_3 AS CHECKBOX DEFAULT 'X' USER-COMMAND ch_3.
PARAMETERS p_4 AS CHECKBOX DEFAULT '' USER-COMMAND ch_4.
PARAMETERS p_2 AS CHECKBOX DEFAULT 'X' USER-COMMAND ch_2.
PARAMETERS p_3 AS CHECKBOX DEFAULT 'X' USER-COMMAND ch_3.
PARAMETERS p_4 AS CHECKBOX DEFAULT '' USER-COMMAND ch_4.
Performance Tablas internas
TRATAMIENTO DE DATOS CON TABLAS INTERNAS USANDO WORK-AREA Y FIELD-SYMBOLS.
USO DEL 'RH_DYNAMIC_WHERE_BUILD'
LOOP AT <fs> ASSIGNING <ls>. 0.70300
LOOP AT it ASSIGNING wa. 0.57800
LOOP AT it ASSIGNING <fs>. 0.50000 Mejor uso.
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: TYPE STANDARD TABLE,
TYPE bkpf.
FIELD-SYMBOLS: TYPE STANDARD TABLE,
TYPE bseg,
TYPE tybseg .
FIELD-SYMBOLS: TYPE STANDARD TABLE.
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 TYPE bkpf.
FIELD-SYMBOLS TYPE bseg.
FIELD-SYMBOLS TYPE tybseg.
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
WHERE gjahr = '2014'.
SELECT * FROM bseg
INTO TABLE
FOR ALL ENTRIES IN
WHERE ('BUKRS = -BUKRS' )
AND ('BELNR =-BELNR' )
AND ('GJAHR =-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 ASSIGNING .
REFRESH: r_where,cond_where.
PERFORM add_where USING 'BELNR' 'EQ' -belnr ''.
LOOP AT ASSIGNING WHERE (cond_where).
MOVE-CORRESPONDING TO .
READ TABLE WITH KEY ('BELNR') = -belnr TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND TO .
ENDIF.
CLEAR: , .
ENDLOOP.
REFRESH: r_where,cond_where.
PERFORM add_where USING 'BELNR' 'EQ' -belnr ''.
PERFORM add_where USING 'BUZEI' 'EQ' '002' ''.
DELETE WHERE (cond_where).
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 a Work Area ' .
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 WHERE belnr = -belnr.
MOVE-CORRESPONDING TO .
READ TABLE it WITH KEY belnr = -belnr TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
APPEND TO out2.
ENDIF.
CLEAR: , .
ENDLOOP.
DELETE out2 WHERE belnr EQ -belnr AND buzei EQ '002'.
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
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
Suscribirse a:
Entradas (Atom)