Avalados por :
*&---------------------------------------------------------------------*
*& Programa criado por Jaqueline Cristine Rosa de Souza (estagiária) para estudo
*& 25/01/2024
*&---------------------------------------------------------------------*
REPORT z_ponto_menu_jq.
TABLES sscrfields.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001. "Começo do bloco.
SELECTION-SCREEN SKIP 1. "Pula uma linha.
SELECTION-SCREEN BEGIN OF LINE. "Seleciona uma linha do bloco.
SELECTION-SCREEN: POSITION 10, PUSHBUTTON (66) but01 USER-COMMAND but01. "Posição e tamanho.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN: POSITION 10, PUSHBUTTON (66) but02 USER-COMMAND but02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN: POSITION 10, PUSHBUTTON (66) but03 USER-COMMAND but03.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN : END OF BLOCK b1. "Fim do bloco.
*INITIALIZATION - Esse comando força a execução de processos antes mesmo de
*mostrar a tela de seleção, funciona como o PBO de um Module Pool.
INITIALIZATION. "É executado antes de mostrar a tela
PERFORM f_valida. "Modularização de código.
AT SELECTION-SCREEN.
PERFORM f_executa.
FORM f_valida.
LOOP AT SCREEN.
CASE screen-name.
WHEN 'BUT01'.
but01 = 'Cadastrar Estagiário'.
WHEN 'BUT02'.
but02 = 'Registrar Ponto'.
WHEN 'BUT03'.
but03 = 'Consultar Registro de Ponto'.
ENDCASE.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_EXECUTA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_executa .
IF sscrfields-ucomm EQ 'BUT01'.
SUBMIT ('Z_PONTO_CAD_JQ') VIA SELECTION-SCREEN AND RETURN.
ENDIF.
IF sscrfields-ucomm EQ 'BUT02'.
SUBMIT ('Z_PONTO_REGISTRO_JQ') VIA SELECTION-SCREEN AND RETURN.
ENDIF.
IF sscrfields-ucomm EQ 'BUT03'.
SUBMIT ('Z_PONTO_CONSULTA_JAQ ') VIA SELECTION-SCREEN AND RETURN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Programa criado por Jaqueline Cristine Rosa de Souza (estagiária) para estudo
*& 25/01/2024
*&---------------------------------------------------------------------*
REPORT z_ponto_cad_jq.
TABLES zcad_est_jq.
DATA: lv_valida TYPE abap_bool,
it_zcad_est_jq TYPE TABLE OF zcad_est_jq.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_matr TYPE zed_matr_estag_jq OBLIGATORY.
PARAMETERS: p_nome TYPE zed_nome_estag_jq OBLIGATORY.
PARAMETERS: p_cpf TYPE zed_cpf_estag OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.
START-OF-SELECTION.
PERFORM f_valida_dados.
PERFORM f_grava_dados.
PERFORM f_exibe_mensagem.
*&---------------------------------------------------------------------*
*& Form F_VALIDA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_valida_dados.
IF p_matr IS INITIAL.
lv_valida = abap_true.
ENDIF.
IF p_nome IS INITIAL.
lv_valida = abap_true.
ENDIF.
IF p_cpf IS INITIAL.
lv_valida = abap_true.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_GRAVA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_grava_dados.
IF lv_valida <> abap_false.
lv_valida = abap_false.
ELSE.
APPEND INITIAL LINE TO it_zcad_est_jq ASSIGNING FIELD-SYMBOL(<fs_zcad_est_jq>).
<fs_zcad_est_jq>-matr_estag = p_matr.
<fs_zcad_est_jq>-nome_estag = p_nome.
<fs_zcad_est_jq>-cpf_estag = p_cpf.
IF lines( it_zcad_est_jq ) > 0.
MODIFY zcad_est_jq FROM TABLE it_zcad_est_jq.
ELSE.
lv_valida = abap_true.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_EXIBE_MENSAGEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_exibe_mensagem.
IF lv_valida = abap_true.
MESSAGE 'Nenhum dado foi gravado' TYPE 'E'.
ENDIF.
ENDFORM.
END-OF-SELECTION.
IF sy-subrc IS INITIAL.
COMMIT WORK.
WRITE 'Dados do estagiário salvo com sucesso'.
ENDIF.
*&---------------------------------------------------------------------*
*& Programa criado por Jaqueline Cristine Rosa de Souza (estagiária) para estudo
*& 25/01/2024
*&---------------------------------------------------------------------*
REPORT z_ponto_registro_jq.
TABLES zponto_est_jaq.
DATA: lv_matr,
lv_data,
lv_hora,
lv_tp_registro TYPE c LENGTH 1 VALUE 'X',
it_zponto_est_jaq TYPE TABLE OF zponto_est_jaq.
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_entrad RADIOBUTTON GROUP e.
SELECTION-SCREEN COMMENT (30) TEXT-002 FOR FIELD p_entrad.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_saida RADIOBUTTON GROUP e.
SELECTION-SCREEN COMMENT (30) TEXT-003 FOR FIELD p_saida.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
PERFORM f_valida USING 'menor_5_minutos'.
PERFORM f_grava_ponto.
*&---------------------------------------------------------------------*
*& Form F_VALIDA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0069 text
*----------------------------------------------------------------------*
FORM f_valida USING p_check.
CASE p_check.
WHEN 'menor_5_minutos'.
DATA: w_time LIKE sy-uzeit.
DATA: w_seconds TYPE i.
w_seconds = 3 * 300.
w_time = sy-uzeit - w_seconds.
SELECT * FROM zponto_est_jaq
INTO TABLE @DATA(it_zponto_est_jaq)
WHERE
matr_estag = @sy-uname AND
data_pont_estag = @sy-datum AND
hora_pont_estag > @w_time.
IF sy-subrc = 0 AND lines( it_zponto_est_jaq ) > 0.
MESSAGE 'Não é permitido registros de ponto em menos de 5 minutos entre eles' TYPE 'E'.
ENDIF.
WHEN 'campo_vazio'.
MESSAGE 'TODOS OS CAMPOS SÃO OBRIGATÓRIOS' TYPE 'E'.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_GRAVA_PONTO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_grava_ponto .
APPEND INITIAL LINE TO it_zponto_est_jaq ASSIGNING FIELD-SYMBOL(<fs_zponto_est_jaq>).
<fs_zponto_est_jaq>-matr_estag = sy-uname.
<fs_zponto_est_jaq>-data_pont_estag = sy-datum.
<fs_zponto_est_jaq>-hora_pont_estag = sy-uzeit.
IF p_entrad = abap_true.
<fs_zponto_est_jaq>-tp_registro = 'E'.
ENDIF.
IF p_saida = abap_true.
<fs_zponto_est_jaq>-tp_registro = 'S'.
ENDIF.
MODIFY zponto_est_jaq FROM TABLE it_zponto_est_jaq.
ENDFORM.
*&---------------------------------------------------------------------*
*& Programa criado por Jaqueline Cristine Rosa de Souza (estagiária) para estudo
*& 25/01/2024
*&---------------------------------------------------------------------*
REPORT z_ponto_consulta_jaq.
TABLES zponto_est_jaq.
DATA: it_zponto_est_jaq TYPE TABLE OF zponto_est_jaq,
cl_table TYPE REF TO cl_salv_table.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_matr TYPE zed_matr_estag_jq,
p_data TYPE zed_pont_estag_jq.
SELECTION-SCREEN END OF BLOCK b1.
PERFORM f_recuperar_dados.
*&---------------------------------------------------------------------*
*& Form F_RECUPERAR_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_recuperar_dados .
IF p_matr IS INITIAL AND p_data IS INITIAL.
MESSAGE 'Informe um ou mais filtros' TYPE 'I'.
EXIT.
ELSE.
IF p_matr IS NOT INITIAL AND p_data IS NOT INITIAL.
SELECT * FROM zponto_est_jaq
INTO TABLE it_zponto_est_jaq
WHERE matr_estag = p_matr AND
data_pont_estag = p_data.
IF sy-subrc <> 0.
MESSAGE 'nenhum registro encontrado' TYPE 'I'.
ELSE.
PERFORM f_exibe_alv.
ENDIF.
ENDIF.
IF p_matr IS NOT INITIAL AND p_data IS INITIAL.
SELECT * FROM zponto_est_jaq
INTO TABLE it_zponto_est_jaq
WHERE matr_estag = p_matr.
IF sy-subrc <> 0.
MESSAGE 'nenhum registro encontrado' TYPE 'I'.
ELSE.
PERFORM f_exibe_alv.
ENDIF.
ENDIF.
IF p_data IS NOT INITIAL AND p_matr IS INITIAL.
SELECT * FROM zponto_est_jaq
INTO TABLE it_zponto_est_jaq
WHERE data_pont_estag = p_data.
IF sy-subrc <> 0.
MESSAGE 'nenhum registro encontrado' TYPE 'I'.
ELSE.
PERFORM f_exibe_alv.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_EXIBE_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_exibe_alv .
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = abap_true "apresenta o alv como um write
IMPORTING
r_salv_table = cl_table
CHANGING
t_table = it_zponto_est_jaq.
CALL METHOD cl_table->display.
ENDFORM.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute