Ver Mensaje Individual
  #1  
Viejo 07/05/12, 10:35:12
rogerclavell rogerclavell is offline
Junior Member
 
Fecha de Ingreso: may 2012
Mensajes: 7
Ejemplo BAPI_PRODORDCONF_CREATE_TT y BAPI_GOODSMVT_CREATE

Hola gente,

Os paso un ejemplo de como utilizar las bapis BAPI_PRODORDCONF_CREATE_TT y BAPI_GOODSMVT_CREATE. Esta hecho de manera rápida simplemente para ver que funciona.

Para programar he utilizado el VS2010 y el connector sap 3.0

Imports SAP.Middleware.Connector

Private Sub notificar()

'Parametros de conexión de SAP
Dim SapParametros As New RfcConfigParameters
SapParametros(RfcConfigParameters.User) = "tu_usuario"
SapParametros(RfcConfigParameters.Password) = "tu_password"
SapParametros(RfcConfigParameters.SystemID) = "sap_maquina"
SapParametros(RfcConfigParameters.Client) = "sap_mandante"
SapParametros(RfcConfigParameters.Name) = "sap_groupname"
SapParametros(RfcConfigParameters.AppServerHost) = "sap_ip"
SapParametros(RfcConfigParameters.SystemNumber) = "sap_numero_systema"
SapParametros(RfcConfigParameters.Language) = "ES"


Try
'Conexión SAP
Dim destino As RfcDestination
destino = RfcDestinationManager.GetDestination(SapParametros)


'Nueva función para ejecutar la BAPI_PRODORDCONF_CREATE_TT
Dim funcion As IRfcFunction = destino.Repository.CreateFunction("BAPI_PRODORDCONF_CREATE_TT")

'Notificaciones para guardar en SAP
Dim tbl_TIMETICKETS As IRfcTable = funcion.GetTable("TIMETICKETS")
tbl_TIMETICKETS.Append()
tbl_TIMETICKETS.SetValue("ORDERID", "000001001811") 'Orden de fabricación
tbl_TIMETICKETS.SetValue("SEQUENCE", "000000") 'Sequencia
tbl_TIMETICKETS.SetValue("OPERATION", "0010") 'Operación
tbl_TIMETICKETS.SetValue("WORK_CNTR", "puesto_trabajo") 'Puesto de trabajo
tbl_TIMETICKETS.SetValue("PLANT", "sap_centro") 'Centro
tbl_TIMETICKETS.SetValue("YIELD", "400") 'Cantidad buena
tbl_TIMETICKETS.SetValue("CONF_ACTIVITY1", "5") 'Tiempo a notificar
tbl_TIMETICKETS.SetValue("RECORDTYPE", "L20")
tbl_TIMETICKETS.SetValue("FIN_CONF", "")
tbl_TIMETICKETS.SetValue("POSTG_DATE", Format(Now, "yyyyMMdd")) 'Fecha contable
tbl_TIMETICKETS.SetValue("DEV_REASON", "P010")
tbl_TIMETICKETS.SetValue("SCRAP", "2") 'Cantidad de rotura
tbl_TIMETICKETS.SetValue("CONF_TEXT", "PRUEBAS") 'Texto notificación


'Ejecutar la BAPI
Dim ejecuta As New RfcTransaction
funcion.Invoke(destino)
ejecuta.AddFunction(funcion)
ejecuta.Commit(destino)

'Resultados de la BAPI
Dim tbl_DETAIL_RETURN As IRfcTable = funcion.GetTable("DETAIL_RETURN")



'Nueva función para ejecutar la BAPI_GOODSMVT_CREATE
Dim funcion2 As IRfcFunction = destino.Repository.CreateFunction("BAPI_GOODSMVT_CREATE")

'Parametros de GOODSMVT_HEADER
Dim str_GOODSMVT_HEADER As IRfcStructure = funcion2.GetStructure("GOODSMVT_HEADER")
str_GOODSMVT_HEADER.SetValue("PSTNG_DATE", Format(Now, "yyyyMMdd"))
str_GOODSMVT_HEADER.SetValue("DOC_DATE", Format(Now, "yyyyMMdd"))
str_GOODSMVT_HEADER.SetValue("PR_UNAME", "rfcuser")

'Parametros de GOODSMVT_CODE
Dim str_GOODSMVT_CODE As IRfcStructure = funcion2.GetStructure("GOODSMVT_CODE")
str_GOODSMVT_CODE.SetValue("GM_CODE", "02")

'Movimientos de mercancia a generar en SAP
Dim tbl_GOODSMVT_ITEM As IRfcTable = funcion2.GetTable("GOODSMVT_ITEM")
tbl_GOODSMVT_ITEM.Append()
tbl_GOODSMVT_ITEM.SetValue("MATERIAL", "000000000100010264") 'Material
tbl_GOODSMVT_ITEM.SetValue("PLANT", "sap_centro") 'Centro
tbl_GOODSMVT_ITEM.SetValue("STGE_LOC", "sap_almacen") 'Almacén
tbl_GOODSMVT_ITEM.SetValue("BATCH", "lote_material") 'Lote
tbl_GOODSMVT_ITEM.SetValue("MOVE_TYPE", "901") 'Tipo mov.
tbl_GOODSMVT_ITEM.SetValue("MVT_IND", "F") 'Indicador mov.
tbl_GOODSMVT_ITEM.SetValue("STCK_TYPE", "F") 'T.Stock
tbl_GOODSMVT_ITEM.SetValue("ORDERID", "000001001811") 'Orden de fabricación
tbl_GOODSMVT_ITEM.SetValue("ENTRY_QNT", "400") 'Cantidad
tbl_GOODSMVT_ITEM.SetValue("ENTRY_UOM", "PZS") 'UMB

'Ejecutar la BAPI
Dim ejecuta2 As New RfcTransaction
funcion2.Invoke(destino)
ejecuta2.AddFunction(funcion2)
ejecuta2.Commit(destino)

'Resultado de la ejecución
Dim tbl_RETURN As IRfcTable = funcion2.GetTable("RETURN")

Catch ex As Exception
MsgBox(ex.ToString)
End Try

End Sub


Espero sirva de ayuda para la gente que esta empezando, como yo.
Responder Con Cita