Rätsel aus der Praxis

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Rätsel aus der Praxis

Beitrag von Olaf P. (ForumUser / 61 / 0 / 0 ) »
Moin zusammen,
zur Auflockerung auch von mir mal ein kleines Rätsel aus der Praxis.

Aufgabenstellung:
Einer Form-Routine wird ein Datum übergeben. In der Form-Routine wird anhand des Datums der letzte Tag des Vormonats ermittelt (Ultimo).

Beispiel:

p_datum 15.09.2004
p_ultimo 31.08.2004

Code: Alles auswählen.

FORM get_ultimo USING    p_datum  TYPE d
                CHANGING p_ultimo TYPE d.
* Hier findet die Ermittlung statt
ENDFORM.                    "get_ultimo 
Wie mache ich das am effizientesten?

Viel Spaß

Olaf

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Rätsel aus der Praxis

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »

Code: Alles auswählen.

FORM get_ultimo USING    p_datum  TYPE d
                CHANGING p_ultimo TYPE d.
* Hier findet die Ermittlung statt
  p_ultimo(6) = p_datum(6).
  p_ultimo+6(2) = '01'.
  subtract 1 from p_ultimo.
ENDFORM.                    "get_ultimo 
Das war einfach.

Beitrag von Olaf P. (ForumUser / 61 / 0 / 0 ) »
Hallo Frank,
es geht aber noch einfacher.
VG Olaf

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Olaf P. hat geschrieben:Hallo Frank,
es geht aber noch einfacher.
VG Olaf
Funktioniert auch
p_ultimo = p_datum(6) - 1. " ?

Wenn ja, würde ich mich nicht darauf verlassen, dass die Subtraktion auch in zukünftigen Releases für ungültige Daten funktioniert.

Andere Frage:
DATA: d1 type d, d2 type d.
Wie muss D1 gefüllt sein, damit nach

Code: Alles auswählen.

d2 = d1 - 1.
add 1 to d2.
d1 ungleich d2 ist?

Meine Lösung

Beitrag von Andrew_ ( / / 0 / 3 ) »
FORM get_ultimo USING p_datum TYPE d
CHANGING p_ultimo TYPE d.

* Hier findet die Ermittlung statt
p_ultimo = p_datum - p_datum+6(2).

ENDFORM. "get_ultimo


Gruß
Andreas

Re: Meine Lösung

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Andrew_ hat geschrieben: p_ultimo = p_datum - p_datum+6(2).
Das ist wirklich besser.

Beitrag von Olaf P. (ForumUser / 61 / 0 / 0 ) »
Hallo zusammen,
das ging ja wirklich schnell.

Das ist die Lösung

Code: Alles auswählen.

p_ultimo = p_datum - p_datum+6(2).
Ich habe schon diverse Lösungen zu diesem Thema gesehen, wo mit Funktionsbausteinen gearbeitet oder das Datum "zusammengebastelt" und dann die Jahreswechsel- und Schaltjahrprolematik mühevoll behandelt wurde. Daher auch der Zusatz "aus der Praxis".

@Frank
Die Antwort lautet: Initialwert.

VG und schöne Pfingsten
Olaf

Beitrag von black_adept (Top Expert / 4069 / 120 / 934 ) »
@Frank:

Weitere Lösungen:

Illegale Daten, wie z.B. der 35. Mai

oder die Tage, die durch die Umstellung auf den gregorianischen Kalender weggefallen sind. (5.10.1582 - 14.10.1582 ex. nicht ).
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Noch ein Rätsel...

Beitrag von Gast ( / / 0 / 3 ) »
Ist das die Rätselecke? Da hätte ich auch was...Ich habe eine interne tabellen vom typ standard.

Die Einträge sind wie folgt.

Code: Alles auswählen.

Feld 1 Feld 2 Feld3
1       1         z
1       2         b
1       3         d


Ich fülle die Struktur 
pwa_tab wie folgt. 
Feld1 Feld 2 Feld3
1      3         d

und lese die Tabelle mit dem Zusatz from READ....FROM PWA_TAB
und erhalte den 1. Satz
Feld1 Feld 2 Feld3
1      1         z

Wie muss die interne Tabelle definiert sein, dass dies gelingt. 
Christian

Re: Noch ein Rätsel...

Beitrag von Gast ( / / 0 / 3 ) »
Anonymous hat geschrieben:Ist das die Rätselecke?
Das ist noch nicht endgültig entschieden.
(Es gab auch schon welche in ABAP Core.)
Man darf aber wohl auch einen neuen Thread aufmachen.
Wie muss die interne Tabelle definiert sein, dass dies gelingt.
Zum Beispiel so

Code: Alles auswählen.

DATA: itab LIKE STANDARD TABLE OF pwa_tab 
           WITH NON-UNIQUE KEY feld1.

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

ich habe es erst eben gesehen!

p_ultimo = p_datum - p_datum+6(2).

Das ist echt genial und genau das wonach ich gesucht habe! :D

Vielen Dank

Volker

Unterprogramm aufrufen

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hallo!
Wie müsste ich dieses Unterprogramm aufrufen?

Code: Alles auswählen.

FORM get_ultimo USING    p_datum  TYPE d 
                CHANGING p_ultimo TYPE d. 
* Hier findet die Ermittlung statt 
  p_ultimo(6) = p_datum(6). 
  p_ultimo+6(2) = '01'. 
  subtract 1 from p_ultimo. 
ENDFORM.                    "get_ultimo  
Grüße

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

so sollte es funken:

DATA: datum TYPE d,
ultimo TYPE d.

datum = sy-datum.
PERFORM get_ultimo USING datum
CHANGING ultimo.

mfg
richard

Seite 1 von 1

Vergleichbare Themen

0
Antw.
813
Views
SAP ERP2004 - Modulierung - Theorie und Praxis
von Study » 17.01.2006 22:12 • Verfasst in SAP - Allgemeines
2
Antw.
1381
Views
Rätsel: Characterzuweisungen
von Azreal » 17.03.2005 10:32 • Verfasst in ABAP® Core
13
Antw.
4956
Views
Rätsel in SAP-Funktionsbaustein
von ralf.wenzel » 12.07.2012 14:09 • Verfasst in ABAP® Core
14
Antw.
2578
Views
F4IF_INT_TABLE_VALUE_REQUEST gibt Rätsel auf
von ralf.wenzel » 07.01.2019 10:28 • Verfasst in ABAP® Core
0
Antw.
778
Views
ABAP Rätsel zum Üben
von sap_enthusiast » 30.06.2022 17:09 • Verfasst in SAP - Allgemeines

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.