<?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: implemented user-exits in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456648#M14170</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I don't know how pertinent is my code below but it could give you some ideas. You just copy/paste it in a new local test program :&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT  ztest_find_exit LINE-SIZE 1023.

DATA r_name TYPE RANGE OF trdir-name WITH HEADER LINE.
DATA t_name TYPE TABLE OF trdir-name.
FIELD-SYMBOLS &amp;lt;name&amp;gt; TYPE trdir-name.
DATA it_answer TYPE TABLE OF rsfindlst.
DATA it_scope_objects TYPE TABLE OF rsfind .
FIELD-SYMBOLS &amp;lt;answer&amp;gt; LIKE LINE OF it_answer.
DATA w_funcname TYPE tfdir-funcname.
DATA w_name TYPE modsap-name.
DATA w_name2 TYPE modactt-name.
DATA r_pname TYPE RANGE OF tfdir-pname WITH HEADER LINE.
DATA t_mainprograms TYPE TABLE OF char40 WITH HEADER LINE.
DATA w_status TYPE modattr-status.
DATA spacer(40).	
TABLES progdir.


r_name-sign = 'I'.
r_name-option = 'CP'.
r_name-low = 'ZX*'.
APPEND r_name.


SELECT DISTINCT name FROM trdir INTO TABLE t_name WHERE name IN r_name.
CALL FUNCTION 'RS_EU_CROSSREF'
  EXPORTING
    i_find_obj_cls  = 'INCL'
    i_scope_obj_cls = 'P'
  TABLES
    i_findstrings   = t_name
    o_founds        = it_answer
    i_scope_objects = it_scope_objects
  EXCEPTIONS
    OTHERS          = 9.


LOOP AT it_answer ASSIGNING &amp;lt;answer&amp;gt;.
  &amp;lt;answer&amp;gt;-used_obj = &amp;lt;answer&amp;gt;-used_obj+4.
  CLEAR :  r_pname, r_pname[].
  r_pname-sign = 'I'.
  r_pname-option = 'EQ'.
  r_pname-low = &amp;lt;answer&amp;gt;-object. APPEND r_pname.
  CALL FUNCTION 'RS_GET_MAINPROGRAMS'
    EXPORTING
      name         = &amp;lt;answer&amp;gt;-used_obj
    TABLES
      mainprograms = t_mainprograms.


  LOOP AT t_mainprograms.
    r_pname-low = t_mainprograms.
    APPEND r_pname.
  ENDLOOP.


  WRITE : / &amp;lt;answer&amp;gt;-used_obj(20), &amp;lt;answer&amp;gt;-object(20).
  SELECT DISTINCT funcname FROM tfdir INTO w_funcname
                                     WHERE pname IN r_pname.
    CLEAR w_name.
    SELECT SINGLE name FROM modsap INTO w_name
       WHERE  member = w_funcname.
    CLEAR w_name2.
    SELECT SINGLE name FROM modactt INTO w_name2
      WHERE member = w_name.
    CLEAR w_status.
    SELECT SINGLE status INTO w_status FROM modattr WHERE name = w_name2.
    WRITE : / spacer,'|', w_funcname, w_name, w_name2, w_status.


  ENDSELECT.
ENDLOOP.
&amp;lt;br&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Please, don't mind the raw aspect it's just a proof of concept  &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Bertrand&lt;/P&gt;</description>
    <pubDate>Tue, 27 Jun 2017 15:16:03 GMT</pubDate>
    <dc:creator>bertrand_delvallee</dc:creator>
    <dc:date>2017-06-27T15:16:03Z</dc:date>
    <item>
      <title>implemented user-exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456645#M14167</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hi SCN,&lt;/P&gt;&lt;P&gt;Which is the
best way to find user-exits implemented/active with smod without a project -
cmod?&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt; Regards, &lt;/P&gt;Maria João Rocha</description>
      <pubDate>Fri, 23 Jun 2017 16:35:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456645#M14167</guid>
      <dc:creator>MariaJooRocha</dc:creator>
      <dc:date>2017-06-23T16:35:17Z</dc:date>
    </item>
    <item>
      <title>Re: implemented user-exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456646#M14168</link>
      <description>&lt;P&gt;The prime tables behind it are MODSAPA for SMOD and MODATTR for CMOD - unfortunately I don't know where the activation status is stored. Maybe you can use set a trace and see what tables are hit by activating and deactivating.&lt;/P&gt;</description>
      <pubDate>Fri, 23 Jun 2017 19:25:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456646#M14168</guid>
      <dc:creator>raghug</dc:creator>
      <dc:date>2017-06-23T19:25:33Z</dc:date>
    </item>
    <item>
      <title>Re: implemented user-exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456647#M14169</link>
      <description>&lt;P&gt;Hi Raghu Govindarajan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your reply. Already seen that
tables. MODSAPA that have the SMOD information but does not provide the
ones implemented.&lt;/P&gt;&lt;P&gt; I've tried do look at the transports ...
Is there a better way? &lt;/P&gt;&lt;P&gt; Regards,&lt;/P&gt;&lt;P&gt;Maria João Rocha&lt;/P&gt;</description>
      <pubDate>Tue, 27 Jun 2017 09:45:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456647#M14169</guid>
      <dc:creator>MariaJooRocha</dc:creator>
      <dc:date>2017-06-27T09:45:20Z</dc:date>
    </item>
    <item>
      <title>Re: implemented user-exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456648#M14170</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I don't know how pertinent is my code below but it could give you some ideas. You just copy/paste it in a new local test program :&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT  ztest_find_exit LINE-SIZE 1023.

DATA r_name TYPE RANGE OF trdir-name WITH HEADER LINE.
DATA t_name TYPE TABLE OF trdir-name.
FIELD-SYMBOLS &amp;lt;name&amp;gt; TYPE trdir-name.
DATA it_answer TYPE TABLE OF rsfindlst.
DATA it_scope_objects TYPE TABLE OF rsfind .
FIELD-SYMBOLS &amp;lt;answer&amp;gt; LIKE LINE OF it_answer.
DATA w_funcname TYPE tfdir-funcname.
DATA w_name TYPE modsap-name.
DATA w_name2 TYPE modactt-name.
DATA r_pname TYPE RANGE OF tfdir-pname WITH HEADER LINE.
DATA t_mainprograms TYPE TABLE OF char40 WITH HEADER LINE.
DATA w_status TYPE modattr-status.
DATA spacer(40).	
TABLES progdir.


r_name-sign = 'I'.
r_name-option = 'CP'.
r_name-low = 'ZX*'.
APPEND r_name.


SELECT DISTINCT name FROM trdir INTO TABLE t_name WHERE name IN r_name.
CALL FUNCTION 'RS_EU_CROSSREF'
  EXPORTING
    i_find_obj_cls  = 'INCL'
    i_scope_obj_cls = 'P'
  TABLES
    i_findstrings   = t_name
    o_founds        = it_answer
    i_scope_objects = it_scope_objects
  EXCEPTIONS
    OTHERS          = 9.


LOOP AT it_answer ASSIGNING &amp;lt;answer&amp;gt;.
  &amp;lt;answer&amp;gt;-used_obj = &amp;lt;answer&amp;gt;-used_obj+4.
  CLEAR :  r_pname, r_pname[].
  r_pname-sign = 'I'.
  r_pname-option = 'EQ'.
  r_pname-low = &amp;lt;answer&amp;gt;-object. APPEND r_pname.
  CALL FUNCTION 'RS_GET_MAINPROGRAMS'
    EXPORTING
      name         = &amp;lt;answer&amp;gt;-used_obj
    TABLES
      mainprograms = t_mainprograms.


  LOOP AT t_mainprograms.
    r_pname-low = t_mainprograms.
    APPEND r_pname.
  ENDLOOP.


  WRITE : / &amp;lt;answer&amp;gt;-used_obj(20), &amp;lt;answer&amp;gt;-object(20).
  SELECT DISTINCT funcname FROM tfdir INTO w_funcname
                                     WHERE pname IN r_pname.
    CLEAR w_name.
    SELECT SINGLE name FROM modsap INTO w_name
       WHERE  member = w_funcname.
    CLEAR w_name2.
    SELECT SINGLE name FROM modactt INTO w_name2
      WHERE member = w_name.
    CLEAR w_status.
    SELECT SINGLE status INTO w_status FROM modattr WHERE name = w_name2.
    WRITE : / spacer,'|', w_funcname, w_name, w_name2, w_status.


  ENDSELECT.
ENDLOOP.
&amp;lt;br&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Please, don't mind the raw aspect it's just a proof of concept  &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Bertrand&lt;/P&gt;</description>
      <pubDate>Tue, 27 Jun 2017 15:16:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456648#M14170</guid>
      <dc:creator>bertrand_delvallee</dc:creator>
      <dc:date>2017-06-27T15:16:03Z</dc:date>
    </item>
    <item>
      <title>Re: implemented user-exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456649#M14171</link>
      <description>&lt;P&gt;Hi Bertrand DELVALLEE,&lt;/P&gt;&lt;P&gt;Thanks for your answer.&lt;/P&gt;&lt;P&gt;Inspired by your code I followed this steps to achieve my goal:  (so far for function modules) &lt;/P&gt;&lt;P&gt;1 - D010INC - ZX*&lt;/P&gt;&lt;P&gt;2 - TADIR to check if the include exists&lt;/P&gt;&lt;P&gt;3 - WBCROSSI  with D010INC-include to get WBCROSSI-include&lt;/P&gt;&lt;P&gt;4 - FM FUNCTION_INCLUDE_INFO with the WBCROSSI-include to get funcname &lt;/P&gt;&lt;P&gt;5 - MODSAP with funcname to get MODSAP-name&lt;/P&gt;&lt;P&gt;6 - MODACT to chek if exists MODSAP-name. If exists there is CMOD if not it's SMOD. &lt;/P&gt;&lt;P&gt; Thanks.&lt;/P&gt;&lt;P&gt; Maria João Rocha&lt;/P&gt;&lt;P&gt;Draft version of the program:&lt;/P&gt;&lt;P&gt;report zbcrsmod.&lt;BR /&gt;
tables: d010inc,&lt;BR /&gt;
 trdir,&lt;BR /&gt;
 modact,&lt;BR /&gt;
 modsapa,&lt;BR /&gt;
 modsap,&lt;BR /&gt;
 wbcrossi.&lt;BR /&gt;
&lt;BR /&gt;
data: wa_name type rs38l-name,&lt;BR /&gt;
 wa_include type rs38l-include.&lt;BR /&gt;
&lt;BR /&gt;
start-of-selection.&lt;BR /&gt;
 select * into d010inc&lt;BR /&gt;
 from d010inc&lt;BR /&gt;
 where include like 'ZX%'.&lt;BR /&gt;
 select count(*)&lt;BR /&gt;
 from trdir&lt;BR /&gt;
 where name = d010inc-include.&lt;BR /&gt;
 check sy-dbcnt &amp;gt; 0.&lt;BR /&gt;
 clear wbcrossi.&lt;BR /&gt;
 select single * from wbcrossi&lt;BR /&gt;
 where name = d010inc-include.&lt;BR /&gt;
 check wbcrossi-include is not initial.&lt;BR /&gt;
 wa_include = wbcrossi-include.&lt;BR /&gt;
 clear wa_name.&lt;BR /&gt;
 call function 'FUNCTION_INCLUDE_INFO'&lt;BR /&gt;
 changing&lt;BR /&gt;
 funcname = wa_name&lt;BR /&gt;
 include = wa_include&lt;BR /&gt;
 exceptions&lt;BR /&gt;
 function_not_exists = 1&lt;BR /&gt;
 include_not_exists = 2&lt;BR /&gt;
 group_not_exists = 3&lt;BR /&gt;
 no_selections = 4&lt;BR /&gt;
 no_function_include = 5&lt;BR /&gt;
 others = 6.&lt;BR /&gt;
&lt;BR /&gt;
 check wa_name is not initial.&lt;BR /&gt;
 select single * from modsap&lt;BR /&gt;
 where member = wa_name.&lt;BR /&gt;
&lt;BR /&gt;
 select single * from modact&lt;BR /&gt;
 where member = modsap-name.&lt;BR /&gt;
 if sy-subrc is initial.&lt;BR /&gt;
 write:/ modact-name, ' ', modsap-member, ' ', modsap-name.&lt;BR /&gt;
 else.&lt;BR /&gt;
 clear modact-name.&lt;BR /&gt;
 write:/ 'No CMODE', ' ', modsap-member, ' ', modsap-name.&lt;BR /&gt;
 endif.&lt;BR /&gt;
 endselect.&lt;/P&gt;</description>
      <pubDate>Wed, 28 Jun 2017 13:56:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/implemented-user-exits/m-p/456649#M14171</guid>
      <dc:creator>MariaJooRocha</dc:creator>
      <dc:date>2017-06-28T13:56:01Z</dc:date>
    </item>
  </channel>
</rss>

