*&---------------------------------------------------------------------*
*& Report ZSCH_06_1001_RECIPES_LIST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zsch_06_1001_recipes_list.
* Die Daten von der Datenbanktabelle werden in der
* Struktur gepuffert
DATA: gs_recipe TYPE zsch06recipe.

START-OF-SELECTION.
* Einstweilen mal nur Rezept Nummer 1
  SELECT SINGLE * FROM zsch06recipe INTO gs_recipe
  WHERE rid = '002'.
* Falls ein Satz gefunden, dann Ausgabe.
  IF sy-subrc = 0.
* Kopfzeile
    WRITE: / 'Menart: ', gs_recipe-menueart.
    WRITE: / 'Kochdauer: ', gs_recipe-kochdauer, ' Minuten'.
    WRITE: / 'Region: ', gs_recipe-region.
    WRITE: / 'Schwierigkeit: ', gs_recipe-schwierigkeit,
    '(0 ist einfach)'.
    SKIP 2.
* Schn zerteilen
    DATA: gt_zutaten TYPE stringtab,
          gs_zutaten LIKE LINE OF gt_zutaten.
* Zerhacken
    SPLIT gs_recipe-zutaten AT '##' INTO TABLE gt_zutaten.
* und ausgeben
    LOOP AT gt_zutaten INTO gs_zutaten.
      WRITE: / gs_zutaten.
    ENDLOOP.
    SKIP 2.
* Schn zerteilen
    DATA: gt_zubereitung TYPE stringtab,
          gs_zubereitung LIKE LINE OF gt_zubereitung,
          gd_mod         TYPE i,
          gd_len         TYPE i,
          gd_index       TYPE i.
* Zerhacken
    SPLIT gs_recipe-zubereitung AT '##'
    INTO TABLE gt_zubereitung.
* und ausgeben
    LOOP AT gt_zubereitung INTO gs_zubereitung.
      IF sy-tabix = 1.
        WRITE: / gs_zubereitung.
        NEW-LINE.
        CONTINUE.
      ELSE.
        NEW-LINE.
      ENDIF.
      gd_len = strlen( gs_zubereitung ).
      DO gd_len TIMES.
        gd_index = sy-index - 1.
        WRITE: gs_zubereitung+gd_index(1) NO-GAP.
        gd_mod = sy-index MOD 100.
        IF gd_mod = 0.
          NEW-LINE.
        ENDIF.
      ENDDO.
    ENDLOOP.
************************************************************
    ULINE.
  ELSE.
    WRITE: / 'Leider kein Rezept 002 gefunden!'.
  ENDIF.