Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BADI and WorlFlow

Former Member
0 Kudos
182

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.

1 REPLY 1

Former Member
0 Kudos
70

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