[55352] in SAPr3-news

home help back first fref pref prev next nref lref last post

Re: interne Tabelle dynamisch aufbauen - ohne direkten DDIC-Bezug

daemon@ATHENA.MIT.EDU (gs_dev0@nexgo.de)
Thu Sep 1 02:13:33 2005

To: sapr3-news@mit.edu
Date: 31 Aug 2005 23:13:18 -0700
From: gs_dev0@nexgo.de
Message-ID: <1125555198.612663.8820@g47g2000cwa.googlegroups.com>

RudiL schrieb:
Hallo,
> ich m=F6chte eine interne Tabelle dynamisch aufbauen. Angenommen ich
> habe eine Tabelle ZTAB mit dem Feld F1. Die Tabelle enth=E4lt 3
> Datens=E4tze
>  A0
>  X7
>  B4
> Ausgehend von diesen 3 Datens=E4tzen m=F6chte ich dynamisch eine interne
> Tabelle aufbauen, die die Felder mit den Namen konto, summe, A0, X7 und
> B4 hat. Das Feld konto soll auf bseg-hkont referenzieren, die
> restlichen Felder sollen die L=E4nge 8 haben und vom Type P decimals 8
> sein.
siehe Beispielprogramm.

Gru=DF
Georg

---schnipp---

REPORT ztest.
DATA: it_input TYPE STANDARD TABLE OF lvc_s_fcat, "Feldliste f=FCr ITAB
      wa_input TYPE lvc_s_fcat.
DATA: d_ref    TYPE REF TO data.                  "Ref. auf ITAB
DATA: d_ref_wa TYPE REF TO data.                  "Ref. auf WA

FIELD-SYMBOLS: <it> TYPE table,                "Itab
               <wa> TYPE ANY,                  "Workarea
               <fs>.                           "Komponentenzugriff

DATA: BEGIN OF ztab OCCURS 0,
       f1(2) TYPE c,
      END OF ztab.

ztab-f1 =3D 'A0'. APPEND ztab.
ztab-f1 =3D 'X7'. APPEND ztab.
ztab-f1 =3D 'B4'. APPEND ztab.

PERFORM itab_generieren.

* Tabelle f=FCllen
ASSIGN COMPONENT 'KONTO' OF STRUCTURE <wa> TO <fs>.
<fs> =3D '4711'.
ASSIGN COMPONENT 'SUMME' OF STRUCTURE <wa> TO <fs>.
<fs> =3D 3000.
ASSIGN COMPONENT 'A0' OF STRUCTURE <wa> TO <fs>.
<fs> =3D 1000.
ASSIGN COMPONENT 'X7' OF STRUCTURE <wa> TO <fs>.
<fs> =3D 1000.
ASSIGN COMPONENT 'B4' OF STRUCTURE <wa> TO <fs>.
<fs> =3D 1000.
APPEND <wa> TO <it>.

* Tabelleninhalt ausgeben
LOOP AT <it> INTO <wa>.
  DO.
    IF sy-subrc NE 0.
      EXIT.
    ENDIF.
    ASSIGN COMPONENT sy-index OF STRUCTURE <wa> TO <fs>.
    WRITE: <fs>.
  ENDDO.
ENDLOOP.

*---------------------------------------------------------------------*
*       FORM itab_generieren                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM itab_generieren.
* Feld mit Referenz auf Tabellenfeld anlegen
  wa_input-fieldname =3D 'KONTO'.
  wa_input-ref_field =3D 'HKONT'.
  wa_input-ref_table =3D 'BSEG'.
  APPEND wa_input TO it_input.
  CLEAR wa_input.

* Feld Typ P mit L=E4nge 8 anlegen
  wa_input-fieldname =3D 'SUMME'.
  wa_input-inttype =3D 'P'.
  wa_input-outputlen =3D 8.
  APPEND wa_input TO it_input.

* weitere Felder mit L=E4nge 8 anlegen
  LOOP AT ztab.
    PERFORM add_field USING ztab-f1.
  ENDLOOP.

  CALL METHOD cl_alv_table_create=3D>create_dynamic_table
              EXPORTING
                  it_fieldcatalog =3D it_input
              IMPORTING
                  ep_table =3D d_ref .

  ASSIGN d_ref->* TO <it>.
  CREATE DATA d_ref_wa LIKE LINE OF <it>.
  ASSIGN d_ref_wa->* TO <wa>.
ENDFORM. "itab_generieren

*---------------------------------------------------------------------*
*       FORM add_field                                                *
*---------------------------------------------------------------------*
*       weitere Tabellenfelder Typ P, L=E4nge 8 anlegen
*---------------------------------------------------------------------*
FORM add_field USING i_field.
  CLEAR wa_input.
  wa_input-fieldname =3D i_field. "Feldbzeichnung.
  wa_input-inttype =3D 'P'.
  wa_input-outputlen =3D 8.
  APPEND wa_input TO it_input.
ENDFORM. "add_field

---schnapp---


home help back first fref pref prev next nref lref last post