Für das "ungewollte" SE11-Übersichtsbild musst du auch einen Eintrag in die BI-Mappe aufnehmen incl. OK-Code zum Verlassen.hmaxi96 hat geschrieben:Nun ist meine Frage wie mache ich es, dass wenn ich F3 drücke zurück in meine ALV-Tabelle springe?
Beispielsweise:hmaxi96 hat geschrieben:Die CALL TRANSACTION hat bei mir bereits den MODE 'E'.
Wie soll ich das mit dem OK-Code machen?
Code: Alles auswählen.
REPORT ztest.
PARAMETERS: p_tab TYPE tabname16 DEFAULT 'MARA'.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
* Übersichtbild: Einstig in Tabelle
PERFORM bdc_dynpro USING 'SAPLSD_ENTRY' '1000'.
PERFORM bdc_field USING 'RSRD1-TBMA'
'X'.
PERFORM bdc_field USING 'RSRD1-TBMA_VAL'
p_tab.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_DISPLAY'.
* Detailbild anzeige: hier darf der User machen was er will
* PERFORM bdc_dynpro USING 'SAPLSD41' '2200'.
* Übersichtbild: Verlassen
PERFORM bdc_dynpro USING 'SAPLSD_ENTRY' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_BACK'.
CALL TRANSACTION 'SE11' USING bdcdata MODE 'E'.
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
Code: Alles auswählen.
CLEAR ls_bdcdata.
ls_bdcdata-program = 'SAPLICL_BDT_APPL'.
ls_bdcdata-dynpro = '0100'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'BDC_OKCODE'.
ls_bdcdata-fval = '=ENTER'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'ICL_CDC_SCREEN_FIELDS-CLAIM'.
ls_bdcdata-fval = lv_claim.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-program = 'SAPLICL_BDT_APPL'.
ls_bdcdata-dynpro = '0100'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'BDC_OKCODE'.
ls_bdcdata-fval = '/EEXIT'.
APPEND ls_bdcdata TO lt_bdcdata.
CALL TRANSACTION 'ICLCDC03' USING lt_bdcdata MODE 'E'.
Code: Alles auswählen.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_BACK'.
Code: Alles auswählen.
PERFORM bdc_field USING 'BDC_OKCODE'
'/03'.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
stef5
Was ich dabei nicht verstehe ist die Aussage von JHM:DeathAndPain hat geschrieben:Wenn Du in der Transaktion stehenbleiben möchtest, gar nicht. Das ist leider nicht zu ändern. Darüber ärgere ich mich auch immer, wenn ich irgendwo per Batch Input einen SM30-Absprung in die Tabellenpflege einer (kundeneigenen) Customizingtabelle mache. Wenn man mit F3 zurückgeht, muss man durch das Selektionsbild der SM30 durch, bevor man wieder im aufrufenden Programm landet.
Heißt das ich habe kein Detailbild ohne OK-Code? Und er läuft dewegen durch? Ich müßte also einen Fehler erzeugen damit es stoppt???JHM hat geschrieben:Für das "ungewollte" SE11-Übersichtsbild musst du auch einen Eintrag in die BI-Mappe aufnehmen incl. OK-Code zum Verlassen.
Den CALL TA dann mit mode = E aufrufen.
Es wird dann bis in die SE11-Detailbild dunkel abgespielt. Da es für das Detailbild keinen OK-Code mehr gibt, läuft der BI auf einen Fehler und wird hell. Wird das Detailbild verlassen erkennt das der Call TA und spielt den Rest der Mappe ab (=Verlassen der SE11).
Code: Alles auswählen.
CLEAR ls_bdcdata.
ls_bdcdata-program = 'SAPLICL_BDT_APPL'.
ls_bdcdata-dynpro = '0100'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'BDC_OKCODE'.
ls_bdcdata-fval = '=ENTER'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'ICL_CDC_SCREEN_FIELDS-CLAIM'.
ls_bdcdata-fval = lv_claim.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-program = 'SAPLICL_BDT_APPL'.
ls_bdcdata-dynpro = '0100'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'michgibtsnicht'.
ls_bdcdata-fval = 'ERROR'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-program = 'SAPLICL_BDT_APPL'.
ls_bdcdata-dynpro = '0100'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.
CLEAR ls_bdcdata.
ls_bdcdata-fnam = 'BDC_OKCODE'.
ls_bdcdata-fval = '/EEXIT'.
APPEND ls_bdcdata TO lt_bdcdata.
CALL TRANSACTION 'ICLCDC03' USING lt_bdcdata MODE 'E'.
Du wilst doch, dass es "durchläuft"?! JHM (und ich auch) haben Dich jedenfalls so verstanden, dass Dein Batch Input im Prinzip tut, was er soll, aber anstatt am Ende zu terminieren, bleibt er im letzten Bild der Transaktion stehen und zeigt dieses an. Deshalb hat JHM Dich darauf hingewiesen, dass Du für dieses letzte Bild auch noch einen Ok-Code in Deinem Batch Input vorsehen musst, damit es verlassen wird (z.B. "/03" ).Heißt das ich habe kein Detailbild ohne OK-Code? Und er läuft dewegen durch? Ich müßte also einen Fehler erzeugen damit es stoppt???
Nein. Ich will in der aufgerufenen Transaktion stehen bleiben. Und wenn der User zurückgeht soll er den Selektionsschirm nicht anzeigen. Also den BDC Code weiterausführen.DeathAndPain hat geschrieben:Du wilst doch, dass es "durchläuft"?!
JHM hat mir nie geantwortet. Ich habe diesen Thread nur aufgegriffen weil ich ja das gleiche Problem habe wie hmaxi96 damals, wo ihm JHM geholfen hat.DeathAndPain hat geschrieben: JHM (und ich auch) haben Dich jedenfalls so verstanden, ...Deshalb hat JHM Dich darauf hingewiesen, ...
Das geht prinzipbedingt nicht. Ein BDC-Code hat den Stellenwert einer Batchmappe. Diese wird ohne Zutun des Benutzers ausgeführt. Lediglich wenn es bei der Abspielung einen Fehler gibt, etwa weil die in der Mappe hinterlegten Daten nicht zum angezeigten Dynpro passen, dann führt das beim Abspielmodus 'E' dazu, dass die Abspielung in den Modus 'A' wechselt und dieses Dynpro sichtbar anzeigt, damit der Benutzer die Bescherung sieht und sich was einfallen lassen kann. Der Abspielmodus ist dann aber geändert und wird nicht mehr zurück zu 'E' wechseln. Allenfalls könntest Du vielleicht erreichen, dass der Benutzer sich per Stein auf der Entertaste manuell durch die verbleibenden Dynpros bewegen lässt.Nein. Ich will in der aufgerufenen Transaktion stehen bleiben. Und wenn der User zurückgeht soll er den Selektionsschirm nicht anzeigen. Also den BDC Code weiterausführen.