Code: Alles auswählen.
PERFORM infos.
if layer = 'L01'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D1' .
ELSEIF layer = 'L02'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D3'.
ELSEIF layer = 'L03'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D5'.
ELSEIF layer = 'L04'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D7'.
Endif.
PERFORM ausgabe.
Perform infos.
if modul = 'M01'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CO'.
ELSEIF modul = 'M02'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CP'.
ELSEIF modul = 'M03'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CS'.
ELSEIF modul = 'M04'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'DP'.
ELSEIF modul = 'M05'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'FI'.
ELSEIF modul = 'M06'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'HR'.
ELSEIF modul = 'M07'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'LE'.
ELSEIF modul = 'M08'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'MD'.
ELSEIF modul = 'M09'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'MM'.
ELSEIF modul = 'M10'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PM'.
ELSEIF modul = 'M11'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PP'.
ELSEIF modul = 'M12'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PS'.
ELSEIF modul = 'M13'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'QM'.
ELSEIF modul = 'M14'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'SD'.
ELSEIF modul = 'M15'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'SN'.
ELSEIF modul = 'M16'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'TD'.
ENDIF.
PERFORM ausgabe.
PERFORM infos.
if gruppe = 'G01'.
Delete l_t_rsdodso WHERE odsobject+4(2) <> 'SL'.
ELSEIF gruppe = 'G02'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'BI'.
ELSEIF gruppe = 'G03'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'SH'.
ELSEIF gruppe = 'G04'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PU'.
ELSEIF gruppe = 'G05'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'IM'.
ELSEIF gruppe = 'G06'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'GL'.
ELSEIF gruppe = 'G07'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'AP'.
ELSEIF gruppe = 'G08'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'AR'.
ELSEIF gruppe = 'G09'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'OM'.
ELSEIF gruppe = 'G10'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PC'.
ELSEIF gruppe = 'G11'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> '0G'.
ELSEIF gruppe = 'G12'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PA'.
ELSEIF gruppe = 'G13'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PT'.
ELSEIF gruppe = 'G14'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PY'.
ELSEIF gruppe = 'G15'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'TA'.
ENDIF.
PERFORM ausgabe.
schau dir mal den Zusatz USER-COMMAND für die Listboxen an. Dieser führt dazu, das PAI/PBO im SelScreen ausgelöst wird, wenn ein Wert ausgewählt wurde.patlau hat geschrieben:Nun ist es so, dass ich diese unabhängig voneinander aussuchen kann, ich will aber dass man erst die erste Option also den Layer auswählt, dann die zweite also das Modul und dann die dritte (Gruppe).
Durch obligatory kann ich dafür sorgen dass man eines auswählen muss, kann ich jedoch per Code dafür sorgen dass diese in Abhängigkeit voneinander ausgewählt werden müssen?
PERFORM INFO und PERFORM AUSGABE nur einmal aufrufenpatlau hat geschrieben:ist ja klar habe drei mal perform infos + ausgabe, wie schaffe ich dass auch das in Abhängigkeit zueinander steht, sprich alles nur einmal ausgegeben wird.
Code: Alles auswählen.
FORM infos.
SELECT rsdodso~odsobject txtlg rsdodso~objvers
INTO CORRESPONDING FIELDS OF TABLE l_t_rsdodso
FROM rsdodso INNER JOIN rsdodsot ON rsdodsot~odsobject = rsdodso~odsobject
WHERE rsdodso~objvers = 'A' AND rsdodso~odsobject in so_odsob .
ENDFORM. "infos
FORM ausgabe.
DELETE l_t_rsdodso WHERE odsobject(1) = '0'.
LOOP AT l_t_rsdodso ASSIGNING <rsdodso_fields>.
* WHERE odsobject(1) EQ '1' .
WRITE:/ <rsdodso_fields>-odsobject,
<rsdodso_fields>-txtlg,
<rsdodso_fields>-objvers.
ENDLOOP.
ENDFORM. "ausgabe
Ich habe dir doch den Schubs in die richtige Richtung gegeben, jetzt bist du dranpatlau hat geschrieben:Danke habe davon noch nichts gehört, würde es dir was ausmachen ein kleines Beispiel aufzuzeigen, wäre wirklich nett.
Code: Alles auswählen.
* def. SelScreen
PARAMATERS a TYPE c(20) AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND push.
PARAMATERS b TYPE c(20) AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND push.
PARAMATERS c TYPE c(20) AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND push.
INITIALISATION.
* Hier Listboxen füllen
* sollen die Listboxen in abhängigkeit gefüllt werden, muss hier natürlich nur A gefüllt werden
AT SELECTION SCREEN OUTPUT.
IF screen-name = 'B'.
IF a IS INITIAL.
screen-input = 0. "keine Eingabe solange A nicht gefüllt ist
ELSE.
screen-input = 1. "A ist gefüllt, jetzt kann B gefüllt werden
ENDIF.
MODIFY SCREEN. "Änderungen dem Screen bekannt machen
ENDIF.
AT SELECTION SCREEN.
* Hier Listboxen B und C in abhängigkeit zu A füllen wenn gewollt
Code: Alles auswählen.
PARAMETERS: layer AS LISTBOX VISIBLE LENGTH 30 USER-COMMAND push ,
modul AS LISTBOX VISIBLE LENGTH 30 USER-COMMAND push,
gruppe AS LISTBOX VISIBLE LENGTH 30 USER-COMMAND push.
IF screen-name = 'M'.
IF layer IS INITIAL.
screen-input = 0. "keine Eingabe solange A nicht gefüllt ist
ELSE.
screen-input = 1. "A ist gefüllt, jetzt kann B gefüllt werden
ENDIF.
MODIFY SCREEN. "Änderungen dem Screen bekannt machen
ENDIF.
Naja, dann nimm halt diese: http://help.sap.com/abapdocu_70/de/ über die Kurzreferenz kommt man schnell ans Ziel.patlau hat geschrieben:F1 hilfe geht nciht, da nicht auf deutsch vorhanden..
Code: Alles auswählen.
PERFORM infos.
if layer = 'L01'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D1' .
ELSEIF layer = 'L02'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D3'.
ELSEIF layer = 'L03'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D5'.
ELSEIF layer = 'L04'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D7'.
elseif modul = 'M01'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CO'.
ELSEIF modul = 'M02'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CP'.
ELSEIF modul = 'M03'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CS'.
ELSEIF modul = 'M04'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'DP'.
ELSEIF modul = 'M05'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'FI'.
ELSEIF modul = 'M06'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'HR'.
ELSEIF modul = 'M07'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'LE'.
ELSEIF modul = 'M08'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'MD'.
ELSEIF modul = 'M09'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'MM'.
ELSEIF modul = 'M10'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PM'.
ELSEIF modul = 'M11'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PP'.
ELSEIF modul = 'M12'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PS'.
ELSEIF modul = 'M13'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'QM'.
ELSEIF modul = 'M14'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'SD'.
ELSEIF modul = 'M15'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'SN'.
ELSEIF modul = 'M16'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'TD'.
elseif gruppe = 'G01'.
Delete l_t_rsdodso WHERE odsobject+4(2) <> 'SL'.
ELSEIF gruppe = 'G02'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'BI'.
ELSEIF gruppe = 'G03'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'SH'.
ELSEIF gruppe = 'G04'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PU'.
ELSEIF gruppe = 'G05'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'IM'.
ELSEIF gruppe = 'G06'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'GL'.
ELSEIF gruppe = 'G07'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'AP'.
ELSEIF gruppe = 'G08'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'AR'.
ELSEIF gruppe = 'G09'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'OM'.
ELSEIF gruppe = 'G10'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PC'.
ELSEIF gruppe = 'G11'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> '0G'.
ELSEIF gruppe = 'G12'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PA'.
ELSEIF gruppe = 'G13'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PT'.
ELSEIF gruppe = 'G14'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PY'.
ELSEIF gruppe = 'G15'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'TA'.
Endif.
PERFORM ausgabe.
Code: Alles auswählen.
PARAMETERS: layer(30) AS LISTBOX VISIBLE LENGTH 30, "OBLIGATORY,
modul(30) AS LISTBOX VISIBLE LENGTH 30, "OBLIGATORY,
gruppe(30) AS LISTBOX VISIBLE LENGTH 30.
AT SELECTION-SCREEN OUTPUT.
param = 'layer'.
value-key = 'L01'.
value-text = 'Layer 1 Extraktion'.
APPEND value TO values.
value-key = 'L02'.
value-text = 'Layer 3 Harmonisierung'.
APPEND value TO values.
value-key = 'L03'.
value-text = 'Layer 5 Datamart'.
APPEND value TO values.
value-key = 'L04'.
value-text = 'Layer 7 Präsentation'.
APPEND value TO values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = param
values = values.
Refresh values.
param = 'modul'.
value-key = 'M01'.
value-text = 'Modul CO'.
APPEND value TO values.
value-key = 'M02'.
value-text = 'Modul CP'.
APPEND value TO values.
value-key = 'M03'.
value-text = 'Modul CS'.
APPEND value TO values.
value-key = 'M04'.
value-text = 'Modul DP'.
APPEND value TO values.
value-key = 'M05'.
value-text = 'Modul FI'.
APPEND value TO values.
value-key = 'M06'.
value-text = 'Modul HR'.
APPEND value TO values.
value-key = 'M07'.
value-text = 'Modul LE'.
APPEND value TO values.
value-key = 'M07'.
value-text = 'Modul MD'.
APPEND value TO values.
value-key = 'M08'.
value-text = 'Modul MM'.
APPEND value TO values.
value-key = 'M09'.
value-text = 'Modul PM'.
APPEND value TO values.
value-key = 'M10'.
value-text = 'Modul PP'.
APPEND value TO values.
value-key = 'M11'.
value-text = 'Modul PS'.
APPEND value TO values.
value-key = 'M12'.
value-text = 'Modul QM'.
APPEND value TO values.
value-key = 'M13'.
value-text = 'Modul SD'.
APPEND value TO values.
value-key = 'M14'.
value-text = 'Modul SN'.
APPEND value TO values.
value-key = 'M15'.
value-text = 'Modul TD'.
APPEND value TO values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = param
values = values.
Refresh values.
param = 'gruppe'.
value-key = 'G01'.
value-text = 'Gruppe SL'.
APPEND value TO values.
value-key = 'G02'.
value-text = 'Gruppe BI'.
APPEND value TO values.
value-key = 'G03'.
value-text = 'Gruppe SH'.
APPEND value TO values.
value-key = 'G04'.
value-text = 'Gruppe PU'.
APPEND value TO values.
value-key = 'G05'.
value-text = 'Gruppe IM'.
APPEND value TO values.
value-key = 'G06'.
value-text = 'Gruppe GL'.
APPEND value TO values.
value-key = 'G07'.
value-text = 'Gruppe AP'.
APPEND value TO values.
value-key = 'G08'.
value-text = 'Gruppe AR'.
APPEND value TO values.
value-key = 'G09'.
value-text = 'Gruppe OM'.
APPEND value TO values.
value-key = 'G09'.
value-text = 'Gruppe PC'.
APPEND value TO values.
value-key = 'G10'.
value-text = 'Gruppe 0G'.
APPEND value TO values.
value-key = 'G11'.
value-text = 'Gruppe PA'.
APPEND value TO values.
value-key = 'G12'.
value-text = 'Gruppe PT'.
APPEND value TO values.
value-key = 'G13'.
value-text = 'Gruppe PY'.
APPEND value TO values.
value-key = 'G14'.
value-text = 'Gruppe TA'.
APPEND value TO values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = param
values = values.
START-OF-SELECTION.
PERFORM infos.
if layer = 'L01'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D1' .
ELSEIF layer = 'L02'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D3'.
ELSEIF layer = 'L03'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D5'.
ELSEIF layer = 'L04'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D7'.
Endif.
if modul = 'M01'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CO'.
ELSEIF modul = 'M02'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CP'.
ELSEIF modul = 'M03'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'CS'.
ELSEIF modul = 'M04'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'DP'.
ELSEIF modul = 'M05'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'FI'.
ELSEIF modul = 'M06'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'HR'.
ELSEIF modul = 'M07'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'LE'.
ELSEIF modul = 'M08'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'MD'.
ELSEIF modul = 'M09'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'MM'.
ELSEIF modul = 'M10'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PM'.
ELSEIF modul = 'M11'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PP'.
ELSEIF modul = 'M12'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'PS'.
ELSEIF modul = 'M13'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'QM'.
ELSEIF modul = 'M14'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'SD'.
ELSEIF modul = 'M15'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'SN'.
ELSEIF modul = 'M16'.
Delete l_t_rsdodso Where odsobject+2(2) <> 'TD'.
ENDIF.
if gruppe = 'G01'.
Delete l_t_rsdodso WHERE odsobject+4(2) <> 'SL'.
ELSEIF gruppe = 'G02'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'BI'.
ELSEIF gruppe = 'G03'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'SH'.
ELSEIF gruppe = 'G04'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PU'.
ELSEIF gruppe = 'G05'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'IM'.
ELSEIF gruppe = 'G06'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'GL'.
ELSEIF gruppe = 'G07'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'AP'.
ELSEIF gruppe = 'G08'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'AR'.
ELSEIF gruppe = 'G09'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'OM'.
ELSEIF gruppe = 'G10'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PC'.
ELSEIF gruppe = 'G11'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> '0G'.
ELSEIF gruppe = 'G12'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PA'.
ELSEIF gruppe = 'G13'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PT'.
ELSEIF gruppe = 'G14'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'PY'.
ELSEIF gruppe = 'G15'.
DELETE l_t_rsdodso WHERE odsobject+4(2) <> 'TA'.
ENDIF.
PERFORM ausgabe.
*&---------------------------------------------------------------------*
*& Form infos
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM infos.
SELECT rsdodso~odsobject txtlg rsdodso~objvers
INTO CORRESPONDING FIELDS OF TABLE l_t_rsdodso
FROM rsdodso INNER JOIN rsdodsot ON rsdodsot~odsobject = rsdodso~odsobject
WHERE rsdodso~objvers = 'A' AND rsdodso~odsobject in so_odsob .
ENDFORM. "infos
*&---------------------------------------------------------------------*
*& Form ausgabe
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ausgabe.
DELETE l_t_rsdodso WHERE odsobject(1) = '0'.
LOOP AT l_t_rsdodso ASSIGNING <rsdodso_fields>.
* WHERE odsobject(1) EQ '1' .
WRITE:/ <rsdodso_fields>-odsobject,
<rsdodso_fields>-txtlg,
<rsdodso_fields>-objvers.
ENDLOOP.
ENDFORM. "ausgabe
Code: Alles auswählen.
PARAMETERS: layer(30) AS LISTBOX VISIBLE LENGTH 30 USER-COMMAND dummy,
modul(30) AS LISTBOX VISIBLE LENGTH 30 MODIF ID ID1,
gruppe(30) AS LISTBOX VISIBLE LENGTH 30 MODIF ID ID2.
Code: Alles auswählen.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 EQ 'ID1'.
IF NOT layer IS INITIAL.
screen-input = 1.
ELSE.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-group1 EQ 'ID2'.
IF NOT layer IS INITIAL AND
NOT module IS INITIAL.
screen-input = 1.
ELSE.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
CASE layer.
WHEN 'L01'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D1' .
WHEN 'L02'.
DELETE l_t_rsdodso WHERE odsobject(2) <> 'D3'.
....
*WHEN OTHERS. (Kannst du ggf. weglassen)
ENDCASE
Programmieren scheint für dich Neuland zu sein und weißt nicht was Reportereignisse sind!patlau hat geschrieben:Ja, bin leider ziemlich auf mich allein gestellt, habe auch noch nicht mit CASE-Anweisungen gearbeitet.
Code: Alles auswählen.
Report zxxx.
* hier alle globalen variablen, etc...
* dann den SelScreen definieren
INITIALITION.
* wird nur einmal bei Programmstart aufgerufen.
* Hier kommt das Füllen der Listbox rein
AT SELECTION-SCREEN OUTPUT.
*wird immer dann aufgerufen, befor der SelScreen angezeigt wird. Also auch nach jeder User Interaktion (Enter, Listboxauswahl)
*hier schaltest du die Listboxen nach und nach für die Eingabe frei
AT SELECTION-SCREEN.
* wird immer dann gerufen um die UserInteraktion zu verarbeiten
* brauchst du aktuell noch nicht
START-OF-SELECTION.
* wird ausgeführt, wenn der User im SelScreen ausführen wählt
* hier kommt deine Verarbeitung rein
* Perform, CASE, Perform