¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como capturar o código de função no SAP para personalizar eventos de clique em botões

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 37 Vistas
0
Cargando...

Este é o meu primeiro blog, por favor, sinta-se à vontade para apontar os erros.

Sempre é tedioso encontrar o código de função em telas padrão, por exemplo, um botão dentro de um controle personalizado. Neste caso, digamos que um evento de clique em um botão não pode ser capturado ao longo do fluxo do programa padrão em todos os lugares.

Quando queremos conhecer o código de função em nossa parte exata do código será atribuído dinamicamente como ‘%_GC 178 10’ e não pode ser usado diretamente para saber qual é a função do usuário. Este pode ser o caso que enfrentamos ao realizar qualquer melhoria no programa padrão.

Eu pesquisei em toda a rede da comunidade e não consegui encontrar uma maneira convincente de conhecer o código de função. Qualquer referência à GUI é um atributo privado (não sei por que a SAP quer ocultar o código de função)

Após uma análise exaustiva, encontrei uma maneira de conhecer o código de função. Acredito que isso possa ajudar alguém que esteja procurando um cenário semelhante, então compartilho a ideia.

É uma maneira simples de duas chamadas de método, como explicado a seguir.

Cenário: Quero alterar o 'IMPRIMIR' padrão (a marcação) por uma página de declaração aduaneira suplementar. Esta sub-tela é uma aba de controle personalizado e os botões obtêm códigos de função dinâmicos que são processados para conhecer o código de função real (aqui é '&PRINT_BACK') quando necessário.

Preciso capturar o código de função de Impressão e inserir nossa lógica empresarial no lugar da impressão padrão.

Dentro do USER_COMMAND para o controle personalizado, criei uma melhoria implícita onde o OK_CODE para este botão de Impressão é esta lixo ‘%_GC 178 10’.

Não há atributo para fornecer o OK_CODE correto, então usei a seguinte lógica para obter o mesmo

DATA: lo_control TYPE REF TO cl_gui_control,

lv_event TYPE string.

FIELD-SYMBOLS: <lo_event> TYPE REF TO cl_gui_event.

IF ok_code+0(4) EQ '%_GC'.

CALL METHOD cl_gui_control=>get_focus

IMPORTING

control           = lo_control

EXCEPTIONS

cntl_error        = 1

cntl_system_error = 2

OTHERS            = 3.

IF NOT lo_control IS INITIAL.

ASSIGN lo_control->cur_event TO <lo_event>.

CALL METHOD <lo_event>->get_event_param

EXPORTING

pid   = '0'

IMPORTING

value = lv_event.

ENDIF.

ENDIF.

LV_EVENT leva o código de função atual. Aqui neste caso, contém &PRINT_BACK.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?