Änderungen im ALV an die interne Tabelle weitergeben

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

Änderungen im ALV an die interne Tabelle weitergeben

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

seit einem halben Tag sitze ich nun an diesem Problem und komme trotz einiger Forumbeiträge zu diesem Thema nicht weiter. Ich habe einen ALV-Grid mit Mehrzeilenselektion über Reuse_Alv_Grid angelegt. Wenn ich mehrere Zeilen selektiere möchte ich diese nachher weiter verarbeiten, dabei ist es zweitrangig ob ich die Zeilen über die Checkbox, oder über die Mehrfachselektion mit der STRG-Taste selektiere. Ich schaffe es aber nicht die selektierten Tasten auszulesen, wenn ich über eine selbst definierte Schaltfläche eine Aktion durchführe. Führe ich hingegen einen Doppelklick, oder eine Standardfunktion von ALV aus sind die mit der Checkbox markierten Zeilen auch in den internen Tabelle zu sehen. Kann sich vielleicht jemand meinen Quellcode anschauen und mir sagen was da eventuell noch fehlt?

Zu dem Quellcode muss lediglich ein Status STATUS definiert werden. Am besten dazu über Zusätze->Vorlage abgleichen den Status STANDARD_FULLSCREEN aus dem Programm SAPLKKBL kopieren und mit einer eigenen Schaltfläche ergänzen.

Wie gesagt, wenn man nun in der ALV-Liste Checkboxen selektiert und die selbst definierte Schaltfläche anklickt sind die Werte im Feld CHECK der internen Tabelle nicht gesetzt, mache ich dagegen einen Doppelklick auf eine Zeile dann schon.

Für einen Lösungsansatz wäre ich sehr, sehr dankbar.

Grüße
Alexander

*&---------------------------------------------------------------------*
*& Report ZLQUA103 *
*& *
*&---------------------------------------------------------------------*
*& Versuch die ZME2 über ALV-Grid abzubilden *
*& *
*&---------------------------------------------------------------------*

REPORT zlqua103 .

* Entnahmebuchungen
* Transportaufträge für erstellen/bearbeiten

TABLES: lqua.

DATA BEGIN OF lquatab OCCURS 50.
INCLUDE STRUCTURE lqua.
DATA: check type c.
DATA END OF lquatab.

*Strukturdefinition für ALV
DATA BEGIN OF tab_outtab_alv OCCURS 50.
INCLUDE STRUCTURE lqua.
DATA: check type c.
DATA END OF tab_outtab_alv.

DATA: parid_lgnum(3) TYPE c VALUE 'LGN',
parid_tanum(3) TYPE c VALUE 'TAN',
parid_tapos(3) TYPE c VALUE 'TAP',
parid_matnr(3) TYPE c VALUE 'MAT',
parid_aufnr(3) TYPE c VALUE 'AFN',
parid_wrknr(3) TYPE c VALUE 'WRK',
parid_lifnr(3) TYPE c VALUE 'VL ',
parid_besnr(3) TYPE c VALUE 'BES',
parid_bwl(3) TYPE c VALUE 'BWL',
parid_stver(3) TYPE c VALUE 'CSV',
parid_charg(3) TYPE c VALUE 'CHA',
parid_qplos(3) TYPE c VALUE 'QLS',
parid_tbnum(3) TYPE c VALUE 'TBN'.

* Pool für ALV Grid
TYPE-POOLS slis.

*Deklarationen für ALV Grid
DATA:
fieldcat TYPE slis_t_fieldcat_alv, "Feldkatalog
wrk_fieldcat_alv LIKE LINE OF fieldcat, "Workarea
g_repid LIKE sy-repid, "Programmname
GT_EVENTS TYPE SLIS_T_EVENT,
check type c.

DATA:
ls_fieldcat TYPE lvc_s_fcat.

* Variablen für die Anzeigevariante
DATA: variante LIKE disvariant,
def_variante LIKE disvariant,
variant_exit(1) TYPE c.

*Selektionsbildschirm
SELECTION-SCREEN BEGIN OF BLOCK lager WITH FRAME TITLE text-001.
SELECT-OPTIONS: matnrs FOR lqua-matnr.

SELECTION-SCREEN END OF BLOCK lager.

* Selektion Anzeigevariante
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-002.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK 2.

* F4-Help for variant
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = variante
i_save = 'A'
* it_default_fieldcat =
IMPORTING
e_exit = variant_exit
es_variant = def_variante
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF variant_exit = space.
p_vari = def_variante-variant.
ENDIF.
ENDIF.

*Initialisierung
INITIALIZATION.

g_repid = sy-repid.
CLEAR variante.
variante-report = g_repid.
* Get default variant
def_variante = variante.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = def_variante
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = def_variante-variant.
ENDIF.

AT SELECTION-SCREEN.
* ausgewählte Variante laden
IF NOT p_vari IS INITIAL.
MOVE variante TO def_variante.
MOVE p_vari TO def_variante-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = def_variante.
variante = def_variante.
ELSE.
CLEAR variante.
variante-report = g_repid.
ENDIF.

START-OF-SELECTION.

***********************************************************************
* HAUPTPROGRAMM *
***********************************************************************

* Interne Tabelle aus LQUA aufbauen und ausgeben
PERFORM lqua_lesen.

*Feldkatalog für ALV aufbauen
PERFORM feldkatalog_aufbauen.

* ALV Listausgabe mit erzeugtem Feldkatalog
* Grid-Titel als Text oder Variable
* t_outtab = interne Tabelle, die ausgebeben werden soll

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_BYPASSING_BUFFER = 'X'
i_buffer_active = 'X'
i_callback_program = g_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fieldcat[]
it_events = GT_EVENTS[]
* u = User darf Varianten nur für sich oder a = für alle abspeichern
i_save = 'A' "
i_grid_title = 'Ersatz für ZME2'
is_variant = variante
TABLES
t_outtab = lquatab.

*---------------------------------------------------------------------*
* FORM USER_COMMAND *
* Auf Drucktasten reagieren *
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
data: sav_index like sy-tabix. "Index der angeklickten Zeile

*<---an dieser Stelle sollten die Checkboxen in
*LQUATAB-CHECK sichtbar sein, sind sie aber nicht!

CASE rs_selfield-fieldname.
WHEN 'TEXT1'.
* IF NOT rs_selfield-value IS INITIAL.
* SET PARAMETER ID 'LGN' FIELD sav_lgnum.
* SET PARAMETER ID 'UBN' FIELD sav_ubnum.
* CALL TRANSACTION 'LU03' AND SKIP FIRST SCREEN.
* ENDIF.
WHEN 'TEXT2'.
* IF NOT rs_selfield-value IS INITIAL.
* SET PARAMETER ID 'LGN' FIELD sav_lgnum.
* SET PARAMETER ID 'UBN' FIELD sav_ubnum.
* CALL TRANSACTION 'LT05' AND SKIP FIRST SCREEN.
* ENDIF.
ENDCASE.

*Refresh der Tabelle aufrufen
*rs_selfield-refresh = 'X'.

ENDFORM. "USER_COMMAND


*&--------------------------------------------------------------------*
*& Form feldkatalog_aufbauen
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------*
FORM feldkatalog_aufbauen .
*Aufbau eines Feldkataloges aus der internen Tabelle

*Feldkatalog-gerüst aufbauen
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = g_repid
i_internal_tabname = 'TAB_OUTTAB_ALV'
i_inclname = g_repid
CHANGING
ct_fieldcat = fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

*Ergänzen der fehlenden Texte für die mit Type definierten
*Typen (einer (Short/Middle/Long) reicht aus)

LOOP AT fieldcat INTO wrk_fieldcat_alv.
CASE wrk_fieldcat_alv-fieldname.
when 'CHECK'.
wrk_fieldcat_alv-checkbox = 'X'.
wrk_fieldcat_alv-edit = 'X'.
wrk_fieldcat_alv-seltext_s = 'Check'.
wrk_fieldcat_alv-seltext_m = 'Checkb.'.
wrk_fieldcat_alv-seltext_l = 'Checkbox'.
WHEN OTHERS.
wrk_fieldcat_alv-key = ''.
ENDCASE.

MODIFY fieldcat FROM wrk_fieldcat_alv.

ENDLOOP.
ENDFORM. " feldkatalog_aufbauen

*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STATUS'.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form lqua_lesen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM lqua_lesen.

SELECT * FROM lqua WHERE matnr IN matnrs.
MOVE-CORRESPONDING lqua TO lquatab.
APPEND lquatab.
clear lquatab.
ENDSELECT.

ENDFORM. "lqua_lesen

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


Beitrag von Desaster (ForumUser / 68 / 0 / 0 ) »
Hallo Alexander,
probier mal bitte folgendes aus:

*<---an dieser Stelle sollten die Checkboxen in
*LQUATAB-CHECK sichtbar sein, sind sie aber nicht!

data ref1 type ref to cl_gui_alv_grid.

* Gibt die geänderte LQUATAB zurück
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = ref1.

call method ref1->check_changed_data.

Geht bei mir im REL 4.6C und ERP 2004.
Aber Vorsicht - der Fuba ist nicht freigegeben.

Grüsse
Desaster

Beitrag von alexator ( / / 0 / 3 ) »
Ahhhhhhhhhhhhhh,

Desaster, ich könnte Dich knuddeln! Vielen vielen Dank, das geht! Was ich an dem blöden Problem gesessen habe, wie soll man aber von alleine auf die Lösung kommen?

Daß der FuBa nicht freigegeben ist soll hier erstmal zweitrangig sein. Ich danke Dir noch ein mal herzlich :)

Schöne Grüße
Alexander

Seite 1 von 1

Vergleichbare Themen

8
Antw.
225
Views
Die gefüllte interne Tabelle an Form als parameter weitergeben.
von HH_ABAP » 25.04.2023 12:04 • Verfasst in ABAP® für Anfänger
4
Antw.
239
Views
5
Antw.
1272
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
5
Antw.
3012
Views
interne Tabelle in andere interne Tabelle (Format)
von Gast » 20.10.2004 14:44 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168