<?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: Improve Performance in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698515#M2018179</link>
    <description>&lt;P&gt;Performance issues are never troubleshooted by reading ABAP code, they require to run SAT (ABAP runtime analysis).&lt;/P&gt;</description>
    <pubDate>Mon, 22 May 2023 11:35:53 GMT</pubDate>
    <dc:creator>Sandra_Rossi</dc:creator>
    <dc:date>2023-05-22T11:35:53Z</dc:date>
    <item>
      <title>Improve Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698512#M2018176</link>
      <description>&lt;P&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Report ZTEST_ZCTVWALL &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;REPORT ZTEST_ZCTVWALL. &lt;BR /&gt;TABLES: MARA, MARC, ZMSLSTAT, EINA, EINE. &lt;BR /&gt;SELECT-OPTIONS: S_MATNR FOR MARC-MATNR, &lt;BR /&gt; S_LIFNR FOR EINA-LIFNR. &lt;BR /&gt;PARAMETERS : P_WERKS LIKE MARC-WERKS OBLIGATORY, &lt;BR /&gt; P_OHNEUM RADIOBUTTON GROUP R1, &lt;BR /&gt; P_MITUM RADIOBUTTON GROUP R1, &lt;BR /&gt; P_MAX RADIOBUTTON GROUP R2, &lt;BR /&gt; P_MIN RADIOBUTTON GROUP R2. &lt;BR /&gt;SELECT-OPTIONS: S_MONAT FOR ZMSLSTAT-MONAT. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_EINA OCCURS 0, &lt;BR /&gt; INFNR TYPE EINA-INFNR, &lt;BR /&gt; MATNR TYPE EINA-MATNR, &lt;BR /&gt; LIFNR TYPE EINA-LIFNR, &lt;BR /&gt; END OF T_EINA. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_EINA&amp;gt; LIKE T_EINA. &lt;BR /&gt;ASSIGN T_EINA TO &amp;lt;FS_EINA&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;*DATA: BEGIN OF WA_EINE, &lt;BR /&gt;* INFNR TYPE EINE-INFNR, &lt;BR /&gt;* EKORG TYPE EINE-EKORG, &lt;BR /&gt;* WERKS TYPE EINE-WERKS, &lt;BR /&gt;* END OF WA_EINE. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_MARCI OCCURS 0, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; MMSTA TYPE MARC-MMSTA, &lt;BR /&gt; END OF T_MARCI. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_MARCI&amp;gt; LIKE T_MARCI. &lt;BR /&gt;ASSIGN T_MARCI TO &amp;lt;FS_MARCI&amp;gt;. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;TYPES: BEGIN OF TY_MARC, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; MMSTA TYPE MARC-MMSTA, &lt;BR /&gt; END OF TY_MARC. &lt;BR /&gt; &lt;BR /&gt;DATA: T_MARC TYPE SORTED TABLE OF TY_MARC &lt;BR /&gt; WITH HEADER LINE &lt;BR /&gt; WITH UNIQUE KEY MATNR WERKS. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_MARC&amp;gt; LIKE T_MARC. &lt;BR /&gt;ASSIGN T_MARC TO &amp;lt;FS_MARC&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;TYPES: BEGIN OF TY_MAT, &lt;BR /&gt; MATNRINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; END OF TY_MAT. &lt;BR /&gt;DATA: T_MAT TYPE SORTED TABLE OF TY_MAT &lt;BR /&gt; WITH HEADER LINE &lt;BR /&gt; WITH UNIQUE KEY MATNRINIT WERKSINIT &lt;BR /&gt; MATNR WERKS. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;TYPES: BEGIN OF TY_OUT, &lt;BR /&gt; MATNRINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; BKLAS TYPE MBEW-BKLAS, &lt;BR /&gt; MAKTX TYPE MAKT-MAKTX, &lt;BR /&gt; UMGES TYPE ZMSLSTAT-UMGES, &lt;BR /&gt; END OF TY_OUT. &lt;BR /&gt;DATA : T_OUT TYPE TABLE OF TY_OUT, &lt;BR /&gt; WA_OUT TYPE TY_OUT. &lt;BR /&gt; &lt;BR /&gt;CONSTANTS : CO_E VALUE 'E'. &lt;BR /&gt; &lt;BR /&gt;TYPES: BEGIN OF TY_MAKT, &lt;BR /&gt; MATNR TYPE MAKT-MATNR, &lt;BR /&gt; SPRAS TYPE MAKT-SPRAS, &lt;BR /&gt; MAKTX TYPE MAKT-MAKTX, &lt;BR /&gt; END OF TY_MAKT. &lt;BR /&gt;DATA: T_MAKT TYPE SORTED TABLE OF TY_MAKT &lt;BR /&gt; WITH HEADER LINE &lt;BR /&gt; WITH UNIQUE KEY MATNR SPRAS. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_MAKT&amp;gt; LIKE T_MAKT. &lt;BR /&gt;ASSIGN T_MAKT TO &amp;lt;FS_MAKT&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;TYPES: BEGIN OF TY_MBEW, &lt;BR /&gt; MATNR TYPE MBEW-MATNR, &lt;BR /&gt; BWKEY TYPE MBEW-BWKEY, &lt;BR /&gt; BKLAS TYPE MBEW-BKLAS, &lt;BR /&gt; END OF TY_MBEW. &lt;BR /&gt;DATA: T_MBEW TYPE SORTED TABLE OF TY_MBEW &lt;BR /&gt; WITH HEADER LINE &lt;BR /&gt; WITH UNIQUE KEY MATNR BWKEY. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS: &amp;lt;FS_MBEW&amp;gt; LIKE T_MBEW. &lt;BR /&gt;ASSIGN T_MBEW TO &amp;lt;FS_MBEW&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_MATALL OCCURS 0, &lt;BR /&gt; MATNRINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNRWKINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSWKINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNRV TYPE MARC-MATNR, &lt;BR /&gt; WERKSV TYPE MARC-WERKS, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; STUFE(3) TYPE N, &lt;BR /&gt; TVW TYPE C, &lt;BR /&gt; END OF T_MATALL. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_MATALL&amp;gt; LIKE T_MATALL. &lt;BR /&gt;ASSIGN T_MATALL TO &amp;lt;FS_MATALL&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_MATNEW OCCURS 0, &lt;BR /&gt; MATNRINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNRWKINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSWKINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNRV TYPE MARC-MATNR, &lt;BR /&gt; WERKSV TYPE MARC-WERKS, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; END OF T_MATNEW. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_MATNEW&amp;gt; LIKE T_MATNEW. &lt;BR /&gt;ASSIGN T_MATNEW TO &amp;lt;FS_MATNEW&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_MATAKT OCCURS 0, &lt;BR /&gt; MATNRINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNRWKINIT TYPE MARC-MATNR, &lt;BR /&gt; WERKSWKINIT TYPE MARC-WERKS, &lt;BR /&gt; MATNRV TYPE MARC-MATNR, &lt;BR /&gt; WERKSV TYPE MARC-WERKS, &lt;BR /&gt; MATNR TYPE MARC-MATNR, &lt;BR /&gt; WERKS TYPE MARC-WERKS, &lt;BR /&gt; END OF T_MATAKT. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_MATAKT&amp;gt; LIKE T_MATAKT. &lt;BR /&gt;ASSIGN T_MATAKT TO &amp;lt;FS_MATAKT&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;TYPES: BEGIN OF TY_ZMSLSTAT, &lt;BR /&gt; MATNR TYPE ZMSLSTAT-MATNR, &lt;BR /&gt; WERKS TYPE ZMSLSTAT-WERKS, &lt;BR /&gt; URSAT TYPE ZMSLSTAT-URSAT, &lt;BR /&gt; UMGES TYPE ZMSLSTAT-UMGES, &lt;BR /&gt; END OF TY_ZMSLSTAT. &lt;BR /&gt; &lt;BR /&gt;DATA: T_ZMSLSTAT1 TYPE SORTED TABLE OF TY_ZMSLSTAT &lt;BR /&gt;WITH UNIQUE KEY MATNR WERKS URSAT &lt;BR /&gt;WITH HEADER LINE. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_ZMSLSTAT1&amp;gt; LIKE T_ZMSLSTAT1. &lt;BR /&gt;ASSIGN T_ZMSLSTAT1 TO &amp;lt;FS_ZMSLSTAT1&amp;gt;. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_ZMSLSTAT2 OCCURS 0, &lt;BR /&gt; MATNR TYPE ZMSLSTAT-MATNR, &lt;BR /&gt; WERKS TYPE ZMSLSTAT-WERKS, &lt;BR /&gt; MONAT TYPE ZMSLSTAT-MONAT, &lt;BR /&gt; KUNUR TYPE ZMSLSTAT-KUNUR, &lt;BR /&gt; MATUR TYPE ZMSLSTAT-MATUR, &lt;BR /&gt; VKORG TYPE ZMSLSTAT-VKORG, &lt;BR /&gt; VTWEG TYPE ZMSLSTAT-VTWEG, &lt;BR /&gt; URSAT TYPE ZMSLSTAT-URSAT, &lt;BR /&gt; UMGES TYPE ZMSLSTAT-UMGES, &lt;BR /&gt; END OF T_ZMSLSTAT2. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;DATA: T_ZMSLSTAT TYPE SORTED TABLE OF TY_ZMSLSTAT &lt;BR /&gt;WITH UNIQUE KEY MATNR WERKS URSAT &lt;BR /&gt;WITH HEADER LINE. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_ZMSLSTAT2&amp;gt; LIKE T_ZMSLSTAT2. &lt;BR /&gt;ASSIGN T_ZMSLSTAT2 TO &amp;lt;FS_ZMSLSTAT2&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_ZMSLWERK OCCURS 0, &lt;BR /&gt; WERKS TYPE ZMSLWERK-WERKS, &lt;BR /&gt; STWAE TYPE ZMSLWERK-STWAE, &lt;BR /&gt; END OF T_ZMSLWERK. &lt;BR /&gt; &lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;FS_ZMSLSTAT&amp;gt; LIKE T_ZMSLSTAT. &lt;BR /&gt;ASSIGN T_ZMSLSTAT TO &amp;lt;FS_ZMSLSTAT&amp;gt;. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF T_EKKO OCCURS 0, &lt;BR /&gt; EBELN TYPE EKKO-EBELN, &lt;BR /&gt; LIFNR TYPE EKKO-LIFNR, &lt;BR /&gt; END OF T_EKKO. &lt;BR /&gt; &lt;BR /&gt;DATA: BEGIN OF WA_EKPO, &lt;BR /&gt; EBELN TYPE EKPO-EBELN, &lt;BR /&gt; MATNR TYPE EKPO-MATNR, &lt;BR /&gt; WERKS TYPE EKPO-WERKS, &lt;BR /&gt; END OF WA_EKPO. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;DATA: LT_WULTB LIKE STPOV OCCURS 0 WITH HEADER LINE, &lt;BR /&gt; LT_EQUICAT LIKE CSCEQUI OCCURS 0 WITH HEADER LINE, &lt;BR /&gt; LT_KNDCAT LIKE CSCKND OCCURS 0 WITH HEADER LINE, &lt;BR /&gt; LT_MATCAT LIKE CSCMAT OCCURS 0 WITH HEADER LINE, &lt;BR /&gt; LT_STDCAT LIKE CSCSTD OCCURS 0 WITH HEADER LINE, &lt;BR /&gt; LT_TPLCAT LIKE CSCTPL OCCURS 0 WITH HEADER LINE, &lt;BR /&gt; &lt;BR /&gt; LS_WULTB TYPE STPOV. &lt;BR /&gt;DATA: V_STUFE(3) TYPE N, &lt;BR /&gt; V_STUFE1 TYPE N, &lt;BR /&gt; V_STUFEC TYPE C, &lt;BR /&gt; F_ANZ TYPE P. &lt;BR /&gt; &lt;BR /&gt;PERFORM GET-DATA. &lt;BR /&gt;PERFORM TVW. &lt;BR /&gt;PERFORM GET-PLANT. &lt;BR /&gt;PERFORM GET-MAKT. &lt;BR /&gt;PERFORM GET-MBEW. &lt;BR /&gt;PERFORM OUTPUT. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form GET-DATA &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 GET-DATA . &lt;BR /&gt; IF S_LIFNR-LOW &amp;gt; ' '. &lt;BR /&gt; SELECT INFNR, MATNR, LIFNR FROM EINA &lt;BR /&gt; INTO TABLE @T_EINA &lt;BR /&gt; WHERE LIFNR IN @S_LIFNR &lt;BR /&gt; AND MATNR IN @S_MATNR &lt;BR /&gt; AND LOEKZ = ' '. &lt;BR /&gt; IF T_EINA[] IS NOT INITIAL. &lt;BR /&gt; SELECT INFNR, EKORG, WERKS FROM EINE &lt;BR /&gt; INTO TABLE @DATA(T_EINE) &lt;BR /&gt; FOR ALL ENTRIES IN @T_EINA &lt;BR /&gt; WHERE INFNR = @T_EINA-INFNR &lt;BR /&gt; AND WERKS = @P_WERKS &lt;BR /&gt; AND LOEKZ = ' '. "#EC CI_NO_TRANSFORM &lt;BR /&gt; ENDIF. &lt;BR /&gt; SORT T_EINA BY INFNR. &lt;BR /&gt; SORT T_EINE BY INFNR. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_EINA INTO &amp;lt;FS_EINA&amp;gt;. &lt;BR /&gt; IF T_EINE IS NOT INITIAL. &lt;BR /&gt; READ TABLE T_EINE ASSIGNING FIELD-SYMBOL(&amp;lt;FS_EINE&amp;gt;) WITH KEY INFNR = &amp;lt;FS_EINA&amp;gt;-INFNR BINARY SEARCH. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; LOOP AT T_EINE INTO &amp;lt;FS_EINE&amp;gt; FROM SY-TABIX. &lt;BR /&gt; IF &amp;lt;FS_EINE&amp;gt;-INFNR NE &amp;lt;FS_EINA&amp;gt;-INFNR. &lt;BR /&gt; EXIT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; T_MARCI-MATNR = &amp;lt;FS_EINA&amp;gt;-MATNR. &lt;BR /&gt; T_MARCI-WERKS = &amp;lt;FS_EINE&amp;gt;-WERKS. &lt;BR /&gt; APPEND T_MARCI. &lt;BR /&gt;* CLEAR : &amp;lt;FS_EINE&amp;gt;. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; ENDIF. &lt;BR /&gt; ENDIF. &lt;BR /&gt;* CLEAR : &amp;lt;FS_EINA&amp;gt;. &lt;BR /&gt; &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; &lt;BR /&gt; SELECT EBELN, LIFNR FROM EKKO &lt;BR /&gt; INTO TABLE @T_EKKO &lt;BR /&gt; WHERE BSTYP = 'L' &lt;BR /&gt; AND LIFNR IN @S_LIFNR &lt;BR /&gt; AND LOEKZ = ' ' &lt;BR /&gt; AND KDATB &amp;lt;= @SY-DATUM &lt;BR /&gt; AND KDATE &amp;gt;= @SY-DATUM. &lt;BR /&gt; &lt;BR /&gt; IF T_EKKO[] IS NOT INITIAL. &lt;BR /&gt; SELECT EBELN, MATNR, WERKS FROM EKPO &lt;BR /&gt; INTO TABLE @DATA(T_EKPO) &lt;BR /&gt; FOR ALL ENTRIES IN @T_EKKO &lt;BR /&gt; WHERE EBELN = @T_EKKO-EBELN &lt;BR /&gt; AND MATNR IN @S_MATNR &lt;BR /&gt; AND WERKS = @P_WERKS &lt;BR /&gt; AND LOEKZ = ' '. "#EC CI_NO_TRANSFORM &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; SORT T_EKKO BY EBELN. &lt;BR /&gt; SORT T_EKPO BY EBELN. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_EKKO ASSIGNING FIELD-SYMBOL(&amp;lt;FS_EKKO&amp;gt;). &lt;BR /&gt; IF T_EKPO IS NOT INITIAL. &lt;BR /&gt; READ TABLE T_EKPO ASSIGNING FIELD-SYMBOL(&amp;lt;FS_EKPO&amp;gt;) WITH KEY &amp;lt;FS_EKKO&amp;gt;-EBELN BINARY SEARCH. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; LOOP AT T_EKPO INTO &amp;lt;FS_EKPO&amp;gt; FROM SY-TABIX. &lt;BR /&gt; IF &amp;lt;FS_EKKO&amp;gt;-EBELN NE &amp;lt;FS_EKPO&amp;gt;-EBELN. &lt;BR /&gt; EXIT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; T_MARCI-MATNR = &amp;lt;FS_EKPO&amp;gt;-MATNR. &lt;BR /&gt; T_MARCI-WERKS = &amp;lt;FS_EKPO&amp;gt;-WERKS. &lt;BR /&gt; APPEND T_MARCI. &lt;BR /&gt;* CLEAR : &amp;lt;FS_EKPO&amp;gt;. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; ENDIF. &lt;BR /&gt; ENDIF. &lt;BR /&gt;* CLEAR : &amp;lt;FS_EKKO&amp;gt;. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; &lt;BR /&gt; SORT T_MARCI[] BY MATNR WERKS. &lt;BR /&gt; DELETE ADJACENT DUPLICATES FROM T_MARCI[] COMPARING MATNR WERKS. &lt;BR /&gt; ELSE. &lt;BR /&gt; SELECT MATNR WERKS MMSTA FROM MARC &lt;BR /&gt; INTO TABLE T_MARCI &lt;BR /&gt; WHERE MATNR IN S_MATNR &lt;BR /&gt; AND WERKS = P_WERKS. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; IF T_MARCI[] IS INITIAL. &lt;BR /&gt; WRITE: /'Keine Daten gefunden'. &lt;BR /&gt; EXIT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; SELECT MATNR WERKS MMSTA &lt;BR /&gt; FROM MARC &lt;BR /&gt; INTO TABLE T_MARC &lt;BR /&gt; WHERE MMSTA &amp;gt; '28' &lt;BR /&gt; AND MMSTA &amp;lt; '94' . "ORDER BY PRIMARY KEY. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_MARCI INTO &amp;lt;FS_MARCI&amp;gt;. &lt;BR /&gt; READ TABLE T_MARC INTO &amp;lt;FS_MARC&amp;gt; WITH KEY MATNR = &amp;lt;FS_MARCI&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MARCI&amp;gt;-WERKS BINARY SEARCH. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; READ TABLE T_MAT WITH KEY MATNRINIT = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNR = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MARC&amp;gt;-WERKS BINARY SEARCH. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; CONTINUE. &lt;BR /&gt; ELSE. &lt;BR /&gt; MOVE-CORRESPONDING &amp;lt;FS_MARC&amp;gt; TO T_MAT. &lt;BR /&gt; T_MAT-MATNRINIT = &amp;lt;FS_MARC&amp;gt;-MATNR. &lt;BR /&gt; T_MAT-WERKSINIT = &amp;lt;FS_MARC&amp;gt;-WERKS. &lt;BR /&gt; INSERT TABLE T_MAT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; APPEND VALUE #( MATNRINIT = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNRWKINIT = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSWKINIT = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNRV = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSV = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNR = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MARC&amp;gt;-WERKS ) TO T_MATNEW. &lt;BR /&gt; &lt;BR /&gt; APPEND VALUE #( MATNRINIT = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNRWKINIT = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSWKINIT = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNR = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; STUFE = 0 ) TO T_MATALL. &lt;BR /&gt; ELSE. &lt;BR /&gt;* CLEAR &amp;lt;FS_MARC&amp;gt;. &lt;BR /&gt; ENDIF. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form TVW &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 TVW . &lt;BR /&gt; DO. &lt;BR /&gt; IF T_MATNEW[] IS INITIAL. &lt;BR /&gt; EXIT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; V_STUFE = V_STUFE + 1. &lt;BR /&gt; CLEAR T_MATAKT[]. &lt;BR /&gt; &lt;BR /&gt; APPEND LINES OF T_MATNEW[] TO T_MATAKT[]. &lt;BR /&gt; CLEAR T_MATNEW[]. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; SORT T_MATAKT[] BY MATNRINIT WERKSINIT MATNR WERKS. &lt;BR /&gt; LOOP AT T_MATAKT INTO &amp;lt;FS_MATAKT&amp;gt;. &lt;BR /&gt; REFRESH: LT_WULTB[], &lt;BR /&gt; LT_EQUICAT[], &lt;BR /&gt; LT_KNDCAT[], &lt;BR /&gt; LT_MATCAT[], &lt;BR /&gt; LT_STDCAT[], &lt;BR /&gt; LT_TPLCAT[]. &lt;BR /&gt; &lt;BR /&gt; CALL FUNCTION 'CS_WHERE_USED_MAT' &lt;BR /&gt; EXPORTING &lt;BR /&gt; DATUB = SY-DATUM &lt;BR /&gt; DATUV = SY-DATUM &lt;BR /&gt; MATNR = &amp;lt;FS_MATAKT&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MATAKT&amp;gt;-WERKS &lt;BR /&gt; TABLES &lt;BR /&gt; WULTB = LT_WULTB &lt;BR /&gt; EQUICAT = LT_EQUICAT &lt;BR /&gt; KNDCAT = LT_KNDCAT &lt;BR /&gt; MATCAT = LT_MATCAT &lt;BR /&gt; STDCAT = LT_STDCAT &lt;BR /&gt; TPLCAT = LT_TPLCAT &lt;BR /&gt; EXCEPTIONS &lt;BR /&gt; CALL_INVALID = 1 &lt;BR /&gt; MATERIAL_NOT_FOUND = 2 &lt;BR /&gt; NO_WHERE_USED_REC_FOUND = 3 &lt;BR /&gt; NO_WHERE_USED_REC_SELECTED = 4 &lt;BR /&gt; NO_WHERE_USED_REC_VALID = 5 &lt;BR /&gt; OTHERS = 6. &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; IF LT_WULTB[] IS NOT INITIAL. &lt;BR /&gt; SORT LT_WULTB[] BY MATNR WERKS. &lt;BR /&gt; LOOP AT LT_WULTB ASSIGNING FIELD-SYMBOL(&amp;lt;FS_WULTB&amp;gt;). &lt;BR /&gt; READ TABLE T_MARC WITH KEY MATNR = &amp;lt;FS_WULTB&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_WULTB&amp;gt;-WERKS BINARY SEARCH. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; ELSE. &lt;BR /&gt; CONTINUE. &lt;BR /&gt; ENDIF. &lt;BR /&gt; IF P_MAX = 'X'. &lt;BR /&gt; READ TABLE T_MAT WITH KEY MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT &lt;BR /&gt; MATNR = &amp;lt;FS_WULTB&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_WULTB&amp;gt;-WERKS BINARY SEARCH. &lt;BR /&gt; ELSE. &lt;BR /&gt; READ TABLE T_MAT WITH KEY MATNR = &amp;lt;FS_WULTB&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_WULTB&amp;gt;-WERKS. &lt;BR /&gt; ENDIF. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; CONTINUE. &lt;BR /&gt; ELSE. &lt;BR /&gt; MOVE-CORRESPONDING &amp;lt;FS_WULTB&amp;gt; TO T_MAT. &lt;BR /&gt; T_MAT-MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT. &lt;BR /&gt; T_MAT-WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT. &lt;BR /&gt; INSERT TABLE T_MAT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; APPEND VALUE #( MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT &lt;BR /&gt; MATNRV = &amp;lt;FS_MATAKT&amp;gt;-MATNR &lt;BR /&gt; WERKSV = &amp;lt;FS_MATAKT&amp;gt;-WERKS &lt;BR /&gt; MATNR = &amp;lt;FS_WULTB&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_WULTB&amp;gt;-WERKS ) TO T_MATNEW. &lt;BR /&gt; &lt;BR /&gt; APPEND VALUE #( MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT &lt;BR /&gt; MATNRV = &amp;lt;FS_MATAKT&amp;gt;-MATNR &lt;BR /&gt; WERKSV = &amp;lt;FS_MATAKT&amp;gt;-WERKS &lt;BR /&gt; MATNR = &amp;lt;FS_WULTB&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_WULTB&amp;gt;-WERKS &lt;BR /&gt; STUFE = V_STUFE ) TO T_MATALL. &lt;BR /&gt;* CLEAR &amp;lt;FS_WULTB&amp;gt;. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; ENDIF. &lt;BR /&gt;* CLEAR &amp;lt;FS_MATAKT&amp;gt;. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; ENDDO. &lt;BR /&gt; &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form 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 OUTPUT . &lt;BR /&gt; &lt;BR /&gt; IF P_MITUM = 'X'. &lt;BR /&gt; PERFORM GET-UMSATZ. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_MAT ASSIGNING FIELD-SYMBOL(&amp;lt;FS_MAT&amp;gt;). &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; MOVE-CORRESPONDING &amp;lt;FS_MAT&amp;gt; TO WA_OUT. &lt;BR /&gt; &lt;BR /&gt;* CLEAR &amp;lt;FS_MAKT&amp;gt;. &lt;BR /&gt; READ TABLE T_MAKT INTO &amp;lt;FS_MAKT&amp;gt; WITH KEY MATNR = &amp;lt;FS_MAT&amp;gt;-MATNR. &lt;BR /&gt; WA_OUT-MAKTX = &amp;lt;FS_MAKT&amp;gt;-MAKTX. &lt;BR /&gt; &lt;BR /&gt;* CLEAR &amp;lt;FS_MBEW&amp;gt;. &lt;BR /&gt; READ TABLE T_MBEW INTO &amp;lt;FS_MBEW&amp;gt; WITH KEY MATNR = &amp;lt;FS_MAT&amp;gt;-MATNR &lt;BR /&gt; BWKEY = &amp;lt;FS_MAT&amp;gt;-WERKS. &lt;BR /&gt; WA_OUT-BKLAS = &amp;lt;FS_MBEW&amp;gt;-BKLAS. &lt;BR /&gt; &lt;BR /&gt; IF P_MITUM = 'X'. &lt;BR /&gt; CLEAR &amp;lt;FS_ZMSLSTAT&amp;gt;. &lt;BR /&gt; READ TABLE T_ZMSLSTAT INTO &amp;lt;FS_ZMSLSTAT&amp;gt; WITH KEY MATNR = &amp;lt;FS_MAT&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MAT&amp;gt;-WERKS. &lt;BR /&gt; WA_OUT-UMGES = &amp;lt;FS_ZMSLSTAT&amp;gt;-UMGES. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; APPEND WA_OUT TO T_OUT. &lt;BR /&gt; CLEAR WA_OUT. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; &lt;BR /&gt; PERFORM DISPLAY_ALV. &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form GET-PLANT &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 GET-PLANT . &lt;BR /&gt; DO. &lt;BR /&gt; CLEAR: T_MATNEW[], T_MATAKT[]. &lt;BR /&gt; V_STUFE1 = V_STUFE / 100. &lt;BR /&gt; V_STUFE1 = V_STUFE1 + 1. &lt;BR /&gt; V_STUFE = V_STUFE1 * 100. &lt;BR /&gt; LOOP AT T_MATALL INTO &amp;lt;FS_MATALL&amp;gt;. &lt;BR /&gt; IF &amp;lt;FS_MATALL&amp;gt;-TVW = 'X'. &lt;BR /&gt; CONTINUE. &lt;BR /&gt; ELSE. &lt;BR /&gt; MOVE-CORRESPONDING T_MATALL TO T_MATAKT. &lt;BR /&gt; APPEND T_MATAKT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &amp;lt;FS_MATALL&amp;gt;-TVW = 'X'. &lt;BR /&gt; MODIFY T_MATALL. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt;* CLEAR &amp;lt;FS_MATALL&amp;gt;. &lt;BR /&gt; &lt;BR /&gt; IF T_MATAKT[] IS INITIAL. &lt;BR /&gt; EXIT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; SORT T_MATAKT BY MATNRINIT WERKSINIT MATNR WERKS. &lt;BR /&gt; DELETE ADJACENT DUPLICATES FROM T_MATAKT &lt;BR /&gt; COMPARING MATNRINIT WERKSINIT MATNR WERKS. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_MATAKT INTO &amp;lt;FS_MATAKT&amp;gt;. &lt;BR /&gt; LOOP AT T_MARC INTO &amp;lt;FS_MARC&amp;gt; WHERE MATNR = &amp;lt;FS_MATAKT&amp;gt;-MATNR &lt;BR /&gt; AND WERKS &amp;lt;&amp;gt; &amp;lt;FS_MATAKT&amp;gt;-WERKS. &lt;BR /&gt; READ TABLE T_MAT WITH KEY MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT &lt;BR /&gt; MATNR = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MARC&amp;gt;-WERKS. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; CONTINUE. &lt;BR /&gt; ELSE. &lt;BR /&gt; MOVE-CORRESPONDING &amp;lt;FS_MARC&amp;gt; TO T_MAT. &lt;BR /&gt; T_MAT-MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT. &lt;BR /&gt; T_MAT-WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT. &lt;BR /&gt; INSERT TABLE T_MAT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; APPEND VALUE #( MATNRINIT = &amp;lt;FS_MATAKT&amp;gt;-MATNRINIT &lt;BR /&gt; WERKSINIT = &amp;lt;FS_MATAKT&amp;gt;-WERKSINIT &lt;BR /&gt; MATNRWKINIT = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSWKINIT = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNRV = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKSV = &amp;lt;FS_MARC&amp;gt;-WERKS &lt;BR /&gt; MATNR = &amp;lt;FS_MARC&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_MARC&amp;gt;-WERKS ) TO T_MATNEW. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_MATNEW INTO &amp;lt;FS_MATNEW&amp;gt;. &lt;BR /&gt; MOVE-CORRESPONDING &amp;lt;FS_MATNEW&amp;gt; TO T_MATALL. &lt;BR /&gt; T_MATALL-STUFE = V_STUFE. &lt;BR /&gt; CLEAR: T_MATALL-MATNRV, T_MATALL-WERKSV. &lt;BR /&gt; T_MATALL-TVW = 'X'. &lt;BR /&gt; APPEND T_MATALL. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; CLEAR T_MATALL. &lt;BR /&gt; &lt;BR /&gt; PERFORM TVW. &lt;BR /&gt; &lt;BR /&gt; ENDDO. &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form GET-MAKT &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 GET-MAKT . &lt;BR /&gt; DESCRIBE TABLE T_MAT LINES F_ANZ. &lt;BR /&gt; IF F_ANZ &amp;gt; 0. &lt;BR /&gt; SELECT MATNR SPRAS MAKTX &lt;BR /&gt; FROM MAKT &lt;BR /&gt; INTO TABLE T_MAKT &lt;BR /&gt; FOR ALL ENTRIES IN T_MAT &lt;BR /&gt; WHERE MATNR = T_MAT-MATNR &lt;BR /&gt; AND SPRAS = 'EN'. &lt;BR /&gt; ENDIF. &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form GET-MBEW &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 GET-MBEW . &lt;BR /&gt; DESCRIBE TABLE T_MAT LINES F_ANZ. &lt;BR /&gt; IF F_ANZ &amp;gt; 0. &lt;BR /&gt; SELECT MATNR BWKEY BKLAS &lt;BR /&gt; FROM MBEW &lt;BR /&gt; INTO TABLE T_MBEW &lt;BR /&gt; FOR ALL ENTRIES IN T_MAT &lt;BR /&gt; WHERE MATNR = T_MAT-MATNR &lt;BR /&gt; AND BWKEY = T_MAT-WERKS &lt;BR /&gt; AND BWTAR = ' '. &lt;BR /&gt; ENDIF. &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form GET-UMSATZ &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 GET-UMSATZ . &lt;BR /&gt; SELECT WERKS STWAE &lt;BR /&gt; FROM ZMSLWERK &lt;BR /&gt; INTO TABLE T_ZMSLWERK &lt;BR /&gt; WHERE STWAE &amp;lt;&amp;gt; 'EUR'. &lt;BR /&gt; IF T_MAT[] IS NOT INITIAL. &lt;BR /&gt; SELECT MATNR WERKS MONAT KUNUR MATUR VKORG &lt;BR /&gt; VTWEG URSAT UMGES &lt;BR /&gt; FROM ZMSLSTAT &lt;BR /&gt; INTO T_ZMSLSTAT2 &lt;BR /&gt; FOR ALL ENTRIES IN T_MAT &lt;BR /&gt; WHERE MATNR = T_MAT-MATNR &lt;BR /&gt; AND WERKS = T_MAT-WERKS &lt;BR /&gt; AND MONAT IN S_MONAT. &lt;BR /&gt; IF &amp;lt;FS_ZMSLSTAT2&amp;gt;-URSAT = 'KO' &lt;BR /&gt; OR &amp;lt;FS_ZMSLSTAT2&amp;gt;-URSAT = 'KD'. &lt;BR /&gt; &amp;lt;FS_ZMSLSTAT2&amp;gt;-URSAT = 'KD'. &lt;BR /&gt;* collect T_ZMSLSTAT1. &lt;BR /&gt; APPEND &amp;lt;FS_ZMSLSTAT2&amp;gt; TO T_ZMSLSTAT2. &lt;BR /&gt; ENDIF. &lt;BR /&gt; ENDSELECT. &lt;BR /&gt; ENDIF. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_ZMSLSTAT2 INTO &amp;lt;FS_ZMSLSTAT2&amp;gt;. &lt;BR /&gt; APPEND VALUE #( MATNR = &amp;lt;FS_ZMSLSTAT2&amp;gt;-MATNR &lt;BR /&gt; WERKS = &amp;lt;FS_ZMSLSTAT2&amp;gt;-WERKS &lt;BR /&gt; URSAT = &amp;lt;FS_ZMSLSTAT2&amp;gt;-URSAT &lt;BR /&gt; UMGES = &amp;lt;FS_ZMSLSTAT2&amp;gt;-UMGES ) TO T_ZMSLSTAT1. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt; &lt;BR /&gt; SORT T_ZMSLWERK BY WERKS STWAE. &lt;BR /&gt; &lt;BR /&gt; LOOP AT T_ZMSLSTAT1 INTO &amp;lt;FS_ZMSLSTAT1&amp;gt;. &lt;BR /&gt; &lt;BR /&gt; READ TABLE T_ZMSLWERK WITH KEY WERKS = &amp;lt;FS_ZMSLSTAT1&amp;gt;-WERKS BINARY SEARCH. &lt;BR /&gt; MOVE-CORRESPONDING &amp;lt;FS_ZMSLSTAT1&amp;gt; TO T_ZMSLSTAT. &lt;BR /&gt; IF T_ZMSLWERK-STWAE = 'JPY'. &lt;BR /&gt; &amp;lt;FS_ZMSLSTAT1&amp;gt;-UMGES = &amp;lt;FS_ZMSLSTAT1&amp;gt;-UMGES / 100. &lt;BR /&gt; ENDIF. &lt;BR /&gt; IF SY-SUBRC = 0. &lt;BR /&gt; CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' &lt;BR /&gt; EXPORTING &lt;BR /&gt; DATE = SY-DATUM &lt;BR /&gt; FOREIGN_AMOUNT = &amp;lt;FS_ZMSLSTAT1&amp;gt;-UMGES &lt;BR /&gt; FOREIGN_CURRENCY = T_ZMSLWERK-STWAE &lt;BR /&gt; LOCAL_CURRENCY = 'EUR' &lt;BR /&gt; READ_TCURR = 'X' &lt;BR /&gt; IMPORTING &lt;BR /&gt; LOCAL_AMOUNT = &amp;lt;FS_ZMSLSTAT&amp;gt;-UMGES. &lt;BR /&gt; &lt;BR /&gt; IF SY-SUBRC &amp;lt;&amp;gt; 0. &lt;BR /&gt; WRITE: / 'Währung unbekannt', &lt;BR /&gt; &amp;lt;FS_ZMSLSTAT1&amp;gt;-MATNR, &lt;BR /&gt; T_ZMSLWERK-STWAE. &lt;BR /&gt; ENDIF. &lt;BR /&gt; ENDIF. &lt;BR /&gt; APPEND T_ZMSLSTAT. &lt;BR /&gt; ENDLOOP. &lt;BR /&gt;ENDFORM. &lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------* &lt;BR /&gt;*&amp;amp; Form DISPLAY_ALV &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 DISPLAY_ALV . &lt;BR /&gt; DATA: LREF_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE, "#EC NEEDED &lt;BR /&gt; LREF_COLUMN TYPE REF TO CL_SALV_COLUMN, "#EC NEEDED &lt;BR /&gt; LREF_ALV TYPE REF TO CL_SALV_TABLE, &lt;BR /&gt; LREF_FUNCT TYPE REF TO CL_SALV_FUNCTIONS. &lt;BR /&gt; &lt;BR /&gt; DATA: LV_MSG TYPE STRING, "#EC NEEDED &lt;BR /&gt; LREF_SALV_NOT_FOUND TYPE REF TO CX_SALV_NOT_FOUND. &lt;BR /&gt; &lt;BR /&gt; TRY. &lt;BR /&gt; CALL METHOD CL_SALV_TABLE=&amp;gt;FACTORY &lt;BR /&gt; IMPORTING &lt;BR /&gt; R_SALV_TABLE = LREF_ALV &lt;BR /&gt; CHANGING &lt;BR /&gt; T_TABLE = T_OUT. &lt;BR /&gt; &lt;BR /&gt; CATCH CX_SALV_MSG . &lt;BR /&gt; ENDTRY. &lt;BR /&gt; LREF_COLUMNS = LREF_ALV-&amp;gt;GET_COLUMNS( ). &lt;BR /&gt; &lt;BR /&gt; TRY. &lt;BR /&gt; LREF_COLUMN = LREF_COLUMNS-&amp;gt;GET_COLUMN( 'MATNR' ). &lt;BR /&gt; LREF_COLUMN-&amp;gt;SET_LONG_TEXT( TEXT-001 ). &lt;BR /&gt; CATCH CX_SALV_NOT_FOUND INTO LREF_SALV_NOT_FOUND. &lt;BR /&gt; LV_MSG = LREF_SALV_NOT_FOUND-&amp;gt;GET_TEXT( ). &lt;BR /&gt; MESSAGE LV_MSG TYPE CO_E. &lt;BR /&gt; ENDTRY. &lt;BR /&gt; &lt;BR /&gt; TRY. &lt;BR /&gt; LREF_COLUMN = LREF_COLUMNS-&amp;gt;GET_COLUMN( 'UMGES' ). &lt;BR /&gt; LREF_COLUMN-&amp;gt;SET_LONG_TEXT( TEXT-002 ). &lt;BR /&gt; CATCH CX_SALV_NOT_FOUND INTO LREF_SALV_NOT_FOUND. &lt;BR /&gt; LV_MSG = LREF_SALV_NOT_FOUND-&amp;gt;GET_TEXT( ). &lt;BR /&gt; MESSAGE LV_MSG TYPE CO_E. &lt;BR /&gt; ENDTRY. &lt;BR /&gt; &lt;BR /&gt; LREF_FUNCT = LREF_ALV-&amp;gt;GET_FUNCTIONS( ). &lt;BR /&gt; LREF_FUNCT-&amp;gt;SET_ALL( ABAP_TRUE ). &lt;BR /&gt; LREF_ALV-&amp;gt;DISPLAY( ). &lt;BR /&gt; &lt;/P&gt;
  &lt;P&gt;ENDFORM.&lt;/P&gt;</description>
      <pubDate>Sat, 20 May 2023 15:50:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698512#M2018176</guid>
      <dc:creator>576512765hsgssdd</dc:creator>
      <dc:date>2023-05-20T15:50:20Z</dc:date>
    </item>
    <item>
      <title>Re: Improve Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698513#M2018177</link>
      <description>&lt;P&gt;Please use the code option to get a more readable source code.&lt;/P&gt;&lt;P&gt;Before that&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Perform a performance analysis to identify the source of the problem, then paste only the relevant part of the code.&lt;/LI&gt;&lt;LI&gt;Try reducing the FOR ALL ENTRIES, optimize the remaining loop with sorted tables, etc.&lt;/LI&gt;&lt;LI&gt;Specify where you are stuck, what you have already tried, etc.&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Sat, 20 May 2023 20:30:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698513#M2018177</guid>
      <dc:creator>RaymondGiuseppi</dc:creator>
      <dc:date>2023-05-20T20:30:02Z</dc:date>
    </item>
    <item>
      <title>Re: Improve Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698514#M2018178</link>
      <description>&lt;P&gt;Edit your question and this time use the CODE button in the editor, so the code is readable.&lt;/P&gt;</description>
      <pubDate>Mon, 22 May 2023 09:50:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698514#M2018178</guid>
      <dc:creator>matt</dc:creator>
      <dc:date>2023-05-22T09:50:57Z</dc:date>
    </item>
    <item>
      <title>Re: Improve Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698515#M2018179</link>
      <description>&lt;P&gt;Performance issues are never troubleshooted by reading ABAP code, they require to run SAT (ABAP runtime analysis).&lt;/P&gt;</description>
      <pubDate>Mon, 22 May 2023 11:35:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698515#M2018179</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2023-05-22T11:35:53Z</dc:date>
    </item>
    <item>
      <title>Re: Improve Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698516#M2018180</link>
      <description>&lt;P&gt;After use the CODE button as has been suggested to you, maybe you can put some effort in the question itself. You are plainly asking us to do your work.&lt;/P&gt;&lt;P&gt;You should: search the net to find ways to detect bottlenecks, check those bottlenecks in your code, solve those bottlenecks.&lt;/P&gt;&lt;P&gt;Once you'll have those, if you cannot find (search again) how to fix them, then it will be fine to ask for help. Properly, like:&lt;/P&gt;&lt;P&gt;"hey people, I'm having problems trying to improve the performance in this piece of code&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;insert your code here, using the CODE button&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;"can you, please, provide me some hints to do that? I searched for A, B, C, and tried X, Y, Z, and it's still slow.&lt;/P&gt;&lt;P&gt;"thanks in advance&lt;/P&gt;</description>
      <pubDate>Tue, 23 May 2023 07:08:23 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/improve-performance/m-p/12698516#M2018180</guid>
      <dc:creator>VXLozano</dc:creator>
      <dc:date>2023-05-23T07:08:23Z</dc:date>
    </item>
  </channel>
</rss>

