Ayuda SAP

Sap. sdk devolver precio y dcto articulo pr clien

Buenos dias.

me interesa utilizar la sdk para que introduciendole cliente, articulo y cantidad, me devuelva precio y dcto.
es posible??
ese precio y dcto en teoria debe de ser el mismo que al crear un pedido de ventas para ese cliente y cantidad de articulo.
dicho de otra forma, sap permite configurar su sistema se tarifas de diversas maneras… . y quiero utilizar la sdk para que me devuelva esos datos, como si fuera un pedido de venta…
entiendo que necesito enviarle:cliente, articulo, cantidad moneda? direccion facturacion? y me debe de devolver precio y dcto.

la pregunta, es posible? si, es posible, creas un nuevo documento, y agregas en el objeto lineas el codigo de item, y este tomara la determinación de precios configurada. Ahora sin SDK con query tambien puedes sacar el precio determinado con los parametros que indicas (Fecha, cliente, articulo, cantidad), ah no ser que usen realmente todas las opciones de determinación de precios, precios especiales, precios por volumen y por temporadas, grupos de descuentos, precios de acuerdos, en ese caso elquery puede ser muy complejo.
Tambien tienes una funcion a nivel del objeto de conexion general en SDK, GetItemPrice, aqui va un ejemplo de como usarlo:

Public Sub TestMethod_GetItemPrice(ByVal cardCode As String, ByVal itemCode As String, ByVal amount As Single, ByVal refDate As Date)
Dim vObj As SAPbobsCOM.SBObob
Dim rs As SAPbobsCOM.Recordset
Dim strResult As String
Dim errResult As String
Set vObj =m_company. GetBusinessObject(BoBridge)
Set rs =m_company. GetBusinessObject(BoRecordset)
Set rs = vObj.GetItemPrice(cardCode, itemCode, amount, refDate)
strResult = RecorsetToText(rs)
errResult = GetLastErrorString()
OutputMessage(strResult, errResult)
End Sub

Espero te sirva alguna de las opciones.

Saludos,

buenos dias.
primero de todo. gracias por responder.
el problema es que nuestro proceso utiliza sql pero en ese proyecto tarda 24h en el calculo de precio. su motor es hana y tocar eso es delicado.
mirare lo que me propones.
esa llamada de sdk es la que realiza el pedido internamente?
gracias

si, esa llamada es con el precio determinado de forma estandar.

Buenos días
He probado y me funciona correctamente.

GetItemPrice me devuelve el precio neto con dcto aplicado.
Es posible obtener el precio bruto (precio y dcto separado) como hace el pedido de cliente de SAP.
Seria el precio bruto aplicado al cliente/articulo/cantidad/fecha?

He rebuscado mas informado y probado este metodo:
rtnParams = oCompany.GetCompanyService().GetItemPrice(params)

params = oCompany.GetCompanyService.GetDataInterface(SAPbobsCOM.CompanyServiceDataInterfaces.csdiItemPriceParams)

        params.CardCode = sCliente
        params.ItemCode = sArticulo
        params.UoMEntry = 1
        params.UoMQuantity = dCantidad
        params.Date = dFecha
        params.PriceList = 1
        params.BlanketAgreementNumber = 2
        params.BlanketAgreementLine = 1
        rtnParams = oCompany.GetCompanyService.GetDataInterface(SAPbobsCOM.CompanyServiceDataInterfaces.csdiItemPriceReturnParams)
        rtnParams = oCompany.GetCompanyService().GetItemPrice(params)

al ajecutar Getitemprice me devuelve el error:
System.Runtime.InteropServices.COMException (0xFFFFEC76): Internal error (-5002) occurred
en SAPbobsCOM.ICompanyService.GetItemPrice(ItemPriceParams pIItemPriceParams)

alguna idea de como solucionarlo?
gracias de antemano

solucionado. he ido quitandole parametros inncesarios y ya no aparece el error -5002

1 me gusta

Buenos dias
Via DIAPI tengo ya realizado el proceso pero para 600 clientes y 20.000 articulos me tarda como 5dias en calcularlo…que es inviable.
Le envio cliente, fecha, articulo,cantidad y me devuelve precio y dcto. Y haciendo cuentas, tarda unos 5 dias…

Se te ocurre, otro método(que no sea SQL) que pueda ser mas eficiente utilizando la DIAPI?

Muchas gracias!

Sinceramente lo mas rápido siempre sera el acceso directo SQL que incluso podrías atrapar el query que usa la llamada de la función GetItemPrice, si usas SQL Server haces un trace desde “SQL Server profiler” y si usas Hana desde Hana Studio “Administration” --> “Perfomance” --> “SQL Plan Cache”.

De todas manera revisa el código que usas para al llamar la función, que solo abras una conexión al inicio y no por cada llamada, trata de usarlo cuando tengas menos carga tu servidor, y por ultimo intenta usar variables ajustadas y evitar conversiones de datos al máximo. Sinembargo tanto DIAPI como UIAPI tienen fama de ser lentos, en teoria DI Server usando SOAP es mas rapido, pero tampoco es que sea tanto.

Saludos,

1 me gusta

ok gracias, revisare el proceso desde el sql profiler a ver que salta.
Sobre la DIAPI las llamadas son las mas ajustadas.
Lo unico que puedo hacer es agrupar condiciones de articulos, pero para eso volveria al punto 0 que es hacer un calculo de tarifas SQL y eso es lo que no quiero realizar…
Gracias por la ayuda