Code: Alles auswählen.
data:  strukturvar     type dictonarystruktur.Code: Alles auswählen.
data:  strukturvar     type .Code: Alles auswählen.
DATA:
  ld_struct TYPE REF TO DATA,
  lv_struct_name TYPE string.
FIELD-SYMBOLS:
  <ls_struct> TYPE ANY.
lv_struct_name = 'MARA'.
CREATE DATA ld_struct TYPE (lv_struct_name).
ASSIGN ld_struct->* TO <ls_struct>.Die Antwort kam schnell.ereglam hat geschrieben:Hallo Markus,
ja, die gibt es:Damit hast Du Zugriff mit <ls_struct> auf deine Struktur.Code: Alles auswählen.
DATA: ld_struct TYPE REF TO DATA, lv_struct_name TYPE string. FIELD-SYMBOLS: <ls_struct> TYPE ANY. lv_struct_name = 'MARA'. CREATE DATA ld_struct TYPE (lv_struct_name). ASSIGN ld_struct->* TO <ls_struct>.
Wenn Du auf einzelen Felder der Struktur zugreifen willst, musst Du ASSIGN COMPONENT benutzen.
 Das erspart mir dann mehrere Std grübeln.
 Das erspart mir dann mehrere Std grübeln.Respekt. Da hab ich ja noch vieles einzuholen.ereglam hat geschrieben:Hallo Markus,
das hat nicht sooo viel mit Erfahrung zu tun, da es den CREATE noch nicht so lange gibt.
Ich habe halt gerade damit zu tun...
PS:
ich saue jetzt erst seit ca. 10 Jahren mit und in SAP-Systemen herum...
 
  
 Code: Alles auswählen.
data: variablenamen type table of 'typ'ich arbeite auf 4.6cereglam hat geschrieben:Hallo Markus,
dazu gibt es zwei Möglichkeiten:Die letzte Variante ist notwendig, wenn Du auf einem System kleiner 6.20 arbeitest...
- Typ ist im DDIC bekannt
CREATE DATA ... TYPE TABLE OF (typ).- mit CL_ABAP_TABLEDESCR und CL_ABAP_STRUCTDESCR
Anlegen einer Struktur und dann einer Tabelle mit CREATE DATA ... TYPE HANDLE tabdescr.- Subroutinepool
anlegen eines temporären Programmes/Form-Routine, dass eine Tabelle erzeugt und zurückgibt
Code: Alles auswählen.
  FIELD-SYMBOLS:
         <lfs_tab>       TYPE ANY,
         <lfs_tab2>       TYPE ANY.
  DATA:  ld_tab         TYPE REF TO data,
         lt_mara        TYPE REF TO data.
  CREATE DATA ld_tab TYPE (rs_fullkey-tabname).   <--- das funktioniert
  ASSIGN ld_tab->* TO <lfs_tab>.                            <--- das funktioniert
  create data lt_mara type table of (rs_fullkey-tabname). <-- das nicht
  ASSIGN lt_mara->* TO <lfs_tab2>.
also geht bei Dir nur die Variante drei...ereglam hat geschrieben:...
Die letzte Variante ist notwendig, wenn Du auf einem System kleiner 6.20 arbeitest...

Code: Alles auswählen.
  call method cl_alv_table_create=>create_dynamic_table
    exporting
      it_fieldcatalog           = t_fieldcat
    importing
      ep_table                  = it_ref.
Code: Alles auswählen.
PROGRAM /xxxx/sapfyzpv.                 
TYPES:                                   
   typ_s_MARA TYPE MARA ,                
   typ_t_MARA TYPE TABLE OF typ_s_MARA.  
DATA:                                    
   gt_MARA TYPE typ_t_MARA.              
Code: Alles auswählen.
*----------------------------------------------------------------------*
*   INCLUDE /XXXX/YZPVREPEXTER                                        *
*----------------------------------------------------------------------*
DATA: code TYPE TABLE OF rssource-line,
      s_code LIKE LINE OF code,
      prog(8) TYPE c, msg(120) TYPE c, lin(3) TYPE c,
      wrd(10) TYPE c, off(3) TYPE c, hf_string TYPE string.
CLEAR hf_string.
APPEND 'PROGRAM /xxxx/sapfyzpv.'
        TO code.
*APPEND 'FIELD-SYMBOLS:'
*        TO code.
*APPEND '   <lfs_tab>        TYPE ANY.'
*        TO code.
APPEND 'TYPES:'
        TO code.
CONCATENATE '   typ_s_' r_tabname ' TYPE '
       INTO hf_string.
CONCATENATE hf_string r_tabname ','
       INTO hf_string
       SEPARATED BY space.
APPEND hf_string
        TO code.
CLEAR hf_string.
CONCATENATE '   typ_t_' r_tabname ' TYPE TABLE OF typ_s_' r_tabname '.'
       INTO hf_string.
APPEND hf_string
        TO code.
CLEAR hf_string.
APPEND 'DATA:'
        TO code.
CONCATENATE '   gt_' r_tabname ' TYPE typ_t_' r_tabname '.'
       INTO  hf_string.
APPEND hf_string
        TO code.
CLEAR hf_string.
GENERATE SUBROUTINE POOL code NAME prog
                         MESSAGE msg
                         LINE    lin
                         WORD    wrd
                         OFFSET  off.
IF sy-subrc <> 0.
  WRITE: / 'Error during generation in line', lin,
         / msg,
         / 'Word:', wrd, 'at offset', off.
ELSE.
  SKIP 3.
  WRITE: / 'The name of the subroutine pool is', prog.
  LOOP AT code INTO s_code.
    WRITE: / s_code.
  ENDLOOP.
ENDIF.
Code: Alles auswählen.
PROGRAM  /xxxx/sapfyzpv               .
FORM check_key USING r_tabname TYPE string.
  INCLUDE /xxxx/yzpvrepexter.
ENDFORM.Code: Alles auswählen.
    PERFORM check_key(/xxxx/sapfyzpv) USING gf_tabname.