- ST05 -> Trace mit Filter einschalten für User und SCU3Shaguar hat geschrieben:Ich habe in der SAP Hilfe gelesen das die Daten in der DBTABPRT Tabelle liegen, aber dort kann ich leider überhaupt nicht finden? Werden die Daten da eventuell irgendwie ausgeblendet? oder ist das einfach die falsche Tabelle?
Code: Alles auswählen.
DATA log TYPE dbtablog.
DATA ls_log TYPE ylog. " struktur DBTABLOG + Deine Tabelle
DATA:
buffer TYPE xstring,
conv TYPE REF TO cl_abap_conv_in_ce.
*---------------------------------------------------------------------*
* MAIN *
*---------------------------------------------------------------------*
PARAMETERS date TYPE sy-datum DEFAULT sy-datum.
SELECT * FROM dbtablog INTO log
WHERE
tabname = 'Deine Tabelle' AND
logdate GE date.
CLEAR ls_log.
MOVE-CORRESPONDING log TO ls_log.
conv = cl_abap_conv_in_ce=>create(
encoding = 'DEFAULT'
endian = 'L'
input = log-logdata
).
*MANDT 3 Character
CALL METHOD conv->read(
EXPORTING n = 3
IMPORTING data = ls_log-mandt
).
*TPLNR 30 Character
CALL METHOD conv->read(
EXPORTING n = 30
IMPORTING data = ls_log-tplnr
).
*BRGT Decimal Feld
CALL METHOD conv->read(
IMPORTING data = ls_log-brgt
).
etc.
etc.
FREE conv.
APPEND ls_log TO gt_log.
ENDSELECT.
Code: Alles auswählen.
*MANDT 3 Character
CALL METHOD conv->read(
EXPORTING n = 3
IMPORTING data = ls_log-mandt
Code: Alles auswählen.
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(IM_LOGDATA) TYPE ANY
*" REFERENCE(IM_FIELDTAB) TYPE DFIES
*" CHANGING
*" REFERENCE(IM_FIELD) TYPE ANY
*"----------------------------------------------------------------------
FIELD-SYMBOLS: <p_field_x> TYPE x, <field> TYPE x.
ASSIGN <p_field_x> TO <field> CASTING.
ASSIGN im_logdata+im_fieldtab-offset(im_fieldtab-intlen) TO <field> CASTING.
<p_field_x> = <field>.
Du kennst ja den Tabellennamen, für den du eine Struktur brauchst. Mittels CREATE DATA und ASSING COMPONENT kann man dann den Zugriff realisieren.Shaguar hat geschrieben: (Nochmal zum Verständnis: Mal angenommen ich möchte als ersten den Mandanten aus dem Log-Feld auslesen. In meinem Fieldkatalog steht in der Spalte Datatype also 'MANDT' und nun möchte ich aus diesem Text eine echte Variable vom Typ MANDT erzeugen. Irgendwie soll das wohl mit ASSIGN COMPONENT gehen.. aber genaueres weiß ich nicht)
Code: Alles auswählen.
REPORT ztest.
PARAMETERS: p_tname TYPE dd02l-tabname VALUE CHECK DEFAULT 'MARA'.
DATA: gs_data TYPE REF TO data.
FIELD-SYMBOLS: <gs_data> TYPE ANY,
<gv_field> TYPE ANY.
DATA: gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat.
START-OF-SELECTION.
* Struktur erzeugen
CREATE DATA gs_data TYPE (p_tname).
* Dereferenzieren
ASSIGN gs_data->* TO <gs_data>.
* FieldCat besorgen
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = p_tname
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
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.
* Für jedes Feld der Struktur, einen FuBa aufrufen
LOOP AT gt_fcat INTO gs_fcat.
ASSIGN COMPONENT gs_fcat-fieldname OF STRUCTURE <gs_data> TO <gv_field>.
* CALL FUNCTION für das Feld
ENDLOOP.