Code: Alles auswählen.
LOOP AT gt_daten INTO gs_daten.
Die Ausgabe ist doch ganz am Ende vorhanden?black_adept hat geschrieben:kurz vor der ( nicht existenten ) Ausgabe.
Code: Alles auswählen.
SORT gt_daten BY gbdat ASCENDING.
WRITE: / p0002-vorna,
p0002-nachn,
p0002-gbdat COLOR 2.
IF ( g_alter <= 20 ).
WRITE g_alter COLOR 1.
ELSEIF ( g_alter <= 30 ).
WRITE g_alter COLOR 2.
ELSEIF ( g_alter <= 40 ).
WRITE g_alter COLOR 3.
ELSEIF ( g_alter <= 50 ).
WRITE g_alter COLOR 4.
ELSEIF ( g_alter <= 60 ).
WRITE g_alter COLOR 5.
ELSEIF ( g_alter <= 70 ).
WRITE g_alter COLOR 6.
ELSEIF ( g_alter <= 80 ).
WRITE g_alter COLOR 7.
ENDIF.
Code: Alles auswählen.
FORM get_pernr.
SORT p0002 BY GBDAT. "<-- Zuerst mal die Daten sortieren.
LOOP AT p0002. "<-- Die sortierte Tabelle für die Ausgabe verwenden
READ TABLE p0001
WITH KEY pernr = p0001-pernr. "< -- Hier erfolgt die "1:1 Verknüpfung mit der ersten Tabelle
CHECK sy-subrc EQ 0 AND p0001-persg = '1' AND p0001-persk ='01'. "Es werden nur Daten von Personen angezeigt,
"die i.d Mitarbeitergruppe "1" und -kreis "01" sind.
* WRITE: / p0001-persg,
* p0001-persk.
*Berechnen des Alters
CALL FUNCTION 'COMPUTE_YEARS_BETWEEN_DATES'
EXPORTING
first_date = p0002-gbdat
"MODIFY_INTERVAL = ' '
second_date = sy-datum
IMPORTING
years_between_dates = g_alter
EXCEPTIONS
sequence_of_dates_not_valid = 1
OTHERS = 2.
WRITE: / p0002-vorna,
p0002-nachn,
p0002-gbdat COLOR 2.
IF ( g_alter <= 20 ).
WRITE g_alter COLOR 1.
ELSEIF ( g_alter <= 30 ).
WRITE g_alter COLOR 2.
ELSEIF ( g_alter <= 40 ).
WRITE g_alter COLOR 3.
ELSEIF ( g_alter <= 50 ).
WRITE g_alter COLOR 4.
ELSEIF ( g_alter <= 60 ).
WRITE g_alter COLOR 5.
ELSEIF ( g_alter <= 70 ).
WRITE g_alter COLOR 6.
ELSEIF ( g_alter <= 80 ).
WRITE g_alter COLOR 7.
ENDIF.
ENDLOOP.
ENDFORM.
Code: Alles auswählen.
data(tmp) = sy-datum+0(6) - p0002-gbdat+0(6).
g_alter = tmp+0(2).
Code: Alles auswählen.
data(tmp) = XXX " das ist eine Inline Deklaration. Hier erstellst du eine Variable die den Typ von ( in dem Beispiel XXX ) annimmt, bzw. bei der Berechnung dann I ( Integer )
" anstatt der Inline deklaration kannst du auch folgendes schreiben:
data tmp type i length 6.
tmp = sy-datum+0(6) - p0002-gbdat+0(6).
" finde persönlich aber die inline schöner und ( meistens ) einfacher. - gibt aber außnahmen
sy-datum+0(6) " das +0(6) ist eine sogenannte Offset angabe. Heißt du nimmst nur einen Teil der Variable, in dem Fall fange an der 0ten Stelle an und nimm dann die nächsten 6 Zeichen.
" Ein Datum ist meistens 8 Stellen lang YYYYMMDD - heißt bei dem offset +0(6) wird YYYYMM genommen
" --> die Rechnung wäre dann so:
tmp = 201901 - 199710. " --> 2191
" wenn du dann nur die ersten 2 Stellen ( per offset +0(2) ) von dem Ergebnis ( also tmp ) nimmst, hast du das alter in Jahren ( in dem Beispiel also 21 )
Das habe ich ihm schon in dem anderen Thread gesagt, aber er hält daran fest, da es vom Gerüst her das Beispielprogramm seines Betreuers ist. Ich verstehe auch nicht, weshalb er da überhaupt loopt, anstatt die Werte vom GET zeilenweise zu übernehmen.SaskuAc hat geschrieben:Falls es aber das Ganze Programm ist, dann würde ich dir sogar empfehlen, das ganze nicht innerhalb einer Form zu machen. Das Coding ist so kurz, und du hast keine weitere "Kapselung", dass sich die Form nicht lohnt.
Falls Du mich meinst: Ich werde Dir da nicht widersprechen. Ich nutze Eclipse nur als Editor; die gesamte Testung mache ich auch im SAPGui. Die Integration der Debuggingtools und SAPGui-Fenster in Eclipse ist nett, mir aber zu lahm. Außerdem mag ich keine Mäusekino-SAPGuis mit Eclipse-Rahmen außenrum. Es ist aber angenehm, auf diese Weise volle 5 Modi (plus einer für den Debugger) frei zu haben und keinen davon für die SE38 verbraten zu müssen.a-dead-trousers hat geschrieben:Und auch wenn ich weiß wer mir gleich widersprechen wird: Mach das Ganze in der SAPGUI und nicht in Eclipse, da der Debugger m.W. aktuell hier noch mehr Funktionen unterstützt.
Warum verwendest Du nicht eine SORTED TABLE anstatt einer STANDARD TABLE? Dann kannst Du einfach INSERT TABLE anstelle von APPEND verwenden und hast die Tabelle immer durchgehend sortiert.Hanspeter hat geschrieben:Hab das sortieren bereits außerhalb des LOOPS getan.
Allerdings verstehe ich wirklich nicht, wie ich meine Struktur fülle und APPEND verwende.
Das war eine Aussage von black_adept und nicht von mir.DeathAndPain hat geschrieben:Falls Du mich meinst ...a-dead-trousers hat geschrieben:Und auch wenn ich weiß wer mir gleich widersprechen wird: Mach das Ganze in der SAPGUI und nicht in Eclipse, da der Debugger m.W. aktuell hier noch mehr Funktionen unterstützt.