Ansicht
Dokumentation

CL_HRPCLX_RECORD - Satz einer PCLx-Clustertabelle

CL_HRPCLX_RECORD - Satz einer PCLx-Clustertabelle

ABAP Short Reference   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Ein PCLx-Satz (Klasse CL_HRPCLX_RECORD) besteht aus jenen Zeilen einer PCLx-Clustertabelle mit denselben Schlüsselfeldern RELID und SRTFD. CL_HRPCLX_RECORD ist die zentrale Klasse um PCLx-Sätze zu bearbeiten.

Bei Neuentwicklungen dürfen ausschließlich die Methoden GET_INSTANCE, GET_FORMATTED_INSTANCE sowie die Methoden des Interfaces IF_HRPCLX_RECORD verwendet werden. Alle anderen Methoden existieren aus Kompatibilitätsgründen um die Klasse CL_HRPCLX_RECORD auch in bereits bestehenden Programmen verwenden zu können.

Öffentliche Attribute

  • MS_KEY: Der Schlüssel eines PCLx-Satzes besteht aus den Komponenten MAPPING und SRTFD. Der Definitionsbereich der PCLx-Zuordnung MAPPING ist der PCLx-Bereich des PCLx-Satzes. Zusammen mit SRTFD wird damit der Schlüssel des PCLx-Satzes in der PCLx-Clustertabelle festgelegt. Weiters bestimmt die PCLx-Zuordnung wie die Clusterdaten des PCLx-Satzes aufbereitet werden.
  • MS_ADMIN_INFO: Administrative Daten des PCLx-Satzes. Diese Struktur hat die Komponenten
  • HISTO (Historisierungkennzeichen),

  • AEDTM (Letztes Änderungsdatum),

  • UNAME (Letzter Änderer) ,

  • PGMID (Programm das die letzte Änderung durchgeführt hat),

  • VERSN (Versionsnummer).

  • MV_KEY_AS_TEXT: Schlüssel des PCLx-Satzes als String

Instanzerzeugung

Instanzen von PCLx-Sätzen können mit den folgenden zwei Methoden erzeugt werden:

  • GET_INSTANCE: Liefert PCLx-Satz dessen Clusterdaten in Form der Exportstruktur aus Tabelle T77PCLX_STRUC aufbereitet sind.
  • GET_FORMATTED_INSTANCE: Liefert PCLx-Satz dessen Clusterdaten in Form der mitgegebenen PCLx-Zuordnung aufbereitet sind.

Mit Hilfe der Methode FORMAT kann auch zu einem späteren Zeitpunkt die Aufbereitung der Clusterdaten geändert werden.

Bearbeiten von PCLx-Sätzen

Änderungen an den Daten eines PCLx-Satzes können direkt am Attribut MR_DATA->* gemacht werden. Um diese Änderungen auf die Datenbank zu schreiben, müssen die Änderungen zunächst durch einen Aufruf der Methode EXPORT bestätigt werden, damit sie beim anschließenden Aufruf der Methode FLUSH auf die Datenbank übernommen werden.

Ein PCLx-Satz kann durch Aufruf der Aufruf DELETE zum Löschen vorgemerkt werden. Bei einem anschließenden Aufruf der Methode FLUSH wird der Satz von der Datenbank gelöscht

Versuche

  • START_TRIAL: Änderungen an PCLx-Sätzen werden nach Aufruf dieser Methode versuchsweise ausgeführt. D.h. eine Änderung die nach START_TRIAL gemacht wird ist so lange gültig, bis entweder eine weitere Änderung vorgenommen wird, oder die Methode DISCARD_TRIAL aufgerufen wird.
  • DISCARD_TRIAL: Die seit dem letzen Aufruf von START_TRIAL gemachten Änderungen an PCLx-Sätzen werden verworfen. Die PCLx-Sätze lauten dann so wie vor dem Aufruf von START_TRIAL.
  • APPROVE_TRIAL: Die seit dem letzen Aufruf von START_TRIAL gemachten Änderungen an PCLx-Sätzen werden übernommen.

Es kann ein Versuch innerhalb eines Versuchs gestartet werden. Damit ist eine ganze Kette von Versuchen möglich. Die Methode FLUSH speichert allerdings nur dann Daten auf der Datenbank, wenn zuvor sämtliche Versuche verworfen oder bestätigt wurden und die Änderung mittels EXPORT bzw. DELETE bestätigt wurden.

Kompatibilität mit alten PCLx-Puffern

In bestehenden Programmen werden PCLx-Sätze im Allgemeinen nicht mit Klasse CL_HRPCLX_RECORD sondern mit Klasse CL_HRPCLX_BUFFER gepuffert. Die Methoden aus Interface IF_HRPCLX_RECORD_LEGACY ermöglichen es die Klasse CL_HRPCLX_RECORD auch in solchen Programmen zu verwenden.

Werden im bestehenden Programm PCLx-Sätze geändert und in einer Instanz (z.B. lo_tbuff) von CL_HRPCLX_BUFFER gepuffert, dann kann diese Pufferinstanz mittels Methode INIT_FROM_BUFFER als Datenquelle für CL_HRPCLX_RECORD hinterlegt werden. Bei der ersten Instanzierung eines PCLx-Satzes durch CL_HRPCLX_RECORD->GET_INSTANCE werden dann die Daten aus diesem Puffer (lo_tbuff) verwendet. Anschließend können PCLx-Sätze wie zuvor beschrieben über Klasse CL_HRPCLX_RECORD bearbeitet werden. Durch Aufruf der Methoden EXPORT bzw. DELETE werden die Änderungen in diesen Puffer (lo_tbuff) übernommen und stehen dem Programm wie gewohnt zur Verfügung.

Beziehungen

Beispiel

Hinweis: In Ihren Programmen sollten Sie für die Datendeklaration FIELD-SYMBOLS: im Gegensatz zu den folgenden Beispielen den Typ Ihrer lokalen Programmstruktur verwenden (z.B. PAYUS_RESULT) und nicht TYPE any wie hier im Allgemeinen angegeben.

  • Lesen eines PCLx-Satzes
DATA: lo_pclx_rec TYPE REF TO if_hrpclx_record.
lo_pclx_rec = cl_hrpclx_record=>get_instance( ... ).
  • Ändern eines PCLx-Satzes
DATA: lo_pclx_rec TYPE REF TO if_hrpclx_record.
FIELD-SYMBOLS: TYPE any.
lo_pclx_rec = cl_hrpclx_record=>get_instance( ... ).
ASSIGN lo_pclx_rec->mr_data->* TO .
* change components of
lo_pclx_rec->export( ).
cl_hrpclx_record=>flush( ).
  • Löschen eines PCLx-Satzes
DATA: lo_pclx_rec TYPE REF TO if_hrpclx_record.
lo_pclx_rec = cl_hrpclx_record=>get_instance( ... ).
lo_pclx_rec->delete( ).
cl_hrpclx_record=>flush( ).
  • Versuch starten und verwerfen
DATA: lo_pclx_rec TYPE REF TO if_hrpclx_record.
FIELD-SYMBOLS: TYPE any.
lo_pclx_rec = cl_hrpclx_record=>get_instance( ... ).
cl_hrpclx_record=>start_trial( ).
ASSIGN lo_pclx_rec->mr_data->* TO .
* change components of
cl_hrpclx_record=>discard_trial( ).
cl_hrpclx_record=>flush( ).
Die in diesem Beispiel gemachten Änderungen werden nicht auf der Datenbank gespeichert.
  • Versuch starten und bestätigen
DATA: lo_pclx_rec TYPE REF TO if_hrpclx_record.
FIELD-SYMBOLS: TYPE any.
lo_pclx_rec = cl_hrpclx_record=>get_instance( ... ).
cl_hrpclx_record=>start_trial( ).
ASSIGN lo_pclx_rec->mr_data->* TO .
* change components of
cl_hrpclx_record=>approve_trial( ).
cl_hrpclx_record=>flush( ).
Die in diesem Beispiel gemachten Änderungen werden auf der Datenbank gespeichert.
  • Änderungen in aufgerufene bzw. aus aufgerufenen Programme übernehmen
DATA: lo_pclx_rec TYPE REF TO if_hrpclx_record.
cl_hrpclx_record=>start_trial( iv_use_memory = abap_true ).
SUBMIT … AND RETURN.
cl_hrpclx_record=>approve_trial( ).
cl_hrpclx_record=>flush( ).
Die vor dem Aufruf der Methode START_TRIAL gemachten Änderungen sind im aufgerufenen Programm sichtbar. D.h. wenn im aufgerufenden Programm der entsprechende PCLx-Satz instanziert wird, ist das der aktuell gültige Satz des aufrufenden Programms.
Umgekehrt werden Änderungen an PCLx-Sätzen im aufgerufenen Programm übernommen und abschließend auf der Datenbank gespeichert. Voraussetzung hierfür ist, dass am Ende das aufgerufenen Programms der Methodenaufruf cl_hrpclx_record->transfer_to_caller( ) erfolgt. Damit wird u.a. sichergstellt dass nur vollständige Daten an den Aufrufer zurückgegeben werden.
Sollen die Änderungen aus dem aufgerufenen Programm nicht übernommen werden, so muss DISCARD_TRIAL anstatt APPROVE_TRIAL verwendet werden.
Analog kann bei einem Aufruf mittels CALL TRANSACTION gearbeitet werden. Beim SUBMIT ist zu beachten dass dieser stets mit dem Zusatz AND RETURN aufgerufen werden muss. Grund ist, dass sonst im ABAP-Memory evtl. veraltete PCLx-Daten stehen bleiben die dann bei späteren Programmaufrufen verwendet werden und zu falschen Ergebnissen führen können.

Hinweise

Weiterführende Informationen






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11075 Date: 20240419 Time: 184358     sap01-206 ( 130 ms )