My first Code Inspector extension

I'm trying to write my first own extension of Code Inspector. I don't like to discover again new wheel so I'm asking You:
Is in ABAP any test which check how long is procedure (how many lines is beetwene FORM ENDFORM statement?) which return warnings when length is just a little bit to big and errors when exceed a lot maximum length?
<b>I'm only interesting that is already in SAP this kind of test.</b>
Cheers, Tomek

Hello Thomasz,
you will see all SAP checks when starting SCI. Only with the newer releases there is a check on program metrics.
Regards,
  Klaus
<b>Documentation</b>
Determining Complexity of Procedures in ABAP Programs
The check calculates different complexity measurements for procedures in ABAP programs. These measurements are:
Number of Statements. Cyclical complexity. Here there is also the variant through a test parameter as to whether a CASE statement is treated as a simple or multiple branch.
Number of Versions. This measurement can only be determined in the original system of the respective program since these versions are only there.
In the results display, there is only one single information message. The results list is displayed when you double-click this message. In this list, the above-mentioned complexity measurements are specified after the procedure type and the procedure name. In addition, the Include and the line where the respective procedure begins are displayed. By double-clicking here, you can branch to the source code. The list can be sorted, as usual, by any column you wish. In addition, the standard procedures for exporting (for example, to Excel) are provided.
The test specifies the various procedure types in the  results list in the following manner:
METH : Methods
FORM: Forms
FUNC: Function modules
MOD: Modules
STAS: START-OF-SELECTION event
TOPS: TOP-OF-PAGE event
<b>Some code excerpt</b>
method RUN .
  data:
    L_EXCP  type ref to CX_EXCEPTION,
    L_NAME  type STRING,
    L_CLASS type STRING.
  if REF_SCAN is initial.
    check GET( ) = 'X'.
  endif.
  check REF_SCAN->SUBRC = 0.
  if PA_VERSION = 'X'.
    GET_PROC_VERSIONS( ).
  endif.
  STATEMENT_INDEX = 1.
  try.
      do.
        read table REF_SCAN->STATEMENTS index STATEMENT_INDEX into STATEMENT_WA.
        if SY-SUBRC <> 0. exit. endif.
        add 1 to STATEMENT_INDEX.
        check STATEMENT_WA-FROM <= STATEMENT_WA-TO.
*-- avoid native SQL
        check STATEMENT_WA-TYPE na 'EMPSDR'.
        case KEYWORD( ).
          when 'PROGRAM'
            or 'REPORT'
            or 'START-OF-SELECTION'.
            CHECK( P_PROC_TYPE = 'SSEL' P_PROC_NAME = '%' ).
          when 'END-OF-SELECTION'.
            CHECK( P_PROC_TYPE = 'ESEL' P_PROC_NAME = '%' ).
          when 'FORM'.
            L_NAME = GET_TOKEN_REL( 2 ).
            CHECK( P_PROC_TYPE = 'FORM' P_PROC_NAME = L_NAME ).
          when 'FUNCTION'.
            L_NAME = GET_TOKEN_REL( 2 ).
            CHECK( P_PROC_TYPE = 'FUNC' P_PROC_NAME = L_NAME  ).
          when 'METHOD'.
            L_NAME = GET_TOKEN_REL( 2 ).
            concatenate L_CLASS '=>' L_NAME into L_NAME.
            CHECK( P_PROC_TYPE = 'METH' P_PROC_NAME = L_NAME  ).
          when 'MODULE'.
            L_NAME = GET_TOKEN_REL( 2 ).
            if GET_TOKEN_REL( 3 ) = 'OUTPUT'.
              CHECK( P_PROC_TYPE = 'MODO' P_PROC_NAME = L_NAME ).
            else.
              CHECK( P_PROC_TYPE = 'MODI' P_PROC_NAME = L_NAME ).
            endif.
          when 'CLASS'.
            L_CLASS = GET_TOKEN_REL( 2 ).
          when 'INITIALIZATION'.
            CHECK( P_PROC_TYPE = 'INIT' P_PROC_NAME = '%' ).
          when 'GET'.
            L_NAME = GET_TOKEN_REL( 2 ).
            if  GET_TOKEN_REL( 3 ) = 'LATE'.
              CHECK( P_PROC_TYPE = 'GETL' P_PROC_NAME = L_NAME ).
            else.
              CHECK( P_PROC_TYPE = 'GET' P_PROC_NAME = L_NAME ).
            endif.
          when 'AT'.
            L_NAME = GET_TOKEN_REL( 2 ).
            if strlen( L_NAME ) > 2 and L_NAME(2) = 'PF'.
              L_NAME = L_NAME+2.
              CHECK( P_PROC_TYPE = 'ATPF' P_PROC_NAME = L_NAME ).
            else.
              case L_NAME.
                when 'USER-COMMAND'.
                  CHECK( P_PROC_TYPE = 'ATUC' P_PROC_NAME = '%' ).
                when 'LINE-SELECTION'.
                  CHECK( P_PROC_TYPE = 'LISE' P_PROC_NAME = '%' ).
                when 'SELECTION-SCREEN'.
                  L_NAME = GET_TOKEN_REL( 3 ).
                  if L_NAME is initial.
                    CHECK( P_PROC_TYPE = 'ATSS' P_PROC_NAME = '%' ).
                  else.
                    CHECK( P_PROC_TYPE = 'ATSS' P_PROC_NAME = L_NAME ).
                  endif.
              endcase.
            endif.
          when 'TOP-OF-PAGE'.
            if GET_TOKEN_REL( 2 ) = 'DURING'.
              CHECK( P_PROC_TYPE = 'TOPS' P_PROC_NAME = '%' ).
            else.
              CHECK( P_PROC_TYPE = 'TOPA' P_PROC_NAME = '%' ).
            endif.
          when 'END-OF-PAGE'.
            CHECK( P_PROC_TYPE = 'ENPA' P_PROC_NAME = '%' ).
          when 'LOAD-OF-PROGRAM'.
            CHECK( P_PROC_TYPE = 'LDPR' P_PROC_NAME = '%' ).
        endcase.
      enddo.
    catch CX_EXCEPTION into L_EXCP.
      raise event MESSAGE exporting
                 P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                 P_SUB_OBJ_NAME = L_EXCP->INCLUDE
                 P_LINE         = L_EXCP->LINE
                 P_COLUMN       = L_EXCP->COLUMN
                 P_KIND         = C_WARNING
                 P_TEST         = C_MY_NAME
                 P_CODE         = 'SYNTAX'.
  endtry.
endmethod.
method CHECK .
  data:
    L_INCLUDE      type PROGRAM,
    L_LINE         type I,
    L_COLUMN       type TOKEN_COL,
    L_COMPLEXITY   type I value 1,
    L_STMNTS       type I,
    L_VERSIONS     type I,
    L_COMPLEXITY_C type SYCHAR10,
    L_STMNTS_C     type SYCHAR10,
    L_VERSIONS_C   type SYCHAR10,
    L_NESTED_C     type SYCHAR10,
    L_PARAM_1      type STRING,
    L_TOKEN        type STRING,
    L_PROC_VERSION like line of PROC_VERSIONS,
    L_NESTED       type I,
    L_MAX_NESTED   type I.
  L_INCLUDE = GET_INCLUDE( ).
  L_LINE    = TOKEN_WA-ROW.
  L_COLUMN  = TOKEN_WA-COL.
  do.
    read table REF_SCAN->STATEMENTS index STATEMENT_INDEX into STATEMENT_WA.
    if SY-SUBRC <> 0.
      exit.
    endif.
    add 1 to STATEMENT_INDEX.
    check STATEMENT_WA-FROM <= STATEMENT_WA-TO.
    check STATEMENT_WA-TYPE na 'PS'.
*-- avoid native SQL
*  check STATEMENT_WA-TYPE na 'EMDR'.
    case KEYWORD( ).
      when 'IF' or 'WHILE' or 'LOOP' or 'DO' or 'PROVIDE'.
        if TOKEN_WA-ROW <> 0.
          add 1 to L_COMPLEXITY.
          add 1 to L_NESTED.
          if L_NESTED > L_MAX_NESTED.
            L_MAX_NESTED = L_NESTED.
          endif.
        endif.
      when 'ELSEIF'.
        if TOKEN_WA-ROW <> 0.
          add 1 to L_COMPLEXITY.
        endif.
      when 'ENDIF' or 'ENDWHILE' or 'ENDLOOP' or 'ENDDO' or 'ENDTRY'.
        subtract 1 from L_NESTED.
      when 'TRY'.
        add 1 to L_NESTED.
        if L_NESTED > L_MAX_NESTED.
          L_MAX_NESTED = L_NESTED.
        endif.
      when 'SELECT'.
      when 'ENDSELECT'.
        if TOKEN_WA-ROW <> 0.
          add 1 to L_COMPLEXITY.
          add 1 to L_NESTED.
          if L_NESTED > L_MAX_NESTED.
            L_MAX_NESTED = L_NESTED.
          endif.
          subtract 1 from L_NESTED.
        endif.
      when 'CHECK'.
        if TOKEN_WA-ROW <> 0.
          add 1 to L_COMPLEXITY.
        endif.
      when 'CASE'.
        if PA_WITH_CASE = 'X'.
          add 1 to L_COMPLEXITY.
        endif.
        add 1 to L_NESTED.
        if L_NESTED > L_MAX_NESTED.
          L_MAX_NESTED = L_NESTED.
        endif.
      when 'ENDCASE'.
        subtract 1 from L_NESTED.
      when 'WHEN'.
        if PA_WITH_CASE <> 'X' and TOKEN_WA-ROW <> 0.
          if GET_TOKEN_REL( 2 ) <> 'OTHERS'.
            add 1 to L_COMPLEXITY.
          endif.
        endif.
      when 'ENDFORM' or 'ENDFUNCTION' or 'ENDMETHOD' or 'ENDMODULE'.
        exit.
      when 'FORM'
        or 'FUNCTION'
        or 'MODULE'
        or 'START-OF-SELECTION'
        or 'END-OF-SELECTION'
        or 'TOP-OF-PAGE'
        or 'END-OF-PAGE'
        or 'LOAD-OF-PROGRAM'
        or 'INITIALIZATION'
        or 'CLASS'.
        subtract 1 from STATEMENT_INDEX.
        exit.
      when 'GET'.
        if GET_TOKEN_REL( 2 ) <> 'TIME'.
          case GET_TOKEN_REL( 3 ).
            when 'LATE' or 'FIELDS' or ''.
              subtract 1 from STATEMENT_INDEX.
              exit.
          endcase.
        endif.
      when 'AT'.
        L_TOKEN = GET_TOKEN_REL( 2 ).
        if strlen( L_TOKEN ) > 2 and L_TOKEN(2) = 'PF'.
          subtract 1 from STATEMENT_INDEX.
          exit.
        else.
          case L_TOKEN.
            when 'USER-COMMAND'.
              subtract 1 from STATEMENT_INDEX.
              exit.
            when 'LINE-SELECTION'.
              subtract 1 from STATEMENT_INDEX.
              exit.
            when 'SELECTION-SCREEN'.
              subtract 1 from STATEMENT_INDEX.
              exit.
          endcase.
        endif.
        add 1 to L_NESTED.
        if L_NESTED > L_MAX_NESTED.
          L_MAX_NESTED = L_NESTED.
        endif.
        add 1 to L_COMPLEXITY.
      when 'ENDAT'.
        subtract 1 from L_NESTED.
    endcase.
    if PA_VERSION = 'X'.
      loop at REF_SCAN->TOKENS from STATEMENT_WA-FROM to STATEMENT_WA-TO into TOKEN_WA.
        check TOKEN_WA-ROW <> 0.
        CL_CI_PROVIDE_CHECKSUM=>GEN_CHKSUM_FROM_STRING( exporting P_PARAM     = TOKEN_WA-STR
                                                        changing  P_CRC_VALUE = L_PROC_VERSION-CRC ).
      endloop.
    endif.
    add 1 to L_STMNTS.
  enddo.
  L_PROC_VERSION-PROC_TYPE = P_PROC_TYPE.
  L_PROC_VERSION-PROC_NAME = P_PROC_NAME.
  collect L_PROC_VERSION into PROC_VERSIONS.
  loop at PROC_VERSIONS transporting no fields where PROC_TYPE = P_PROC_TYPE and PROC_NAME = P_PROC_NAME.
    add 1 to L_VERSIONS.
  endloop.
  L_COMPLEXITY_C = L_COMPLEXITY.
  L_NESTED_C     = L_MAX_NESTED.
  L_STMNTS_C     = L_STMNTS.
  L_VERSIONS_C   = L_VERSIONS.
  concatenate P_PROC_TYPE P_PROC_NAME L_STMNTS_C L_COMPLEXITY_C L_NESTED_C L_VERSIONS_C into L_PARAM_1 separated by ' '.
  condense L_PARAM_1.
  raise event MESSAGE exporting
                  P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                  P_SUB_OBJ_NAME = L_INCLUDE
                  P_LINE         = L_LINE
                  P_COLUMN       = L_COLUMN
                  P_KIND         = C_NOTE
                  P_TEST         = C_MY_NAME
                  P_CODE         = C_CODE_SUMMARY
                  P_PARAM_1      = L_PARAM_1.
  if L_COMPLEXITY >= PA_COMPLEXITY.
    raise event MESSAGE exporting
                  P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                  P_SUB_OBJ_NAME = L_INCLUDE
                  P_LINE         = L_LINE
                  P_COLUMN       = L_COLUMN
                  P_KIND         = C_WARNING
                  P_TEST         = C_MY_NAME
                  P_CODE         = C_CODE_COMPLEXITY
                  P_PARAM_1      = L_COMPLEXITY_C.
  endif.
  if L_STMNTS >= PA_STMNTS.
    raise event MESSAGE exporting
                  P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                  P_SUB_OBJ_NAME = L_INCLUDE
                  P_LINE         = L_LINE
                  P_COLUMN       = L_COLUMN
                  P_KIND         = C_WARNING
                  P_TEST         = C_MY_NAME
                  P_CODE         = C_CODE_STMNTS
                  P_PARAM_1      = L_STMNTS_C.
  endif.
  if L_NESTED >= PA_NESTED.
    raise event MESSAGE exporting
                  P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                  P_SUB_OBJ_NAME = L_INCLUDE
                  P_LINE         = L_LINE
                  P_COLUMN       = L_COLUMN
                  P_KIND         = C_WARNING
                  P_TEST         = C_MY_NAME
                  P_CODE         = C_CODE_NESTED
                  P_PARAM_1      = L_NESTED_C.
  endif.
  if L_VERSIONS >= PA_VERSIONS.
    raise event MESSAGE exporting
                  P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                  P_SUB_OBJ_NAME = L_INCLUDE
                  P_LINE         = L_LINE
                  P_COLUMN       = L_COLUMN
                  P_KIND         = C_WARNING
                  P_TEST         = C_MY_NAME
                  P_CODE         = C_CODE_VERSIONS
                  P_PARAM_1      = L_VERSIONS_C.
  endif.
endmethod.

Similar Messages

  • How to remove the warning messages in CODE INSPECTOR of my report......?

    Hi All,
    I am trying to do the check to my program i.e CODE INSPECTOR. i am seeing the following warning messages below.
    1 warning message
    Program zraj0xxx include  zraj0xxx row 000083 Column0000
    %LINR-VBUP contains a hyphen
    (The Hyphen is used as a dereferencing operator! )
    Note: when i double click on the above message its taking me to the below code of my program.
    DATA %COUNT-VBUP(4) TYPE X.
    DATA %LINR-VBUP(2).
    TABLES VBPA.
    DATA %COUNT-VBPA(4) TYPE X.
    DATA %LINR-VBPA(2).
    2 warning message
    Program zraj0xxx include  zraj0xxx row 000079 Column0000
    Field string VLPMA is not referenced statically in the program
    Note: when i double click on the above message its taking me to the below code of my program.
    SELECTION-SCREEN: BEGIN OF BLOCK PROG
                               WITH FRAME TITLE TEXT-F58.
    TABLES: VLPMA,                                             
                  VLKPA.  
    TABLES VBUP.
    3 warning message
    Program zraj0xxx include  zraj0xxx row 000001 Column0000
    TEXT- GOH from the text pool is not used.
    Note: when i double click on the above message its taking me to the below code of my program.
    REPORT ZHYD0147 LINE-SIZE 255 NO STANDARD PAGE HEADING
       MESSAGE-ID ZB                                        
       LINE-COUNT 065(001).
    Thanks in advance.
    Rajesh.

    Hi Rajesh,
    First  warning message.
    DATA %COUNT-VBUP(4) TYPE X.
    DATA %LINR-VBUP(2).
    TABLES VBPA.
    DATA %COUNT-VBPA(4) TYPE X.
    DATA %LINR-VBPA(2).
    Here you are not supposed to use hyphen but instead use '_'.
    Second warning message
    Program zraj0xxx include zraj0xxx row 000079 Column0000
    Field string VLPMA is not referenced statically in the program
    That means you are not using this VLPMA any where in your program so bettr delete fromt he Top Include.
    Note: when i double click on the above message its taking me to the below code of my program.
    Third warning message
    Program zraj0xxx include zraj0xxx row 000001 Column0000
    TEXT- GOH from the text pool is not used.
    this also means that you are not using this Text elemnt anywhere of your program.So delete this one also.
    Thanks
    Rohini.

  • Select query gives error in Code inspector and extended program check

    Hi,
    I have a query .
    SELECT pernr
      FROM pa9100
      INTO TABLE t_nca_tab
      WHERE endda EQ c_date AND
      z_nca_required EQ c_yes.
    This query gives me an error in Code inspector like :
    Large table pa0001: No first field of table index in WHERE  condition
    I have one more query that gives error in extended program check
    SELECT SINGLE stell ename
          INTO (g_stell, g_name)
          FROM pa0001
          WHERE pernr EQ wa_nca_tab-pernr AND
                endda EQ c_date.
    The warning says:
    *In "SELECT SINGLE ...", the WHERE condition for the key field "SEQNR" does not
    test for equality. Therefore, the single record in question may not be unique.*
    Its too urgent.
    Please reply.
    Regards,
    Binay.

    The first field is PERNR .. so if UR not giving pernr it will fetch
    all the data from the said table and between the given dates ..
    Check if this is your requirement ...
    write the select as ...
    where r_pernr is a range ...
    SELECT pernr
    FROM pa9100
    INTO TABLE t_nca_tab
    WHERE pernr in r_pernr  <----
                 endda EQ c_date AND
                 z_nca_required EQ c_yes.
    As UR using select single it's expecting to use all the key
    fields in the where condition ...
    U can ignore this warning message

  • Code Inspector/ATC checks for VKOS/VKOI object types

    Dear Experts,
    I found a strange behavior while executing CI checks on a transport request. TR contained only IMG Activity objects (Object Type VKOS/VKOI). After CI checks it gave errors "Recognized dead code". There is no coding for these kind of object type, I don't know where it was able to find the dead code. On debugging I found that, it is trying to populate Program name concatenatinv " SAPIC " and the object type. ( SAPICVKO). But there is no such program existing. It then gives "Recognized dead code" error.
    Has anyone faced such error before? I guess this is error in the standard program.
    Thank you.

    Other language NUnit test frameworks similar to ABAP Unit (AUnit) commonly have project extensions for storing test results. These are useful for the unit level regression (did a new change break any existing functions). History of test results, help narrow down the nature of a current failure by answering the question of 'When did this break?' or when did it last pass? In systems dependent upon outside components the history can provide a pattern for occasional failures due to factors outside the system under test.
    I see that ABAP unit test results can be added into the Code Inspector under the Check Variant.
    1. Is it common or recomended to use the Code Inspector (SCI) to store AUnit test results?
    2. Is it common or recomended to use Code Inspector Object variants to collect individual AUnit tests for a regresssion style 'TestSuite'?
    3. What reporting or tools exists for Code Inspector history?
    4. Is Application Logging the better spot for AUnit results history?
    (also posted on the wiki.. apologies - I'm new to the forum and wiki)
    Will Loew-Blosser

  • Code Inspector & ABAP UNIT Testclasses

    Hallo all,
    I am currently trying to implement automated checks using the code inspector. I especially want to see if all our developers use our naming conventions. Also, we use ABAP Unit tests. Unfortunately, the generated test classes are not compliant with our name conventions (And also these Test classes are not interesting to be checked).
    Now, I receive many warnings, mostly from the Unit test implementations.
    Now: Is there a way to exclude these local test classes from my object set?
    Thanks for you help!
    Best regards,
    Martin Imme

    Other language NUnit test frameworks similar to ABAP Unit (AUnit) commonly have project extensions for storing test results. These are useful for the unit level regression (did a new change break any existing functions). History of test results, help narrow down the nature of a current failure by answering the question of 'When did this break?' or when did it last pass? In systems dependent upon outside components the history can provide a pattern for occasional failures due to factors outside the system under test.
    I see that ABAP unit test results can be added into the Code Inspector under the Check Variant.
    1. Is it common or recomended to use the Code Inspector (SCI) to store AUnit test results?
    2. Is it common or recomended to use Code Inspector Object variants to collect individual AUnit tests for a regresssion style 'TestSuite'?
    3. What reporting or tools exists for Code Inspector history?
    4. Is Application Logging the better spot for AUnit results history?
    (also posted on the wiki.. apologies - I'm new to the forum and wiki)
    Will Loew-Blosser

  • Styling in the inspector extension (DOCTYPE).

    Hello,
    I have created an inspector extension that displays some text and a few text fields. The problem is that even that I am using the DOCTYPE declaration, the inspector appears with corrupted style (font is smaller, table has strange padding/margins etc.). When I manually reload the extension by using the 'Reload Extensions' command, the inspector starts to look fine. Still, when I restart Dreamweaver the inspector looks bad again. I am testing the extension Dreamweaver CS3.
    Does anyone has an idea?

    In my inspector html page I am including two script files. The head section looks like this
    <!-- tag: ul, priority: 1, selection: within -->
    <!DOCTYPE HTML SYSTEM "-//Macromedia//DWExtension layout-engine5.0//pi">
    <html>
    <head>
        <title>Planyo reservation system</title>
        <script src="../Shared/Common/Scripts/my-shared.js" language="javascript"></script>
        <script src="my-inspector.js" language="javascript"></script>
        <style type="text/css">
            body
                margin-top: 0px;
                padding-top: 0px;
        </style>
    </head>
    After your suggestion I removed the script files including and put the JavaScript necessary to recongize my-element directly in the inspector HTML with the same result.The inspector shows up when the selection is inside a 'ul' tag like this: <ul id="myelement1">  </ul>
    This is the test code:
    <!-- tag: ul, priority: 1, selection: within -->
    <!DOCTYPE HTML SYSTEM "-//Macromedia//DWExtension layout-engine5.0//pi">
    <html>
    <head>
        <title>My element inspector test.</title>
        <script type="text/javascript">
            function canInspectSelection ()
                return null != SelectedMyElement ();
            function SelectedMyElement ()
                var dom = dw.getDocumentDOM ();
                if (dom)
                    var node = dom.getSelectedNode ();
                    if (node)
                        return FindMyElementFromNode (node);
                return null;
            function FindMyElementFromNode (node)
                var parent = node;
                while (parent)
                    if (IsMyElement (parent))
                        return parent;
                    parent = parent.parentNode;
                return null;
            function IsMyElement (node)
                return ((node.tagName) && ('ul' == node.tagName.toLowerCase ()) && (node.getAttribute ('id')) &&
                    (-1 != node.getAttribute ('id').search (/^myelement\d+$/)));
        </script>
        <style type="text/css">
            body
                padding:0;
                margin:0;
        </style>
    </head>
    <body>
        <table>
            <tr>
                <td align="right">Site ID</td>
                <td align="left"><input type="text" name="siteId" value="" onBlur="" style="width:100px" /></td>
            </tr>
            <tr>
                <td align="right">Resource ID</td>
                <td align="left"><input type="text" name="resourceId" value="" onBlur="" style="width:100px" /></td>
            </tr>
            <tr>
                <td align="right">View mode</td>
                <td align="left">
                    <select name="viewModeId" onChange="" >
                        <option value="1">Simple</option>
                        <option value="2">Full</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td align="right"></td>
                <td align="left" style="padding-top:5px;"><input type="button" value="Delete" onclick="" ID="Button1" NAME="Button1"/> Remove the element.</td>
            </tr>
        </table>   
    </body>
    </html>

  • Multiple transports in Code Inspector object set

    I'd like to be able to put a Code Inspector object set together with multiple transports and my current version (46c)only supports a single input.  Anyone know how to input multiple transports?
    Tim Barrow
    ADP

    Tim,
    Even the current version (7.0) supports just one transport request. Looks like that is ruled out, then.
    You could use the first tab (Select object set) to include multiple packages? Or you could use the 'free selection' to specify objects..
    Hope this helps.
    Sudha

  • Can I create a "play" button in the Tag Inspector extension

    Hello,
    I am creating a Tag Inspector extension for changing the
    properties of a customized swf files.
    Can I create a "play" button in the property panel to preview
    the swf movie?
    I've checked the "Inspectors" folder in the "configuration"
    and cant find the Inspector panel htm of swf object.
    It seems a part of core code of dreamweaver.

    No.  iDVD does not have that feature.  However, there are two ways you can do this: 
    1 - join the 10 segments into one movie file.  It's quite easy if you have Quicktime Pro and Quicktime Player 7.  Other video editing apps can do the job.
    2 - you can create a slideshow in iDVD and add each of the movies to it so they all will play one after another:
    Set the Slide duration to anything but Manual.  Do not select a transition and add no music to the slideshow.
    Remember, the playing time of the entire project should be less than 120 minutes including menu's playing time in order for you to use a single layer DVD disc.
    Follow this workflow to help assure the best qualty video DVD:
    Once you have the project as you want it save it as a disk image via the File ➙ Save as Disk Image  menu option. This will separate the encoding process from the burn process.
    To check the encoding mount the disk image, launch DVD Player and play it.  If it plays OK with DVD Player the encoding is good.
    Then burn to disk with Disk Utility or Toast at the slowest speed available (2x-4x) to assure the best burn quality.  Always use top quality media:  Verbatim, Maxell or Taiyo Yuden DVD-R are the most recommended in these forums.

  • Customizing the code inspector with check for two executable statements in same line

    Hi Everyone,
    I have a reuirement to customize the code inspector.I need to create a check 'Two executable statements should not be in the same line'.
    While doing so i am facing one problem as in internal table it is capturing the report as word by word with same row number nd different line number.
    If anyone have worked on this before then help me out.
    I am using CL_CI_TEST_SCAN as superclass and making the changes in the run method.
    Regards,
    Khushboo

    In the source code you will have this in comment right, use the "#EC ENHOK.

  • Execute ABAP Code Inspector from Outside of SAP

    Hi all...
    For reporting purpose, I would like to use ABAP Code Inspector (transaction SCI) for generating output as a file, it should call from outside of SAP through RFC function module and generate the list (output) as flat file (or XML), does anyone have been done with similar work like this? I wonder if you could share your experience with me...
    thanks in advance,
    yayan irianto.

    I managed to set up the variant, however found a problem.
    I used "Search ABAP Statement Patterns" under "Search Functs" and set the pattern like followings.
    SELECT + INTO *
    SELECT SINGLE + INTO *
    However following statements were detected.
    SELECT * INTO TABLE IT_DRAW FROM DRAW.
    SELECT MANDT INTO TABLE IT_DRAW FROM DRAW.
    SELECT SINGLE * INTO TABLE IT_DRAW FROM DRAW.
    SELECT SINGLE MANDT INTO TABLE IT_DRAW FROM DRAW.
    It's because + means one ABAP token in the code inspector.
    Is there anyway to find only "SELECT SINGLE *" and "SELECT *" ?

  • Error in code inspector

    Hi Abapers,
    I have done recording for Tcode:pa30 in my report and used call transaction method. because of this i'm getting one error in when i check code inspector.
    error message:
    CA CL_CI_TEST_CRITICAL_STATEMENTS0002
    Critical Statements
    Call of Transaction &1
    &1 = Name of Transaction
    For CALL TRANSACTION there must already be a suitable transaction authorization with the calling transaction.
    Kindly help me out to fix this error.
    Thanks in advance.

    Hi
    Goto SE24
    enter this class CL_CI_TEST_CRITICAL_STATEMENTS
    and see its documentation.
    It shows the all critical errors that are there in code.
    Regards
    Anji

  • Photoshop CS6 could not update successfully.  Error codes Adobe Photoshop 13.0.1.3 Installation failed. Error Code: U44M1P7  Extension Manager 6.0.8 Update Installation failed. Error Code: U44M1P7  Please help me figure out how to call customer service. 

    Photoshop CS6 could not update successfully.  Error codes Adobe Photoshop 13.0.1.3 Installation failed. Error Code: U44M1P7  Extension Manager 6.0.8 Update Installation failed. Error Code: U44M1P7  Please help me figure out how to call customer service.  I would prefer to talk to someone directly.

    Are you using any disk cleaner or optimization tools like CleanMymac or Mackeeper?
    Regards,
    Ashutosh

  • How to exclude the standard Include programs in Code Inspector?

    I am running code inspector (SCi) on all the development objects using a package. But in certain repository objects standard include programs have been used. I want to exclude the standard include programs while running SCI on the package. What are the ways to achieve this?

    Hi,
    while defining an object set choose:(in the menu)
    Edit - Exclude View Maintenance Function Groups.
    This should exclude most or at least some of the includes from being checked.
    Kind regards,
    Hermann

  • Code Inspector Checks

    Hi All,
    I am doing Code Inspector Check for my Program.
    Doing this, I am getting an Error Message Indicating to use TYPE TABLE OF instead of OCCURS 0 statement while declaring Internal Tables.
    Question is, Is there any difference between TYPE TABLE OF and  OCCURS 0 (Performance wise) ?
    Helpful answers will be rewarder by points.
    Thanks & Regards
    Swatantra Pathak

    HI,
    Yes.
    OCCURS 0 is obsolete now.
    When we define internal table with OCCURS 0 it will allocate a default memory of 8KB. In TYPE TABLE/STANDARD TABLE OF it is dynamic i.e as and when we get a record memory will be allocated.
    eg: If ur itab is with OCCURS 0 and u have data of size 2kb then 6KB memory is wasted i.e allocated and not used.
    eg2: If ur itab is with OCCURS 0 , Each record accupies 1 KB. Then after filling 8 records and at the time of getting 9 th records another 8KB is allocated. If u have 9 records in ur table then 7KB is wasted.
    If u r getting allocated with some memory(Resource) and not using means performancewise it is bad.
    Hope above examples are clear.
    Thanks,
    Vinod.

  • Differences between SLIN and Code Inspector

    Hi,
    Can anyone tell me the differences between SLIN and Code Inspector(SCI)..?
    and in which cases we use SLIN and  SCI..?
    and as an ABAPer, which one should we prefer..?
    Thanks,
    Pradeep.

    Hi
    Extended syntax check or SLIN is used to check the program in all aspects for the different syntaxes like
    When you use select single whether you have passed all the key fields or not>
    whether you have maintained the text elements texts or not,
    Have you used UNIT...CURRENCY along with the QTY and AMOUNT fields when displayed using the WRITE statement
    and check for all the varities of statements used in the code, and if there is some problem with that statement/command, it will display as error or warning.
    Check following links -
    slin
    can any one tell me abt SLIN T-CODE
    Reward points if useful
    Regards
    Anji

Maybe you are looking for

  • Internet DHCP/DNS issues with WRT1900ac

    I've had a WRT1900ac now for about 2 weeks and the problems seem to be escalating.  Need help.  And yes, I've already read dozens of threads about these issues and nothing seems to be working. Most of the problems seem to be centered around this DHCP

  • Can I normalize a group of photos?

    One of my gigs is as a school photographer.  When looking at all the photos as a group there are slight variations in the levels and tones.  My way of dealing with this is to go through them in LR one by one and make adjustments to make them all look

  • Question mark instead of application logo?

    For some strange reason once in a while (not often) my Mac deside to replaces an application logo that is in my dock with a question mark. Nothing was done to the application itself so I'm wondering why it just changes the image. I went back into the

  • Not able to install windows 7

    Hi - I am not able to install windows 7 in my imac (latest version). When I try using the bootcamp, it gets stuck at the place where I am asked to partition the hard disk for the windows system and does not go any further. Has anyone experienced such

  • Z10 and BBM

    Hi, The most recent BBM update does not seem to work on my Z10 (AT&T version 10.2.1.3014). When I open BBM I get that ad about stickers, attempt to click Exit or Continue and then the program just closes and I'm back at my start screen for the phone