Habe es jetzt mit Umwegen über eine Interne Tabelle geschafft.
*&---------------------------------------------------------------------*
*& Report ZZ6QBINS07_05_UEBUNG_TEST1 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZZ6QBINS07_05_UEBUNG_TEST1 NO STANDARD PAGE HEADING.
TABLES: ZZ6QBINS_CD1, ZZ6QBINS_CDLAND.
*Für die JOIN-Ausgabe muss eine Tabellenschablone definiert werden?
TYPES: BEGIN OF ausgabetabelleSchablone,
interpret TYPE ZZ6QBINS_CD1-CD_INTERPRET,
land TYPE ZZ6QBINS_CDLAND-CDL_HERKUNFT,
END OF ausgabetabelleSchablone.
DATA: cursorfeld(30) TYPE C,
antwort(20) TYPE C,
interneTab TYPE STANDARD TABLE OF ausgabetabelleSchablone,
itab LIKE LINE OF interneTab.
*************STARTBILDSCHIRM********************
SELECTION-SCREEN BEGIN OF BLOCK eins WITH FRAME TITLE text-ue1.
* Die Select-Options festlegen, dh diese Variablen mit den Werten der
* Ausgabe "befüllen".
SELECT-OPTIONS: so_cdnr FOR ZZ6QBINS_CD1-CD_NR.
SELECTION-SCREEN END OF BLOCK eins.
*************STARTBILDSCHIRM ENDE***************
**********Programmstart ab hier, Liste ausgeben***************
START-OF-SELECTION.
WRITE: / 'Klicke auf den Interpreten um sein Herkunftsland anzeigen'.
WRITE: 'zu lassen'.
ULINE.
SELECT * FROM ZZ6QBINS_CD1 WHERE CD_NR IN so_cdnr.
WRITE: /(20) ZZ6QBINS_CD1-CD_NR,
(30) ZZ6QBINS_CD1-CD_INTERPRET,
(30) ZZ6QBINS_CD1-CD_TITEL.
* Auch CDL_Herkunft muss "reserviert" werden, damit es im 2. Schirm
* verwendet werden kann.
HIDE: ZZ6QBINS_CD1-CD_NR.
ENDSELECT.
**********Liste ausgeben beendet******************************
AT LINE-SELECTION.
* IS INITIAL ist der Anfangswert, z.B. blank
* IS NOT INITIAL MUSS GESETZT SEIN, DAMIT MAN DIE WERTE ANKLICKEN KANN!
IF NOT ( ZZ6QBINS_CD1-CD_NR IS INITIAL ) .
*sy-lsind ist die REPORT-NR!
IF sy-lsind = 1.
GET CURSOR FIELD cursorfeld.
IF cursorfeld EQ 'ZZ6QBINS_CD1-CD_INTERPRET'.
***************************POPUP*******************************
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
* TITLEBAR = ' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = 'Soll der Inhalt angezeigt werden?'
TEXT_BUTTON_1 = 'Ja'(001)
* ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'Nein'(002)
* ICON_BUTTON_2 = ' '
* DEFAULT_BUTTON = '1'
* DISPLAY_CANCEL_BUTTON = 'X'
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
ANSWER = antwort
* TABLES
* PARAMETER =
* EXCEPTIONS
* TEXT_NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
***************************POPUP ENDE**************************
*****FALLS Antwort JA war, wird folgender Teil ausgeführt
IF antwort EQ 1.
*...Abfragen, ob die in so_cdnr hinterlegte CD_NR gleich der CD_NR der
* Tabelle CDLAND ist. Gleichzeitig die Select-Option "befüllen".
WRITE: / 'Klicke auf das Land um alle Interpreten mit'.
WRITE: 'ihren Ländern zu sehen'.
SELECT * FROM ZZ6QBINS_CDLAND WHERE
CDL_CD_NR = ZZ6QBINS_CD1-CD_NR.
WRITE: /(20) ZZ6QBINS_CDLAND-CDL_CD_NR,
(30) ZZ6QBINS_CDLAND-CDL_HERKUNFT.
ENDSELECT.
* Das erste ist das ENDIF der ANTWORT des POPUPS.
ENDIF.
ENDIF.
ENDIF.
* Das ist der 2. Anzeigeschirm "in der Tiefe".
IF sy-lsind = 2.
GET CURSOR FIELD cursorfeld.
IF cursorfeld EQ 'ZZ6QBINS_CDLAND-CDL_HERKUNFT'.
* Interne Tabellen löschen, da alles sonst doppelt drin steht.
CLEAR interneTab.
REFRESH interneTab.
WRITE: / 'Alle Interpreten mit ihren Ländern.'.
SELECT A~CD_INTERPRET B~CDL_HERKUNFT
FROM ZZ6QBINS_CD1 AS A INNER JOIN ZZ6QBINS_CDLAND AS B
ON A~CD_NR = B~CDL_CD_NR
INTO itab.
APPEND itab TO interneTab.
ENDSELECT.
* Ausgabe dieser Misttabelle.....
LOOP AT interneTab INTO itab.
WRITE: / itab-interpret,
itab-land.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
Markus