20250720

Imagem com clique

*&---------------------------------------------------------------------*
*& Report ZNXX_02
*&---------------------------------------------------------------------*
*& Imagem clicável
*&---------------------------------------------------------------------*


REPORT z_click_imagem_se78.

CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    METHODS: on_picture_click FOR EVENT picture_click OF cl_gui_picture
      IMPORTING mouse_pos_x mouse_pos_y.
ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION.
  METHOD on_picture_click.
    MESSAGE 'Imagem clicada! Chamando transação ...' TYPE 'I'.
*    CALL TRANSACTION 'VA01'. " Substitua pela transação desejada
  ENDMETHOD.
ENDCLASS.


START-OF-SELECTION.
  CALL SCREEN 100.

MODULE pbo_0100 OUTPUT.

* Objetos necessários
  DATA: go_container      TYPE REF TO cl_gui_custom_container,
        go_picture        TYPE REF TO cl_gui_picture,
        go_handler        TYPE REF TO lcl_event_handler,
        gt_events         TYPE cntl_simple_events,
        gs_event          TYPE cntl_simple_event.

  DATA: graphic_url(255).

  DATA: BEGIN OF graphic_table OCCURS 0,
          line(255) TYPE x,
        END OF graphic_table.

  DATA: l_graphic_conv TYPE i.
  DATA: l_graphic_offs TYPE i.
  DATA: graphic_size   TYPE i.
  DATA: l_graphic_xstr TYPE xstring.
  DATA: url(255)  TYPE c.



  IF go_container IS INITIAL.

    " Cria container e objeto de imagem
    CREATE OBJECT go_container
      EXPORTING container_name = 'CC_PIC'.

    CREATE OBJECT go_picture
      EXPORTING parent = go_container.

*   Lê imagem da SE78 (xstring)
    CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
      EXPORTING
        p_object       = 'GRAPHICS'
        p_name         = 'Z_IMAGEM_001'
        p_id           = 'BMAP'
        p_btype        = 'BCOL'
      RECEIVING
        p_bmp          = l_graphic_xstr
      EXCEPTIONS
        not_found      = 1
        internal_error = 2
        OTHERS         = 3.

    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

*   Converte imagem da SE78 em url
    graphic_size = XSTRLEN( l_graphic_xstr ).
    l_graphic_conv = graphic_size.
    l_graphic_offs = 0.

    WHILE l_graphic_conv > 255.

      graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
      APPEND graphic_table.
      l_graphic_offs = l_graphic_offs + 255.
      l_graphic_conv = l_graphic_conv - 255.

    ENDWHILE.

    graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
    APPEND graphic_table.

    CALL FUNCTION 'DP_CREATE_URL'
      EXPORTING
        type     = 'IMAGE'
        subtype  = 'X-UNKNOWN'
        size     = graphic_size
        lifetime = 'T'
      TABLES
        data     = graphic_table
      CHANGING
        url      = url.

*   Apresenta a imagem
    CALL METHOD go_picture->load_picture_from_url
      EXPORTING
        url = url.

*   Ajusta a imagem
    CALL METHOD go_picture->set_display_mode
      EXPORTING
        display_mode = go_picture->display_mode_fit_center.



*   Registra o evento de clique
    gs_event-eventid = cl_gui_picture=>eventid_picture_click.
    gs_event-appl_event = abap_true.
    APPEND gs_event TO gt_events.

    CALL METHOD go_picture->set_registered_events
      EXPORTING events = gt_events.

*   Cria handler de evento (habilita o evento)
    CREATE OBJECT go_handler.
    SET HANDLER go_handler->on_picture_click FOR go_picture.

  ENDIF.

ENDMODULE.

MODULE pai_0100 INPUT.
* Não utilizado neste exemplo
ENDMODULE.


*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100_ST'.
  SET TITLEBAR 'xxx'.
ENDMODULE.


*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK' OR 'CANC' OR 'EXIT'.
      LEAVE TO SCREEN 0.

    WHEN OTHERS.

  ENDCASE.
ENDMODULE.

Tela 0100
PROCESS BEFORE OUTPUT.
  MODULE STATUS_0100.
  MODULE pbo_0100.
*
PROCESS AFTER INPUT.
  MODULE USER_COMMAND_0100.


 - Criar o container CC_PIC
 - Criar status com 'BACK', 'CANC' e 'EXIT'





20241004

SO10 - Transportar textos standards

Utilizar uma task do tipo "Reparação" ou "Desenvolvimento/Correção"
Fazer o ajuste no texto pela transação SO10 e salvar normalmente
Executar o programa RSTXTRAN .

Ao executar o programa com as informações passadas...

Escolha o texto desejado e pressione ENTER


Clique em "Aceitar Txts.na correç."


Uma confirmação será solicitada.


Pronto. Objeto de texto anexado em sua task. Basta liberar e transportar a request.






    


20240816

Regras de Validação de Substituição

Regras de Validação de Substituição

 

Consultant SAP: GGB1 GGB0 PROGRAMA RGUGBR00 (consultingsap.blogspot.com)

 

Trasações: GGB0 OB28 GGB4

Regras de validação

 

Transações: GGB1 OBBH GGB4

Re0gras de substituição

 

 

PROGRAMA RGUGBR00

 

 

Tentar utilizar, se possível, ao invés de Field/User Exit para Validação/Substituição, as Regras de Validação (transação GGB0/OB28) ou as Regras de Substituição (transação GGB1/OBBH) — a transação GGB4 remete a ambas regras.

 

http://www.youtube.com/watch?v=ge2Zl5d7ak0

 


Após associar a etapa a nova regra e super importante

RGUGBR00

 

Para modificação de DIV a regra devera ser colocada no Cabeçalho do documento

 

Conforme

 

*---------------------------------------------------------------------*

*       FORM ZXXX - VALIDAÇÃO DE DIVISÃO                              *

*---------------------------------------------------------------------*

* Modificar o campo divisão na conta de diferença de preço quando

* ocorrer o movimento de transferência de material

*---------------------------------------------------------------------*

FORM z013 CHANGING bool_data TYPE gb002_015.[JO1]    "**

 

  FIELD-SYMBOLS: <fs_bwart>, "Tipo de movimento

                 <fs_matnr>, "Material

                 <fs_umwrk>. "Centro receptor

 

  DATA: vc_bwart LIKE mseg-bwart,

        vc_matnr LIKE mara-matnr,

        vc_spart LIKE mara-spart,

        vc_gsber LIKE v134g-gsber,

        vc_umwrk LIKE mseg-umwrk.

 

* Recuperando o TIPO DE MOVIMENTO

  ASSIGN ('(SAPMM07M)RM07M-BWARTWA') TO <fs_bwart>.

  IF <fs_bwart> IS ASSIGNED.

    vc_bwart = <fs_bwart>.

  ENDIF.

 

* Recuperando o CENTRO RECEPTOR

  ASSIGN ('(SAPMM07M)MSEGK-UMWRK') TO <fs_umwrk>.

  IF <fs_umwrk> IS ASSIGNED.

    vc_umwrk = <fs_umwrk>.

  ENDIF.

 

* Para todos os registros contidos na tab. recebida na chamada do FORM, faremos...

  LOOP AT bool_data-bseg INTO bseg.

 

*   Se BSEG-HKONT = '0004118001' e SY-TCODE = 'MB1B' e Tipo movimento (MSEG-BWART - tela da MB1B) = 'ZXX' ou 'ZX1' ou 'ZX2' ou 'ZX3'

    IF ( bseg-hkont = '0004118001' AND

         sy-tcode   = 'MB1B'      AND

        ( vc_bwart = 'ZXX' OR

          vc_bwart = 'ZX1' OR

          vc_bwart = 'ZX2' OR

          vc_bwart = 'ZX3' ) ).

 

      SELECT SINGLE gsber

      INTO vc_gsber

      FROM v134g

      WHERE werks = vc_umwrk

        AND spart eq '10'. "vc_spart.

 

      bseg-gsber = vc_gsber .

 

      MODIFY bool_data-bseg FROM bseg.

 

    ENDIF.

 

  ENDLOOP.

 

 

 

 

 

Após o transporte da Request para os ambientes de QAS e PRD, deve-se rodar o programa RGUGBR00.

 

Usar como modelo as opções abaixo ou entrar em contato com o responsável pelo módulo de FI.

 

Validações


Substituições


Obs.: CUIDADO com a opção "Gerar sets". Isso pode gerar um grande problema com a redefinição de alguns sets. Não sei informar precisamente esse item, mas sei de casos que geraram grandes problemas.

 

 

 

** Obs.2: Ao utilizar "CHANGING bool_data" você passa a ter o processamento a BKPF (Cabeçalho) e BSEG (Itens). Isso deve ser utilizado quando se cria uma regra para o Documento Completo.