Archive | SAP Portal RSS for this section

Obter data do último logon de usuário UME dentro do SAP Portal

Sabemos que esta obsoleto/deprecated o método getLastSuccessfulLogonDate que pertence a com.sap.security.api, e segundo algumas pesquisas que realizei, não existe nenhuma outra biblioteca que tenha essa método.
public Date getLastSuccessfulLogonDate()
Deprecated.
get last sucessful logon date NOTE: This attribute is not automatically updated during login.
Returns:
The LastSuccessfulLogonDate value

FONTE: http://help.sap.com/javadocs/NW04S/SPS09/se/com/sap/security/api/IUserAccount.html#getLastSuccessfulLogonDate()

Durante um projeto que particiei, tive que utilizar a data de último logon de usuários do tipo UME(User Management Engine), porém como o método getLastSuccessfulLogonDate fico obsoleto então tiver que solucionar esse problema de outra forma.
A primeira opção que podemos fazer, se trata de inserir um código dentro da aplicação que o usuário do SAP Portal irá utilizar, porém isso só irá funcionar para usuários que acessarem essa aplicação em específico.
Se o seu caso é buscar a data de último logon de diversos usuários, que usam diversas aplicações do SAP Portal, então eu sugiro a seguinte solução.
Existe uma tabela interna do SAP Portal 7.0 onde esses dados são gravados, chamada: WCR_USERSTAT
Então utilizando os dados dessa tabela então conseguimos encontrar a última data de Logon de usuário do tipo UME do SAP Portal

Query:
"SELECT max(TIMESTAMPHOUR) as TIMESTAMPHOUR, LOGONID FROM WCR_USERSTAT WHERE LOGONID like 'CP%' OR LOGONID like 'PT%' GROUP BY LOGONID "

Solução JAVA
try{
InitialContext ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("jdbc/SAP/BC_JMS");
con=ds.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery("SELECT max(TIMESTAMPHOUR) as TIMESTAMPHOUR, LOGONID FROM WCR_USERSTAT WHERE LOGONID like 'CP%' OR LOGONID like 'PT%' GROUP BY LOGONID ");

while(rs.next()){

UserInfo userInfo = new UserInfo();
userInfo.setLogonid(rs.getString("LOGONID"));
userInfo.setUltimoAcesso(new Date(rs.getLong("TIMESTAMPHOUR")));

listaUsuario.add(userInfo); //pra exibição
}
}catch (Exception e){}