<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: user-exit in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306315#M160169</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for finding user exit use this program,it'll list u all the enhancement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Report  ZPJA_PM002 (V2)                                            &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Text Elements:                                                     &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_DEVC Show user-exits from development class                      &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_LIMIT Limit submit program selection                             &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_FUNC Show function modules                                       &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_SUBM Show submit programs                                        &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; S01    Selection data (TCode takes precedence  over program name)  &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;report  zpja_pm002&lt;/P&gt;&lt;P&gt;  no standard page heading&lt;/P&gt;&lt;P&gt;  line-size 158.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*tables: enlfdir.     "Additional Attributes for Function Modules&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tabix      like sy-tabix,&lt;/P&gt;&lt;P&gt;      w_linnum   type i,&lt;/P&gt;&lt;P&gt;      w_off      type i,&lt;/P&gt;&lt;P&gt;      w_index    like sy-tabix,&lt;/P&gt;&lt;P&gt;      w_include  like trdir-name,&lt;/P&gt;&lt;P&gt;      w_prog     like trdir-name,&lt;/P&gt;&lt;P&gt;      w_incl     like trdir-name,&lt;/P&gt;&lt;P&gt;      w_area     like rs38l-area,&lt;/P&gt;&lt;P&gt;      w_level,&lt;/P&gt;&lt;P&gt;      w_str(50)  type c,&lt;/P&gt;&lt;P&gt;      w_funcname like tfdir-funcname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;constants: c_fmod(40) type c value 'Function modules selected: ',&lt;/P&gt;&lt;P&gt;           c_subm(40) type c value 'Submit programs selected: ',&lt;/P&gt;&lt;P&gt;           c_col1(12) type c value 'Enhanmt Type',&lt;/P&gt;&lt;P&gt;           c_col2(40) type c value 'Enhancement',&lt;/P&gt;&lt;P&gt;           c_col3(30) type c value 'Program/Include',&lt;/P&gt;&lt;P&gt;           c_col4(20) type c value 'Enhancement Name',&lt;/P&gt;&lt;P&gt;           c_col5(40) type c value 'Enhancement Description'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: ABAP Workbench&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_d010inc.&lt;/P&gt;&lt;P&gt;data: master type d010inc-master.&lt;/P&gt;&lt;P&gt;data: end of wa_d010inc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tfdir.&lt;/P&gt;&lt;P&gt;data: funcname type tfdir-funcname,&lt;/P&gt;&lt;P&gt;      pname    type tfdir-pname,&lt;/P&gt;&lt;P&gt;      include  type tfdir-include.&lt;/P&gt;&lt;P&gt;data: end of wa_tfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tadir.&lt;/P&gt;&lt;P&gt;data: devclass type tadir-devclass.&lt;/P&gt;&lt;P&gt;data: end of wa_tadir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tstc.&lt;/P&gt;&lt;P&gt;data: pgmna type tstc-pgmna.&lt;/P&gt;&lt;P&gt;data: end of wa_tstc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tstcp.&lt;/P&gt;&lt;P&gt;data: param type tstcp-param.&lt;/P&gt;&lt;P&gt;data: end of wa_tstcp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_enlfdir.&lt;/P&gt;&lt;P&gt;data: area type enlfdir-area.&lt;/P&gt;&lt;P&gt;data: end of wa_enlfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: BADIs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_sxs_attr.&lt;/P&gt;&lt;P&gt;data: exit_name type sxs_attr-exit_name.&lt;/P&gt;&lt;P&gt;data: end of wa_sxs_attr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_sxs_attrt.&lt;/P&gt;&lt;P&gt;data: text type sxs_attrt-text.&lt;/P&gt;&lt;P&gt;data: end of wa_sxs_attrt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: Enhancements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_modsap.&lt;/P&gt;&lt;P&gt;data: member type modsap-member.&lt;/P&gt;&lt;P&gt;data: end of wa_modsap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_modsapa.&lt;/P&gt;&lt;P&gt;data: name type modsapa-name.&lt;/P&gt;&lt;P&gt;data: end of wa_modsapa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_modsapt.&lt;/P&gt;&lt;P&gt;data: modtext type modsapt-modtext.&lt;/P&gt;&lt;P&gt;data: end of wa_modsapt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: Business Transaction Events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_tbe01t.&lt;/P&gt;&lt;P&gt;data: text1 type tbe01t-text1.&lt;/P&gt;&lt;P&gt;data: end of wa_tbe01t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tps01t.&lt;/P&gt;&lt;P&gt;data: text1 type tps01t-text1.&lt;/P&gt;&lt;P&gt;data: end of wa_tps01t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user-exits&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_userexit,&lt;/P&gt;&lt;P&gt;      type(12) type c,&lt;/P&gt;&lt;P&gt;      pname    like trdir-name,&lt;/P&gt;&lt;P&gt;      txt(300),&lt;/P&gt;&lt;P&gt;      level    type c,&lt;/P&gt;&lt;P&gt;      modname(30) type c,&lt;/P&gt;&lt;P&gt;      modtext(40) type c,&lt;/P&gt;&lt;P&gt;end of t_userexit.&lt;/P&gt;&lt;P&gt;data: i_userexit type standard table of t_userexit with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function module developmnet classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_devclass,&lt;/P&gt;&lt;P&gt;      clas   like trdir-clas,&lt;/P&gt;&lt;P&gt;end of t_devclass.&lt;/P&gt;&lt;P&gt;data: i_devclass type standard table of t_devclass with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Submit programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_submit,&lt;/P&gt;&lt;P&gt;      pname     like trdir-name,&lt;/P&gt;&lt;P&gt;      level,&lt;/P&gt;&lt;P&gt;      done,&lt;/P&gt;&lt;P&gt;end of t_submit.&lt;/P&gt;&lt;P&gt;data: i_submit type standard table of t_submit with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Source code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_sourcetab,                        "#EC * (SLIN lügt!)&lt;/P&gt;&lt;P&gt;        line(200),                                  "#EC * (SLIN lügt!)&lt;/P&gt;&lt;P&gt;      end of t_sourcetab.                           "#EC * (SLIN lügt!)&lt;/P&gt;&lt;P&gt;data: sourcetab type standard table of t_sourcetab with header line.&lt;/P&gt;&lt;P&gt;data c_overflow(30000) type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Description of an ABAP/4 source analysis token&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: i_stoken type standard table of stokex with header line.&lt;/P&gt;&lt;P&gt;data wa_stoken like i_stoken.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Description of an ABAP/4 source analysis statement&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: i_sstmnt type standard table of sstmnt with header line."#EC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;keywords for searching ABAP code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_keywords,&lt;/P&gt;&lt;P&gt;      word(30),&lt;/P&gt;&lt;P&gt;end of t_keywords.&lt;/P&gt;&lt;P&gt;data: keywords type standard table of t_keywords with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;function modules within program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_fmodule,&lt;/P&gt;&lt;P&gt;      name   like rs38l-name,&lt;/P&gt;&lt;P&gt;      pname  like trdir-name,&lt;/P&gt;&lt;P&gt;      pname2 like trdir-name,&lt;/P&gt;&lt;P&gt;      level,&lt;/P&gt;&lt;P&gt;      bapi,&lt;/P&gt;&lt;P&gt;      done,&lt;/P&gt;&lt;P&gt;end of t_fmodule.&lt;/P&gt;&lt;P&gt;data: i_fmodule type standard table of t_fmodule with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Selection Options                                                  &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;selection-screen begin of block selscr1 with frame title text-s01.&lt;/P&gt;&lt;P&gt;parameter: p_pname like trdir-name memory id rid,&lt;/P&gt;&lt;P&gt;           p_tcode like syst-tcode,&lt;/P&gt;&lt;P&gt;           p_limit(4) type n default 100,&lt;/P&gt;&lt;P&gt;           p_devc  like rihea-dy_ofn default ' ',&lt;/P&gt;&lt;P&gt;           p_func  like rihea-dy_ofn default ' ',&lt;/P&gt;&lt;P&gt;           p_subm  like rihea-dy_ofn default ' '.&lt;/P&gt;&lt;P&gt;selection-screen end of block selscr1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; START-OF-SELECTION                                                 &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_pname is initial and p_tcode is initial.&lt;/P&gt;&lt;P&gt;    message e008(hrfpm).  "Make entry on the selection screen&lt;/P&gt;&lt;P&gt;    stop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ensure P_LIMIT is not zero.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if p_limit = 0.&lt;/P&gt;&lt;P&gt;    p_limit = 1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform data_select.&lt;/P&gt;&lt;P&gt;  perform get_submit_data.&lt;/P&gt;&lt;P&gt;  perform get_fm_data.&lt;/P&gt;&lt;P&gt;  perform get_additional_data.&lt;/P&gt;&lt;P&gt;  perform data_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form DATA_SELECT                                                   &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form data_select.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get programs/includes'       "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;determine search words&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  keywords-word = 'CALL'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'FORM'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'PERFORM'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'SUBMIT'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'INCLUDE'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not p_tcode is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get program name from TCode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    select single pgmna from tstc into wa_tstc-pgmna&lt;/P&gt;&lt;P&gt;                 where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;    if not wa_tstc-pgmna is initial.&lt;/P&gt;&lt;P&gt;      p_pname = wa_tstc-pgmna.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TCode does not include program name, but does have refereve TCode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      select single param from tstcp into wa_tstcp-param&lt;/P&gt;&lt;P&gt;                   where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        check wa_tstcp-param(1)   = '/'.&lt;/P&gt;&lt;P&gt;        check wa_tstcp-param+1(1) = '*'.&lt;/P&gt;&lt;P&gt;        if wa_tstcp-param ca ' '.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        w_off = sy-fdpos + 1.&lt;/P&gt;&lt;P&gt;        subtract 2 from sy-fdpos.&lt;/P&gt;&lt;P&gt;        if sy-fdpos gt 0.&lt;/P&gt;&lt;P&gt;          p_tcode = wa_tstcp-param+2(sy-fdpos).&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        select single pgmna from tstc into wa_tstc-pgmna&lt;/P&gt;&lt;P&gt;               where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;        p_pname = wa_tstc-pgmna.&lt;/P&gt;&lt;P&gt;        if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;          message e110(/saptrx/asc) with 'No program found for: '&lt;/P&gt;&lt;P&gt;p_tcode."#EC NOTEXT&lt;/P&gt;&lt;P&gt;          stop.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        message e110(/saptrx/asc) with 'No program found for: ' p_tcode.&lt;/P&gt;&lt;P&gt;"#EC NOTEXT&lt;/P&gt;&lt;P&gt;        stop.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Call customer-function aus Program coding&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  read report p_pname into sourcetab.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    message e017(enhancement) with p_pname raising no_program."#EC *&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  scan abap-source sourcetab tokens     into i_stoken&lt;/P&gt;&lt;P&gt;                             statements into i_sstmnt&lt;/P&gt;&lt;P&gt;                             keywords   from keywords&lt;/P&gt;&lt;P&gt;                             overflow into c_overflow&lt;/P&gt;&lt;P&gt;                             with includes.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             WITH ANALYSIS.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if sy-subrc &amp;gt; 0. "keine/syntakt. falsche Ablauflog./Fehler im Skanner&lt;/P&gt;&lt;P&gt;    message e130(enhancement) raising syntax_error.         "#EC *&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check I_STOKEN for entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  clear w_linnum.&lt;/P&gt;&lt;P&gt;  describe table i_stoken lines w_linnum.&lt;/P&gt;&lt;P&gt;  if w_linnum gt 0.&lt;/P&gt;&lt;P&gt;    w_level = '0'.&lt;/P&gt;&lt;P&gt;    w_prog = ''.&lt;/P&gt;&lt;P&gt;    w_incl = ''.&lt;/P&gt;&lt;P&gt;    perform data_search tables i_stoken using w_level w_prog w_incl.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "DATA_SELECT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form GET_FM_DATA                                                   &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form get_fm_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get function module data'    "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function module data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  sort i_fmodule by name.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from i_fmodule comparing name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at i_fmodule where done  ne 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear:   i_stoken, i_sstmnt, sourcetab, wa_tfdir, w_include .&lt;/P&gt;&lt;P&gt;    refresh: i_stoken, i_sstmnt, sourcetab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear wa_tfdir.&lt;/P&gt;&lt;P&gt;    select single funcname pname include from tfdir into wa_tfdir&lt;/P&gt;&lt;P&gt;                            where funcname = i_fmodule-name.&lt;/P&gt;&lt;P&gt;    check sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    call function 'FUNCTION_INCLUDE_SPLIT'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        program = wa_tfdir-pname&lt;/P&gt;&lt;P&gt;      importing&lt;/P&gt;&lt;P&gt;        group   = w_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    concatenate 'L' w_area 'U' wa_tfdir-include into w_include.&lt;/P&gt;&lt;P&gt;    i_fmodule-pname  = w_include.&lt;/P&gt;&lt;P&gt;    i_fmodule-pname2 = wa_tfdir-pname.&lt;/P&gt;&lt;P&gt;    modify i_fmodule.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read report i_fmodule-pname into sourcetab.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      scan abap-source sourcetab tokens     into i_stoken&lt;/P&gt;&lt;P&gt;                                 statements into i_sstmnt&lt;/P&gt;&lt;P&gt;                                 keywords   from keywords&lt;/P&gt;&lt;P&gt;                                 with includes.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        message e130(enhancement) raising syntax_error.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check i_stoken for entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      clear w_linnum.&lt;/P&gt;&lt;P&gt;      describe table i_stoken lines w_linnum.&lt;/P&gt;&lt;P&gt;      if w_linnum gt 0.&lt;/P&gt;&lt;P&gt;        w_level = '1'.&lt;/P&gt;&lt;P&gt;        w_prog  = i_fmodule-pname2.&lt;/P&gt;&lt;P&gt;        w_incl =  i_fmodule-pname.&lt;/P&gt;&lt;P&gt;        perform data_search tables i_stoken using w_level w_prog w_incl.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_devc = 'X'.&lt;/P&gt;&lt;P&gt;    loop at i_fmodule.&lt;/P&gt;&lt;P&gt;      clear: wa_tadir, wa_enlfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single area from enlfdir into wa_enlfdir-area&lt;/P&gt;&lt;P&gt;                            where funcname = i_fmodule-name.&lt;/P&gt;&lt;P&gt;      check not wa_enlfdir-area is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single devclass into wa_tadir-devclass&lt;/P&gt;&lt;P&gt;                      from tadir where pgmid    = 'R3TR'&lt;/P&gt;&lt;P&gt;                                   and object   = 'FUGR'&lt;/P&gt;&lt;P&gt;                                   and obj_name = wa_enlfdir-area.&lt;/P&gt;&lt;P&gt;      check not wa_tadir-devclass is initial.&lt;/P&gt;&lt;P&gt;      move wa_tadir-devclass to i_devclass-clas.&lt;/P&gt;&lt;P&gt;      append i_devclass.&lt;/P&gt;&lt;P&gt;      i_fmodule-done = 'X'.&lt;/P&gt;&lt;P&gt;      modify i_fmodule.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    sort i_devclass.&lt;/P&gt;&lt;P&gt;    delete adjacent duplicates from i_devclass.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "GET_FM_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form GET_SUBMIT_DATA                                               &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form get_submit_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get submit data'             "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort i_submit.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from i_submit comparing pname.&lt;/P&gt;&lt;P&gt;  w_level = '0'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at i_submit where done ne 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear:   i_stoken, i_sstmnt, sourcetab.&lt;/P&gt;&lt;P&gt;    refresh: i_stoken, i_sstmnt, sourcetab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read report i_submit-pname into sourcetab.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      scan abap-source sourcetab tokens     into i_stoken&lt;/P&gt;&lt;P&gt;                                 statements into i_sstmnt&lt;/P&gt;&lt;P&gt;                                 keywords   from keywords&lt;/P&gt;&lt;P&gt;                                 with includes.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       message e130(enhancement) raising syntax_error.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        continue.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check i_stoken for entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      clear w_linnum.&lt;/P&gt;&lt;P&gt;      describe table i_stoken lines w_linnum.&lt;/P&gt;&lt;P&gt;      if w_linnum gt 0.&lt;/P&gt;&lt;P&gt;        w_prog  = i_submit-pname.&lt;/P&gt;&lt;P&gt;        w_incl = ''.&lt;/P&gt;&lt;P&gt;        perform data_search tables i_stoken using w_level w_prog w_incl.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;restrict number of submit program selected for processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    describe table i_submit lines w_linnum.&lt;/P&gt;&lt;P&gt;    if w_linnum ge p_limit.&lt;/P&gt;&lt;P&gt;      w_level = '1'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    i_submit-done = 'X'.&lt;/P&gt;&lt;P&gt;    modify i_submit.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                       "GET_SUBMIT_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form DATA_SEARCH                                                   &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form data_search tables p_stoken structure stoken&lt;/P&gt;&lt;P&gt;                        using p_level p_prog p_incl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at p_stoken.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear i_userexit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tabix = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;    i_userexit-level = p_level.&lt;/P&gt;&lt;P&gt;    if i_userexit-level = '0'.&lt;/P&gt;&lt;P&gt;      if p_incl is initial.&lt;/P&gt;&lt;P&gt;        i_userexit-pname = p_pname.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate  p_pname '/' p_incl into i_userexit-pname.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      if p_incl is initial.&lt;/P&gt;&lt;P&gt;        i_userexit-pname = p_prog.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate  p_prog '/' p_incl into i_userexit-pname.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str eq 'INCLUDE'.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      check not wa_stoken-str cs 'STRUCTURE'.&lt;/P&gt;&lt;P&gt;      check not wa_stoken-str cs 'SYMBOL'.&lt;/P&gt;&lt;P&gt;      read table i_submit with key pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_submit-pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;        i_submit-level = p_level.&lt;/P&gt;&lt;P&gt;        append i_submit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enhancements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str eq 'CUSTOMER-FUNCTION'.&lt;/P&gt;&lt;P&gt;      clear w_funcname.&lt;/P&gt;&lt;P&gt;      read table p_stoken index tabix.&lt;/P&gt;&lt;P&gt;      translate p_stoken-str using ''' '.&lt;/P&gt;&lt;P&gt;      condense p_stoken-str.&lt;/P&gt;&lt;P&gt;      if p_prog is initial.&lt;/P&gt;&lt;P&gt;        concatenate 'EXIT' p_pname p_stoken-str into w_funcname&lt;/P&gt;&lt;P&gt;                     separated by '_'.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate 'EXIT' p_prog p_stoken-str into w_funcname&lt;/P&gt;&lt;P&gt;               separated by '_'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      select single member from modsap into wa_modsap-member&lt;/P&gt;&lt;P&gt;            where member = w_funcname.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.   " check for valid enhancement&lt;/P&gt;&lt;P&gt;        i_userexit-type = 'Enhancement'.&lt;/P&gt;&lt;P&gt;        i_userexit-txt  = w_funcname.&lt;/P&gt;&lt;P&gt;        append i_userexit.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        clear wa_d010inc.&lt;/P&gt;&lt;P&gt;        select single master into wa_d010inc-master&lt;/P&gt;&lt;P&gt;              from d010inc&lt;/P&gt;&lt;P&gt;                 where include = p_prog.&lt;/P&gt;&lt;P&gt;        concatenate 'EXIT' wa_d010inc-master p_stoken-str into&lt;/P&gt;&lt;P&gt;w_funcname&lt;/P&gt;&lt;P&gt;               separated by '_'.&lt;/P&gt;&lt;P&gt;        i_userexit-type = 'Enhancement'.&lt;/P&gt;&lt;P&gt;        i_userexit-txt  = w_funcname.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BADIs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'cl_exithandler='.&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 4.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      i_userexit-txt = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in i_userexit-txt with space.&lt;/P&gt;&lt;P&gt;      i_userexit-type = 'BADI'.&lt;/P&gt;&lt;P&gt;      append i_userexit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Business transaction events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'OPEN_FI_PERFORM'.&lt;/P&gt;&lt;P&gt;      i_userexit-type = 'BusTrEvent'.&lt;/P&gt;&lt;P&gt;      i_userexit-txt = p_stoken-str.&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in i_userexit-txt with space.&lt;/P&gt;&lt;P&gt;      i_userexit-modname =  i_userexit-txt+16(8).&lt;/P&gt;&lt;P&gt;      case i_userexit-txt+25(1).&lt;/P&gt;&lt;P&gt;        when 'E'.&lt;/P&gt;&lt;P&gt;          clear wa_tbe01t.&lt;/P&gt;&lt;P&gt;          select single text1 into wa_tbe01t-text1 from tbe01t&lt;/P&gt;&lt;P&gt;                           where event = i_userexit-txt+16(8)&lt;/P&gt;&lt;P&gt;                             and spras = sy-langu.&lt;/P&gt;&lt;P&gt;          if wa_tbe01t-text1 is initial.&lt;/P&gt;&lt;P&gt;            i_userexit-modtext = ''.            "#EC NOTEXT&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;            i_userexit-modtext = wa_tbe01t-text1.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;          i_userexit-modname+8 = '/P&amp;amp;S'.                    "#EC NOTEXT&lt;/P&gt;&lt;P&gt;        when 'P'.&lt;/P&gt;&lt;P&gt;          clear wa_tps01t.&lt;/P&gt;&lt;P&gt;          select single text1 into wa_tps01t-text1 from tps01t&lt;/P&gt;&lt;P&gt;                           where procs = i_userexit-txt+16(8)&lt;/P&gt;&lt;P&gt;                             and spras = sy-langu.&lt;/P&gt;&lt;P&gt;          i_userexit-modtext = wa_tps01t-text1.&lt;/P&gt;&lt;P&gt;          i_userexit-modname+8 = '/Process'.&lt;/P&gt;&lt;P&gt;      endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      append i_userexit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program exits&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'USEREXIT_'.&lt;/P&gt;&lt;P&gt;      i_userexit-type = 'Program Exit'.&lt;/P&gt;&lt;P&gt;      i_userexit-txt = p_stoken-str.&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in i_userexit-txt with space.&lt;/P&gt;&lt;P&gt;      append i_userexit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Submit programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'SUBMIT'.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      check not p_stoken-str cs '_'.   " ensure not SUBMIT_XXX&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      check not wa_stoken-str cs '_'.   " ensure not SUBMIT_XXX&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;      read table i_submit with key pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_submit-pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;        i_submit-level = p_level.&lt;/P&gt;&lt;P&gt;        append i_submit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Perform routines (which reference external programs)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'PERFORM'.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      if not wa_stoken-ovfl is initial.&lt;/P&gt;&lt;P&gt;        w_off = wa_stoken-off1 + 10.&lt;/P&gt;&lt;P&gt;        w_str = c_overflow+w_off(30).&lt;/P&gt;&lt;P&gt;        find ')' in w_str match offset w_off.&lt;/P&gt;&lt;P&gt;        w_off = w_off + 1.&lt;/P&gt;&lt;P&gt;        wa_stoken-str = w_str(w_off).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      check wa_stoken-str cs '('.&lt;/P&gt;&lt;P&gt;      w_off = 0.&lt;/P&gt;&lt;P&gt;      while sy-subrc  = 0.&lt;/P&gt;&lt;P&gt;        if wa_stoken-str+w_off(1) eq '('.&lt;/P&gt;&lt;P&gt;          replace section offset w_off length 1 of wa_stoken-str with ''&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;          replace all occurrences of ')' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;          read table i_submit with key pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;          if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;            i_submit-pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;            append i_submit.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;          exit.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          replace section offset w_off length 1 of wa_stoken-str with ''&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;          shift wa_stoken-str left deleting leading space.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endwhile.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'FUNCTION'.&lt;/P&gt;&lt;P&gt;      clear i_fmodule.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     if wa_stoken-str cs 'WF_'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if wa_stoken-str cs 'IF_'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       break-point.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if wa_stoken-str cs 'BAPI'.&lt;/P&gt;&lt;P&gt;        i_fmodule-bapi = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      replace first occurrence of '''' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;      replace first occurrence of '''' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 4.   " didn't find 2nd quote (ie name truncated)&lt;/P&gt;&lt;P&gt;        clear wa_tfdir.&lt;/P&gt;&lt;P&gt;        concatenate wa_stoken-str '%' into wa_stoken-str.&lt;/P&gt;&lt;P&gt;        select single funcname into wa_tfdir-funcname from tfdir&lt;/P&gt;&lt;P&gt;                     where funcname like wa_stoken-str.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          i_fmodule-name = wa_tfdir-funcname.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        i_fmodule-name = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      i_fmodule-level = p_level.&lt;/P&gt;&lt;P&gt;      append i_fmodule.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "DATA_SEARCH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form GET_ADDITIONAL_DATA                                           &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form get_additional_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get additional data'         "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at i_userexit.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enhancement data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if  i_userexit-type cs 'Enh'.&lt;/P&gt;&lt;P&gt;      clear: wa_modsapa.&lt;/P&gt;&lt;P&gt;      select single name into wa_modsapa-name from modsap&lt;/P&gt;&lt;P&gt;                        where member = i_userexit-txt.&lt;/P&gt;&lt;P&gt;      check sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      i_userexit-modname = wa_modsapa-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      clear wa_modsapt.&lt;/P&gt;&lt;P&gt;      select single modtext into wa_modsapt-modtext from modsapt&lt;/P&gt;&lt;P&gt;                        where name = wa_modsapa-name&lt;/P&gt;&lt;P&gt;                                     and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;      i_userexit-modtext = wa_modsapt-modtext.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BADI data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if  i_userexit-type eq 'BADI'.&lt;/P&gt;&lt;P&gt;      clear wa_sxs_attr.&lt;/P&gt;&lt;P&gt;      select single exit_name into wa_sxs_attr-exit_name from sxs_attr&lt;/P&gt;&lt;P&gt;                                    where exit_name = i_userexit-txt.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        i_userexit-modname = i_userexit-txt.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        i_userexit-modname = 'Dynamic call'.                "#EC NOTEXT&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      clear wa_sxs_attrt.&lt;/P&gt;&lt;P&gt;      select single text into wa_sxs_attrt-text from sxs_attrt&lt;/P&gt;&lt;P&gt;                                     where exit_name =&lt;/P&gt;&lt;P&gt;wa_sxs_attr-exit_name&lt;/P&gt;&lt;P&gt;                                       and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;      i_userexit-modtext = wa_sxs_attrt-text.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    modify i_userexit.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get enhancements via program package&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  clear wa_tadir.&lt;/P&gt;&lt;P&gt;  select single devclass into wa_tadir-devclass from tadir&lt;/P&gt;&lt;P&gt;                             where pgmid    = 'R3TR'&lt;/P&gt;&lt;P&gt;                               and object   = 'PROG'&lt;/P&gt;&lt;P&gt;                               and obj_name = p_pname.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    clear: wa_modsapa, wa_modsapt.&lt;/P&gt;&lt;P&gt;    select name from modsapa into wa_modsapa-name&lt;/P&gt;&lt;P&gt;                          where devclass = wa_tadir-devclass.&lt;/P&gt;&lt;P&gt;      select single modtext from modsapt into wa_modsapt-modtext&lt;/P&gt;&lt;P&gt;                          where name = wa_modsapa-name&lt;/P&gt;&lt;P&gt;                            and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      read table i_userexit with key modname = wa_modsapa-name.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_userexit-modtext = wa_modsapt-modtext.&lt;/P&gt;&lt;P&gt;        i_userexit-type = 'Enhancement'.                    "#EC NOTEXT&lt;/P&gt;&lt;P&gt;        i_userexit-modname  = wa_modsapa-name.&lt;/P&gt;&lt;P&gt;        i_userexit-txt = 'Determined from program DevClass'."#EC NOTEXT&lt;/P&gt;&lt;P&gt;        i_userexit-pname = 'Unknown'.                       "#EC NOTEXT&lt;/P&gt;&lt;P&gt;        append i_userexit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "GET_ADDITIONAL_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form DATA_DISPLAY                                                  &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form data_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Prepare screen for display'  "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort i_userexit by type txt modname.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from i_userexit comparing txt modname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;format headings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  write: 'Enhancements from main program'.                  "#EC NOTEXT&lt;/P&gt;&lt;P&gt;  write: /.&lt;/P&gt;&lt;P&gt;  uline.&lt;/P&gt;&lt;P&gt;  format color col_heading.&lt;/P&gt;&lt;P&gt;  write: /    sy-vline,&lt;/P&gt;&lt;P&gt;         (12) c_col1,                    "Enhanmt Type&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (40) c_col2,                    "Enhancement&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (30) c_col3,                    "Program/Include&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (20) c_col4,                    "Enhancement name&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (40) c_col5,                    "Enhancement description&lt;/P&gt;&lt;P&gt;              sy-vline.&lt;/P&gt;&lt;P&gt;  format reset.&lt;/P&gt;&lt;P&gt;  uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;format lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at i_userexit.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set line colour&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    case i_userexit-type.&lt;/P&gt;&lt;P&gt;      when 'Enhancement'.&lt;/P&gt;&lt;P&gt;        format color 3 intensified off.&lt;/P&gt;&lt;P&gt;      when 'BADI'.&lt;/P&gt;&lt;P&gt;        format color 4 intensified off.&lt;/P&gt;&lt;P&gt;      when 'BusTrEvent'.&lt;/P&gt;&lt;P&gt;        format color 5 intensified off.&lt;/P&gt;&lt;P&gt;      when 'Program Exit'.&lt;/P&gt;&lt;P&gt;        format color 6 intensified off.&lt;/P&gt;&lt;P&gt;      when others.&lt;/P&gt;&lt;P&gt;        format reset.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;    write: / sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-type,&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-txt(40),&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-pname(30),&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-modname(20),&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-modtext(40),&lt;/P&gt;&lt;P&gt;             sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;  format reset.&lt;/P&gt;&lt;P&gt;  uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user-exits from development class of function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if p_devc = 'X'.&lt;/P&gt;&lt;P&gt;    write: /.&lt;/P&gt;&lt;P&gt;    write: / 'User-exits from function module development class'."#EC&lt;/P&gt;&lt;P&gt;*NOTEXT&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;    uline (90).&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at i_devclass.&lt;/P&gt;&lt;P&gt;      clear wa_modsapa.&lt;/P&gt;&lt;P&gt;      select name from modsapa into wa_modsapa&lt;/P&gt;&lt;P&gt;                   where devclass = i_devclass-clas.&lt;/P&gt;&lt;P&gt;     select single name modtext into corresponding fields of wa_modsapt&lt;/P&gt;&lt;P&gt;                                   from modsapt&lt;/P&gt;&lt;P&gt;                                     where name  = wa_modsapa-name&lt;/P&gt;&lt;P&gt;                                       and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;        format color 3 intensified off.&lt;/P&gt;&lt;P&gt;        write: / sy-vline,&lt;/P&gt;&lt;P&gt;                 (12) 'Enhancement',&lt;/P&gt;&lt;P&gt;                 sy-vline,&lt;/P&gt;&lt;P&gt;                wa_modsapa-name,&lt;/P&gt;&lt;P&gt;                sy-vline,&lt;/P&gt;&lt;P&gt;                wa_modsapt-modtext,&lt;/P&gt;&lt;P&gt;                sy-vline.&lt;/P&gt;&lt;P&gt;      endselect.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline (90).&lt;/P&gt;&lt;P&gt;    format reset.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  describe table i_fmodule lines w_linnum.&lt;/P&gt;&lt;P&gt;  write: / c_fmod , at 35 w_linnum.                         "#EC NOTEXT&lt;/P&gt;&lt;P&gt;  write: 157''.&lt;/P&gt;&lt;P&gt;  if p_func = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;display fuction modules used in program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    uline (38).&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;    loop at i_fmodule.&lt;/P&gt;&lt;P&gt;      write: sy-vline,&lt;/P&gt;&lt;P&gt;             i_fmodule-name,&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_fmodule-bapi,&lt;/P&gt;&lt;P&gt;             sy-vline.&lt;/P&gt;&lt;P&gt;      write: 157''.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline (38).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  describe table i_submit lines w_linnum.&lt;/P&gt;&lt;P&gt;  write: / c_subm , at 35 w_linnum.                         "#EC NOTEXT&lt;/P&gt;&lt;P&gt;  write: 157''.&lt;/P&gt;&lt;P&gt;  if p_subm = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;display submit programs used in program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    uline (44).&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;    loop at i_submit.&lt;/P&gt;&lt;P&gt;      write: sy-vline,&lt;/P&gt;&lt;P&gt;             i_submit-pname,&lt;/P&gt;&lt;P&gt;             sy-vline.&lt;/P&gt;&lt;P&gt;      write: 157''.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline (44).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;issue message with number of user-exits displayed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  describe table i_userexit lines w_linnum.&lt;/P&gt;&lt;P&gt;  message s697(56) with w_linnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "DATA_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cmod is the place where u create and attach the enhancement provided by SAP.&lt;/P&gt;&lt;P&gt;and SMOD is where u find these std enhancement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff kind of exit:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;field exit,customer exit,menu exit,user exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4&amp;gt; if u want to provide some check at the field level, attach some more functionality to some field when user exters u can do that using program RSMODPRF--Field Exits for Data Elements&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward points if it helps&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gunjan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 05 Jun 2006 05:11:43 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-06-05T05:11:43Z</dc:date>
    <item>
      <title>user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306312#M160166</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi.&lt;/P&gt;&lt;P&gt;I have few questions about user-exit.&lt;/P&gt;&lt;P&gt;Where to find user-exits?&lt;/P&gt;&lt;P&gt;WHat is CMOD and SMOD.&lt;/P&gt;&lt;P&gt;What are different kind of exits?&lt;/P&gt;&lt;P&gt;What is field exit?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:02:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306312#M160166</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-05T05:02:55Z</dc:date>
    </item>
    <item>
      <title>Re: user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306313#M160167</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check these links.. YOu will get everything you need here! &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm" target="test_blank"&gt;http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/what-is-user-exits.htm" target="test_blank"&gt;http://www.sap-img.com/abap/what-is-user-exits.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.planetsap.com/userexit_main_page.htm" target="test_blank"&gt;http://www.planetsap.com/userexit_main_page.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/fieldexits.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/fieldexits.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-basis-abap.com/sapab013.htm" target="test_blank"&gt;http://www.sap-basis-abap.com/sapab013.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/field-exits-smod-cmod-questions-and-answers.htm" target="test_blank"&gt;http://www.sap-img.com/abap/field-exits-smod-cmod-questions-and-answers.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-basis-abap.com/sapab014.htm" target="test_blank"&gt;http://www.sap-basis-abap.com/sapab014.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Susmitha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:09:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306313#M160167</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-05T05:09:31Z</dc:date>
    </item>
    <item>
      <title>Re: user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306314#M160168</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Refer&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm" target="test_blank"&gt;http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.easymarketplace.de/userexit.php" target="test_blank"&gt;http://www.easymarketplace.de/userexit.php&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-basis-abap.com/sapab014.htm" target="test_blank"&gt;http://www.sap-basis-abap.com/sapab014.htm&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:11:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306314#M160168</guid>
      <dc:creator>Bema</dc:creator>
      <dc:date>2006-06-05T05:11:11Z</dc:date>
    </item>
    <item>
      <title>Re: user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306315#M160169</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for finding user exit use this program,it'll list u all the enhancement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Report  ZPJA_PM002 (V2)                                            &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Text Elements:                                                     &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_DEVC Show user-exits from development class                      &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_LIMIT Limit submit program selection                             &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_FUNC Show function modules                                       &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; P_SUBM Show submit programs                                        &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; S01    Selection data (TCode takes precedence  over program name)  &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;report  zpja_pm002&lt;/P&gt;&lt;P&gt;  no standard page heading&lt;/P&gt;&lt;P&gt;  line-size 158.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*tables: enlfdir.     "Additional Attributes for Function Modules&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tabix      like sy-tabix,&lt;/P&gt;&lt;P&gt;      w_linnum   type i,&lt;/P&gt;&lt;P&gt;      w_off      type i,&lt;/P&gt;&lt;P&gt;      w_index    like sy-tabix,&lt;/P&gt;&lt;P&gt;      w_include  like trdir-name,&lt;/P&gt;&lt;P&gt;      w_prog     like trdir-name,&lt;/P&gt;&lt;P&gt;      w_incl     like trdir-name,&lt;/P&gt;&lt;P&gt;      w_area     like rs38l-area,&lt;/P&gt;&lt;P&gt;      w_level,&lt;/P&gt;&lt;P&gt;      w_str(50)  type c,&lt;/P&gt;&lt;P&gt;      w_funcname like tfdir-funcname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;constants: c_fmod(40) type c value 'Function modules selected: ',&lt;/P&gt;&lt;P&gt;           c_subm(40) type c value 'Submit programs selected: ',&lt;/P&gt;&lt;P&gt;           c_col1(12) type c value 'Enhanmt Type',&lt;/P&gt;&lt;P&gt;           c_col2(40) type c value 'Enhancement',&lt;/P&gt;&lt;P&gt;           c_col3(30) type c value 'Program/Include',&lt;/P&gt;&lt;P&gt;           c_col4(20) type c value 'Enhancement Name',&lt;/P&gt;&lt;P&gt;           c_col5(40) type c value 'Enhancement Description'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: ABAP Workbench&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_d010inc.&lt;/P&gt;&lt;P&gt;data: master type d010inc-master.&lt;/P&gt;&lt;P&gt;data: end of wa_d010inc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tfdir.&lt;/P&gt;&lt;P&gt;data: funcname type tfdir-funcname,&lt;/P&gt;&lt;P&gt;      pname    type tfdir-pname,&lt;/P&gt;&lt;P&gt;      include  type tfdir-include.&lt;/P&gt;&lt;P&gt;data: end of wa_tfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tadir.&lt;/P&gt;&lt;P&gt;data: devclass type tadir-devclass.&lt;/P&gt;&lt;P&gt;data: end of wa_tadir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tstc.&lt;/P&gt;&lt;P&gt;data: pgmna type tstc-pgmna.&lt;/P&gt;&lt;P&gt;data: end of wa_tstc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tstcp.&lt;/P&gt;&lt;P&gt;data: param type tstcp-param.&lt;/P&gt;&lt;P&gt;data: end of wa_tstcp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_enlfdir.&lt;/P&gt;&lt;P&gt;data: area type enlfdir-area.&lt;/P&gt;&lt;P&gt;data: end of wa_enlfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: BADIs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_sxs_attr.&lt;/P&gt;&lt;P&gt;data: exit_name type sxs_attr-exit_name.&lt;/P&gt;&lt;P&gt;data: end of wa_sxs_attr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_sxs_attrt.&lt;/P&gt;&lt;P&gt;data: text type sxs_attrt-text.&lt;/P&gt;&lt;P&gt;data: end of wa_sxs_attrt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: Enhancements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_modsap.&lt;/P&gt;&lt;P&gt;data: member type modsap-member.&lt;/P&gt;&lt;P&gt;data: end of wa_modsap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_modsapa.&lt;/P&gt;&lt;P&gt;data: name type modsapa-name.&lt;/P&gt;&lt;P&gt;data: end of wa_modsapa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_modsapt.&lt;/P&gt;&lt;P&gt;data: modtext type modsapt-modtext.&lt;/P&gt;&lt;P&gt;data: end of wa_modsapt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas: Business Transaction Events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_tbe01t.&lt;/P&gt;&lt;P&gt;data: text1 type tbe01t-text1.&lt;/P&gt;&lt;P&gt;data: end of wa_tbe01t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_tps01t.&lt;/P&gt;&lt;P&gt;data: text1 type tps01t-text1.&lt;/P&gt;&lt;P&gt;data: end of wa_tps01t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user-exits&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_userexit,&lt;/P&gt;&lt;P&gt;      type(12) type c,&lt;/P&gt;&lt;P&gt;      pname    like trdir-name,&lt;/P&gt;&lt;P&gt;      txt(300),&lt;/P&gt;&lt;P&gt;      level    type c,&lt;/P&gt;&lt;P&gt;      modname(30) type c,&lt;/P&gt;&lt;P&gt;      modtext(40) type c,&lt;/P&gt;&lt;P&gt;end of t_userexit.&lt;/P&gt;&lt;P&gt;data: i_userexit type standard table of t_userexit with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function module developmnet classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_devclass,&lt;/P&gt;&lt;P&gt;      clas   like trdir-clas,&lt;/P&gt;&lt;P&gt;end of t_devclass.&lt;/P&gt;&lt;P&gt;data: i_devclass type standard table of t_devclass with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Submit programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_submit,&lt;/P&gt;&lt;P&gt;      pname     like trdir-name,&lt;/P&gt;&lt;P&gt;      level,&lt;/P&gt;&lt;P&gt;      done,&lt;/P&gt;&lt;P&gt;end of t_submit.&lt;/P&gt;&lt;P&gt;data: i_submit type standard table of t_submit with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Source code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_sourcetab,                        "#EC * (SLIN lügt!)&lt;/P&gt;&lt;P&gt;        line(200),                                  "#EC * (SLIN lügt!)&lt;/P&gt;&lt;P&gt;      end of t_sourcetab.                           "#EC * (SLIN lügt!)&lt;/P&gt;&lt;P&gt;data: sourcetab type standard table of t_sourcetab with header line.&lt;/P&gt;&lt;P&gt;data c_overflow(30000) type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Description of an ABAP/4 source analysis token&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: i_stoken type standard table of stokex with header line.&lt;/P&gt;&lt;P&gt;data wa_stoken like i_stoken.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Description of an ABAP/4 source analysis statement&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: i_sstmnt type standard table of sstmnt with header line."#EC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;keywords for searching ABAP code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_keywords,&lt;/P&gt;&lt;P&gt;      word(30),&lt;/P&gt;&lt;P&gt;end of t_keywords.&lt;/P&gt;&lt;P&gt;data: keywords type standard table of t_keywords with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;function modules within program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of t_fmodule,&lt;/P&gt;&lt;P&gt;      name   like rs38l-name,&lt;/P&gt;&lt;P&gt;      pname  like trdir-name,&lt;/P&gt;&lt;P&gt;      pname2 like trdir-name,&lt;/P&gt;&lt;P&gt;      level,&lt;/P&gt;&lt;P&gt;      bapi,&lt;/P&gt;&lt;P&gt;      done,&lt;/P&gt;&lt;P&gt;end of t_fmodule.&lt;/P&gt;&lt;P&gt;data: i_fmodule type standard table of t_fmodule with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Selection Options                                                  &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;selection-screen begin of block selscr1 with frame title text-s01.&lt;/P&gt;&lt;P&gt;parameter: p_pname like trdir-name memory id rid,&lt;/P&gt;&lt;P&gt;           p_tcode like syst-tcode,&lt;/P&gt;&lt;P&gt;           p_limit(4) type n default 100,&lt;/P&gt;&lt;P&gt;           p_devc  like rihea-dy_ofn default ' ',&lt;/P&gt;&lt;P&gt;           p_func  like rihea-dy_ofn default ' ',&lt;/P&gt;&lt;P&gt;           p_subm  like rihea-dy_ofn default ' '.&lt;/P&gt;&lt;P&gt;selection-screen end of block selscr1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; START-OF-SELECTION                                                 &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_pname is initial and p_tcode is initial.&lt;/P&gt;&lt;P&gt;    message e008(hrfpm).  "Make entry on the selection screen&lt;/P&gt;&lt;P&gt;    stop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ensure P_LIMIT is not zero.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if p_limit = 0.&lt;/P&gt;&lt;P&gt;    p_limit = 1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform data_select.&lt;/P&gt;&lt;P&gt;  perform get_submit_data.&lt;/P&gt;&lt;P&gt;  perform get_fm_data.&lt;/P&gt;&lt;P&gt;  perform get_additional_data.&lt;/P&gt;&lt;P&gt;  perform data_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form DATA_SELECT                                                   &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form data_select.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get programs/includes'       "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;determine search words&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  keywords-word = 'CALL'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'FORM'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'PERFORM'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'SUBMIT'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;  keywords-word = 'INCLUDE'.&lt;/P&gt;&lt;P&gt;  append keywords.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not p_tcode is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get program name from TCode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    select single pgmna from tstc into wa_tstc-pgmna&lt;/P&gt;&lt;P&gt;                 where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;    if not wa_tstc-pgmna is initial.&lt;/P&gt;&lt;P&gt;      p_pname = wa_tstc-pgmna.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TCode does not include program name, but does have refereve TCode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      select single param from tstcp into wa_tstcp-param&lt;/P&gt;&lt;P&gt;                   where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        check wa_tstcp-param(1)   = '/'.&lt;/P&gt;&lt;P&gt;        check wa_tstcp-param+1(1) = '*'.&lt;/P&gt;&lt;P&gt;        if wa_tstcp-param ca ' '.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        w_off = sy-fdpos + 1.&lt;/P&gt;&lt;P&gt;        subtract 2 from sy-fdpos.&lt;/P&gt;&lt;P&gt;        if sy-fdpos gt 0.&lt;/P&gt;&lt;P&gt;          p_tcode = wa_tstcp-param+2(sy-fdpos).&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        select single pgmna from tstc into wa_tstc-pgmna&lt;/P&gt;&lt;P&gt;               where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;        p_pname = wa_tstc-pgmna.&lt;/P&gt;&lt;P&gt;        if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;          message e110(/saptrx/asc) with 'No program found for: '&lt;/P&gt;&lt;P&gt;p_tcode."#EC NOTEXT&lt;/P&gt;&lt;P&gt;          stop.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        message e110(/saptrx/asc) with 'No program found for: ' p_tcode.&lt;/P&gt;&lt;P&gt;"#EC NOTEXT&lt;/P&gt;&lt;P&gt;        stop.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Call customer-function aus Program coding&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  read report p_pname into sourcetab.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    message e017(enhancement) with p_pname raising no_program."#EC *&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  scan abap-source sourcetab tokens     into i_stoken&lt;/P&gt;&lt;P&gt;                             statements into i_sstmnt&lt;/P&gt;&lt;P&gt;                             keywords   from keywords&lt;/P&gt;&lt;P&gt;                             overflow into c_overflow&lt;/P&gt;&lt;P&gt;                             with includes.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             WITH ANALYSIS.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if sy-subrc &amp;gt; 0. "keine/syntakt. falsche Ablauflog./Fehler im Skanner&lt;/P&gt;&lt;P&gt;    message e130(enhancement) raising syntax_error.         "#EC *&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check I_STOKEN for entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  clear w_linnum.&lt;/P&gt;&lt;P&gt;  describe table i_stoken lines w_linnum.&lt;/P&gt;&lt;P&gt;  if w_linnum gt 0.&lt;/P&gt;&lt;P&gt;    w_level = '0'.&lt;/P&gt;&lt;P&gt;    w_prog = ''.&lt;/P&gt;&lt;P&gt;    w_incl = ''.&lt;/P&gt;&lt;P&gt;    perform data_search tables i_stoken using w_level w_prog w_incl.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "DATA_SELECT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form GET_FM_DATA                                                   &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form get_fm_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get function module data'    "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function module data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  sort i_fmodule by name.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from i_fmodule comparing name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at i_fmodule where done  ne 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear:   i_stoken, i_sstmnt, sourcetab, wa_tfdir, w_include .&lt;/P&gt;&lt;P&gt;    refresh: i_stoken, i_sstmnt, sourcetab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear wa_tfdir.&lt;/P&gt;&lt;P&gt;    select single funcname pname include from tfdir into wa_tfdir&lt;/P&gt;&lt;P&gt;                            where funcname = i_fmodule-name.&lt;/P&gt;&lt;P&gt;    check sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    call function 'FUNCTION_INCLUDE_SPLIT'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        program = wa_tfdir-pname&lt;/P&gt;&lt;P&gt;      importing&lt;/P&gt;&lt;P&gt;        group   = w_area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    concatenate 'L' w_area 'U' wa_tfdir-include into w_include.&lt;/P&gt;&lt;P&gt;    i_fmodule-pname  = w_include.&lt;/P&gt;&lt;P&gt;    i_fmodule-pname2 = wa_tfdir-pname.&lt;/P&gt;&lt;P&gt;    modify i_fmodule.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read report i_fmodule-pname into sourcetab.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      scan abap-source sourcetab tokens     into i_stoken&lt;/P&gt;&lt;P&gt;                                 statements into i_sstmnt&lt;/P&gt;&lt;P&gt;                                 keywords   from keywords&lt;/P&gt;&lt;P&gt;                                 with includes.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        message e130(enhancement) raising syntax_error.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check i_stoken for entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      clear w_linnum.&lt;/P&gt;&lt;P&gt;      describe table i_stoken lines w_linnum.&lt;/P&gt;&lt;P&gt;      if w_linnum gt 0.&lt;/P&gt;&lt;P&gt;        w_level = '1'.&lt;/P&gt;&lt;P&gt;        w_prog  = i_fmodule-pname2.&lt;/P&gt;&lt;P&gt;        w_incl =  i_fmodule-pname.&lt;/P&gt;&lt;P&gt;        perform data_search tables i_stoken using w_level w_prog w_incl.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if p_devc = 'X'.&lt;/P&gt;&lt;P&gt;    loop at i_fmodule.&lt;/P&gt;&lt;P&gt;      clear: wa_tadir, wa_enlfdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single area from enlfdir into wa_enlfdir-area&lt;/P&gt;&lt;P&gt;                            where funcname = i_fmodule-name.&lt;/P&gt;&lt;P&gt;      check not wa_enlfdir-area is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select single devclass into wa_tadir-devclass&lt;/P&gt;&lt;P&gt;                      from tadir where pgmid    = 'R3TR'&lt;/P&gt;&lt;P&gt;                                   and object   = 'FUGR'&lt;/P&gt;&lt;P&gt;                                   and obj_name = wa_enlfdir-area.&lt;/P&gt;&lt;P&gt;      check not wa_tadir-devclass is initial.&lt;/P&gt;&lt;P&gt;      move wa_tadir-devclass to i_devclass-clas.&lt;/P&gt;&lt;P&gt;      append i_devclass.&lt;/P&gt;&lt;P&gt;      i_fmodule-done = 'X'.&lt;/P&gt;&lt;P&gt;      modify i_fmodule.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    sort i_devclass.&lt;/P&gt;&lt;P&gt;    delete adjacent duplicates from i_devclass.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "GET_FM_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form GET_SUBMIT_DATA                                               &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form get_submit_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get submit data'             "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort i_submit.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from i_submit comparing pname.&lt;/P&gt;&lt;P&gt;  w_level = '0'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at i_submit where done ne 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear:   i_stoken, i_sstmnt, sourcetab.&lt;/P&gt;&lt;P&gt;    refresh: i_stoken, i_sstmnt, sourcetab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read report i_submit-pname into sourcetab.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      scan abap-source sourcetab tokens     into i_stoken&lt;/P&gt;&lt;P&gt;                                 statements into i_sstmnt&lt;/P&gt;&lt;P&gt;                                 keywords   from keywords&lt;/P&gt;&lt;P&gt;                                 with includes.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       message e130(enhancement) raising syntax_error.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        continue.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check i_stoken for entries&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      clear w_linnum.&lt;/P&gt;&lt;P&gt;      describe table i_stoken lines w_linnum.&lt;/P&gt;&lt;P&gt;      if w_linnum gt 0.&lt;/P&gt;&lt;P&gt;        w_prog  = i_submit-pname.&lt;/P&gt;&lt;P&gt;        w_incl = ''.&lt;/P&gt;&lt;P&gt;        perform data_search tables i_stoken using w_level w_prog w_incl.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;restrict number of submit program selected for processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    describe table i_submit lines w_linnum.&lt;/P&gt;&lt;P&gt;    if w_linnum ge p_limit.&lt;/P&gt;&lt;P&gt;      w_level = '1'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    i_submit-done = 'X'.&lt;/P&gt;&lt;P&gt;    modify i_submit.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                       "GET_SUBMIT_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form DATA_SEARCH                                                   &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form data_search tables p_stoken structure stoken&lt;/P&gt;&lt;P&gt;                        using p_level p_prog p_incl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at p_stoken.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear i_userexit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tabix = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;    i_userexit-level = p_level.&lt;/P&gt;&lt;P&gt;    if i_userexit-level = '0'.&lt;/P&gt;&lt;P&gt;      if p_incl is initial.&lt;/P&gt;&lt;P&gt;        i_userexit-pname = p_pname.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate  p_pname '/' p_incl into i_userexit-pname.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      if p_incl is initial.&lt;/P&gt;&lt;P&gt;        i_userexit-pname = p_prog.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate  p_prog '/' p_incl into i_userexit-pname.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str eq 'INCLUDE'.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      check not wa_stoken-str cs 'STRUCTURE'.&lt;/P&gt;&lt;P&gt;      check not wa_stoken-str cs 'SYMBOL'.&lt;/P&gt;&lt;P&gt;      read table i_submit with key pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_submit-pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;        i_submit-level = p_level.&lt;/P&gt;&lt;P&gt;        append i_submit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enhancements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str eq 'CUSTOMER-FUNCTION'.&lt;/P&gt;&lt;P&gt;      clear w_funcname.&lt;/P&gt;&lt;P&gt;      read table p_stoken index tabix.&lt;/P&gt;&lt;P&gt;      translate p_stoken-str using ''' '.&lt;/P&gt;&lt;P&gt;      condense p_stoken-str.&lt;/P&gt;&lt;P&gt;      if p_prog is initial.&lt;/P&gt;&lt;P&gt;        concatenate 'EXIT' p_pname p_stoken-str into w_funcname&lt;/P&gt;&lt;P&gt;                     separated by '_'.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate 'EXIT' p_prog p_stoken-str into w_funcname&lt;/P&gt;&lt;P&gt;               separated by '_'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      select single member from modsap into wa_modsap-member&lt;/P&gt;&lt;P&gt;            where member = w_funcname.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.   " check for valid enhancement&lt;/P&gt;&lt;P&gt;        i_userexit-type = 'Enhancement'.&lt;/P&gt;&lt;P&gt;        i_userexit-txt  = w_funcname.&lt;/P&gt;&lt;P&gt;        append i_userexit.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        clear wa_d010inc.&lt;/P&gt;&lt;P&gt;        select single master into wa_d010inc-master&lt;/P&gt;&lt;P&gt;              from d010inc&lt;/P&gt;&lt;P&gt;                 where include = p_prog.&lt;/P&gt;&lt;P&gt;        concatenate 'EXIT' wa_d010inc-master p_stoken-str into&lt;/P&gt;&lt;P&gt;w_funcname&lt;/P&gt;&lt;P&gt;               separated by '_'.&lt;/P&gt;&lt;P&gt;        i_userexit-type = 'Enhancement'.&lt;/P&gt;&lt;P&gt;        i_userexit-txt  = w_funcname.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BADIs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'cl_exithandler='.&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 4.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      i_userexit-txt = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in i_userexit-txt with space.&lt;/P&gt;&lt;P&gt;      i_userexit-type = 'BADI'.&lt;/P&gt;&lt;P&gt;      append i_userexit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Business transaction events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'OPEN_FI_PERFORM'.&lt;/P&gt;&lt;P&gt;      i_userexit-type = 'BusTrEvent'.&lt;/P&gt;&lt;P&gt;      i_userexit-txt = p_stoken-str.&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in i_userexit-txt with space.&lt;/P&gt;&lt;P&gt;      i_userexit-modname =  i_userexit-txt+16(8).&lt;/P&gt;&lt;P&gt;      case i_userexit-txt+25(1).&lt;/P&gt;&lt;P&gt;        when 'E'.&lt;/P&gt;&lt;P&gt;          clear wa_tbe01t.&lt;/P&gt;&lt;P&gt;          select single text1 into wa_tbe01t-text1 from tbe01t&lt;/P&gt;&lt;P&gt;                           where event = i_userexit-txt+16(8)&lt;/P&gt;&lt;P&gt;                             and spras = sy-langu.&lt;/P&gt;&lt;P&gt;          if wa_tbe01t-text1 is initial.&lt;/P&gt;&lt;P&gt;            i_userexit-modtext = ''.            "#EC NOTEXT&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;            i_userexit-modtext = wa_tbe01t-text1.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;          i_userexit-modname+8 = '/P&amp;amp;S'.                    "#EC NOTEXT&lt;/P&gt;&lt;P&gt;        when 'P'.&lt;/P&gt;&lt;P&gt;          clear wa_tps01t.&lt;/P&gt;&lt;P&gt;          select single text1 into wa_tps01t-text1 from tps01t&lt;/P&gt;&lt;P&gt;                           where procs = i_userexit-txt+16(8)&lt;/P&gt;&lt;P&gt;                             and spras = sy-langu.&lt;/P&gt;&lt;P&gt;          i_userexit-modtext = wa_tps01t-text1.&lt;/P&gt;&lt;P&gt;          i_userexit-modname+8 = '/Process'.&lt;/P&gt;&lt;P&gt;      endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      append i_userexit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program exits&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'USEREXIT_'.&lt;/P&gt;&lt;P&gt;      i_userexit-type = 'Program Exit'.&lt;/P&gt;&lt;P&gt;      i_userexit-txt = p_stoken-str.&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in i_userexit-txt with space.&lt;/P&gt;&lt;P&gt;      append i_userexit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Submit programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'SUBMIT'.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      check not p_stoken-str cs '_'.   " ensure not SUBMIT_XXX&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      check not wa_stoken-str cs '_'.   " ensure not SUBMIT_XXX&lt;/P&gt;&lt;P&gt;      replace all occurrences of '''' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;      read table i_submit with key pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_submit-pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;        i_submit-level = p_level.&lt;/P&gt;&lt;P&gt;        append i_submit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Perform routines (which reference external programs)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'PERFORM'.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;      if not wa_stoken-ovfl is initial.&lt;/P&gt;&lt;P&gt;        w_off = wa_stoken-off1 + 10.&lt;/P&gt;&lt;P&gt;        w_str = c_overflow+w_off(30).&lt;/P&gt;&lt;P&gt;        find ')' in w_str match offset w_off.&lt;/P&gt;&lt;P&gt;        w_off = w_off + 1.&lt;/P&gt;&lt;P&gt;        wa_stoken-str = w_str(w_off).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      check wa_stoken-str cs '('.&lt;/P&gt;&lt;P&gt;      w_off = 0.&lt;/P&gt;&lt;P&gt;      while sy-subrc  = 0.&lt;/P&gt;&lt;P&gt;        if wa_stoken-str+w_off(1) eq '('.&lt;/P&gt;&lt;P&gt;          replace section offset w_off length 1 of wa_stoken-str with ''&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;          replace all occurrences of ')' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;          read table i_submit with key pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;          if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;            i_submit-pname = wa_stoken-str.&lt;/P&gt;&lt;P&gt;            append i_submit.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;          exit.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          replace section offset w_off length 1 of wa_stoken-str with ''&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;          shift wa_stoken-str left deleting leading space.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endwhile.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if p_stoken-str cs 'FUNCTION'.&lt;/P&gt;&lt;P&gt;      clear i_fmodule.&lt;/P&gt;&lt;P&gt;      check p_level eq '0'.    " do not perform for function modules&lt;/P&gt;&lt;P&gt;*(2nd pass)&lt;/P&gt;&lt;P&gt;      w_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;      read table p_stoken index w_index into wa_stoken.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     if wa_stoken-str cs 'WF_'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     if wa_stoken-str cs 'IF_'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       break-point.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if wa_stoken-str cs 'BAPI'.&lt;/P&gt;&lt;P&gt;        i_fmodule-bapi = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      replace first occurrence of '''' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;      replace first occurrence of '''' in wa_stoken-str with space.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 4.   " didn't find 2nd quote (ie name truncated)&lt;/P&gt;&lt;P&gt;        clear wa_tfdir.&lt;/P&gt;&lt;P&gt;        concatenate wa_stoken-str '%' into wa_stoken-str.&lt;/P&gt;&lt;P&gt;        select single funcname into wa_tfdir-funcname from tfdir&lt;/P&gt;&lt;P&gt;                     where funcname like wa_stoken-str.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          i_fmodule-name = wa_tfdir-funcname.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        i_fmodule-name = wa_stoken-str.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      i_fmodule-level = p_level.&lt;/P&gt;&lt;P&gt;      append i_fmodule.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "DATA_SEARCH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form GET_ADDITIONAL_DATA                                           &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form get_additional_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Get additional data'         "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at i_userexit.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enhancement data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if  i_userexit-type cs 'Enh'.&lt;/P&gt;&lt;P&gt;      clear: wa_modsapa.&lt;/P&gt;&lt;P&gt;      select single name into wa_modsapa-name from modsap&lt;/P&gt;&lt;P&gt;                        where member = i_userexit-txt.&lt;/P&gt;&lt;P&gt;      check sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      i_userexit-modname = wa_modsapa-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      clear wa_modsapt.&lt;/P&gt;&lt;P&gt;      select single modtext into wa_modsapt-modtext from modsapt&lt;/P&gt;&lt;P&gt;                        where name = wa_modsapa-name&lt;/P&gt;&lt;P&gt;                                     and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;      i_userexit-modtext = wa_modsapt-modtext.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BADI data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if  i_userexit-type eq 'BADI'.&lt;/P&gt;&lt;P&gt;      clear wa_sxs_attr.&lt;/P&gt;&lt;P&gt;      select single exit_name into wa_sxs_attr-exit_name from sxs_attr&lt;/P&gt;&lt;P&gt;                                    where exit_name = i_userexit-txt.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        i_userexit-modname = i_userexit-txt.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        i_userexit-modname = 'Dynamic call'.                "#EC NOTEXT&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      clear wa_sxs_attrt.&lt;/P&gt;&lt;P&gt;      select single text into wa_sxs_attrt-text from sxs_attrt&lt;/P&gt;&lt;P&gt;                                     where exit_name =&lt;/P&gt;&lt;P&gt;wa_sxs_attr-exit_name&lt;/P&gt;&lt;P&gt;                                       and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;      i_userexit-modtext = wa_sxs_attrt-text.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    modify i_userexit.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get enhancements via program package&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  clear wa_tadir.&lt;/P&gt;&lt;P&gt;  select single devclass into wa_tadir-devclass from tadir&lt;/P&gt;&lt;P&gt;                             where pgmid    = 'R3TR'&lt;/P&gt;&lt;P&gt;                               and object   = 'PROG'&lt;/P&gt;&lt;P&gt;                               and obj_name = p_pname.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    clear: wa_modsapa, wa_modsapt.&lt;/P&gt;&lt;P&gt;    select name from modsapa into wa_modsapa-name&lt;/P&gt;&lt;P&gt;                          where devclass = wa_tadir-devclass.&lt;/P&gt;&lt;P&gt;      select single modtext from modsapt into wa_modsapt-modtext&lt;/P&gt;&lt;P&gt;                          where name = wa_modsapa-name&lt;/P&gt;&lt;P&gt;                            and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      read table i_userexit with key modname = wa_modsapa-name.&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_userexit-modtext = wa_modsapt-modtext.&lt;/P&gt;&lt;P&gt;        i_userexit-type = 'Enhancement'.                    "#EC NOTEXT&lt;/P&gt;&lt;P&gt;        i_userexit-modname  = wa_modsapa-name.&lt;/P&gt;&lt;P&gt;        i_userexit-txt = 'Determined from program DevClass'."#EC NOTEXT&lt;/P&gt;&lt;P&gt;        i_userexit-pname = 'Unknown'.                       "#EC NOTEXT&lt;/P&gt;&lt;P&gt;        append i_userexit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "GET_ADDITIONAL_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp; Form DATA_DISPLAY                                                  &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;                                                                    &amp;amp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&amp;amp;*&lt;/P&gt;&lt;P&gt;form data_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data selection message to sap gui&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  call function 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    destination 'SAPGUI'&lt;/P&gt;&lt;P&gt;    keeping logical unit of work&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;      text                  = 'Prepare screen for display'  "#EC NOTEXT&lt;/P&gt;&lt;P&gt;    exceptions&lt;/P&gt;&lt;P&gt;      system_failure&lt;/P&gt;&lt;P&gt;      communication_failure&lt;/P&gt;&lt;P&gt;    .                                                       "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort i_userexit by type txt modname.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from i_userexit comparing txt modname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;format headings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  write: 'Enhancements from main program'.                  "#EC NOTEXT&lt;/P&gt;&lt;P&gt;  write: /.&lt;/P&gt;&lt;P&gt;  uline.&lt;/P&gt;&lt;P&gt;  format color col_heading.&lt;/P&gt;&lt;P&gt;  write: /    sy-vline,&lt;/P&gt;&lt;P&gt;         (12) c_col1,                    "Enhanmt Type&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (40) c_col2,                    "Enhancement&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (30) c_col3,                    "Program/Include&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (20) c_col4,                    "Enhancement name&lt;/P&gt;&lt;P&gt;              sy-vline,&lt;/P&gt;&lt;P&gt;         (40) c_col5,                    "Enhancement description&lt;/P&gt;&lt;P&gt;              sy-vline.&lt;/P&gt;&lt;P&gt;  format reset.&lt;/P&gt;&lt;P&gt;  uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;format lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at i_userexit.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set line colour&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    case i_userexit-type.&lt;/P&gt;&lt;P&gt;      when 'Enhancement'.&lt;/P&gt;&lt;P&gt;        format color 3 intensified off.&lt;/P&gt;&lt;P&gt;      when 'BADI'.&lt;/P&gt;&lt;P&gt;        format color 4 intensified off.&lt;/P&gt;&lt;P&gt;      when 'BusTrEvent'.&lt;/P&gt;&lt;P&gt;        format color 5 intensified off.&lt;/P&gt;&lt;P&gt;      when 'Program Exit'.&lt;/P&gt;&lt;P&gt;        format color 6 intensified off.&lt;/P&gt;&lt;P&gt;      when others.&lt;/P&gt;&lt;P&gt;        format reset.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;    write: / sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-type,&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-txt(40),&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-pname(30),&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-modname(20),&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_userexit-modtext(40),&lt;/P&gt;&lt;P&gt;             sy-vline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;  format reset.&lt;/P&gt;&lt;P&gt;  uline.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user-exits from development class of function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if p_devc = 'X'.&lt;/P&gt;&lt;P&gt;    write: /.&lt;/P&gt;&lt;P&gt;    write: / 'User-exits from function module development class'."#EC&lt;/P&gt;&lt;P&gt;*NOTEXT&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;    uline (90).&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at i_devclass.&lt;/P&gt;&lt;P&gt;      clear wa_modsapa.&lt;/P&gt;&lt;P&gt;      select name from modsapa into wa_modsapa&lt;/P&gt;&lt;P&gt;                   where devclass = i_devclass-clas.&lt;/P&gt;&lt;P&gt;     select single name modtext into corresponding fields of wa_modsapt&lt;/P&gt;&lt;P&gt;                                   from modsapt&lt;/P&gt;&lt;P&gt;                                     where name  = wa_modsapa-name&lt;/P&gt;&lt;P&gt;                                       and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;        format color 3 intensified off.&lt;/P&gt;&lt;P&gt;        write: / sy-vline,&lt;/P&gt;&lt;P&gt;                 (12) 'Enhancement',&lt;/P&gt;&lt;P&gt;                 sy-vline,&lt;/P&gt;&lt;P&gt;                wa_modsapa-name,&lt;/P&gt;&lt;P&gt;                sy-vline,&lt;/P&gt;&lt;P&gt;                wa_modsapt-modtext,&lt;/P&gt;&lt;P&gt;                sy-vline.&lt;/P&gt;&lt;P&gt;      endselect.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline (90).&lt;/P&gt;&lt;P&gt;    format reset.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  describe table i_fmodule lines w_linnum.&lt;/P&gt;&lt;P&gt;  write: / c_fmod , at 35 w_linnum.                         "#EC NOTEXT&lt;/P&gt;&lt;P&gt;  write: 157''.&lt;/P&gt;&lt;P&gt;  if p_func = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;display fuction modules used in program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    uline (38).&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;    loop at i_fmodule.&lt;/P&gt;&lt;P&gt;      write: sy-vline,&lt;/P&gt;&lt;P&gt;             i_fmodule-name,&lt;/P&gt;&lt;P&gt;             sy-vline,&lt;/P&gt;&lt;P&gt;             i_fmodule-bapi,&lt;/P&gt;&lt;P&gt;             sy-vline.&lt;/P&gt;&lt;P&gt;      write: 157''.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline (38).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  describe table i_submit lines w_linnum.&lt;/P&gt;&lt;P&gt;  write: / c_subm , at 35 w_linnum.                         "#EC NOTEXT&lt;/P&gt;&lt;P&gt;  write: 157''.&lt;/P&gt;&lt;P&gt;  if p_subm = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;display submit programs used in program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    uline (44).&lt;/P&gt;&lt;P&gt;    write: 157''.&lt;/P&gt;&lt;P&gt;    loop at i_submit.&lt;/P&gt;&lt;P&gt;      write: sy-vline,&lt;/P&gt;&lt;P&gt;             i_submit-pname,&lt;/P&gt;&lt;P&gt;             sy-vline.&lt;/P&gt;&lt;P&gt;      write: 157''.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    uline (44).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;issue message with number of user-exits displayed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  describe table i_userexit lines w_linnum.&lt;/P&gt;&lt;P&gt;  message s697(56) with w_linnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                        "DATA_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cmod is the place where u create and attach the enhancement provided by SAP.&lt;/P&gt;&lt;P&gt;and SMOD is where u find these std enhancement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff kind of exit:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;field exit,customer exit,menu exit,user exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4&amp;gt; if u want to provide some check at the field level, attach some more functionality to some field when user exters u can do that using program RSMODPRF--Field Exits for Data Elements&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward points if it helps&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gunjan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:11:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306315#M160169</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-05T05:11:43Z</dc:date>
    </item>
    <item>
      <title>Re: user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306316#M160170</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;User Exits are a method whereby the end user can add extra functionality or&lt;/P&gt;&lt;P&gt;change to a certain degree the way that SAP performs certain functions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;There are four types of exits:&amp;lt;/b&amp;gt;1.menu exit.&lt;/P&gt;&lt;P&gt;2.screen exit.&lt;/P&gt;&lt;P&gt;3.function module exits.&lt;/P&gt;&lt;P&gt;4.field exits.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;How are they implemented ?&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;User Exits are implemented in such a way that unlike changes to SAP&lt;/P&gt;&lt;P&gt;standard code, they will survive across upgrades and hot pack applications.&lt;/P&gt;&lt;P&gt;They are also User Objects and can therefore be implemented without the&lt;/P&gt;&lt;P&gt;need of requesting an SSCR from SAP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Within the standard SAP programs at key points are calls to function&lt;/P&gt;&lt;P&gt;modules starting with 'EXIT_'. These function modules generally accept as&lt;/P&gt;&lt;P&gt;input parameters structures containing for example the entire Order Header&lt;/P&gt;&lt;P&gt;(VBAK) of the sales order just entered, or perhaps a table of the Order&lt;/P&gt;&lt;P&gt;Items. These function calls are placed at points such as just before the&lt;/P&gt;&lt;P&gt;Order is saved or just before it is printed and so on.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These function modules contain a single include statement. The name of this&lt;/P&gt;&lt;P&gt;include is in the User domain and starts with Z. This enables it to be&lt;/P&gt;&lt;P&gt;edited without the need for an SSCR and also prevents it being overwritten&lt;/P&gt;&lt;P&gt;during upgrades.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once this include has been created and activated, and the user exit is&lt;/P&gt;&lt;P&gt;activated the User exit becomes functional.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Implementing a User Exit.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;User Exits are implemented using the transaction code 'SMOD'. Enter this in&lt;/P&gt;&lt;P&gt;the command line and press the Enter key. This will then show the SMOD&lt;/P&gt;&lt;P&gt;parameter screen:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;User Exits are assigned a project name which begins with Z. Having entered&lt;/P&gt;&lt;P&gt;the relevant name in the 'Project' field, click the Create (or Change)&lt;/P&gt;&lt;P&gt;button as applicable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When you are creating a new project, the projects attribute screen will be&lt;/P&gt;&lt;P&gt;displayed. This allows you to enter a title for the project and allows&lt;/P&gt;&lt;P&gt;access to the Enhancements (User Exits) that you want to assign to the&lt;/P&gt;&lt;P&gt;project and the components that you wish to use within those enhancements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This screen allows you to enter a description of the project. Once you have&lt;/P&gt;&lt;P&gt;done this, click the save button. You will be asked as usual to assign a&lt;/P&gt;&lt;P&gt;development class and create a transport.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once the transport has been created you can then go on to assign the&lt;/P&gt;&lt;P&gt;enhancements that you wish to use to the project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Locating The Enhancements For A Project.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;Unfortunately I have access to a 4.6C system only so therefore this&lt;/P&gt;&lt;P&gt;description is based around that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To find enhancements for a particular program locate the Development Class&lt;/P&gt;&lt;P&gt;for the relevant program. Run the transaction and on the first input screen&lt;/P&gt;&lt;P&gt;click on the Status button. This provides the program name. Another method&lt;/P&gt;&lt;P&gt;of finding the program name is to use transaction SE93 which is the&lt;/P&gt;&lt;P&gt;Create/Modify Transaction transaction. Enter the transaction code and click&lt;/P&gt;&lt;P&gt;display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In either case, cut the program name and then enter it into transaction&lt;/P&gt;&lt;P&gt;SE38 ? the ABAP program editor. Select the 'Attributes' radio button and&lt;/P&gt;&lt;P&gt;click display. Note the Development Class.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In 46C, go back to the SMOD main screen, enter the project name and select&lt;/P&gt;&lt;P&gt;the 'Enhancement Assignment' radio button.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Click the change button. This will display the enhancement assignment&lt;/P&gt;&lt;P&gt;screen. Position the cursor in the first field and press the &amp;lt;F4&amp;gt; key. This&lt;/P&gt;&lt;P&gt;will display the Input Help personal list window, a standard window that&lt;/P&gt;&lt;P&gt;you should be familiar with. Click the 'Information System' button and&lt;/P&gt;&lt;P&gt;enter the development class located above into the development class field.&lt;/P&gt;&lt;P&gt;Click the green tick.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This will display a list of enhancements for that particular development&lt;/P&gt;&lt;P&gt;category with a short description of what they do.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Select relevant description which will be transferred back to the&lt;/P&gt;&lt;P&gt;Enhancement Assignment screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For versions other than 46C, use transaction SE37 which is the Function&lt;/P&gt;&lt;P&gt;Module editor, in the function module name field press the &amp;lt;F4&amp;gt; key and&lt;/P&gt;&lt;P&gt;select further options. One of these will be the development class.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Clicking the enhancement button provides information on the enhancement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The information displayed in this report includes whether the enhancement&lt;/P&gt;&lt;P&gt;has been implemented, and is active. (Green things scattered throughout the&lt;/P&gt;&lt;P&gt;report). Clicking the Exit name (In this case 'EXIT_SAPLV60A_002' will&lt;/P&gt;&lt;P&gt;display the relevant function module:&lt;/P&gt;&lt;P&gt;To create the enhancement, double click the Include name. This then takes&lt;/P&gt;&lt;P&gt;you into SE38 where you can edit the include to your hearts content.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Step by step procedure for creating Field Exits&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;There are eight steps to creating a field exit:&lt;/P&gt;&lt;P&gt;Step 1:  Determine Data Element&lt;/P&gt;&lt;P&gt;Step 2:  Go To Field Exit Transaction&lt;/P&gt;&lt;P&gt;Step 3:  Create Field Exit&lt;/P&gt;&lt;P&gt;Step 4:  Create Function Module&lt;/P&gt;&lt;P&gt;Step 5:  Code Function Module&lt;/P&gt;&lt;P&gt;Step 6:  Activate Function Module&lt;/P&gt;&lt;P&gt;Step 7:  Assign Program/Screen&lt;/P&gt;&lt;P&gt;Step 8:  Activate Field Exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 1:  Determine Data Element&lt;/P&gt;&lt;P&gt;-	Before you can begin adding the functionality for a field exit, you must know the corresponding data element.&lt;/P&gt;&lt;P&gt;-	An easy way to determine the data element associated to a particular screen field is to:&lt;/P&gt;&lt;P&gt;		Go the appropriate screen.&lt;/P&gt;&lt;P&gt;		Position the cursor in the appropriate field.&lt;/P&gt;&lt;P&gt;		Press &amp;#145;F1&amp;#146; for field-level help.&lt;/P&gt;&lt;P&gt;		Click on the &amp;#145;Technical info&amp;#146; pushbutton (or press &amp;#145;F9&amp;#146;) on the help dialog box.&lt;/P&gt;&lt;P&gt;		On this Technical Information dialog box, the data element will be specified if the field is 'painted' from the 		ABAP/4 Dictionary.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 2:  Go To Field Exit Transaction&lt;/P&gt;&lt;P&gt;-	The transaction to create field exits is CMOD.&lt;/P&gt;&lt;P&gt;-	You can use the menu path Tools -&amp;gt; ABAP/4 Workbench -&amp;gt; Utilities -&amp;gt; Enhancements -&amp;gt; Project management.&lt;/P&gt;&lt;P&gt;-	From the initial screen of transaction CMOD, choose the Text enhancements -&amp;gt; Field exits  menu path.&lt;/P&gt;&lt;P&gt;-	After choosing this menu path, you will be taken to the field exits screen.  From here, you can create a field exit.&lt;/P&gt;&lt;P&gt;NOTE :  Even though you use transaction CMOD to maintain field exits, you do not need to create a project to activate field exits.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 3:  Create Field Exit&lt;/P&gt;&lt;P&gt;-	From the field exit screen of transaction CMOD, choose the Field exit -&amp;gt; Create menu path.&lt;/P&gt;&lt;P&gt;-	 After choosing this menu path, a dialog box will prompt you for the appropriate data element .&lt;/P&gt;&lt;P&gt;-	Enter the data element name and click the &amp;#145;Continue&amp;#146; pushbutton.&lt;/P&gt;&lt;P&gt;-	Now, you will be able to create the function module associated to the data element&amp;#146;s field exit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 4:  Create Function Module&lt;/P&gt;&lt;P&gt;-	You will automatically be taken to the Function Library (SE37) after entering a data element name and clicking the 	&amp;#145;Continue&amp;#146; pushbutton.&lt;/P&gt;&lt;P&gt;-	In the &amp;#145;Function module&amp;#146; field, a function module name will be defaulted by the system based on the data element 	specified.  This name will have the following convention:&lt;/P&gt;&lt;P&gt;		          FIELD_EXIT_&amp;lt;data element&amp;gt;&lt;/P&gt;&lt;P&gt;-	You can add an identifier (an underscore followed by a single character ).&lt;/P&gt;&lt;P&gt;-	The first function module for a data element&amp;#146;s field exit must be created without an identifier.&lt;/P&gt;&lt;P&gt;-	To create the function module, click on the &amp;#145;Create&amp;#146; pushbutton, choose menu path Function module -&amp;gt; Create, or 	press &amp;#145;F5&amp;#146;. &lt;/P&gt;&lt;P&gt;-	After choosing to create the function module, you will get the warning:  "Function module name is reserved for 	SAP".  This message is just a warning so a developer does not accidentally create a function module in the field 	exit name range.  By pressing &amp;#145;Enter&amp;#146;, you will be able to go ahead and create the function module.&lt;/P&gt;&lt;P&gt;-	Before coding the function module, you will have to specify the function modules attributes  --  function group, 	application, and short text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 5:  Code Function Module&lt;/P&gt;&lt;P&gt;-	From the function module&amp;#146;s attributes screen, click on the &amp;#145;Source code&amp;#146; pushbutton or choose the Goto -&amp;gt; 		Function module menu path to the code of the function module.&lt;/P&gt;&lt;P&gt;-	Here you will add your desired functionality for the field exit.&lt;/P&gt;&lt;P&gt;-	Remember that field exit&amp;#146;s function module will have two parameters -- one importing parameter called "INPUT" 	and one exporting parameter called "OUTPUT".  These parameters will be set up automatically by the system.&lt;/P&gt;&lt;P&gt;-	You must remember to assign a value to the OUTPUT field.  Even if the value does not change, it must be moved 	from the INPUT field to the OUTPUT field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 6:  Activate Function Module&lt;/P&gt;&lt;P&gt;-	After coding the function module, you must remember to activate it.&lt;/P&gt;&lt;P&gt;-	Use the Function module -&amp;gt; Activate menu path to activate the function module.&lt;/P&gt;&lt;P&gt;-	At this point, you can return to the field exit transaction.&lt;/P&gt;&lt;P&gt;-	You should be able to 'green arrow' back to this transaction.&lt;/P&gt;&lt;P&gt;-	When you return to the field exit transaction, you will see an entry for the newly created field exit.&lt;/P&gt;&lt;P&gt;-	At this point, the field exit is global.  That is, it applies to all screens that use a particular data element.  On any 	screen that uses the data element, the corresponding field exit function module will be triggered, once it is active.&lt;/P&gt;&lt;P&gt;-	Also, the field exit will not be triggered yet because it is inactive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 7:  Assign Program/Screen&lt;/P&gt;&lt;P&gt;-	This step is only needed if you want to make a field exit local.&lt;/P&gt;&lt;P&gt;-	To make a field exit local, select the field exit and click on the &amp;#145;Assign prog./screen&amp;#146; pushbutton.&lt;/P&gt;&lt;P&gt;-	In the dialog box , indicate the appropriate program name and screen number.&lt;/P&gt;&lt;P&gt;	This information indicates that the field exit is local to the specified screen in the specified program.&lt;/P&gt;&lt;P&gt;-	In the dialog box, you determine which function module gets executed for the field exit by specifying the identifier 	in the &amp;#145;Fld. Exit&amp;#146; field.&lt;/P&gt;&lt;P&gt;-	If this field is left blank, the function module triggered will be 'FIELD_EXIT_&amp;lt;data element&amp;gt;'.&lt;/P&gt;&lt;P&gt;-	If a single-character identifier is entered into the field, the function module triggered will be 'FIELD_EXIT_&amp;lt;data 	element&amp;gt;_&amp;lt;identifier&amp;gt;'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 8:  Activate Field Exit&lt;/P&gt;&lt;P&gt;-	The field exit must be active for it to be triggered by the system.&lt;/P&gt;&lt;P&gt;-	Activate the field exit by choosing the Field exit -&amp;gt; Activate menu path.&lt;/P&gt;&lt;P&gt;-	After assigning the field exit to a change request, its status will change to &amp;#145;Active&amp;#146; and it will be triggered 		automatically on the appropriate screen(s).&lt;/P&gt;&lt;P&gt;NOTE : In order to activate the field exit the profile parameter abap/fieldexit = YES must be set on all application servers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;send me ur email id .I will send u some good docs on this.]&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;&lt;/P&gt;&lt;P&gt;send u the docs.pls chk ur mail&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;rgds,&lt;/P&gt;&lt;P&gt;latheesh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Latheesh Kaduthara&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Latheesh Kaduthara&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Latheesh Kaduthara&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Latheesh Kaduthara&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:13:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306316#M160170</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-05T05:13:20Z</dc:date>
    </item>
    <item>
      <title>Re: user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306317#M160171</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this too..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Susmitha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:13:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306317#M160171</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-05T05:13:51Z</dc:date>
    </item>
    <item>
      <title>Re: user-exit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306318#M160172</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Latheesh&lt;/P&gt;&lt;P&gt;My email id is onkar1409@hotmail.com.&lt;/P&gt;&lt;P&gt;Please send me the document.Thanks a lot for your help&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Jun 2006 05:32:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exit/m-p/1306318#M160172</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-05T05:32:43Z</dc:date>
    </item>
  </channel>
</rss>

