ABAP

ABAP

Badi bulma , user-exit badi bulan program



FIND BADI

Go to transaction SE24
Provide the class name CL_EXITHANDLER
Place a break point at sy-subrc


CALL METHOD cl_exithandler=>get_class_name_by_interface
    EXPORTING
      instance                      = instance
    IMPORTING
      class_name                    = class_name
    CHANGING
      exit_name                     = exit_name
    EXCEPTIONS
      no_reference                  = 1
      no_interface_reference        = 2
      no_exit_interface             = 3
      data_incons_in_exit_managem   = 4
      class_not_implement_interface = 5
      OTHERS                        = 6.
  CASE sy-subrc.


PROGRAM FINDING USER-EXIT & BADI 

tables : tstc,
tadir,
modsapt,
modact,
trdir,
tfdir,
enlfdir,
sxs_attrt ,
tstct.
data : jtab like tadir occurs 0 with header line.
data : field1(30).
data : v_devclass like tadir-devclass.
parameters : p_tcode like tstc-tcode,
p_pgmna like tstc-pgmna .
data wa_tadir type tadir.
start-of-selection.
  if not p_tcode is initial.
    select single * from tstc where tcode eq p_tcode.
  elseif not p_pgmna is initial.
    tstc-pgmna = p_pgmna.
  endif.
  if sy-subrc eq 0.
    select single * from tadir
    where pgmid = 'R3TR'
    and object = 'PROG'
    and obj_name = tstc-pgmna.
    move : tadir-devclass to v_devclass.
    if sy-subrc ne 0.
      select single * from trdir
      where name = tstc-pgmna.
      if trdir-subc eq 'F'.
        select single * from tfdir
        where pname = tstc-pgmna.
        select single * from enlfdir
        where funcname = tfdir-funcname.
        select single * from tadir
        where pgmid = 'R3TR'
        and object = 'FUGR'
        and obj_name eq enlfdir-area.
        move : tadir-devclass to v_devclass.
      endif.
    endif.
    select * from tadir into table jtab
    where pgmid = 'R3TR'
    and object in ('SMOD''SXSD')
    and devclass = v_devclass.
    select single * from tstct
    where sprsl eq sy-langu
    and tcode eq p_tcode.
    format color col_positive intensified off.
    write:/(19'Transaction Code - ',
    20(20) p_tcode,
    45(50) tstct-ttext.
    skip.
    if not jtab[] is initial.
      write:/(105) sy-uline.
      format color col_heading intensified on.
* Sorting the internal Table
      sort jtab by object.
      data : wf_txt(60type c,
      wf_smod type i ,
      wf_badi type i ,
      wf_object2(30type c.
      clear : wf_smod, wf_badi , wf_object2.
* Get the total SMOD.
      loop at jtab into wa_tadir.
        at first.
          format color col_heading intensified on.
          write:/1 sy-vline,
          2 'Enhancement/ Business Add-in',
          41 sy-vline ,
          42 'Description',
          105 sy-vline.
          write:/(105) sy-uline.
        endat.
        clear wf_txt.
        at new object.
          if wa_tadir-object = 'SMOD'.
            wf_object2 = 'Enhancement' .
          elseif wa_tadir-object = 'SXSD'.
            wf_object2 = ' Business Add-in'.
          endif.
          format color col_group intensified on.
          write:/1 sy-vline,
          2 wf_object2,
          105 sy-vline.
        endat.
        case wa_tadir-object.
          when 'SMOD'.
            wf_smod = wf_smod + 1.
            select single modtext into wf_txt
            from modsapt
            where sprsl = sy-langu
            and name = wa_tadir-obj_name.
            format color col_normal intensified off.
          when 'SXSD'.
* For BADis
            wf_badi = wf_badi + 1 .
            select single text into wf_txt
            from sxs_attrt
            where sprsl = sy-langu
            and exit_name = wa_tadir-obj_name.
            format color col_normal intensified on.
        endcase.
        write:/1 sy-vline,
        2 wa_tadir-obj_name hotspot on,
        41 sy-vline ,
        42 wf_txt,
        105 sy-vline.
        at end of object.
          write : /(105) sy-uline.
        endat.
      endloop.
      write:/(105) sy-uline.
      skip.
      format color col_total intensified on.
      write:/ 'No.of Exits:' , wf_smod.
      write:/ 'No.of BADis:' , wf_badi.
    else.
      format color col_negative intensified on.
      write:/(105'No userexits or BADis exist'.
    endif.
  else.
    format color col_negative intensified on.
    write:/(105'Transaction does not exist'.
  endif.
at line-selection.
  data : wf_object type tadir-object.
  clear wf_object.
  get cursor field field1.
  check field1(8eq 'WA_TADIR'.
  read table jtab with key obj_name = sy-lisel+1(20).
  move jtab-object to wf_object.
  case wf_object.
    when 'SMOD'.
      set parameter id 'MON' field sy-lisel+1(10).
      call transaction 'SMOD' and skip first screen.
    when 'SXSD'.
      set parameter id 'EXN' field sy-lisel+1(20).
      call transaction 'SE18' and skip first screen.
  endcase.

No comments:

Post a Comment

Total Pageviews