Ansicht
Dokumentation
C1H0_SUB_SHOW_SUBLIST_OKCODE - EHS: User-Exit-Funktion zur Ok-Code-Verarbeitung nach der Listen-Anz.
SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up BAL Application Log DocumentationDiese Dokumentation steht unter dem Copyright der SAP AG.
Funktionalität
Dieser Baustein dient als User-Exit zur Ok-Code-Verarbeitung für das Anzeigen von Listen mit dem Baustein C14T_LISTTOOL_CALL.
Mit den Feldleisten I/E_SELFIELD kann man den momentanen Zustand der Liste erfragen/bearbeiten. Dabei sind folgende Komponenten von Bedeutung:
TABNAME - Cursorposition: Name der Tabelle
('X_MASTERTAB' - Mastertabelle,
'X_SLAVETAB' - Slavetabelle)
TABINDEX - Cursorposition: Index der Tabelle
SEL_TAB_FIELD - Cursorposition: Name des Feldes
VALUE - Cursorposition: Wert des Feldes
REFRESH - Kennz.: die Liste soll gemäß dem Inhalt der
Datentabellen neu aufgebaut werden
EXIT - Kennz.: die Verarbeitung der Liste soll beendet
werden
Beispiel
-
Hinweise
Innerhalb dieses Bausteines können die der Funktion C14T_LISTTOOL_CALL übergebenen Datentabellen
(mit dem Listen-Inhalt) verarbeitet werden. Ist E_SELFIELD-REFRESH = 'X' , so werden Änderungen
an den Tabellen in der Liste sichtbar. Enthält die Liste Checkboxes, so kann man nun anhand der Tabellen herausfinden, welche Zeilen der Liste angekreuzt wurden.
Der Funktionsbaustein C14T_USER_COMMAND dient als Kopier-Vorlage für einen User-Exit zur Ok-Code-Verarbeitung.
Mit Hilfe des Bausteines C14T_MARK_ON_DOUBLECLICK kann auf einfache Weise die Funktionalität
'Markieren bei Doppelklick' in die Ok-Code-Verarbeitung mit eingebunden werden. (Man betrachte dazu die Dokumentation dieses Bausteines.)
Mit dem Baustein C14T_LAYOUT_GET kann man sich Informationen zum Layout der aktuell angezeigten Liste beschaffen.
Achtung: Ist E_UCOMM <> I_UCOMM, so kehrt das Listtool nicht sofort zur Anzeige der Liste zurück, sondern der User-Exit-Baustein wird ein zweites Mal gerufen.
Achtung: Springt man aus der User-Command-Funktion in andere Dialoge, so kann es zu Problemen beim Status-Setzen kommen, wenn der Status dieser Dialoge nicht im PBO gesetzt wird.
Eine besondere Bedeutung hat der Ok-Code IC_OKVALUE-LIST_REFRESH im Include CBUI01. Setzt man
E_UCOMM = IC_OKVALUE-LIST_REFRESH. ,
so wird die Liste implizit (via SELFIELD-EXIT = 'X') verlassen und die Logik des Bausteines C14T_LISTTOOL_CALL noch einmal komplett durchlaufen.
Ist E_SELFIELD-REFRESH = SPACE, so wird der Status der Liste nicht neu gesetzt!
Weiterführende Informationen
siehe Funktionsbaustein K_KKB_HIER_SEQU_LIST_DISPLAY und REUSE_ALV_HIERSEQ_LIST_DISPLAY (ab Rel. 4.0).
wichtige Mitteilungen der Basis:
Rel. >=4.0a: Betr. Hier.sequ.-Listen
Erstellt...... @0 Falko S. am 09.05.1998 14:02:53
Geändert...... @0 Falko S. am 11.05.1998 15:48:36
Wichtige Hinweise für die Programmierung von hier.-sequentiellen Listen
(REUSE_ALV_HIERSEQ_LIST_DISPLAY):
o Die Itemtabelle wird vom ALV IMMER sortiert
Grund: Performanter Zugriff auf die zu einem Kopf gehörenden
Positionen kann nur über einen READ BINARY SEARCH erfolgen,
der eine nach Köpfen aufsteigend sortierte Positionstabelle
voraussetzt.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Die Item-Tabelle darf nach Übergabe an den ALV zu KEINEM !!!
!!!! Callback-Zeitpunkt durch den Aufrufer umsortiert werden !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
o Wie wird die Item-Tabelle durch den ALV sortiert?
SORT t_outtab_item by
1) Schlüsselfelder des Kopfes (ASCENDING)
(KEYINFO-ITEM0x, für die es einen KEYINFO-HEADE0x Eintrag gibt)
2) Sortierkriterien für Positionsfelder aus der IT_SORT
(ASCENDING oder DESCENDING gem. Angabe in IT_SORT)
(sofern mitgegeben)
3) Restliche Schlüsselfelder der Position (ASCENDING)
(KEYINFO-ITEM0y, für die es KEINEN KEYINFO-HEADER0y Eintrag gibt,
um einen stabilen Sort zu erreichen)
==> über 2) und/oder 3) kann der Aufrufer somit die Sortierreihen-
folge der Positionseinträge steuern.
Die Positionstabelle schon entsprechend sortiert zu übergeben,
ist NICHT ausreichend!
o Die Sortierung bei hier.sequ.Listen ist somit immer binär.
Eine Sortierung AS TEXT (schauplatzgerecht) ist nicht möglich.
o Was tun, wenn der Schlüssel des Kopfes oder der Position mehr als
5 Keyfelder aufweist?
Einführung eines Künstlichen Schlüsselfeldes.
Beispiel:
Kopftabelle OUTTAB_ORIGINAL:
Key: x x x x x x
Feld: FLD_A FLD_B FLD_C FLD_D FLD_E FLD F FLD_G FLD_H
A A A A A A 10 20
A A A A A B 11 21
...
B A A A A A 54 89
...
Positionstabelle OUTTAB_ITEM_ORIGINAL:
Key: x x x x x x x
Feld: FLD_A FLD_B FLD_C FLD_D FLD_E FLD F FLD_X FLD_Y
A A A A A A A 30
A A A A A A B 31
A A A A A B A 32
...
B A A A A A A 50
B A A A A A B 50
==> Kopf: KEYINFO-HEADER06 existiert nicht in Struktur IS_KEYINFO
Neues Schlüsselfeld KEY einführen
KEYINFO-HEADER01 = 'KEY'
==> Position: Neuen Fremdschlüssel KEY übernehmen
KEYINFO-ITEM01 = 'KEY'
KEYINFO-ITEM02 = 'FLD_X'
Kopftabelle OUTTAB mit neuem Schlüsselfeld:
Key: x
Feld: KEY FLD_A FLD_B FLD_C FLD_D FLD_E FLD F FLD_G FLD_H
001 A A A A A A 10 20
002 A A A A A B 11 21
...
008 B A A A A A 54 89
...
==> KEYINFO-HEADER01 = 'KEY'
Positionstabelle OUTTAB_ITEM mit neuem Fremdschlüssel:
Key: x x
Feld: KEY FLD_A FLD_B FLD_C FLD_D FLD_E FLD F FLD_X FLD_Y
001 A A A A A A A 30
001 A A A A A A B 31
002 A A A A A B A 32
...
008 B A A A A A A 50
008 B A A A A A B 50
...
==> KEYINFO-ITEM01 = 'KEY'
KEYINFO-ITEM02 = 'FLD_X'
Parameter
E_SELFIELDE_UCOMM
I_OBJTYPE
I_SELFIELD
I_UCOMM
X_TAB
Ausnahmen
ERRORFunktionsgruppe
C1H0TXBHW - Original Tax Base Amount in Local Currency PERFORM Short Reference
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 8055 Date: 20240523 Time: 105643 sap01-206 ( 68 ms )