2006 May 03 12:01 PM
Hi:
i have a problem that i can't resolve.
I have a Workflow that launchs in the event EV_MAIL_ADMIN from Business object YEI7_SPED.
That object has the method YEI7_SPED.MET_ASIGNA_CUENTA
Sincronic and independent of instance.
the code is:
BEGIN_METHOD MET_ASIGNA_CUENTA CHANGING CONTAINER.
DATA:
M_CLAVEORDEN TYPE AFIH-ILART,
T_YYEDIF_AUFNR LIKE YEI7_DAT_ADMIN-YYEDIF_AUFNR.
DATA: CUENTA_CONTABLE TYPE SAKNR.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: MODO TYPE C.
Mensajes del Call Transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
*----
-
*----
-
SWC_GET_ELEMENT CONTAINER 'T_YYEDIF_AUFNR' T_YYEDIF_AUFNR.
SWC_GET_ELEMENT CONTAINER 'M_CLAVEORDEN' M_CLAVEORDEN.
SELECT SINGLE CUENTA
FROM YEI7_CUENTAS
INTO CUENTA_CONTABLE
WHERE CLAVE EQ M_CLAVEORDEN.
if sy-subrc eq 0.
REFRESH BDCDATA.
CLEAR BDCDATA.
BDCDATA-PROGRAM = 'SAPLCOIH'.
BDCDATA-DYNPRO = '0101'.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'BDC_CURSOR'.
BDCDATA-FVAL = 'CAUFVD-AUFNR'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'BDC_OKCODE'.
BDCDATA-FVAL = '/00'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'CAUFVD-AUFNR'.
BDCDATA-FVAL = T_YYEDIF_AUFNR.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-PROGRAM = 'SAPLCOIH'.
BDCDATA-DYNPRO = '3000'.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'BDC_OKCODE'.
BDCDATA-FVAL = '=+CUK'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-PROGRAM = 'SAPLCOIH'.
BDCDATA-DYNPRO = '3000'.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'BDC_OKCODE'.
BDCDATA-FVAL = '=BU'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'BDC_CURSOR'.
BDCDATA-FVAL = 'COCI_AUFK_IMP-YYEDIF_HKONT'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'COCI_AUFK_IMP-YYEDIF_HKONT'.
BDCDATA-FVAL = cuenta_contable.
APPEND BDCDATA.
MODO = 'N'.
COMMIT WORK.
CALL TRANSACTION 'IW32' USING bdcdata MODE modo UPDATE 'S'
MESSAGES INTO messtab.
IF SY-SUBRC <> 0.
EXIT_RETURN 9001 'No se pudo asignar la cuenta'
'Se intentará denuevo mas tarde' SPACE SPACE.
endif.
endif.
END_METHOD.
This method is linked to a task in the WorkFlow in background work.
When the client processes maintenance orders, someones workflows functions ok! but a lot of them fault in that task.
I can't find the problem.
2006 May 03 12:02 PM
Sorry, the code from Badi's method is that.
...
Es la primera vez que se acepta el encargo de obra.
CHECK sy-subrc NE 0.
lw_soxobj-objtype = 'BUS2007'.
lw_soxobj-objkey = lw_header-aufnr.
lw_soxobj-method = 'Edit'.
lv_objet = 'YEI7_SPED'.
lv_key = 'BADI'.
lv_event = 'EV_MAIL_ADMIN'.
CALL FUNCTION 'SWC_ELEMENT_SET'
EXPORTING
element = 'E_SOXOBJ'
field = lw_soxobj
TABLES
container = lt_container.
CALL FUNCTION 'SWE_EVENT_CREATE_IN_UPD_TASK'
EXPORTING
objtype = lv_objet
objkey = lv_key
event = lv_event
TABLES
event_container = lt_container
EXCEPTIONS
objtype_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE w116(yei7).
No se pudo enviar el e-mail a administración.
ENDIF.
CLEAR: lw_header, lw_header_old, lw_status, lw_status_old,
lw_soxobj.
REFRESH: lt_container.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
Thanks
Sergi