Sei sulla pagina 1di 4

*&---------------------------------------------------------------------*

*& Report Z_THOR


*
*& CRIADO POR: ELIEL SILVA - MM/ABAP
*
*&---------------------------------------------------------------------*
* Simbolos de texto
* 001 Parametros para a marretagem
*&---------------------------------------------------------------------*
* Textos de seleo
* P_FIELD
Nome do campo
* P_KEY01
Campo chave 1
* P_KEY02
Campo chave 2
* P_KEY03
Campo chave 3
* P_KEY04
Campo chave 4
* P_TABLE
Nome da tabela
* P_TEST
Modo Teste
* P_VAL01
Valor 01
* P_VAL02
Valor 02
* P_VAL03
Valor 03
* P_VAL04
Valor 04
* P_VALOR
Marretar com valor
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Report Z_THOR
*
*& CRIADO POR: ELIEL SILVA - MM/ABAP
*
*&---------------------------------------------------------------------*
REPORT z_thor NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES: dd02l.
DATA: v_where(100),
v_where2(100),
v_where3(100),
v_where4(100),
v_set(100),
v_erro(1),
v_count TYPE i.
DATA: dref TYPE REF TO data.
FIELD-SYMBOLS: <fs> TYPE ANY.
FIELD-SYMBOLS: <fx> TYPE ANY.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF
PARAMETERS:
p_table
PARAMETERS:
p_field
PARAMETERS:
p_valor

BLOCK bloc1 WITH FRAME TITLE text-001.


TYPE dd03vt-tabname OBLIGATORY.
TYPE dd03vt-fieldname OBLIGATORY.
TYPE dd03vt-fieldname OBLIGATORY.

SELECTION-SCREEN SKIP 1.
PARAMETERS:
p_key01
PARAMETERS:
p_val01(50)
PARAMETERS:
p_key02
PARAMETERS:
p_val02(50)
PARAMETERS:
p_key03
PARAMETERS:
p_val03(50)
PARAMETERS:
p_key04
PARAMETERS:
p_val04(50)

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

dd03vt-fieldname OBLIGATORY.
c OBLIGATORY.
dd03vt-fieldname.
c.
dd03vt-fieldname.
c.
dd03vt-fieldname.
c.

SELECTION-SCREEN SKIP 1.
PARAMETERS:
p_test(1) TYPE c DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK bloc1.


********************************************************************
AT SELECTION-SCREEN.
SELECT SINGLE *
FROM dd02l
INTO dd02l
WHERE tabname = p_table.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'TABELA ' p_table ' NO EXISTE!'.
ELSE.
CREATE DATA dref TYPE (p_table).
ASSIGN dref->* TO <fs>.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'TABELA ' p_table ' NO EXISTE!'.
ENDIF.
ASSIGN COMPONENT p_field OF STRUCTURE <fs> TO <fx>.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'Campo ' p_field ' NO EXISTE!'.
ENDIF.
ASSIGN COMPONENT p_key01 OF STRUCTURE <fs> TO <fx>.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'Campo chave 1 ' p_key01 ' NO EXISTE!'.
ENDIF.
IF NOT p_key02 IS INITIAL.
ASSIGN COMPONENT p_key02 OF STRUCTURE <fs> TO <fx>.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'Campo chave 2 ' p_key02 ' NO EXISTE!'.
ENDIF.
ENDIF.
IF NOT p_key03 IS INITIAL.
ASSIGN COMPONENT p_key03 OF STRUCTURE <fs> TO <fx>.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'Campo chave 3 ' p_key03 ' NO EXISTE!'.
ENDIF.
ENDIF.
IF NOT p_key04 IS INITIAL.
ASSIGN COMPONENT p_key04 OF STRUCTURE <fs> TO <fx>.
IF sy-subrc NE 0.
MESSAGE e000(zmsg) WITH 'Campo chave 4 ' p_key03 ' NO EXISTE!'.
ENDIF.
ENDIF.
IF p_val01 NE space AND p_key01 EQ space.
MESSAGE e000(zmsg) WITH 'Preencher o Campo Chave 01.'.
ENDIF.
IF p_val02 NE space AND p_key02 EQ space.
MESSAGE e000(zmsg) WITH 'Preencher o Campo Chave 02.'.
ENDIF.

IF p_val03 NE space AND p_key03 EQ space.


MESSAGE e000(zmsg) WITH 'Preencher o Campo Chave 03.'.
ENDIF.
IF p_val04 NE space AND p_key04 EQ space.
MESSAGE e000(zmsg) WITH 'Preencher o Campo Chave 04.'.
ENDIF.
ENDIF.
********************************************************************
START-OF-SELECTION.
CONCATENATE p_field ' = ' ' ''' p_valor '''' INTO v_set.
CONCATENATE p_key01 ' = ' ' ''' p_val01 '''' INTO v_where.
IF p_key02 NE space.
CONCATENATE p_key02 ' = ' ' ''' p_val02 '''' INTO v_where2.
ENDIF.
IF p_key03 NE space.
CONCATENATE p_key03 ' = ' ' ''' p_val03 '''' INTO v_where3.
ENDIF.
IF p_key04 NE space.
CONCATENATE p_key04 ' = ' ' ''' p_val04 '''' INTO v_where4.
ENDIF.
ASSIGN COMPONENT p_field OF STRUCTURE <fs> TO <fx>.
SELECT (p_field)
FROM (p_table)
INTO <fx>
WHERE (v_where)
AND (v_where2)
AND (v_where3)
AND (v_where4).
IF sy-subrc = 0.
ADD 1 TO v_count.
ENDIF.
ENDSELECT.
IF p_test EQ space.
IF v_count GT 0.
UPDATE (p_table) SET (v_set)
WHERE (v_where)
AND (v_where2)
AND (v_where3)
AND (v_where4).
IF sy-subrc = 0.
WRITE: / 'MARRETA EFETUADA COM SUCESSO NA TABELA:', p_table.
WRITE: / 'Foram encontrados ', v_count, ' registro(s).'.
ELSE.
WRITE: / 'Houve um erro durante o Update.'.
ENDIF.
ELSE.

WRITE: / 'NAO FORAM ENCONTRADOS DADOS NA TABELA:', p_table.


ENDIF.
ELSE. "p_test EQ space.
IF v_count
WRITE: /
WRITE: /
WRITE: /
ELSE.
WRITE: /
WRITE: /
WRITE: /
ENDIF.

GT 0.
'TESTE EFETUADO COM SUCESSO PARA A TABELA:', p_table.
'CAMPOS ENTRADOS SO CONSISTENTES.'.
'Foram encontrados ', v_count, ' registro(s).'.
'TESTE EFETUADO COM SUCESSO PARA A TABELA:', p_table.
'CAMPOS ENTRADOS SO CONSISTENTES.'.
'Mas no foram encontrados registros.'.

ENDIF.
END-OF-SELECTION.

Potrebbero piacerti anche