*&---------------------------------------------------------------------*
*& Report ZSCH_07_1001_RECIPES_LIST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zsch_07_1001_recipes_list.
* Die Daten von der Datenbanktabelle werden in der Struktur gepuffert
DATA: gs_recipe TYPE zsch06recipe.
* Seitenberschrift
DATA: gd_message TYPE string.
* Programmstart
INITIALIZATION.
* Anweisungsblock
gs_recipe-rid = '002'.
START-OF-SELECTION.
* Einstweilen mal nur Rezept Nummer 2
PERFORM read_recipe
USING
gs_recipe-rid
CHANGING
gs_recipe.
END-OF-SELECTION.
* Anweisungsblock
* Falls ein Satz gefunden wurde, dann Ausgabe.
IF gs_recipe IS NOT INITIAL.
* Kopfinformation
PERFORM write_kopf USING gs_recipe.
* Leerzeilen
SKIP 2.
* Zutaten
PERFORM write_zutaten USING gs_recipe.
* Leerzeile
SKIP 2.
* Zutaten
PERFORM write_zubereitung USING gs_recipe.
ULINE.
ELSE.
WRITE: / 'Leider kein Rezept 002 gefunden!'.
ENDIF.
TOP-OF-PAGE.
* Seid willkommen, alle User
PERFORM welcome_user
USING
sy-uname
sy-uzeit
CHANGING
gd_message.
WRITE: / gd_message.
* Unterstrich
ULINE.
*** Hier beginnen die Definitionen ***
FORM welcome_user USING VALUE(id_uname) TYPE sy-uname
VALUE(id_zeit) TYPE sy-uzeit
CHANGING ed_message TYPE string.
ed_message = |Herzlich willkommen { id_uname } um
{ id_zeit time = user } zu unserer groen Kchensause|.
ENDFORM. "welcome_user
FORM read_recipe USING value(id_rid) TYPE zsch06recipe-rid
CHANGING es_recipe TYPE zsch06recipe.
* Das Rezept id_rid von der DB lesen
SELECT SINGLE * FROM zsch06recipe INTO es_recipe
WHERE rid = id_rid.
ENDFORM. "read_recipe
FORM write_kopf USING is_recipe TYPE zsch06recipe.
* Kopfzeile
WRITE: / 'Menart: ', is_recipe-menueart.
WRITE: / 'Kochdauer: ', is_recipe-kochdauer, ' Minuten'.
WRITE: / 'Region: ', is_recipe-region.
WRITE: / 'Schwierigkeit: ', is_recipe-schwierigkeit,
'(0 ist einfach)'.
ENDFORM. "write_kopf
FORM write_zutaten USING is_recipe TYPE zsch06recipe.
* Schn zerteilen
DATA: lt_zutaten TYPE stringtab,
ls_zutaten LIKE LINE OF lt_zutaten.
* Zerhacken
SPLIT is_recipe-zutaten AT '##' INTO TABLE lt_zutaten.
* und ausgeben
LOOP AT lt_zutaten INTO ls_zutaten.
WRITE: / ls_zutaten.
ENDLOOP.
ENDFORM. "write_zutaten
FORM write_zubereitung USING is_recipe TYPE zsch06recipe.
* Schn zerteilen
DATA: lt_zubereitung TYPE stringtab,
ls_zubereitung LIKE LINE OF lt_zubereitung,
ld_mod TYPE i,
ld_len TYPE i.
* Zerhacken
SPLIT is_recipe-zubereitung AT '##' INTO TABLE lt_zubereitung.
* und ausgeben
LOOP AT lt_zubereitung INTO ls_zubereitung.
IF sy-tabix = 1.
WRITE: / ls_zubereitung.
NEW-LINE.
CONTINUE.
ELSE.
NEW-LINE.
ENDIF.
ld_len = STRLEN( ls_zubereitung ).
DO ld_len TIMES.
DATA(ld_index) = sy-index - 1.
WRITE: ls_zubereitung+ld_index(1) NO-GAP.
ld_mod = sy-index MOD 100.
IF ld_mod = 0.
NEW-LINE.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM.
