7.12.10

SAP Note 11788 - Batch input, variable step loop or table control.

Symptom


You are using batch input or CALL TRANSACTION USING for a screen which contains a variable step loop or a table control. Under certain circumstances the system may diplay error messages like, for example, "S00349 Field TABLE-FN1(12)2 does not exist in the screen PROGRAMM DYNR". The error depends on the size you chose for the GUI screen. The error does generally not occur during background processing.

You have programmed explicit scrolling in a program which creates a batch folder or executes a CALL TRANSACTION USING, in a Step Loop or Table Control. However, when you run the folder, the loop does not scroll over the correct number of lines.

When you run sessions or when you create your own programs to create batch input sessions or CALL TRANSACTION USING, you need a procedure which prevents error situations like this.

Cause and prerequisites


Step loops or table controls are elements with a variable line number depending on the screen size. When you run the session and choose the screen size too small then in the session, data for lines may be contained which do not exist. Then the error situation occurs.

If an explicit scrolling of a loop is provided via an OK code in the batch input folder, the number of lines that must be scrolled will obviously depend on the size of the loop. If it has a different number of lines than was assumed when the folder data were created, the inclusion of the data in the loop may fail or may result in an application error when processing the loop lines.

During background processing the system assumes the standard size of the windows. In this case the session can usually be processed correctly. However, the message might also be displayed in background processing if the session was created for a higher number of lines than can be displayed in the standard size.

Solution
    1. Running sessions
  • In general when you run sessions for transactions that contain variable step loops or table controls you should always set the standard screen size. In the background the system does this automatically.
  • During online processing you can set the standard size for screen frontends via the Customizing icon in the upper right corner of the GUI window.
  • For MOTIF frontends you receive the standard size when you open an alternative session (/o+ or System ->Create session).
  • As of Release 3.0E you can also force the standard size in Transaction SM35 when you start the sessions (default session)
    2. Creation of sessions or CALL TRANSACTION USING using self-developed programs
  • If you develop the programs for a fixed screen size, the same screen size must be set during processing. The standard size is most suitable since the standard size can easily be set via the SAPGUI menu.
  • Information on the current screen size can be found in the ABAP debugger with the variable SY-SROWS.
    • On a list screen, SY-SROWS shows the number of displayable list lines.
    • On a normal Screenpainter screen, SY-SROWS shows the number of displayable screen lines.
    • In the background the standard size of 22 x 84 is used for a list screen as well as for all other screens.
    • To determine the number of the displayable screen lines of a report (executable program of type 1) you need to call a Screenpainter screen. In general you need to use the following source code to do so:
      (here, ZQCJDEF is a program of type 1)
      (Screen 0100 is a normal screen with just one PBO Module):

      report zqcjdef .
      data: srows like sy-srows.

      start-of-selection.
      write: /'List SY-SROWS = ', sy-srows.
      call screen 0100.
      write: /'Dynpro SY-SROWS = ', srows.

      *&----------------------------------------------------------
      *& Module STATUS_0100 OUTPUT
      *&----------------------------------------------------------
      * Get SY-ROWS from Dynpro
      *-----------------------------------------------------------
      module status_0100 output.
      srows = sy-srows.
      set screen 0. leave screen.
      endmodule. " STATUS_0100 OUTPUT
  • If you want to fill additional lines, you can generally scroll down one page in the step loop; as a result, additional lines that are ready for input are available.
  • To determine the OK codes required for this, you can for example use the batch input recorder (Transaction SHDB or call from within SM35). The recorder also generates a program on request which can be used as a model for individual developments.

Please note that scrolling in a table control with the vertical scroll bar cannot be used in batch input. In the batch input you can only scroll in a table control if the application specifically provides and processes OK codes for this.

  • As of Release 4.6A, the standard size can be fixed using the addition OPTIONS FROM for CALL TRANSACTION USING.
Additional key words


Batch input, CALL TRANSACTION USING, step loop, table control, variable screen size, error message 00349 SM35.

No comments:

Post a Comment