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: 

Commit Work in MIGO BADI

Former Member
0 Kudos

Hi,

Can we use COMMIT WORK statement in BADI? Hope its not advisable to use it.

I am using MB_MIGO_BADI~POST_DOCUMENT to update the GR Number in a custom table.

Sometimes the GR number is not getting updated in the custom table.

The modify statement given below does not updates the table sometime.

IF WA_ZMM_GATE_ENTRY-GR_NUMBER IS INITIAL.
      WA_ZMM_GATE_ENTRY-REFERENCE = GS_EXDATA_HEADER-REFERENCE.
      WA_ZMM_GATE_ENTRY-REFWERKS  = GS_EXDATA_HEADER-WERKS.
      WA_ZMM_GATE_ENTRY-GR_NUMBER = IS_MKPF-MBLNR. 
     WA_ZMM_GATE_ENTRY-GR_YEAR   = IS_MKPF-MJAHR.
     MODIFY ZMM_GATE_ENTRY FROM WA_ZMM_GATE_ENTRY .u201Dupdating the Z-table
ELSE.
      MESSAGE E901(ZMM) WITH GS_EXDATA_HEADER-GATEENTRYNO WA_ZMM_GATE_ENTRY-GR_NUMBER.
    ENDIF.

Is there any other option to replace the commit work in BADI?

Plz suggest...

Regards,

P.S.Chitra

Edited by: Chitra Karthik on Aug 10, 2010 11:19 AM

4 REPLIES 4

former_member404244
Active Contributor
0 Kudos

Hi,

I don't think even you do commit work it makes much difference and also Commit work also we can eliminate in the code.one more option is selecting the data from table to check whether it is updated or not.



IF WA_ZMM_GATE_ENTRY-GR_NUMBER IS INITIAL.
      WA_ZMM_GATE_ENTRY-REFERENCE = GS_EXDATA_HEADER-REFERENCE.
      WA_ZMM_GATE_ENTRY-REFWERKS  = GS_EXDATA_HEADER-WERKS.
      WA_ZMM_GATE_ENTRY-GR_NUMBER = IS_MKPF-MBLNR. 
     WA_ZMM_GATE_ENTRY-GR_YEAR   = IS_MKPF-MJAHR.
     MODIFY ZMM_GATE_ENTRY FROM WA_ZMM_GATE_ENTRY .u201Dupdating the Z-table
  IF sy-subrc eq 0.
  do.
select gr_number from ZMM_GATE_ENTRY where reference = GS_EXDATA_HEADER-REFERENCE.
if sy-subrc eq 0 and if gr_number is not initial. (record Found)-> means updated.
exit.
else.
MODIFY ZMM_GATE_ENTRY FROM WA_ZMM_GATE_ENTRY.
endif.
enddo.
endif.



ELSE.
      MESSAGE E901(ZMM) WITH GS_EXDATA_HEADER-GATEENTRYNO WA_ZMM_GATE_ENTRY-GR_NUMBER.
    ENDIF.

Regards,

Nagaraj

SuhaSaha
Advisor
Advisor
0 Kudos

COMMIT WORK is strict NO in BAdI. It might abruptly terminate the current LUW which is definitely no desirable.

Check the method POST_DOCUMENT of the example implementation class CL_EXM_IM_MB_MIGO_BADI. In the example they're updating the tables MIGO_BADI_EXAMPL & MIGO_BADI_EXAMP2 in UPDATE TASK.

Hope this helps.

BR,

Suhas

Former Member
0 Kudos

Hi,

Try using Update and Insert statements instead of Modify Statement.

select gr_number from ZMM_GATE_ENTRY where reference = GS_EXDATA_HEADER-REFERENCE.

if sy-subrc = 0.

Update

else.

Insert

endif.

Thanks,

Venkat

Former Member
0 Kudos

Hi,

NO NEED OF COMMIT IN BADI.

The standard transaction will take care of the commit work.

Thanks

Sabu