Code: Alles auswählen.
REPORT zgaragino_kunden_oeffnungszeit LINE-COUNT 200(8) LINE-SIZE 241.
*Variablen festlegen
TABLES: kna1,
zpapp_opentimes.
*interne Tabellen erstellen mit den werten von..
* gt_ = Globale Programminterne Tabelle
* wa_
DATA : gt_kna1 TYPE TABLE OF kna1,
gt_zpapp_opentimes TYPE TABLE OF zpapp_opentimes,
wa_zpapp_opentimes TYPE zpapp_opentimes.
*interne tabelle erstellt mit werden von
FIELD-SYMBOLS:
<fs_kna1> TYPE kna1,
<fs_zpapp_opentimes> TYPE zpapp_opentimes.
SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
PARAMETERS p_datei AS CHECKBOX.
*--------------------------------------------------------------------------------------
* Main Programm
*--------------------------------------------------------------------------------------
START-OF-SELECTION.
*cleant gt_kna1 zum sicherstellen das wirklich nichts drin ist.
CLEAR gt_kna1.
CLEAR gt_zpapp_opentimes.
* wähle alles von der Tabelle kna1 in die Tabelle gt_kna1 mit er selectionsoption kundennummer von-bis
SELECT * FROM kna1 INTO TABLE gt_kna1 WHERE kunnr IN s_kunnr
AND zzgaragino_active ='X'.
*wähle alles von der Tabelle zpapp_opentimes in die Tabelle gt_zpapp_opentimes
*wo die kundennummer ist gefragt in gt_kna1-kunnr.
SELECT * FROM zpapp_opentimes INTO TABLE gt_zpapp_opentimes
FOR ALL ENTRIES IN gt_kna1
WHERE kunnr = gt_kna1-kunnr.
*loope zu gt_kna1 weise die Werte in die Tabelle fs_kna1.
LOOP AT gt_kna1 ASSIGNING <fs_kna1>.
*schreibe die Kundenummer und der Name mit der postiotion (x) getrennt mit einer vertikaler Linie
WRITE:/ sy-vline, (10) <fs_kna1>-kunnr,
sy-vline, (42) <fs_kna1>-name1,
* falls es keine Werte hatt soll es die durch ein Leerzeichen ersetzten
sy-vline NO-GAP.
*führe aus print_wochentag benutze von der Tabelle fs_kna1 wo die Kundennummer gefragt sind die Werte mit dem Atribut x auf (de) oder (en)
*mache einen loop für die anderen gefragten kundennummer bis fertig
PERFORM print_wochentag USING <fs_kna1>-kunnr 'mo' 'mo' 60.
PERFORM print_wochentag USING <fs_kna1>-kunnr 'tu' 'di' 86.
PERFORM print_wochentag USING <fs_kna1>-kunnr 'we' 'mi' 112.
PERFORM print_wochentag USING <fs_kna1>-kunnr 'th' 'do' 138.
PERFORM print_wochentag USING <fs_kna1>-kunnr 'fr' 'fr' 164.
PERFORM print_wochentag USING <fs_kna1>-kunnr 'sa' 'sa' 190.
PERFORM print_wochentag USING <fs_kna1>-kunnr 'su' 'so' 216.
*mache nach jeder recource einen Strich bis Sonntag
ULINE.
ENDLOOP.
IF p_datei = 'X'.
" Datei exportieren
ENDIF.
*--------------------------------------------------------------------------------------
* REPORT TOP (Header oder Überschriften)
*--------------------------------------------------------------------------------------
TOP-OF-PAGE.
PERFORM top_of_page.
*&---------------------------------------------------------------------*
*& Form PRINT_WOCHENTAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<FS_KNA1>_KUNNR text
* -->P_0094 text
* -->P_60 text
*----------------------------------------------------------------------*
*zeigt mit welchen Daten wir arbeiten werden
FORM print_wochentag USING p_kunnr
VALUE(p_wt_en)
VALUE(p_wt_de)
VALUE(p_pos).
* Locale Veriablen
DATA : lw_zpapp_opentimes TYPE zpapp_opentimes.
DATA: lv_maks TYPE string.
DATA: p TYPE i.
DATA: gt_kna1.
* lese interne Tabelle gt_zpapp_opentimes (Achtung en und de) in lw_zpapp_opentimes mit der selections option kundennummer
READ TABLE gt_zpapp_opentimes
INTO lw_zpapp_opentimes
WITH KEY kunnr = p_kunnr
wochentag = p_wt_en.
* wenn es einen Wert ausgibt dann...
IF sy-subrc <> 0.
* lese interne Tabelle gt_zpapp_opentimes (Achtung en und de) in lw_zpapp_opentimes mit der selections option kundennummer
READ TABLE gt_zpapp_opentimes
INTO lw_zpapp_opentimes
WITH KEY kunnr = p_kunnr
wochentag = p_wt_de.
ENDIF.
IF sy-subrc = 0. "Gefunden
IF lw_zpapp_opentimes-durchgehend = 'X'.
PERFORM show_durchgehend USING p_pos lw_zpapp_opentimes.
ELSEIF lw_zpapp_opentimes-geschlossen = 'X'.
PERFORM show_geschlossen USING p_pos .
ELSE.
PERFORM show_normal USING p_pos lw_zpapp_opentimes.
ENDIF.
ELSE. "Nicht gefunden
PERFORM show_leer USING p_pos.
ENDIF.
ENDFORM.
FORM show_leer USING p_pos.
DATA: p TYPE i.
" geschlossen ausgeben
p = p_pos.
p = p + 6.
WRITE: AT p(15)'(keine Angaben)'.
p = p + 19.
WRITE: AT p(1) sy-vline.
ENDFORM.
FORM show_geschlossen USING p_pos.
DATA: p TYPE i.
" geschlossen ausgeben
p = p_pos.
p = p + 6.
WRITE: AT p(13)'(Geschlossen)'.
p = p + 19.
WRITE: AT p(1) sy-vline.
ENDFORM.
FORM show_durchgehend USING p_pos lw_zpapp_opentimes TYPE zpapp_opentimes.
DATA: p TYPE i.
" durchgehend ausgeben
p = p_pos.
WRITE: AT p(5) lw_zpapp_opentimes-morgen_von USING EDIT MASK '__:__'.
p = p + 6.
WRITE: 'durgehend bis'.
p = p + 14.
WRITE: AT p(5) lw_zpapp_opentimes-mittag_bis USING EDIT MASK '__:__'.
p = p_pos + 25.
WRITE: AT p(1) sy-vline.
ENDFORM.
FORM show_normal USING p_pos lw_zpapp_opentimes TYPE zpapp_opentimes.
" normal ausgeben...
*es soll nur lesend auf sie zugewiesen werden.
* schreibe in position (x) die Daten morgen_von - Mittag_bis mit der oben vorgegebenen maske
DATA: p TYPE i.
p = p_pos.
IF lw_zpapp_opentimes-morgen_von = '000000'.
PERFORM show_geschlossen USING p_pos.
ELSE.
WRITE: AT p(5) lw_zpapp_opentimes-morgen_von USING EDIT MASK '__:__'.
p = p + 5.
WRITE: AT p(1) '-'.
p = p + 1.
WRITE: AT p(5) lw_zpapp_opentimes-morgen_bis USING EDIT MASK '__:__'.
p = p + 5.
WRITE: AT p(2) ', '.
p = p + 2.
WRITE: AT p(5) lw_zpapp_opentimes-mittag_von USING EDIT MASK '__:__'.
p = p + 5.
WRITE: AT p(1) '-'.
p = p + 1.
WRITE: AT p(5) lw_zpapp_opentimes-mittag_bis USING EDIT MASK '__:__'.
p = p_pos + 25.
WRITE: AT p(1) sy-vline.
ENDIF.
ENDFORM.
FORM top_of_page.
ULINE.
* Zeile 1
WRITE: /
sy-vline, (10) 'K.Nummer ',
sy-vline, (42) 'Name',
sy-vline, (23) 'Montag',
sy-vline, (23) 'Dienstag',
sy-vline, (23) 'Mittwoch',
sy-vline, (23) 'Donnerstag',
sy-vline, (23) 'Freitag',
sy-vline, (23) 'Samstag',
sy-vline, (23) 'Sonntag',
sy-vline NO-GAP.
ULINE.
ENDFORM.
In der Listanzeige Menu -> System -> Liste -> Sichern -> lokale Datei -> im PopUp das gewünschte Format auswählen und fertig.philip hat geschrieben:Ich hoffe ich könnt mir helfen und ausfunkt geben.