cancel
Showing results for 
Search instead for 
Did you mean: 

Ver informes de autorización en dispositivos moviles

JULIAN21989
Participant
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

JULIAN21989
Participant
0 Kudos

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,

felipe_loyolarodriguez
Active Contributor
0 Kudos

Puedes modificar los filtros (where)  de la query que retorna las autorizaciones desde el b1if.

Atte.

JULIAN21989
Participant
0 Kudos

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,

felipe_loyolarodriguez
Active Contributor
0 Kudos

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=&apos;S&apos;]"></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=&apos;P&apos;]/@Id"></xsl:variable><xsl:variable name="vpActivityCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;ActivityCode&apos;]/@value"></xsl:variable><xsl:variable name="vpAddonType" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;AddonType&apos;]/@value"></xsl:variable><xsl:variable name="vpAlertID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;AlertID&apos;]/@value"></xsl:variable><xsl:variable name="vpAttachmentEntry" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;AttachmentEntry&apos;]/@value"></xsl:variable><xsl:variable name="vpAttachmentLine" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;AttachmentLine&apos;]/@value"></xsl:variable><xsl:variable name="vpAttachmentPath" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;AttachmentPath&apos;]/@value"></xsl:variable><xsl:variable name="vpbpCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;bpCode&apos;]/@value"></xsl:variable><xsl:variable name="vpcallID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;callID&apos;]/@value"></xsl:variable><xsl:variable name="vpCardCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;CardCode&apos;]/@value"></xsl:variable><xsl:variable name="vpCntctCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;CntctCode&apos;]/@value"></xsl:variable><xsl:variable name="vpCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;Code&apos;]/@value"></xsl:variable><xsl:variable name="vpContactPerson" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;ContactPerson&apos;]/@value"></xsl:variable><xsl:variable name="vpContractID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;ContractID&apos;]/@value"></xsl:variable><xsl:variable name="vpCount" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;Count&apos;]/@value"></xsl:variable><xsl:variable name="vpDeviceToken" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;DeviceToken&apos;]/@value"></xsl:variable><xsl:variable name="vpDocEntry" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;DocEntry&apos;]/@value"></xsl:variable><xsl:variable name="vpDocType" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;DocType&apos;]/@value"></xsl:variable><xsl:variable name="vpItemCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;ItemCode&apos;]/@value"></xsl:variable><xsl:variable name="vpitemCode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;itemCode&apos;]/@value"></xsl:variable><xsl:variable name="vpKeyword" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;Keyword&apos;]/@value"></xsl:variable><xsl:variable name="vplistNum" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;listNum&apos;]/@value"></xsl:variable><xsl:variable name="vpLogin" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;Login&apos;]/@value"></xsl:variable><xsl:variable name="vpName" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;Name&apos;]/@value"></xsl:variable><xsl:variable name="vpOpprId" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;OpprId&apos;]/@value"></xsl:variable><xsl:variable name="vpPage" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;Page&apos;]/@value"></xsl:variable><xsl:variable name="vpPageIndex" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;PageIndex&apos;]/@value"></xsl:variable><xsl:variable name="vpPageSize" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;PageSize&apos;]/@value"></xsl:variable><xsl:variable name="vpPageTop" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;PageTop&apos;]/@value"></xsl:variable><xsl:variable name="vpServiceCallID" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;ServiceCallID&apos;]/@value"></xsl:variable><xsl:variable name="vpsql" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;sql&apos;]/@value"></xsl:variable><xsl:variable name="vptablekeynames" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;tablekeynames&apos;]/@value"></xsl:variable><xsl:variable name="vptablekeyvalues" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;tablekeyvalues&apos;]/@value"></xsl:variable><xsl:variable name="vptablename" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;tablename&apos;]/@value"></xsl:variable><xsl:variable name="vpViewMode" select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id=&apos;ViewMode&apos;]/@value"></xsl:variable><xsl:variable name="vpLinesLimit" select="/vpf:Msg/vpf:Header/vpf:Properties/vpf:prop[./@id=&apos;LinesLimit&apos;]/@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=&apos;userid&apos;]/@value"></xsl:variable>

      

        <xsl:choose>

            <xsl:when test="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;S&apos;]/b1mb:GetMessageList/b1mb:Top">

                <xsl:variable name="top" select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;S&apos;]/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.&quot;Code&quot; AS &quot;code&quot;,

            OALR.&quot;Type&quot; AS &quot;type&quot;,

            OALR.&quot;Priority&quot; AS &quot;priority&quot;,

            OALR.&quot;Subject&quot; AS &quot;subject&quot;,

            OAIB.&quot;RecDate&quot; AS &quot;recdate&quot;,

            OAIB.&quot;RecTime&quot; AS &quot;recTime&quot;,

            OUSR.&quot;USER_CODE&quot; AS &quot;user_code&quot;,      

            OAIB.&quot;WasRead&quot; AS &quot;wasread&quot;     

            FROM OALR     

            JOIN ALR3 ON OALR.&quot;Code&quot; = ALR3.&quot;Code&quot;     

            INNER JOIN OAIB ON OAIB.&quot;AlertCode&quot; = OALR.&quot;Code&quot;     

            LEFT JOIN OUSR ON OALR.&quot;UserSign&quot; = OUSR.&quot;USERID&quot;     

            WHERE OAIB.&quot;UserSign&quot; =

            &apos;<xsl:value-of select="$userid"></xsl:value-of>&apos;

            AND OALR.&quot;Type&quot;=&apos;M&apos;

            AND ALR3.&quot;ObjType&quot;=&apos;122&apos;

            ORDER BY OAIB.&quot;RecDate&quot; DESC,

            OAIB.&quot;RecTime&quot; DESC,       

            OALR.&quot;Priority&quot; DESC,       

            OAIB.&quot;WasRead&quot; DESC;

            UPDATE OAIB      

            SET &quot;Opened&quot; = &apos;Y&apos;      

            FROM OAIB      

            INNER JOIN OALR ON OAIB.&quot;AlertCode&quot; = OALR.&quot;Code&quot;      

            WHERE (OALR.&quot;Type&quot; = &apos;M&apos;)      

            AND OAIB.&quot;UserSign&quot;=&apos;<xsl:value-of select="$userid"></xsl:value-of>&apos;;

        </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

JULIAN21989
Participant
0 Kudos

Muchas gracias por el aporte Felipe, todo funciona perfectamente con la solución que nos aportó.

Cordial saludo,

Answers (0)