Aqui os dejo la función que cambia el status de la órdenes de
Mantenimiento y la manera de ejecutarla.
data: i_method type table of bapi_alm_order_method,
w_method type bapi_alm_order_method.
data: i_status type table of bapi_alm_order_usrstat,
w_status type bapi_alm_order_usrstat.
data: i_return type table of bapiret2.
w_method type bapi_alm_order_method.
data: i_status type table of bapi_alm_order_usrstat,
w_status type bapi_alm_order_usrstat.
data: i_return type table of bapiret2.
* Empezamos rellenando la table i_method de la siguiente manera
w_method-refnumber = '000001'.
w_method-objecttype = 'USERSTATUS'.
w_method-method = 'CHANGE'.
w_method-objectkey = w_afko-aufnr. “(órden que queremos modificar)
append w_method to i_method.
clear w_method.
w_method-refnumber = '000001'.
w_method-objecttype = 'USERSTATUS'.
w_method-method = 'CHANGE'.
w_method-objectkey = w_afko-aufnr. “(órden que queremos modificar)
append w_method to i_method.
clear w_method.
w_method-refnumber = '000002'.
w_method-objecttype = ''.
w_method-method = 'SAVE'.
w_method-objectkey = w_afko-aufnr. “(Misma órden que arriba)
append w_method to i_method.
clear w_method.
tables
it_methods = i_method
it_userstatus = i_status
return = i_return.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.* Cambiamos el status
w_status-user_st_text = 'PRO1' “ Nuevo status que queremos asignar
w_status-langu = sy-langu.
w_status-langu_iso = ''.
w_status-inactive = ''.
w_status-change_event = '01'.
append w_status to i_status.
clear w_status.
Amigo, cuando ejecuto lo que indicas por la transaccion SE37 lo ejecuta sin problemas, pero cuando lo quiero ejecutar desde un programa externo (ingresando exactamente la misma informacion), me muestra el siguiente mensaje :
ResponderEliminar"El status de usuario REVI no existe para el esquema de status PMST_ORD."
REVI es el estado que quiero actualizar...pero PMST_ORD no se que significa.
Alguna idea?
Saludos.
aqui mi codigo :
ResponderEliminarDim sd As IRfcFunction = repositorio.CreateFunction("BAPI_ALM_ORDER_MAINTAIN")
OM = Me.gvOrdenMante.DataKeys(Fila.RowIndex).Item("OM")
Dim IRfcMetodo As IRfcTable = sd.GetTable("IT_METHODS")
Dim IRfcEstatus As IRfcTable = sd.GetTable("IT_USERSTATUS")
IRfcMetodo.Append()
IRfcMetodo.SetValue("REFNUMBER", "000001")
IRfcMetodo.SetValue("OBJECTTYPE", "USERSTATUS")
IRfcMetodo.SetValue("METHOD", "CHANGE")
IRfcMetodo.SetValue("OBJECTKEY", OM)
IRfcMetodo.Append()
IRfcMetodo.SetValue("REFNUMBER", "000002")
IRfcMetodo.SetValue("OBJECTTYPE", "")
IRfcMetodo.SetValue("METHOD", "SAVE")
IRfcMetodo.SetValue("OBJECTKEY", OM)
IRfcEstatus.Append()
IRfcEstatus.SetValue("USER_ST_TEXT", "REVI")
IRfcEstatus.SetValue("LANGU", "ES")
IRfcEstatus.SetValue("LANGU_ISO", "")
IRfcEstatus.SetValue("INACTIVE", "")
IRfcEstatus.SetValue("CHANGE_EVENT", "01")
sd.Invoke(ConxSap)
Dim IRfcResultado As IRfcTable = sd.GetTable("RETURN")