Boa tarde,
pessoal alguém por favor pode me ajudar, estou um tanto quanto perdido, ainda mais por ser ainda segunda semana apenas,
Houve uma ampliação para usar nas transações ME21N, ME22N, ME23N, ME29N e ML81N, a questão é preciso ao somente ao selecionar o campo "Liberação Folha de Serviço Automática" se marcado ele faz as liberações automaticamente dos pedidos destas transações de MM.
Consegui encontrar o programa: LMLSRF14 (referente à primeira exit de tela) e o enhancement spot: ENHANCEMENT 1 ZMM_ML81N_SAVE.
Não estou conseguindo fazer a validação para automático, com o debugg achei a mudança de apenas esses campos e estes valores que representam a validação automática (tcode ME29N) ekko-frgke = 2 e o campo ekko-frgzu = XXXXX.
Devo fazer a validação em qual dos seguintes módulos PBO ou PAI (são da primeira exit de tela, pois todas as demais estão vazias, só tem o próprio nome)? Ou não é em nenhum desses módulos de PBO ou PAI, deve ser nos exit's de função?
por quê se for seria estranho por nehnum exit de função possuir algo relativo à tcode ME29N.
A tabela ekko_ci-zzxfield é apenas para receber a seleção do campo "Liberação Folha de Serviço Automática".
PROCESS BEFORE OUTPUT.
MODULE STATUS_0101.
MODULE clear_screen_101.
MODULE modify_screen_101.
MODULE load_data_101.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0101.
MODULE status_0101 OUTPUT.
CHECK sy-tcode = 'ME29N'.
* ekko_ci-zzxfield = 'X'.
CLEAR ekko_ci-zzxfield.
ENDMODULE. " STATUS_0101 OUTPUT
MODULE CLEAR_SCREEN_101 OUTPUT.
CHECK sy-ucomm EQ 'MESAVE'.
* CLEAR: ekko_ci-zzxfield.
ENDMODULE. " CLEAR_SCREEN_101 OUTPUT
MODULE modify_screen_101 OUTPUT.
ekko_ci-zzxfield = 'X'.
IF sy-tcode EQ 'ME21N'.
LOOP AT SCREEN.
CHECK screen-name EQ 'EKKO-ZZXFIELD'.
screen-input = 1.
MODIFY SCREEN.
ENDLOOP.
ELSEIF sy-tcode EQ 'ME22N'.
LOOP AT SCREEN.
CHECK screen-name EQ 'EKKO-ZZXFIELD'.
screen-input = 1.
MODIFY SCREEN.
ENDLOOP.
ELSEIF sy-tcode EQ 'ME23N'.
LOOP AT SCREEN.
CHECK screen-name EQ 'EKKO-ZZXFIELD'.
screen-input = 1.
MODIFY SCREEN.
ENDLOOP.
"início alteração dia 20.04.2014
ELSEIF sy-tcode = 'ME29N'.
LOOP AT SCREEN.
CHECK screen-name EQ 'EKKO-ZZXFIELD'.
screen-input = 1.
MODIFY SCREEN.
ENDLOOP.
"fim alteração dia 20.04.2014
ENDIF.
ENDMODULE. " MODIFY_SCREEN_101 OUTPUT
MODULE user_command_0101 INPUT.
TABLES: ekko.
FIELD-SYMBOLS:
<fs_ebeln> TYPE ANY.
DATA: p_cotcol TYPE zclt001-ccotcol,
lv_ebeln TYPE ekko-ebeln.
*** Verifica se o botão da transação ZCL14 foi pressionado na ME29N
IF sy-ucomm = 'ZCL14'.
*** Busca o número do pedido na tela
ASSIGN ('(SAPLMEGUI)MEPO_TOPLINE-EBELN') TO <fs_ebeln>.
IF sy-subrc = 0.
CLEAR lv_ebeln.
lv_ebeln = <fs_ebeln>.
CLEAR p_cotcol.
SELECT SINGLE b~ccotcol INTO p_cotcol FROM ekpo AS a
INNER JOIN zclt001 AS b ON a~anfnr = b~cebeln
WHERE a~ebeln EQ lv_ebeln AND
a~anfnr NE space.
*** Verifica se há valor no campo número do pedido
IF p_cotcol IS INITIAL.
MESSAGE 'Não existe cotação no Comlink' TYPE 'E'.
EXIT.
ENDIF.
*** Transfere o campo para memoria para ser recuperado pela transação
SET PARAMETER ID 'BES' FIELD ''.
SET PARAMETER ID 'COT' FIELD p_cotcol.
SET PARAMETER ID 'CO1' FIELD 'X'.
*** Executa a transação ZCL14
CALL TRANSACTION 'ZCL14' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDMODULE. " USER_COMMAND_0101 INPUT
Por favor, qualquer dica, ou informação.
Muito obrigado a todos.