Code: Alles auswählen.
SELECT-OPTIONS so_patnr FOR npat-patnr NO INTERVALS.
CALL FUNCTION 'ISH_READ_NPAT'
EXPORTING
ss_patnr = so_patnr
IMPORTING
ss_npat = ls_npat
EXCEPTIONS
not_found = 1
no_authority = 2
no_einri = 3
no_treatment_contract = 4
OTHERS = 5.
Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag:
erzoo24
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
erzoo24
Code: Alles auswählen.
DATA: lv_patnr TYPE npat-patnr.
CALL FUNCTION 'ISH_READ_NPAT'
EXPORTING
ss_patnr = lv_patnr
IMPORTING
ss_npat = ls_npat
EXCEPTIONS
not_found = 1
no_authority = 2
no_einri = 3
no_treatment_contract = 4
OTHERS = 5.
lv_vname = ls_npat-vname.
lv_nname = ls_npat-nname.
lv_gschl = ls_npat-gschl.
lv_gbdat = ls_npat-gbdat.
SELECT-OPTIONS s_patnr FOR npat-patnr NO INTERVALS.
loop at s_patnr INTO lv_patnr.
ENDLOOP.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
erzoo24
Code: Alles auswählen.
TABLES: npat.
DATA: lv_vname TYPE npat-vname,
lv_nname TYPE npat-nname,
lv_gschl TYPE npat-gschl,
lv_gbdat TYPE npat-gbdat,
lv_anr(4) TYPE c,
lv_alter(2) TYPE c,
lv_ausgabe TYPE string,
ls_npat TYPE npat,
lv_patnr type npat-patnr.
*PARAMETERS: p_patnr TYPE npat-patnr, kurz mal ausgeblendet zumm test wegen select options
* p_patnr1 TYPE npat-patnr,
* p_patnr2 TYPE npat-patnr,
* p_patnr3 TYPE npat-patnr,
* p_patnr4 TYPE npat-patnr.
SELECT-OPTIONS s_patnr FOR npat-patnr NO INTERVALS.
CALL FUNCTION 'ISH_READ_NPAT'
EXPORTING
ss_patnr = lv_patnr
IMPORTING
ss_npat = ls_npat
EXCEPTIONS
not_found = 1
no_authority = 2
no_einri = 3
no_treatment_contract = 4
OTHERS = 5.
lv_vname = ls_npat-vname.
lv_nname = ls_npat-nname.
lv_gschl = ls_npat-gschl.
lv_gbdat = ls_npat-gbdat.
PARAMETERS: s1 RADIOBUTTON GROUP stil,
s2 RADIOBUTTON GROUP stil,
s3 RADIOBUTTON GROUP stil,
s4 RADIOBUTTON GROUP stil,
s5 RADIOBUTTON GROUP stil.
lv_alter = sy-datum+0(4) - lv_gbdat+0(4).
if lv_gschl eq '1'.
lv_gschl = 'M'.
ELSEIF lv_gschl eq '2'.
lv_gschl = 'W'.
else.
lv_gschl = 'A'.
endif.
IF lv_gschl eq 'M'.
lv_anr = 'Herr'.
ELSE.
lv_anr = 'Frau'.
ENDIF.
IF s1 EQ 'X'.
CONCATENATE lv_anr lv_vname lv_nname into lv_ausgabe SEPARATED BY space.
ELSEIF s2 EQ 'X'.
CONCATENATE lv_anr ` ` lv_nname `, ` lv_vname into lv_ausgabe.
ELSEIF s3 EQ 'X'.
CONCATENATE lv_nname `, ` lv_vname `, ` into lv_ausgabe.
if lv_gschl eq 'M'.
CONCATENATE lv_ausgabe 'Männlich' INTO lv_ausgabe.
else.
CONCATENATE lv_ausgabe 'Weiblich' INTO lv_ausgabe.
endif.
ELSEIF s4 EQ 'X'.
CONCATENATE lv_nname `, ` lv_vname ` ` `(` lv_gschl `, ` lv_alter `)` into lv_ausgabe.
ELSEIF s5 eq 'X'.
CONCATENATE lv_vname `, ` lv_nname ` ` '(' lv_gschl `, ` lv_alter ')' into lv_ausgabe.
ENDIF.
loop ??????????
ENDLOOP.
skip.
write: lv_ausgabe.
Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag:
erzoo24
Schau dir doch mal den Parameter des FuBas in der SE37 an.erzoo24 hat geschrieben:das am ende loopen ..für eine Mehrfachauswahl
Thanatos82 hat geschrieben:Hi,
wie Dele schon schrieb ist die Struktur einer Select-Option vorgegeben (Sign, Option, Low, High). Wenn du nun eine Select-Option und einen Loop Nutzen sollst, bleibt eigentlich nur ein Schluss übrig:
(Vorab, ich setze voraus, dass du weißt wozu Select-Options genutzt werden, Stichwort Range-Tabelle)
Du musst alle Patientennummern selektieren, die innerhalb des vorgegebenen Ranges liegen. Damit erhältst du eine Tabelle von Patientennummern. Per Loop durchläufst du diese Tabelle und gibst mit jedem Durchlauf die Patientennummer in den Baustein, erhältst deine Ergebnisse und gibst sie aus.
Viel Spaß beim umsetzen.
JHM hat geschrieben:Schau dir doch mal den Parameter des FuBas in der SE37 an.erzoo24 hat geschrieben:das am ende loopen ..für eine Mehrfachauswahl
Selbst der Kurztext ist erklärend genug, wenn man mit dem Bezugstyp nichts anfangen kann: Patientennummer, Schlüssel von NPAT
Also EINE Patiententennr. und keine Mehrfachauswahl aus der SelOpt.
Am einfachsten ist es mit einem Select auf die NPAT mit der SelOpt alle Stammdaten ein zu lesen und diese dann in einem Loop über das Ergebnis jeweils den FuBa zurufen.
okay neues Post, sehe gerade dein Coding.
Wie lange programmierst du schon? Wer soll es dir bei bringen?
Wer hat dich auf die Idee mit dem CONCATENATE gebracht?
Wieso speicherst du die Daten nicht in einer internen Tabelle und machst die Ausgabe/Aufbereitung wenn du die Datenermittlung abgeschlossen hast (EVA-Prinziphttps://de.wikipedia.org/wiki/EVA-Prinzip bzw. später mal MVC: https://de.wikipedia.org/wiki/Model_View_Controller)?
sry ist so ein test programm das ich bewerkstelligen soll als übung relativ neu im abap bereich
Dein Coding macht mich ein Jahr älter als ich bin (bin im Dezember geboren).