on 04-28-2015 4:53 PM
Buen día,
De manera atenta solicito colaboración con la siguiente inquietud: ¿Es posible visualizar los informes de autorización (Ruta: Gestión/procedimientos de autorización) en dispositivos moviles tales como ipad, iphone y android? . . . En caso de que sea posible que configuración se debe hacer o que condiciones son necesarias para que esto se de y en caso de que no sea posible visualizar este tipo de informes, puedo hacer para que en el dispositivo movil de una persona que autoriza documentos solo le aparezcan aquellos pendientes de aprobación??
Cordialmente,
Cristian Julián Cedeño Guzman
Consultor Sap Business One
Buenas tardes
Los únicos reportes que puedes agregar al Mobile son crystal reports.
Debes crear un CR, registrarlo en SAP, marcarlo como Visible para "Mobile" y con eso lo puedes ejecutar desde al aplicación.
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Gracias Felipe, existe alguna forma de que pueda filtrar desde el dispositivo movil únicamente los documentos pendientes de aprobación?
Lo que sucede es que hay un usuario que debe aprobar ordenes de compra el lo ha venido haciendo desde el computador y hasta hace poco se le logro configurar el ipad para que apruebe los documentos cuando no se encuentra en el empresa, sin embargo al abrir SAP desde la app el sistema le muestra todas las solicitudes aunque ya las haya aprobado desde el computador, el solo necesita ver lo que tiene pendiente por aprobar (Por esto preguntaba lo de los informes ya que en esos si se puede hacer el filtro), el problema es que no veo en la app una opción que me permita filtrar solo las pendientes.
Cordial saludo,
Nuevamente gracias Felipe . . . Me podría indicar la forma en la que se puede hacer esto desde el b1if.
Nota: El procedimiento de autorización es del estándar y sin query (Esta programado para que cada vez que se cree una orden de compra se vaya a la autorización de dos usuarios)
Cordial saludo,
OK,
Primer paso, ir al b1if y exportar el scenario sap.B1Mobile que será nuestro respaldo del scenario original.
Haz una copia de este para que podamos trabajar.
Buscas el archivo y lo descomprimes, debe quedarte una capeta como en la imagen
Accedemos a la carpeta y llegamos a la siguiente ruta "/vPac.sap.B1Mobile/com.sap.b1i.vplatform.scenarios.design/"
Dentro de esa carpeta estan cada una de las funciones (steps) que realiza el mobile.
Cuando consultas las autorizaciones se ejecutan 3 funciones:
GetUnReadAlertCount
GetMessageList
GetUnReadMessageCount
El GetUnReadAlertCount y el GetUnReadMessageCount solo devuelven un numero, un count() de algo, si quieres puedes investigar que es lo que cuentan.
Identificamos e ingresamos a la carpeta del GetMessageList y veremos los siguientes archivos:
Abrimos el archivo que tiene el nombre de atom14.xsl con cualquier editor de texto aunque es mejor usar un editor XML.
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:b1e="urn:com.sap.b1i.sim:b1event" xmlns:b1ie="urn:com.sap.b1i.sim:b1ievent" xmlns:b1im="urn:com.sap.b1i.sim:b1imessage" xmlns:b1mb="http://tempuri.org/" xmlns:bfa="urn:com.sap.b1i.bizprocessor:bizatoms" xmlns:jdbc="urn:com.sap.b1i.adapter:jdbcadapter" xmlns:rfc="urn:sap-com:document:sap:rfc:functions" xmlns:sim="urn:com.sap.b1i.sim:entity" xmlns:utils2="com.sap.b1i.bpc_tools.Utilities" xmlns:vpf="urn:com.sap.b1i.vplatform:entity" xmlns:xci="urn:com.sap.b1i.xcellerator:intdoc" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" bfa:force="" vpf:force="" jdbc:force="" rfc:force="" b1ie:force="" b1e:force="" xci:force="" sim:force="" utils2:force="" b1im:force="" b1mb:force=""><xsl:output method="xml" encoding="UTF-8" indent="yes"></xsl:output><xsl:param name="atom"></xsl:param><xsl:param name="sessionid"></xsl:param><xsl:variable name="msg" select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role='S']"></xsl:variable><xsl:variable name="vpSender" select="/vpf:Msg/vpf:Header/vpf:Sender/@Id"></xsl:variable><xsl:variable name="vpObject" select="/vpf:Msg/vpf:Header/vpf:Sender/@ObjId"></xsl:variable><xsl:variable name="vpReceiver" select="/vpf:Msg/vpf:Header/vpf:ReceiverList/vpf:Receiver[./@handover='P']/@Id"></xsl:variable><xsl:variable name="vpActivityCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='ActivityCode']/@value"></xsl:variable><xsl:variable name="vpAddonType" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='AddonType']/@value"></xsl:variable><xsl:variable name="vpAlertID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='AlertID']/@value"></xsl:variable><xsl:variable name="vpAttachmentEntry" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='AttachmentEntry']/@value"></xsl:variable><xsl:variable name="vpAttachmentLine" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='AttachmentLine']/@value"></xsl:variable><xsl:variable name="vpAttachmentPath" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='AttachmentPath']/@value"></xsl:variable><xsl:variable name="vpbpCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='bpCode']/@value"></xsl:variable><xsl:variable name="vpcallID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='callID']/@value"></xsl:variable><xsl:variable name="vpCardCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='CardCode']/@value"></xsl:variable><xsl:variable name="vpCntctCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='CntctCode']/@value"></xsl:variable><xsl:variable name="vpCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='Code']/@value"></xsl:variable><xsl:variable name="vpContactPerson" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='ContactPerson']/@value"></xsl:variable><xsl:variable name="vpContractID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='ContractID']/@value"></xsl:variable><xsl:variable name="vpCount" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='Count']/@value"></xsl:variable><xsl:variable name="vpDeviceToken" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='DeviceToken']/@value"></xsl:variable><xsl:variable name="vpDocEntry" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='DocEntry']/@value"></xsl:variable><xsl:variable name="vpDocType" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='DocType']/@value"></xsl:variable><xsl:variable name="vpItemCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='ItemCode']/@value"></xsl:variable><xsl:variable name="vpitemCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='itemCode']/@value"></xsl:variable><xsl:variable name="vpKeyword" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='Keyword']/@value"></xsl:variable><xsl:variable name="vplistNum" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='listNum']/@value"></xsl:variable><xsl:variable name="vpLogin" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='Login']/@value"></xsl:variable><xsl:variable name="vpName" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='Name']/@value"></xsl:variable><xsl:variable name="vpOpprId" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='OpprId']/@value"></xsl:variable><xsl:variable name="vpPage" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='Page']/@value"></xsl:variable><xsl:variable name="vpPageIndex" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='PageIndex']/@value"></xsl:variable><xsl:variable name="vpPageSize" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='PageSize']/@value"></xsl:variable><xsl:variable name="vpPageTop" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='PageTop']/@value"></xsl:variable><xsl:variable name="vpServiceCallID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='ServiceCallID']/@value"></xsl:variable><xsl:variable name="vpsql" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='sql']/@value"></xsl:variable><xsl:variable name="vptablekeynames" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='tablekeynames']/@value"></xsl:variable><xsl:variable name="vptablekeyvalues" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='tablekeyvalues']/@value"></xsl:variable><xsl:variable name="vptablename" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='tablename']/@value"></xsl:variable><xsl:variable name="vpViewMode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='ViewMode']/@value"></xsl:variable><xsl:variable name="vpLinesLimit" select="/vpf:Msg/vpf:Header/vpf:Properties/vpf:prop[./@id='LinesLimit']/@value"></xsl:variable><xsl:template match="/">
<Msg xmlns="urn:com.sap.b1i.vplatform:entity">
<xsl:copy-of select="/vpf:Msg/@*"></xsl:copy-of>
<xsl:copy-of select="/vpf:Msg/vpf:Header"></xsl:copy-of>
<Body>
<xsl:copy-of select="/vpf:Msg/vpf:Body/*"></xsl:copy-of>
<Payload Role="X" id="{$atom}">
<xsl:call-template name="transform"></xsl:call-template>
</Payload>
</Body>
</Msg>
</xsl:template><xsl:template name="transform">
<xsl:variable name="userid" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='userid']/@value"></xsl:variable>
<xsl:choose>
<xsl:when test="/vpf:Msg/vpf:Body/vpf:Payload[./@Role='S']/b1mb:GetMessageList/b1mb:Top">
<xsl:variable name="top" select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role='S']/b1mb:GetMessageList/b1mb:Top"></xsl:variable>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="top" select="50"></xsl:variable>
</xsl:otherwise>
</xsl:choose>
<sql xmlns="">
#SELECT TOP <xsl:value-of select="$top"></xsl:value-of>
OALR."Code" AS "code",
OALR."Type" AS "type",
OALR."Priority" AS "priority",
OALR."Subject" AS "subject",
OAIB."RecDate" AS "recdate",
OAIB."RecTime" AS "recTime",
OUSR."USER_CODE" AS "user_code",
OAIB."WasRead" AS "wasread"
FROM OALR
JOIN ALR3 ON OALR."Code" = ALR3."Code"
INNER JOIN OAIB ON OAIB."AlertCode" = OALR."Code"
LEFT JOIN OUSR ON OALR."UserSign" = OUSR."USERID"
WHERE OAIB."UserSign" =
'<xsl:value-of select="$userid"></xsl:value-of>'
AND OALR."Type"='M'
AND ALR3."ObjType"='122'
ORDER BY OAIB."RecDate" DESC,
OAIB."RecTime" DESC,
OALR."Priority" DESC,
OAIB."WasRead" DESC;
UPDATE OAIB
SET "Opened" = 'Y'
FROM OAIB
INNER JOIN OALR ON OAIB."AlertCode" = OALR."Code"
WHERE (OALR."Type" = 'M')
AND OAIB."UserSign"='<xsl:value-of select="$userid"></xsl:value-of>';
</sql>
</xsl:template></xsl:stylesheet>
En el nodo <sql> se encuentra la consulta que retorna los valores, puedes editarla, salvas los cambios, comprimes la carpeta vPac.sap.B1Mobile en un archivo .zip y luego vas al B1if y lo importas.
Saludos
Message was edited by: Felipe Loyola
User | Count |
---|---|
107 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.