Scan all tables and count rows in each#

You need to limit the tables in
AND a~tabname >= 'Z'
otherwise you get a time out.
*&---------------------------------------------------------------------*
*& Report  Z_MARKUS001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z_markus001.   " comment after

*&---------------------------------------------------------------------*
*& This is my first ABAP program
*&---------------------------------------------------------------------*
*& Global Declarations
*&---------------------------------------------------------------------*

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.                    "demo DEFINITION

*----------------------------------------------------------------------*
*       CLASS demo  IMPLEMENTATIO
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS demo IMPLEMENTATION.
  METHOD main.
    CONSTANTS dset TYPE string VALUE 'C:\temp\sap.csv'.
    TYPES: BEGIN OF tabdata,
      tabname TYPE tabname,
      ddtext TYPE ddtext,
      END OF tabdata.
    DATA: rs TYPE cursor,
          help TYPE string,
          help2 TYPE string,
          text TYPE string,
          text2 TYPE string,
          fn TYPE fieldname,
          cc TYPE i,
          total TYPE i,
          idx TYPE i,
          where_cl TYPE string,
          order_cl TYPE string,
          dd02l_wa TYPE tabdata,
          dd03l_wa TYPE dd03l,
          tabparam TYPE tabname.
    "tabname char 30

    OPEN DATASET dset FOR OUTPUT IN TEXT MODE ENCODING UTF-8.

    OPEN CURSOR rs FOR SELECT
      a~tabname
      b~ddtext
      FROM dd02l AS a
        INNER JOIN dd02t AS b
        ON b~tabname = a~tabname
      WHERE b~ddlanguage = 'E'
      AND a~tabname >= 'Z'
      AND a~tabclass = 'TRANSP'
      ORDER BY a~tabname.
      "WHERE b~ddlanguage = 'E' AND a~tabname LIKE 'DD02%' AND a~tabclass = 'TRANSP'.

    DO.
      idx = sy-index.
      FETCH NEXT CURSOR rs
       INTO dd02l_wa.

      IF sy-subrc <> 0.
        CLOSE CURSOR rs.
        EXIT.
      ENDIF.

      "get REFERENCE OF dd02l_wa-tabname into tabparam.
      tabparam = dd02l_wa-tabname.
      SELECT COUNT( * ) INTO total FROM (tabparam).

      help = cc.
      help2 = total.
      CONCATENATE help dd02l_wa-tabname dd02l_wa-ddtext help2 INTO text SEPARATED BY ';'.

      tabparam = dd02l_wa-tabname.
      CONCATENATE 'tabname = ''' dd02l_wa-tabname '''' INTO where_cl.
      order_cl = 'position'.
      SELECT * FROM dd03l INTO dd03l_wa WHERE (where_cl)
        ORDER BY (order_cl).
        CONCATENATE dd03l_wa-fieldname ' (' dd03l_wa-inttype dd03l_wa-intlen ')' INTO text2.
        CONCATENATE text text2  INTO text SEPARATED BY ';'.
      ENDSELECT.


      TRANSFER text TO dset.

      cc = cc + 1.
    ENDDO.
    CLOSE DATASET dset.

    MESSAGE text TYPE 'I'.

  ENDMETHOD.                    "demo
ENDCLASS.                    "demo  IMPLEMENTATIO

*&---------------------------------------------------------------------*
*& Implementations
*&---------------------------------------------------------------------*

START-OF-SELECTION.
*WRITE text.
  demo=>main( ).