PDA

Ver la Versión Completa : Problema curioso en llamada a BAPI desde VB


henryq
06/05/10, 13:53:02
Hola.

Esto realizando una llamada a una BAPI para obtener el listado de proyectos definidos en SAP y mostrarlos en una report hecho con Visual Studio.
El problema es que la bapi tiene como parametro TABLES una tabla para insertar rangos de seleccion (como SELECT-OPTIONS).

Pues bien, estoy introduciendo:
ORDEN.Value(1, "SIGN") = "I"
ORDEN.Value(1, "OPTION") = "CP"
ORDEN.Value(1, "LOW") = "P/ETO/" (Este es el inicio del código de proyecto según la máscara)

Pero no selecciona nada.

Sin embargo si informo la tabla de la siguiete forma:
ORDEN.Value(1, "SIGN") = "I"
ORDEN.Value(1, "OPTION") = "CP"
ORDEN.Value(1, "LOW") = "P*ETO*"

Entonces si obtengos registros en la selección.

En SAP ejecuto la BAPI con ambos parámetros de seleccion y en ambos casos encuentro registros. Ademas exites proyectos que empiezan por "P/ETO/"

Está claro que el problema está en el "/". ¿Alguien sabe por qué me ocurre esto, ó alguna vez tuvo un problema parecido?
Gracias

sapclen
20/07/10, 16:16:18
Al invocar el objeto BAPI_ACC_DOCUMENT_POST no guarda datos en la tabla BKPF y BSEG, pero si genera el numero de documento, el cual da como respuesta.

Mi codigo es el siguiente, alguna idea??

Set objbapiacc = SAPConn.Add("BAPI_ACC_DOCUMENT_POST")

Set objDocumentHeader = objbapiacc.Exports("DOCUMENTHEADER")

' Datos de DocumentHeader

objDocumentHeader.Value("BUS_ACT") = "RFBU"
objDocumentHeader.Value("USERNAME") = "RY06336"
objDocumentHeader.Value("HEADER_TXT") = ActiveSheet.Cells(4, 7).Value
objDocumentHeader.Value("COMP_CODE") = "0876"
objDocumentHeader.Value("DOC_DATE") = CDate("05/07/2010")
objDocumentHeader.Value("PSTNG_DATE") = CDate("05/07/2010")
objDocumentHeader.Value("TRANS_DATE") = CDate("05/07/2010")
objDocumentHeader.Value("FISC_YEAR") = 2010
objDocumentHeader.Value("FIS_PERIOD") = 7
objDocumentHeader.Value("DOC_TYPE") = "PM"
objDocumentHeader.Value("REF_DOC_NO") = ActiveSheet.Cells(4, 2).Value


' Datos para accountgl

Set objaccountgl = objbapiacc.Tables("ACCOUNTGL")

objaccountgl.AppendRow
objaccountgl.Value(1, "ITEMNO_ACC") = 1
objaccountgl.Value(1, "GL_ACCOUNT") = "5731105561"
objaccountgl.Value(1, "ITEM_TEXT") = "TRANSFERENCIA BCO CONTINENTAL A BCP"
objaccountgl.Value(1, "REF_KEY_3") = "CONTINENTAL A BCP"
objaccountgl.Value(1, "ACCT_TYPE") = "S"
objaccountgl.Value(1, "COMP_CODE") = "0876"
objaccountgl.Value(1, "BUS_AREA") = "EC00"
objaccountgl.Value(1, "FIS_PERIOD") = 7
objaccountgl.Value(1, "FISC_YEAR") = 2010
objaccountgl.Value(1, "PSTNG_DATE") = CDate("05/07/2010")
objaccountgl.Value(1, "VALUE_DATE") = CDate("05/07/2010")


' Datos para accountreceivable

Set objaccountreceivable = objbapiacc.Tables("ACCOUNTRECEIVABLE")

objaccountreceivable.AppendRow
objaccountreceivable.Value(1, "ITEMNO_ACC") = 1
objaccountreceivable.Value(1, "GL_ACCOUNT") = "5731105561"
objaccountreceivable.Value(1, "REF_KEY_3") = "CONTINENTAL A BCP"
objaccountreceivable.Value(1, "COMP_CODE") = "0876"
objaccountreceivable.Value(1, "BUS_AREA") = "EC00"
objaccountreceivable.Value(1, "ITEM_TEXT") = "TRANSFERENCIA DE BCO CONTINENTAL A BCP"
objaccountreceivable.Value(1, "PYMT_CUR_ISO") = "PES"
objaccountreceivable.Value(1, "PYMT_AMT") = 4.1

' Datos para objaccountpayable

Set objaccountpayable = objbapiacc.Tables("ACCOUNTPAYABLE")

objaccountpayable.AppendRow
objaccountpayable.Value(1, "ITEMNO_ACC") = 1
objaccountpayable.Value(1, "GL_ACCOUNT") = "5731105561"
objaccountpayable.Value(1, "REF_KEY_3") = "CONTINENTAL A BCP"
objaccountpayable.Value(1, "COMP_CODE") = "0876"
objaccountpayable.Value(1, "BUS_AREA") = "EC00"
objaccountpayable.Value(1, "ITEM_TEXT") = "TRANSFERENCIA DE BCO CONTINENTAL A BCP"
objaccountpayable.Value(1, "PYMT_CUR_ISO") = "PES"
objaccountpayable.Value(1, "PYMT_AMT") = 4.1

Set objcurrencyamount = objbapiacc.Tables("CURRENCYAMOUNT")

objcurrencyamount.AppendRow
objcurrencyamount.Value(1, "ITEMNO_ACC") = 1
objcurrencyamount.Value(1, "CURR_TYPE") = 30
objcurrencyamount.Value(1, "CURRENCY") = "PES"


objbapiacc.Call

Dim objwait As Object
Set objbapicommit = SAPConn.Add("BAPI_TRANSACTION_COMMIT")
Set objwait = objbapicommit.Exports("WAIT")
objwait.Value = "X"

objbapicommit.Call

Dim objreturn As Object
Set objreturn = objbapiacc.Tables("RETURN")

Set objkey = objbapiacc.Imports("OBJ_KEY")

Dim mensaje As String
mensaje = CStr(objkey)


If mensaje = "$" Then
Call DisplayError(objreturn)
Set objbapirollback = SAPConn.Add("BAPI_TRANSACTION_ROLLBACK")
objbapirollback.Call

End If


'SAPConn.Logoff
Set objbapiacc = Nothing
Set SAPConn = Nothing