Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9269

Ajuda com validação em PBO/PAI

$
0
0

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.


Viewing all articles
Browse latest Browse all 9269

Trending Articles