Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
guilherme_lahr
Explorer
No Fiori 2.0 a SAP introduziu a “Me Area” onde é possível obter informações do usuário, fazer logoff, encontrar apps, editar os grupos do Launchpad, setar valores default, etc. Umas das coisas que acho legal dessa área e da um “charme” é a fotinha do usuário.



Nas apresentações da SAP ela está sempre presente mas... quando você começa a utilizar o Fiori talvez se pergunte: “Que diabo de lugar eu posso colocar minha foto nesse sistema? Será na SU01? Será clicando no ícone do bonequinho que aparece?”



A nota 2381470 acaba com a brincadeira. Para utilizar a foto do usuário só integrando com o SAP Jam.



Uma opção para contornar a integração é a criação de um plugin para o Launchpad, no qual pode ser visualizado no blog abaixo.

https://blogs.sap.com/2016/12/02/custom-user-image-in-fiori-2.0/

Abaixo, segue outra opção onde vamos “dar um gato” nos serviços que fazer a integração com o SAP Jam.

Na primeira parte, o sistema fará a busca por informações do usuário. Uma das informações que é obtida é a ativação do Jam.

Classe /UI2/CL_START_UP_HANDLER método GET_SESSION_DATA



Crie um Enhancement na classe cl_smi_collab_platf_checker, método IS_JAM_CONFIGURED, ativando o SAP Jam.
rv_is_jam_configured = abap_true.

 

Com o Jam ativo, é hora de burlar as duas próximas chamadas.
O código abaixo pode ser encontrado no arquivo ContainerAdapter, explicado no final.

//set user image
if (oUser.isJamActive && oUser.isJamActive()) {
OData.read('/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Self?$format=json',
function (oResponseData) {
var sJamUserId = oResponseData.results.Id,
sJamUserImageUrl = "/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Members('" + sJamUserId + "')/ProfilePhoto/$value";

oUser.setImage(sJamUserImageUrl);
},
function (message) {
jQuery.sap.log.error("Could not recieve JAM user data");
});
}

Crie um Enhancement logo no começo do método IF_HTTP_EXTENSION~HANDLE_REQUEST.



Insira o código abaixo.
  DATA:
lvz_json_content TYPE string.

IF abap_true = me->handle_xsrf_token( server = server ).
RETURN.
ENDIF.

DATA(lvz_path_info) = server->request->get_header_field( '~path_info' ).

me->parse_path_info( EXPORTING iv_path_info = lvz_path_info
IMPORTING ev_service_provider = DATA(lvz_serv_provider)
ev_resource_path = DATA(lvz_resource_path) ).

"Parte 1 - retorna o ID do usuário
IF lvz_resource_path CS 'api/v1/OData/Self'.

"Retorna em formarto JON. Exemplo { "d" : { "results" : { "Id" : "MY_USERNAME" } } }
lvz_json_content = '{' && |"d":| && '{' && |"results":| && '{' && |"Id": "{ sy-uname }"| && '} } }'.

server->response->set_cdata( data = lvz_json_content ).

server->response->set_content_type( 'application/json; charset=UTF-8' ).

server->response->set_status( code = 200 reason = 'OK' ).

RETURN.

"Parte 2 - Com o ID do usuário, retorna a imagem
ELSEIF lvz_resource_path CS 'api/v1/OData/Members'.

DATA(loz_mr_api) = cl_mime_repository_api=>if_mr_api~get_api( ).

CALL METHOD loz_mr_api->get
EXPORTING
i_url = '/SAP/PUBLIC/ZUser/userphoto'
i_check_authority = ' '
IMPORTING
e_content = DATA(lvz_mime_content)
e_mime_type = DATA(lvz_mime_type)
EXCEPTIONS
parameter_missing = 1
error_occured = 2
not_found = 3
permission_failure = 4
OTHERS = 5.

IF sy-subrc EQ 0.

server->response->set_content_type( lvz_mime_type ).

server->response->set_data( data = lvz_mime_content ).

server->response->set_status( code = 200 reason = 'OK' ).

ELSE.

server->response->set_status( code = 500 reason = 'MIME: Error occured' ).

ENDIF.

RETURN.

ENDIF.

Explicações:

  • Na primeira parte o sistema retorna o ID do usuário que será utilizado para compor a URL que fará a busca pelo conteúdo da foto.

  • Na segunda parte, com o ID do usuário, retorna a foto do mesmo.
    OBS: No exemplo coloquei um caminho fixo mas você pode fazer um tratamento para buscar o ID do usuário que está na URL e retornar a foto correta.


 

Resultado



 

Por fim, para encontrar o código com as chamadas para o serviço do Jam, entre no Fiori Launchpad no modo debug.

URL: .../shells/abap/FioriLaunchpad.html?sap-client=100&sap-language=PT&sap-ui-debug=true

O arquivo ContainerAdapter está no caminho abaixo.

3 Comments
Labels in this area