Escolar Documentos
Profissional Documentos
Cultura Documentos
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0030 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0030 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'OTHER'.
IF wa_func NE wa_func_aux. "Houve alteração
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
textline1 = 'Dados alterados'
textline2 = 'Deseja sair'
titel = 'Confirma saída?'
cancel_display = ' '
IMPORTING
answer = v_answer.
IF v_answer EQ 'J'. "Sair sem salvar
PERFORM limpa_variaveis.
IF sy-ucomm EQ 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.
ELSE. "Não Houve alteração
PERFORM limpa_variaveis.
IF sy-ucomm EQ 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.
WHEN 'ENTER'.
IF wa_func_aux IS INITIAL.
PERFORM busca_funcionario.
ELSE.
PERFORM verifica_dados CHANGING v_erro.
ENDIF.
WHEN 'SAVE'.
PERFORM verifica_dados CHANGING v_erro.
PERFORM salva_dados USING v_erro 'U'.
* WHEN 'OTHER'.
* PERFORM limpa_variaveis.
WHEN OTHERS.
ENDCASE.
Em características:
Em lógica de Processamento:
Clique duplo em STATUS_0040 para criar o objeto PBO.
CASE sy-ucomm.
WHEN 'ENTER'.
PERFORM busca_funcionario.
WHEN 'CANCEL'.
PERFORM limpa_variaveis.
LEAVE TO SCREEN 0.
WHEN 'SAVE'.
IF NOT wa_func_aux IS INITIAL.
PERFORM salva_dados USING space 'U'.
"Neste caso, o primeiro parâmetro enviaria
"o campo V_ERRO, mas como não temos validação
"dos campos, não teremos retorno de erro. Por
"este motivo enviamos o valor ' ', seguido
"de 'U', de UPDATE.
ELSE.
MESSAGE i002(zmsg00) WITH
'Digite um código válido.'.
ENDIF.
WHEN 'DEMIT'.
IF wa_func-demit EQ 'X'.
wa_func-dtdem = sy-datlo.
ELSE.
CLEAR wa_func-dtdem.
ENDIF.
WHEN OTHERS.
ENDCASE.
Programa: ZT6ADV0003
*&---------------------------------------------------------------------*
*& PoolMóds. ZT6ADV0003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM ZT6ADV0003.
INCLUDE zt6adv0003_top.
*&---------------------------------------------------------------------*
*& Include ZT6ADV0003_TOP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Include ZT6ADV0003_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0010 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0010 OUTPUT.
SET PF-STATUS 'TELA_0010'.
SET TITLEBAR 'TIT_0010'.
ENDMODULE. " STATUS_0010 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0020 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0020 OUTPUT.
SET PF-STATUS 'TELA_0020'.
SET TITLEBAR 'TIT_0020'.
ENDMODULE. " STATUS_0020 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0030 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0030 OUTPUT.
DATA fcode TYPE TABLE OF sy-ucomm.
REFRESH fcode.
INCLUDE zt6adv0003_pai.
*&---------------------------------------------------------------------*
*& Include ZT6ADV0003_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0010 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0010 INPUT.
* Variável de Sistema SY-UCOMM --> User Command
* Esta variável grava a ultima ação do usuário.
CASE sy-ucomm.
WHEN 'BACK'. "Botão Back foi pressionado (F3)
LEAVE PROGRAM. "Sai do programa
WHEN 'FCREATE'. "Criar Funcionário
CALL SCREEN '0020'.
WHEN 'FCHANGE' OR 'FSHOW'.
IF sy-ucomm EQ 'FCHANGE'.
v_change = 'X'.
ELSE.
v_change = ' '.
ENDIF.
CALL SCREEN '0030'.
WHEN 'FDEMI'. "Demitir Funcionário
CALL SCREEN '0040' STARTING AT 5 5.
WHEN OTHERS.
ENDCASE.
CASE sy-ucomm.
WHEN 'BACK'.
* set SCREEN '0010'.
* leave screen.
* leave to screen '0010'.
* call screen '0010'.
IF NOT wa_func IS INITIAL.
ENDIF.
WHEN 'ENTER'.
PERFORM verifica_dados CHANGING v_erro.
WHEN 'SAVE'.
PERFORM verifica_dados CHANGING v_erro.
PERFORM salva_dados USING v_erro 'I'.
WHEN OTHERS.
ENDCASE.
CASE sy-ucomm.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
CASE sy-ucomm.
WHEN 'BACK' OR 'OTHER'.
IF wa_func NE wa_func_aux. "Houve alteração
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
textline1 = 'Dados alterados'
textline2 = 'Deseja sair'
titel = 'Confirma saída?'
cancel_display = ' '
IMPORTING
answer = v_answer.
IF v_answer EQ 'J'. "Sair sem salvar
PERFORM limpa_variaveis.
IF sy-ucomm EQ 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.
ELSE. "Não Houve alteração
PERFORM limpa_variaveis.
IF sy-ucomm EQ 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.
WHEN 'ENTER'.
IF wa_func_aux IS INITIAL.
PERFORM busca_funcionario.
ELSE.
PERFORM verifica_dados CHANGING v_erro.
ENDIF.
WHEN 'SAVE'.
PERFORM verifica_dados CHANGING v_erro.
PERFORM salva_dados USING v_erro 'U'.
* WHEN 'OTHER'.
* PERFORM limpa_variaveis.
WHEN OTHERS.
ENDCASE.
CASE sy-ucomm.
WHEN 'ENTER'.
PERFORM busca_funcionario.
WHEN 'CANCEL'.
PERFORM limpa_variaveis.
LEAVE TO SCREEN 0.
WHEN 'SAVE'.
IF NOT wa_func_aux IS INITIAL.
PERFORM salva_dados USING space 'U'.
"Neste caso, o primeiro parâmetro enviaria
"o campo V_ERRO, mas como não temos validação
"dos campos, não teremos retorno de erro. Por
"este motivo enviamos o valor ' ', seguido
"de 'U', de UPDATE.
ELSE.
MESSAGE i002(zmsg00) WITH
'Digite um código válido.'.
ENDIF.
WHEN 'DEMIT'."Campo CheckBox.
IF wa_func-demit EQ 'X'.
wa_func-dtdem = sy-datlo.
ELSE.
CLEAR wa_func-dtdem.
ENDIF.
WHEN OTHERS.
ENDCASE.
INCLUDE zt6adv0003_fct.
*&---------------------------------------------------------------------*
*& Include ZT6ADV0003_FCT
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form verifica_dados
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM verifica_dados CHANGING l_erro.
CLEAR v_erro.
IF sy-subrc EQ 0.
MESSAGE s002(zmsg00) WITH
'Funcionário'
zt6func00-codre
zt6func00-nome
'gravado com sucesso'.
PERFORM limpa_variaveis.
ELSE.
MESSAGE i002(zmsg00) WITH
'Erro ao gravar funcionário'
zt6func00-codre
zt6func00-nome.
ENDIF.
IF wa_func-codre IS INITIAL.
MESSAGE I002(zmsg00) WITH
'Digite algum código para continuar.'.
ELSE.
SELECT SINGLE * INTO wa_func
FROM zt6func00
WHERE codre EQ wa_func-codre.
IF sy-subrc NE 0.
MESSAGE I002(zmsg00) WITH
'Código não encontrado.'.
PERFORM limpa_variaveis.
ELSE.
wa_func_aux = wa_func.
ENDIF.
ENDIF.
Clique em Criar.
Salvar e ativar.
BATCH INPUT e CALL TRANSACTION
Clique em Criar.
*&---------------------------------------------------------------------*
*& Report ZT6ADV0005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zt6adv0005.
LOOP AT ti_file.
REFRESH h_bdc.
CLEAR h_bdc.
ENDLOOP.
ENDIF.
*-----------------------------------------------------------------------
* Form INSERT_LINE
*-----------------------------------------------------------------------
* Preenche uma linha da tabela H_BDC com os dados da transação
*-----------------------------------------------------------------------
* Leitura
* LC_START, Indica se é informação sobre tela ou programa
* LC_NAME , Nome do programa ou campo
* LC_VALUE, Nome da tela ou valor do campo
* Escrita
* H_BDC, Dados da transação
*----------------------------------------------------------------------*
FORM insert_line USING lc_start TYPE C lc_name TYPE C lc_value.
CLEAR h_bdc.
MOVE lc_start TO h_bdc-dynbegin.
IF lc_start = 'X'.
MOVE:
lc_name TO h_bdc-PROGRAM,
lc_value TO h_bdc-DYNPRO.
ELSE.
MOVE:
lc_name TO h_bdc-fnam,
lc_value TO h_bdc-fval.
ENDIF.
APPEND h_bdc.
Clique em Programa.
Insira o nome e Aceitar de gravação.