<?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 resolve performance issue / performance tuning in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349690#M6791</link>
    <description>&lt;P&gt;Please review the code and let me know how can I increase the performance of this program.&lt;/P&gt;&lt;P&gt;At selection screen there are three option&lt;/P&gt;&lt;OL&gt;
&lt;LI&gt;Select 1000 records&lt;/LI&gt;&lt;LI&gt;Select 5000 records&lt;/LI&gt;&lt;LI&gt;Select all records&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;I have tried to make the changes still performance is not updated yet&lt;/P&gt;&lt;P&gt;DATA: gt_user TYPE TABLE OF usr02 WITH HEADER LINE,&lt;BR /&gt;gt_user_role TYPE TABLE OF agr_users WITH HEADER LINE,&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;********** DO NOT CHANGE THIS SECTION **********&lt;BR /&gt;g_begintime TYPE i,&lt;BR /&gt;g_endtime TYPE i,&lt;BR /&gt;g_tottime TYPE i.&lt;BR /&gt;&lt;BR /&gt;DATA: BEGIN OF gt_output OCCURS 0,&lt;BR /&gt;bname LIKE usr02-bname,&lt;BR /&gt;name_text LIKE adrp-name_text,&lt;BR /&gt;agr_name LIKE agr_users-agr_name,&lt;BR /&gt;text LIKE agr_texts-text,&lt;BR /&gt;role_count TYPE i,&lt;BR /&gt;END OF gt_output.&lt;BR /&gt;&lt;BR /&gt;TYPE-POOLS: slis.&lt;BR /&gt;DATA: l_number TYPE i.&lt;BR /&gt;SELECTION-SCREEN: BEGIN OF BLOCK sw WITH FRAME TITLE text-000.&lt;BR /&gt;&lt;BR /&gt;PARAMETERS:p_val_1 RADIOBUTTON GROUP a,&lt;BR /&gt;p_val_2 RADIOBUTTON GROUP a,&lt;BR /&gt;p_val_3 RADIOBUTTON GROUP a.&lt;BR /&gt;SELECTION-SCREEN ULINE.&lt;BR /&gt;PARAMETERS:p_demo RADIOBUTTON GROUP a.&lt;BR /&gt;SELECTION-SCREEN: END OF BLOCK sw.&lt;BR /&gt;&lt;BR /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;BR /&gt;SELECTION-SCREEN PUSHBUTTON 01(25) as_f1 USER-COMMAND as_dtl.&lt;BR /&gt;SELECTION-SCREEN END OF LINE.&lt;BR /&gt;&lt;BR /&gt;INITIALIZATION.&lt;BR /&gt;PERFORM set_info.&lt;BR /&gt;&lt;BR /&gt;AT SELECTION-SCREEN.&lt;BR /&gt;IF sy-ucomm EQ 'AS_DTL'.&lt;BR /&gt;PERFORM asignment_details USING 'Z_ASIGNMENT_01'.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;IF p_demo EQ 'X'.&lt;BR /&gt;PERFORM required_output.&lt;BR /&gt;ELSE.&lt;BR /&gt;PERFORM asignment_test.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;PERFORM output.&lt;BR /&gt;********** END NO CHANGE **********&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form combine_tables&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* Combine user and role tables&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM combine_tables.&lt;BR /&gt;DATA: ls_usr21 TYPE usr21,&lt;BR /&gt;ls_adrp TYPE adrp,&lt;BR /&gt;ls_texts TYPE agr_texts.&lt;BR /&gt;&lt;BR /&gt;LOOP AT gt_user.&lt;BR /&gt;* Get user name&lt;BR /&gt;SELECT * INTO ls_usr21 FROM usr21 WHERE bname = gt_user-bname.&lt;BR /&gt;SELECT * INTO ls_adrp FROM adrp&lt;BR /&gt;WHERE persnumber = ls_usr21-persnumber.&lt;BR /&gt;&lt;BR /&gt;gt_output-name_text = ls_adrp-name_text.&lt;BR /&gt;ENDSELECT.&lt;BR /&gt;ENDSELECT.&lt;BR /&gt;&lt;BR /&gt;LOOP AT gt_user_role WHERE uname = gt_user-bname.&lt;BR /&gt;* Only process roles that are currently active&lt;BR /&gt;CHECK gt_user_role-from_dat &amp;lt;= sy-datum&lt;BR /&gt;AND gt_user_role-to_dat &amp;gt;= sy-datum.&lt;BR /&gt;&lt;BR /&gt;* Get role text&lt;BR /&gt;SELECT * INTO ls_texts FROM agr_texts&lt;BR /&gt;WHERE agr_name = gt_output-agr_name&lt;BR /&gt;AND spras = sy-langu&lt;BR /&gt;AND line = 0.&lt;BR /&gt;&lt;BR /&gt;gt_output-text = ls_texts-text.&lt;BR /&gt;ENDSELECT.&lt;BR /&gt;&lt;BR /&gt;gt_output-bname = gt_user-bname.&lt;BR /&gt;gt_output-agr_name = gt_user_role-agr_name.&lt;BR /&gt;APPEND gt_output.&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;ENDFORM. " combine_tables&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form get_addl_data&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* Get extra fields&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM get_addl_data.&lt;BR /&gt;DATA: l_count TYPE i.&lt;BR /&gt;&lt;BR /&gt;* Count number of roles per user&lt;BR /&gt;SORT gt_user_role BY uname.&lt;BR /&gt;LOOP AT gt_user_role.&lt;BR /&gt;** ADD 1 TO l_count. "old code commented&lt;BR /&gt;&lt;BR /&gt;AT END OF uname.&lt;BR /&gt;** LOOP AT gt_output WHERE bname = gt_user_role-uname. "old code&lt;BR /&gt;READ TABLE gt_output WITH KEY bname = gt_user_role-uname.&lt;BR /&gt;"code change new code added here&lt;BR /&gt;ADD 1 TO l_count. "code change new code added here&lt;BR /&gt;gt_output-role_count = l_count.&lt;BR /&gt;MODIFY gt_output.&lt;BR /&gt;** CLEAR l_count. "old code commented&lt;BR /&gt;* ENDLOOP.&lt;BR /&gt;ENDAT.&lt;BR /&gt;CLEAR l_count. "code change new code added here&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;ENDFORM. " get_addl_data&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form output&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* Output report&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM output.&lt;BR /&gt;DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,&lt;BR /&gt;ls_fieldcat TYPE slis_fieldcat_alv,&lt;BR /&gt;l_repid LIKE sy-repid,&lt;BR /&gt;ls_layout TYPE slis_layout_alv,&lt;BR /&gt;ls_variant TYPE disvariant.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;l_repid = sy-repid.&lt;BR /&gt;&lt;BR /&gt;CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;BR /&gt;EXPORTING&lt;BR /&gt;i_program_name = l_repid&lt;BR /&gt;i_internal_tabname = 'GT_OUTPUT'&lt;BR /&gt;i_inclname = l_repid&lt;BR /&gt;CHANGING&lt;BR /&gt;ct_fieldcat = lt_fieldcat&lt;BR /&gt;EXCEPTIONS&lt;BR /&gt;inconsistent_interface = 1&lt;BR /&gt;program_error = 2&lt;BR /&gt;OTHERS = 3.&lt;BR /&gt;IF sy-subrc &amp;gt; 0.&lt;BR /&gt;MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt;WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;ls_fieldcat-seltext_l = 'Role Count'.&lt;BR /&gt;ls_fieldcat-seltext_m = 'Role Count'.&lt;BR /&gt;ls_fieldcat-seltext_s = 'Role Count'.&lt;BR /&gt;ls_fieldcat-reptext_ddic = 'Role Count'.&lt;BR /&gt;MODIFY lt_fieldcat FROM ls_fieldcat&lt;BR /&gt;TRANSPORTING&lt;BR /&gt;seltext_l&lt;BR /&gt;seltext_m&lt;BR /&gt;seltext_s&lt;BR /&gt;reptext_ddic&lt;BR /&gt;WHERE&lt;BR /&gt;fieldname = 'ROLE_COUNT'.&lt;BR /&gt;&lt;BR /&gt;ls_layout-zebra = 'X'.&lt;BR /&gt;ls_layout-colwidth_optimize = 'X'.&lt;BR /&gt;CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;BR /&gt;EXPORTING&lt;BR /&gt;is_layout = ls_layout&lt;BR /&gt;it_fieldcat = lt_fieldcat&lt;BR /&gt;i_save = 'A'&lt;BR /&gt;is_variant = ls_variant&lt;BR /&gt;TABLES&lt;BR /&gt;t_outtab = gt_output&lt;BR /&gt;EXCEPTIONS&lt;BR /&gt;program_error = 1&lt;BR /&gt;OTHERS = 2.&lt;BR /&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt;WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt;ENDIF.&lt;BR /&gt;ENDFORM.&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form REQUIRED_OUTPUT&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt; p1 text&lt;BR /&gt;* &amp;lt;-- p2 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM required_output.&lt;BR /&gt;DATA:lt_output TYPE TABLE OF zhs_usr_inf,&lt;BR /&gt;wa_output LIKE LINE OF lt_output.&lt;BR /&gt;&lt;BR /&gt;SELECT * FROM zhs_usr_inf UP TO 1000 ROWS&lt;BR /&gt;INTO TABLE lt_output.&lt;BR /&gt;LOOP AT lt_output INTO wa_output.&lt;BR /&gt;gt_output-bname = wa_output-bname.&lt;BR /&gt;gt_output-name_text = wa_output-name_text.&lt;BR /&gt;gt_output-text = wa_output-text.&lt;BR /&gt;gt_output-agr_name = wa_output-agr_name.&lt;BR /&gt;gt_output-role_count = wa_output-role_count.&lt;BR /&gt;APPEND gt_output.&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;REFRESH lt_output.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. " REQUIRED_OUTPUT&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form ASIGNMENT_TEST&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt; p1 text&lt;BR /&gt;* &amp;lt;-- p2 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM asignment_test.&lt;BR /&gt;&lt;BR /&gt;********** DO NOT CHANGE THIS SECTION **********&lt;BR /&gt;GET RUN TIME FIELD g_begintime.&lt;BR /&gt;IF p_val_1 EQ 'X'.&lt;BR /&gt;l_number = 1000.&lt;BR /&gt;ELSEIF p_val_2 EQ 'X'.&lt;BR /&gt;l_number = 5000.&lt;BR /&gt;ENDIF.&lt;BR /&gt;********** END NO CHANGE **********&lt;BR /&gt;&lt;BR /&gt;IF p_val_3 EQ 'X'.&lt;BR /&gt;SELECT * INTO TABLE gt_user FROM usr02&lt;BR /&gt;WHERE clas &amp;gt; 'E'.&lt;BR /&gt;ELSE.&lt;BR /&gt;SELECT * INTO TABLE gt_user FROM usr02 UP TO l_number ROWS&lt;BR /&gt;WHERE clas &amp;gt; 'E'.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;SELECT * INTO TABLE gt_user_role FROM agr_users&lt;BR /&gt;FOR ALL ENTRIES IN gt_user&lt;BR /&gt;WHERE uname = gt_user-bname.&lt;BR /&gt;&lt;BR /&gt;PERFORM combine_tables.&lt;BR /&gt;PERFORM get_addl_data.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;********** DO NOT CHANGE THIS SECTION **********&lt;BR /&gt;GET RUN TIME FIELD g_endtime.&lt;BR /&gt;g_tottime = ( g_endtime / 1000000 ) - ( g_begintime / 1000000 ).&lt;BR /&gt;MESSAGE s398(00) WITH g_tottime.&lt;BR /&gt;********** END NO CHANGE **********&lt;BR /&gt;&lt;BR /&gt;ENDFORM. " ASIGNMENT_TEST&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form asignment_details&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt;P_0129 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM asignment_details USING i_dokname.&lt;BR /&gt;&lt;BR /&gt;CALL FUNCTION '/PSYNG/BASIS_F1_HELP'&lt;BR /&gt;EXPORTING&lt;BR /&gt;dokname = i_dokname.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. " asignment_details&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form set_info&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt; p1 text&lt;BR /&gt;* &amp;lt;-- p2 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM set_info.&lt;BR /&gt;CONCATENATE '@8P@' text-001 INTO as_f1.&lt;BR /&gt;ENDFORM. " set_info&lt;/P&gt;&lt;P&gt;Here one more thing I want to ask is &lt;STRONG&gt;at end &lt;/STRONG&gt;event is used to display the count like 1 2 3 4 5 6 id 6 roles are authenticate to user 1 but it shows 1 1 1 1 1 1&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
    <pubDate>Thu, 22 Dec 2016 20:35:42 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2016-12-22T20:35:42Z</dc:date>
    <item>
      <title>resolve performance issue / performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349690#M6791</link>
      <description>&lt;P&gt;Please review the code and let me know how can I increase the performance of this program.&lt;/P&gt;&lt;P&gt;At selection screen there are three option&lt;/P&gt;&lt;OL&gt;
&lt;LI&gt;Select 1000 records&lt;/LI&gt;&lt;LI&gt;Select 5000 records&lt;/LI&gt;&lt;LI&gt;Select all records&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;I have tried to make the changes still performance is not updated yet&lt;/P&gt;&lt;P&gt;DATA: gt_user TYPE TABLE OF usr02 WITH HEADER LINE,&lt;BR /&gt;gt_user_role TYPE TABLE OF agr_users WITH HEADER LINE,&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;********** DO NOT CHANGE THIS SECTION **********&lt;BR /&gt;g_begintime TYPE i,&lt;BR /&gt;g_endtime TYPE i,&lt;BR /&gt;g_tottime TYPE i.&lt;BR /&gt;&lt;BR /&gt;DATA: BEGIN OF gt_output OCCURS 0,&lt;BR /&gt;bname LIKE usr02-bname,&lt;BR /&gt;name_text LIKE adrp-name_text,&lt;BR /&gt;agr_name LIKE agr_users-agr_name,&lt;BR /&gt;text LIKE agr_texts-text,&lt;BR /&gt;role_count TYPE i,&lt;BR /&gt;END OF gt_output.&lt;BR /&gt;&lt;BR /&gt;TYPE-POOLS: slis.&lt;BR /&gt;DATA: l_number TYPE i.&lt;BR /&gt;SELECTION-SCREEN: BEGIN OF BLOCK sw WITH FRAME TITLE text-000.&lt;BR /&gt;&lt;BR /&gt;PARAMETERS:p_val_1 RADIOBUTTON GROUP a,&lt;BR /&gt;p_val_2 RADIOBUTTON GROUP a,&lt;BR /&gt;p_val_3 RADIOBUTTON GROUP a.&lt;BR /&gt;SELECTION-SCREEN ULINE.&lt;BR /&gt;PARAMETERS:p_demo RADIOBUTTON GROUP a.&lt;BR /&gt;SELECTION-SCREEN: END OF BLOCK sw.&lt;BR /&gt;&lt;BR /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;BR /&gt;SELECTION-SCREEN PUSHBUTTON 01(25) as_f1 USER-COMMAND as_dtl.&lt;BR /&gt;SELECTION-SCREEN END OF LINE.&lt;BR /&gt;&lt;BR /&gt;INITIALIZATION.&lt;BR /&gt;PERFORM set_info.&lt;BR /&gt;&lt;BR /&gt;AT SELECTION-SCREEN.&lt;BR /&gt;IF sy-ucomm EQ 'AS_DTL'.&lt;BR /&gt;PERFORM asignment_details USING 'Z_ASIGNMENT_01'.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;IF p_demo EQ 'X'.&lt;BR /&gt;PERFORM required_output.&lt;BR /&gt;ELSE.&lt;BR /&gt;PERFORM asignment_test.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;PERFORM output.&lt;BR /&gt;********** END NO CHANGE **********&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form combine_tables&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* Combine user and role tables&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM combine_tables.&lt;BR /&gt;DATA: ls_usr21 TYPE usr21,&lt;BR /&gt;ls_adrp TYPE adrp,&lt;BR /&gt;ls_texts TYPE agr_texts.&lt;BR /&gt;&lt;BR /&gt;LOOP AT gt_user.&lt;BR /&gt;* Get user name&lt;BR /&gt;SELECT * INTO ls_usr21 FROM usr21 WHERE bname = gt_user-bname.&lt;BR /&gt;SELECT * INTO ls_adrp FROM adrp&lt;BR /&gt;WHERE persnumber = ls_usr21-persnumber.&lt;BR /&gt;&lt;BR /&gt;gt_output-name_text = ls_adrp-name_text.&lt;BR /&gt;ENDSELECT.&lt;BR /&gt;ENDSELECT.&lt;BR /&gt;&lt;BR /&gt;LOOP AT gt_user_role WHERE uname = gt_user-bname.&lt;BR /&gt;* Only process roles that are currently active&lt;BR /&gt;CHECK gt_user_role-from_dat &amp;lt;= sy-datum&lt;BR /&gt;AND gt_user_role-to_dat &amp;gt;= sy-datum.&lt;BR /&gt;&lt;BR /&gt;* Get role text&lt;BR /&gt;SELECT * INTO ls_texts FROM agr_texts&lt;BR /&gt;WHERE agr_name = gt_output-agr_name&lt;BR /&gt;AND spras = sy-langu&lt;BR /&gt;AND line = 0.&lt;BR /&gt;&lt;BR /&gt;gt_output-text = ls_texts-text.&lt;BR /&gt;ENDSELECT.&lt;BR /&gt;&lt;BR /&gt;gt_output-bname = gt_user-bname.&lt;BR /&gt;gt_output-agr_name = gt_user_role-agr_name.&lt;BR /&gt;APPEND gt_output.&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;ENDFORM. " combine_tables&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form get_addl_data&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* Get extra fields&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM get_addl_data.&lt;BR /&gt;DATA: l_count TYPE i.&lt;BR /&gt;&lt;BR /&gt;* Count number of roles per user&lt;BR /&gt;SORT gt_user_role BY uname.&lt;BR /&gt;LOOP AT gt_user_role.&lt;BR /&gt;** ADD 1 TO l_count. "old code commented&lt;BR /&gt;&lt;BR /&gt;AT END OF uname.&lt;BR /&gt;** LOOP AT gt_output WHERE bname = gt_user_role-uname. "old code&lt;BR /&gt;READ TABLE gt_output WITH KEY bname = gt_user_role-uname.&lt;BR /&gt;"code change new code added here&lt;BR /&gt;ADD 1 TO l_count. "code change new code added here&lt;BR /&gt;gt_output-role_count = l_count.&lt;BR /&gt;MODIFY gt_output.&lt;BR /&gt;** CLEAR l_count. "old code commented&lt;BR /&gt;* ENDLOOP.&lt;BR /&gt;ENDAT.&lt;BR /&gt;CLEAR l_count. "code change new code added here&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;ENDFORM. " get_addl_data&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form output&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* Output report&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM output.&lt;BR /&gt;DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,&lt;BR /&gt;ls_fieldcat TYPE slis_fieldcat_alv,&lt;BR /&gt;l_repid LIKE sy-repid,&lt;BR /&gt;ls_layout TYPE slis_layout_alv,&lt;BR /&gt;ls_variant TYPE disvariant.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;l_repid = sy-repid.&lt;BR /&gt;&lt;BR /&gt;CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;BR /&gt;EXPORTING&lt;BR /&gt;i_program_name = l_repid&lt;BR /&gt;i_internal_tabname = 'GT_OUTPUT'&lt;BR /&gt;i_inclname = l_repid&lt;BR /&gt;CHANGING&lt;BR /&gt;ct_fieldcat = lt_fieldcat&lt;BR /&gt;EXCEPTIONS&lt;BR /&gt;inconsistent_interface = 1&lt;BR /&gt;program_error = 2&lt;BR /&gt;OTHERS = 3.&lt;BR /&gt;IF sy-subrc &amp;gt; 0.&lt;BR /&gt;MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt;WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;ls_fieldcat-seltext_l = 'Role Count'.&lt;BR /&gt;ls_fieldcat-seltext_m = 'Role Count'.&lt;BR /&gt;ls_fieldcat-seltext_s = 'Role Count'.&lt;BR /&gt;ls_fieldcat-reptext_ddic = 'Role Count'.&lt;BR /&gt;MODIFY lt_fieldcat FROM ls_fieldcat&lt;BR /&gt;TRANSPORTING&lt;BR /&gt;seltext_l&lt;BR /&gt;seltext_m&lt;BR /&gt;seltext_s&lt;BR /&gt;reptext_ddic&lt;BR /&gt;WHERE&lt;BR /&gt;fieldname = 'ROLE_COUNT'.&lt;BR /&gt;&lt;BR /&gt;ls_layout-zebra = 'X'.&lt;BR /&gt;ls_layout-colwidth_optimize = 'X'.&lt;BR /&gt;CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;BR /&gt;EXPORTING&lt;BR /&gt;is_layout = ls_layout&lt;BR /&gt;it_fieldcat = lt_fieldcat&lt;BR /&gt;i_save = 'A'&lt;BR /&gt;is_variant = ls_variant&lt;BR /&gt;TABLES&lt;BR /&gt;t_outtab = gt_output&lt;BR /&gt;EXCEPTIONS&lt;BR /&gt;program_error = 1&lt;BR /&gt;OTHERS = 2.&lt;BR /&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt;WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt;ENDIF.&lt;BR /&gt;ENDFORM.&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form REQUIRED_OUTPUT&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt; p1 text&lt;BR /&gt;* &amp;lt;-- p2 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM required_output.&lt;BR /&gt;DATA:lt_output TYPE TABLE OF zhs_usr_inf,&lt;BR /&gt;wa_output LIKE LINE OF lt_output.&lt;BR /&gt;&lt;BR /&gt;SELECT * FROM zhs_usr_inf UP TO 1000 ROWS&lt;BR /&gt;INTO TABLE lt_output.&lt;BR /&gt;LOOP AT lt_output INTO wa_output.&lt;BR /&gt;gt_output-bname = wa_output-bname.&lt;BR /&gt;gt_output-name_text = wa_output-name_text.&lt;BR /&gt;gt_output-text = wa_output-text.&lt;BR /&gt;gt_output-agr_name = wa_output-agr_name.&lt;BR /&gt;gt_output-role_count = wa_output-role_count.&lt;BR /&gt;APPEND gt_output.&lt;BR /&gt;ENDLOOP.&lt;BR /&gt;REFRESH lt_output.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. " REQUIRED_OUTPUT&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form ASIGNMENT_TEST&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt; p1 text&lt;BR /&gt;* &amp;lt;-- p2 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM asignment_test.&lt;BR /&gt;&lt;BR /&gt;********** DO NOT CHANGE THIS SECTION **********&lt;BR /&gt;GET RUN TIME FIELD g_begintime.&lt;BR /&gt;IF p_val_1 EQ 'X'.&lt;BR /&gt;l_number = 1000.&lt;BR /&gt;ELSEIF p_val_2 EQ 'X'.&lt;BR /&gt;l_number = 5000.&lt;BR /&gt;ENDIF.&lt;BR /&gt;********** END NO CHANGE **********&lt;BR /&gt;&lt;BR /&gt;IF p_val_3 EQ 'X'.&lt;BR /&gt;SELECT * INTO TABLE gt_user FROM usr02&lt;BR /&gt;WHERE clas &amp;gt; 'E'.&lt;BR /&gt;ELSE.&lt;BR /&gt;SELECT * INTO TABLE gt_user FROM usr02 UP TO l_number ROWS&lt;BR /&gt;WHERE clas &amp;gt; 'E'.&lt;BR /&gt;ENDIF.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;SELECT * INTO TABLE gt_user_role FROM agr_users&lt;BR /&gt;FOR ALL ENTRIES IN gt_user&lt;BR /&gt;WHERE uname = gt_user-bname.&lt;BR /&gt;&lt;BR /&gt;PERFORM combine_tables.&lt;BR /&gt;PERFORM get_addl_data.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;********** DO NOT CHANGE THIS SECTION **********&lt;BR /&gt;GET RUN TIME FIELD g_endtime.&lt;BR /&gt;g_tottime = ( g_endtime / 1000000 ) - ( g_begintime / 1000000 ).&lt;BR /&gt;MESSAGE s398(00) WITH g_tottime.&lt;BR /&gt;********** END NO CHANGE **********&lt;BR /&gt;&lt;BR /&gt;ENDFORM. " ASIGNMENT_TEST&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form asignment_details&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt;P_0129 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM asignment_details USING i_dokname.&lt;BR /&gt;&lt;BR /&gt;CALL FUNCTION '/PSYNG/BASIS_F1_HELP'&lt;BR /&gt;EXPORTING&lt;BR /&gt;dokname = i_dokname.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. " asignment_details&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form set_info&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* --&amp;gt; p1 text&lt;BR /&gt;* &amp;lt;-- p2 text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM set_info.&lt;BR /&gt;CONCATENATE '@8P@' text-001 INTO as_f1.&lt;BR /&gt;ENDFORM. " set_info&lt;/P&gt;&lt;P&gt;Here one more thing I want to ask is &lt;STRONG&gt;at end &lt;/STRONG&gt;event is used to display the count like 1 2 3 4 5 6 id 6 roles are authenticate to user 1 but it shows 1 1 1 1 1 1&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Thu, 22 Dec 2016 20:35:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349690#M6791</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2016-12-22T20:35:42Z</dc:date>
    </item>
    <item>
      <title>Re: resolve performance issue / performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349691#M6792</link>
      <description>&lt;P&gt;0) Try transaction ST12&lt;/P&gt;&lt;P&gt;1) SELECT * INTO TABLE gt_user_role FROM agr_users&lt;/P&gt;&lt;P&gt;Add condition for active roles here. You will process less records instead of skip'em in the LOOP AT later.&lt;/P&gt;&lt;P&gt;2) if usr21 and adrp isnt too big, select all data into internal table (sorted, hashed or with secondary keys). More memory consumption but faster.&lt;/P&gt;&lt;P&gt;3) add key for field uname in table gt_user_role.&lt;/P&gt;&lt;P&gt;4) FORM required_output.&lt;/P&gt;&lt;P&gt;Select into corresponding fields should be better&lt;/P&gt;&lt;P&gt;5) sort gt_output by uname and use binary search or add key for that field&lt;/P&gt;</description>
      <pubDate>Fri, 23 Dec 2016 10:18:18 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349691#M6792</guid>
      <dc:creator>former_member210008</dc:creator>
      <dc:date>2016-12-23T10:18:18Z</dc:date>
    </item>
    <item>
      <title>Re: resolve performance issue / performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349692#M6793</link>
      <description>&lt;P&gt;Hello Amit,&lt;/P&gt;&lt;P&gt;Does your program work? I honestly tried to correct it, but it's written in such way, that I would have to know how exactly it should work, before I could start correcting it. &lt;/P&gt;&lt;P&gt;Some tips for you: &lt;/P&gt;&lt;P&gt;- stop using global variables (gt_user/gt_users_role) - sure, you have to define them as globals in TOP, but please pass them between subroutines via USING/CHANGING. This will make your code more readable. &lt;/P&gt;&lt;P&gt;- stop using TABLES (WITH HEADER LINE), instead define local internal table &lt;/P&gt;&lt;P&gt;- for looping use FIELD-SYMBOL instead of table header line&lt;/P&gt;&lt;P&gt;
- fetch only the fields you'll need later - don't use '*' in SELECT&lt;/P&gt;&lt;P&gt;
- &lt;STRONG&gt;DON'T USE SELECT/ENDSELECT&lt;/STRONG&gt; - instead select all entries necessary and combine them in loops (remember about field-symbols &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; )
- if you nest selects statements consider JOIN &lt;/P&gt;&lt;P&gt;Try to implement my advices and, if you'll still experience poor performance, post here your corrected code and I'll try to help you.&lt;/P&gt;&lt;P&gt;BR&lt;BR /&gt;Michał&lt;/P&gt;</description>
      <pubDate>Fri, 23 Dec 2016 15:08:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/resolve-performance-issue-performance-tuning/m-p/349692#M6793</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2016-12-23T15:08:10Z</dc:date>
    </item>
  </channel>
</rss>

