quinta-feira, 29 de fevereiro de 2024

RAP - Tratar Autorizações para funções especificas

 Deixar como global.











Nesse caso se eu tenho um objeto de autorização para criar/modificar e exibir. Se estiver como exibir eu desativo os botões, no caso tenho o botão standard e outro customizado.

















Pode ser assim tbm.
https://github.com/SAP-samples/abap-platform-rap-opensap/blob/main/week3/unit6.md








































===== EXEMPLO FUNCIONAL USANDO A FORMA DA SAP
-- Detalhe, testando pelo eclipse pelo binding não funciona, somente depois do deploy no ambiente do cliente


METHOD get_instance_authorizations.

    DATA lv_exibir TYPE abap_bool.

    READ ENTITIES OF ZPP_I_OrdensEncFrangoCorte IN LOCAL MODE
     ENTITY OrdemProd ALL FIELDS
     WITH CORRESPONDING #( keys )
     RESULT DATA(lt_ordens) FAILED failed.

    CHECK lt_ordens IS NOT INITIAL.

    LOOP AT lt_ordens INTO DATA(lw_ordens).

      CLEAR lv_exibir.

      AUTHORITY-CHECK OBJECT 'ZPP_ENCFRC'
       ID 'ACTVT' FIELD '02'
       ID 'WERKS' FIELD lw_ordens-werks.

      IF sy-subrc <> 0.

        AUTHORITY-CHECK OBJECT 'ZPP_ENCFRC'
         ID 'ACTVT' FIELD '03'
         ID 'WERKS' FIELD lw_ordens-werks.

        IF sy-subrc <> 0.
          APPEND VALUE #( %tky        = lw_ordens-%tky
                          %msg        = new_message_with_text( severity = if_abap_behv_message=>severity-error
                                        text   = |Sem autorização para centro: { lw_ordens-werks }| )
                        ) TO reported-ordemprod.
        ENDIF.

        lv_exibir = abap_true.

      ENDIF.

      APPEND VALUE #( %tky = lw_ordens-%tky
                      %update = COND #( WHEN lv_exibir = abap_true THEN if_abap_behv=>auth-unauthorized ELSE if_abap_behv=>auth-allowed )
                      %action-ExecOrdem = COND #( WHEN lv_exibir = abap_true THEN if_abap_behv=>auth-unauthorized ELSE if_abap_behv=>auth-allowed )
                      %action-refreshTela = COND #( WHEN lv_exibir = abap_true THEN if_abap_behv=>auth-unauthorized ELSE if_abap_behv=>auth-allowed )
                ) TO result.

    ENDLOOP.

  ENDMETHOD.









Nenhum comentário:

Postar um comentário