Para debugar um programa que foi escalonado para ser executado via JOB é fácil.
1) Digitar JDBG no campo de comandos;
2) Deixar o cursor na linha do JOB em que deseja debugar;
3) Pressionar Enter.
Apos isso irá apresentar a tela de debug. Apertando F7 algumas vezes você ira chegar no programa em que você escalonou o JOB, porem outra maneira mais fácil é colocar um breakpoint no ponto especifico em que deseja debugar.
quinta-feira, 2 de julho de 2015
quarta-feira, 24 de junho de 2015
Buscando parâmetros de tela de outros programas com ASSIGN
Para buscar o valor informado nos parâmetros de tela de outros programas é simples, basta seguir o exemplo abaixo:
O field-symbol vai receber o valor do parâmetro buscado e J_1BEFD_MAIN é o programa e J5_NFNUM o nome do parâmetro de tela.
CONSTANTS: lc_field TYPE char50 VALUE '(J_1BEFD_MAIN)J5_NFNUM'.
FIELD-SYMBOLS: <lf_valor> TYPE any.
ASSIGN (lc_field) TO <lf_valor>.
O field-symbol vai receber o valor do parâmetro buscado e J_1BEFD_MAIN é o programa e J5_NFNUM o nome do parâmetro de tela.
segunda-feira, 4 de maio de 2015
Customizando botões no ALV - REUSE_ALV_GRID_DISPLAY
Para remover ou adicionar botões específicos no ALV, uma opção é copiar o PF-STATUS de um Grupo de Função Standard para seu programa e incluir ou remover os botões desejados.
Para pegar um PF-STATUS como exemplo, da para copiar o PF-STATUS "STANDARD" do Grupo de Funções SALV.
Depois de copiado e feito as alterações, é necessário alterar a chamada do seu ALV para que o programa chame o seu PF-STATUS customizado.
Abaixo o exemplo de código:
No parâmetro i_callback_pf_status_set você passa o nome do FORM em que irá setar o PF-STATUS customizado, conforme exemplo abaixo:
Fazendo isso o ALV irá apresentar o PF-STATUS alterado por você.
Um outro ponto que deve ser considerado fazendo está alteração é o tratamento do user command que deve ser alterado também caso tenha adicionado um novo botão. Para isso existe o parâmetro i_callback_user_command, no qual você deve passar o FORM em que será tratado a ação que o programa deverá tomar apos o seu novo botão ser clicado.
Para pegar um PF-STATUS como exemplo, da para copiar o PF-STATUS "STANDARD" do Grupo de Funções SALV.
Depois de copiado e feito as alterações, é necessário alterar a chamada do seu ALV para que o programa chame o seu PF-STATUS customizado.
Abaixo o exemplo de código:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
is_layout = lw_layout
it_fieldcat = tg_fieldcat
i_callback_pf_status_set = 'F_PF_STATUS_DET'
i_callback_user_command = 'ALV_USER_COMMAND'
i_save = 'A'
it_sort = lt_sort
is_variant = lw_variant
TABLES
t_outtab = tg_saida
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
No parâmetro i_callback_pf_status_set você passa o nome do FORM em que irá setar o PF-STATUS customizado, conforme exemplo abaixo:
FORM f_pf_status_det USING ft_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD_DET' EXCLUDING ft_extab.
ENDFORM. " F_PF_STATUS
Fazendo isso o ALV irá apresentar o PF-STATUS alterado por você.
Um outro ponto que deve ser considerado fazendo está alteração é o tratamento do user command que deve ser alterado também caso tenha adicionado um novo botão. Para isso existe o parâmetro i_callback_user_command, no qual você deve passar o FORM em que será tratado a ação que o programa deverá tomar apos o seu novo botão ser clicado.
FORM alv_user_command USING f_ucomm LIKE sy-ucomm "#EC CALLED
fw_selfield TYPE slis_selfield. "#EC NEEDED
CASE f_ucomm.
WHEN 'BOTAO1'.
PERFORM form1.
WHEN 'BOTAO2'.
PERFORM form2.
WHEN 'BOTAO3'.
PERFORM form3.
ENDCASE.
ENDFORM. " F_USER_COMMAND
sexta-feira, 1 de maio de 2015
Criando MatchCode com Valores Supostos(Tabela Interna)
O exemplo abaixo mostra como criar um MatchCode com valores vindos de uma tabela interna:
TYPES: BEGIN OF tp_matchcode,
maquina TYPE zdmaquina,
kurztext TYPE qtxt_code,
END OF tp_matchcode.
* Declaração de Variáveis Locais:
DATA tg_matchcode TYPE TABLE OF tp_matchcode WITH HEADER LINE.
DATA tg_matchcode_value TYPE STANDARD TABLE OF ddshretval WITH HEADER LINE.
CLEAR p_equipamento.
SELECT maquina kurztext
FROM ztab_maq_equip
INTO TABLE tg_matchcode.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KURZTEXT'
dynpprog = sy-repid
dynpnr = sy-dynnr
window_title = 'Equipamento'
value_org = 'S'
TABLES
value_tab = tg_matchcode
return_tab = tg_matchcode_value.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
READ TABLE tg_matchcode INDEX 1.
IF sy-subrc EQ 0.
p_equipamento = tg_matchcode_value-fieldval.
ENDIF.
ENDIF.
Assinar:
Postagens (Atom)