weiteres feld

Getting started ... Alles für einen gelungenen Start.
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

weiteres feld

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
hallo miteinander
habe wiedermal eine Frage, und zwar geht es um strukturen.
ich habe in der transaktion se11 eine struktur namens zvolumenstruc angelegt.
es beinhaltet nur ein einziges feld und zwar kunnr für kundennummer.
Gibt es eine möglichkeit um struktur zvolumenstruc, während der laufzeit eines Abapprogramms,
weiteres feld einzufügen oder erweitern?

Code: Alles auswählen.

 Struktur zvolumenstruc
 Feld 	  kunnr

 ich erstelle ein programm und möchte weitere struktur erzeugen während der Laufzeit des Programms.
 Struktur zvolumenstruc
 Feld 	  kunnr
 Feld     vbeln --> einfügen während der Laufzeit

 nach Beenden des Programm, gehe ich in se11, der struktur sollte unverändert erscheinen
 Struktur zvolumenstruc
 Feld 	  kunnr
Versteht ihr, was ich meine?

Gruss kostostyle

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hallo,

vielleicht hilft dir die Klasse "CL_ALV_TABLE_CREATE" weiter.

Gruß,
Olli

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
supi danke

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
danke erstmal für deine antwort
etwas habe ich noch nicht erwähnt, und zwar habe ich die daten, die ich als feld darstellen möchte in eine interne Tabelle gespeichert(siehe Beilage Tabelle v_lief). Diese Daten in der interne Tabelle v_lief möchte ich in der struktur zvolutable erweitern.
Ist das überhaupt machbar?
Bitte Datei in Anhang anschauen, ist in Worddokument abspeichert.

Vielen Vielen Dank

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
Ich habe jetzt endlich geschafft einen struktur zu erzeugen. jetzt möchte ich diese struktur in ALV Grid darstellen, wie mache ich das?

Code: Alles auswählen.

PROGRAM zliefervolu.

*---------------------------------------------------------------------*
* Definition                                                          *
*---------------------------------------------------------------------*
TABLES: likp, "Vertriebsbeleg: Lieferung: Kopfdaten
        lips, "Vertriebsbeleg: Lieferung: Positionsdaten
        kna1, "Kundenstamm (allgemeiner Teil)
        marm. "Mengeneinheiten zum Material

FIELD-SYMBOLS: <fs_data> TYPE REF TO data,
               <fs_1> TYPE ANY TABLE,
               <fs_2>,
               <fs_3>.

DATA: BEGIN OF i_vbeln OCCURS 1,
      faktor(5) TYPE n,
      END OF i_vbeln.

DATA: BEGIN OF v_lief OCCURS 1,
      faktor TYPE string,
      END OF v_lief.

DATA: ok_code LIKE sy-ucomm, "Bildschirmbilder, Funktionscode, der PAI ausgelöst hat
      i_datatable TYPE TABLE OF zvolutable,
      v_debit TYPE kunnr,
      v_lifg TYPE vrkme,
      v_datumkl TYPE wadat,
      v_datumgr TYPE wadat,
      v_faktor(5) TYPE n,
      v_faktors TYPE string,
      v_datum TYPE string,
      v_count TYPE i,
      lt_fieldcatalog TYPE lvc_t_fcat,
      ls_fieldcatalog TYPE lvc_s_fcat,
      new_table TYPE REF TO data,
      new_line  TYPE REF TO data,
      lt_data TYPE REF TO data,
      v_datumlow(10) TYPE c,
      v_datumhigh(10) TYPE c,
      v_text TYPE string,
      name_catolog TYPE lvc_t_fcat, "Ändern von Spaltenname
      l_field LIKE LINE OF name_catolog, "Kurzspeicher für Spaltenname
      g_container TYPE scrfname VALUE 'BCALV_GRID_CONTROL',
      grid1 TYPE REF TO cl_gui_alv_grid, "ALV Grid Definition
      creattable TYPE REF TO cl_alv_table_create,
      g_custom_container TYPE REF TO cl_gui_custom_container.

SELECT-OPTIONS: s_kunnr FOR likp-kunnr, "Lieferung
                s_wadat FOR likp-wadat OBLIGATORY, "Geplantes Datum der Warenbewegung
                s_vbeln FOR likp-vbeln. "Warenempfänger

*---------------------------------------------------------------------*
* Main Program                                                        *
*---------------------------------------------------------------------*
START-OF-SELECTION.

  CLEAR: likp.
* Selektion Vertriebsbeleg: Lieferung: Kopfdaten
  SELECT * FROM likp WHERE vbeln IN s_vbeln
                     AND wadat IN s_wadat
                     AND kunnr IN s_kunnr
                     ORDER BY vbeln.
*    CLEAR: kna1.
**   Selektion Kundenstamm (allgemeiner Teil)
*    SELECT SINGLE * FROM kna1 WHERE kunnr EQ likp-kunnr.
*    CONCATENATE likp-kunnr ` ` kna1-name1 INTO i_datatable-kunnr.
*
*    CLEAR: lips.
*   Selektion Vertriebsbeleg: Lieferung: Positionsdaten
    SELECT * FROM lips WHERE vbeln EQ likp-vbeln.

*      CLEAR: marm.
**     Selektion Mengeneinheiten zum Material
*      SELECT SINGLE * FROM marm WHERE matnr EQ lips-matnr
*                                AND meinh EQ lips-vrkme.

      MOVE lips-umvkz TO i_vbeln-faktor.
      APPEND i_vbeln.

    ENDSELECT.

  ENDSELECT.

  CLEAR: i_vbeln.
  SORT i_vbeln BY faktor.

*------------------------*
* Datumsfeld             *
*------------------------*
  MOVE s_wadat-low TO v_datumkl.
  v_datumlow = v_datumkl+6.
  WRITE '.' TO v_datumlow+2.
  WRITE v_datumkl+4(2) TO v_datumlow+3.
  WRITE '.' TO v_datumlow+5.
  WRITE v_datumkl(4) TO v_datumlow+6.


  LOOP AT s_wadat WHERE high IS NOT INITIAL.
    MOVE s_wadat-high TO v_datumgr.
  ENDLOOP.

  v_datumhigh = v_datumgr+6.
  WRITE '.' TO v_datumhigh+2.
  WRITE v_datumgr+4(2) TO v_datumhigh+3.
  WRITE '.' TO v_datumhigh+5.
  WRITE v_datumgr(4) TO v_datumhigh+6.

  IF v_datumgr IS NOT INITIAL.
    CONCATENATE v_datumlow '-' v_datumhigh INTO v_datum.
  ELSE.
    MOVE v_datumlow TO v_datum.
  ENDIF.
*
  v_text = 'datum'.
  MOVE v_text TO v_lief-faktor.
  APPEND v_lief.

*------------------------*
* Faktorfelder           *
*------------------------*
  LOOP AT i_vbeln.

    IF i_vbeln-faktor NE v_faktor.
      MOVE i_vbeln-faktor TO v_faktor.
      PACK i_vbeln-faktor TO v_faktors.
      CONDENSE v_faktors.
      CONCATENATE v_faktors 'er' INTO v_lief-faktor.
      APPEND v_lief.
    ENDIF.

  ENDLOOP.

  CLEAR: v_lief.

  LOOP AT v_lief.
    ls_fieldcatalog-fieldname = v_lief-faktor.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
  ENDLOOP.

  ASSIGN lt_data TO <fs_data>.

  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog           = lt_fieldcatalog
    IMPORTING
      ep_table                  = <fs_data>
    EXCEPTIONS
      generate_subpool_dir_full = 1
      OTHERS                    = 2.

  IF sy-subrc <> 0.
  ENDIF.

  ASSIGN <fs_data>->* TO <fs_1>.

  CREATE DATA new_line LIKE LINE OF <fs_1>.

  ASSIGN new_line->* TO <fs_2>.

  CALL SCREEN 100.


END-OF-SELECTION.
*---------------------------------------------------------------------*
*       MODULE PBO OUTPUT                                             *
*---------------------------------------------------------------------*
MODULE pbo OUTPUT.
  SET PF-STATUS 'MAIN100'.
*
*** Definition von Feldkatalog
*  l_field-fieldname = 'DEBITOR'.
*  l_field-coltext = v_datum4.
*  APPEND l_field TO name_catolog.

  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
           EXPORTING container_name = g_container.
    CREATE OBJECT grid1
           EXPORTING i_parent = g_custom_container.

**   ALV Methode aufruf für Ausgabe
*    CALL METHOD grid1->set_table_for_first_display
*      EXPORTING
*        i_structure_name = <fs_1>
*      CHANGING
*        it_outtab        = i_result.
  ENDIF.
ENDMODULE.                    "PBO OUTPUT
*---------------------------------------------------------------------*
*       MODULE PAI INPUT                                              *
*---------------------------------------------------------------------*
MODULE pai INPUT.
*   to react on oi_custom_events:
  CALL METHOD cl_gui_cfw=>dispatch.
  CASE ok_code.
    WHEN 'EXIT'.
      PERFORM exit_program.
    WHEN OTHERS.
*     do nothing
  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                    "PAI INPUT
*---------------------------------------------------------------------*
*       FORM EXIT_PROGRAM                                             *
*---------------------------------------------------------------------*
FORM exit_program.
*  CALL METHOD G_CUSTOM_CONTAINER->FREE.
*  CALL METHOD CL_GUI_CFW=>FLUSH.
  LEAVE PROGRAM.
ENDFORM.                    "EXIT_PROGRAM

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
wie bringe ich eine dynamic_table in eine ALV_GRID(siehe code oben)

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

so sollte es funktionieren:

Code: Alles auswählen.

  CALL METHOD grid1->set_table_for_first_display
    EXPORTING
      ...
      ...
      ...
    CHANGING
      it_outtab                     = <fs_1>
      it_fieldcatalog               = lt_fieldcatalog
      ....
      ....
mfg
richard

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
habe es schon versucht leider nicht geklappt. Leere Felder werden ausgegeben siehe test.jpg Anhang

Code: Alles auswählen.

*   ALV Methode aufruf für Ausgabe
    CALL METHOD grid1->set_table_for_first_display
*      EXPORTING
*        i_structure_name = 'lvc_t_fcat'
      CHANGING
        it_outtab        = <fs_1>
        it_fieldcatalog  = lt_fieldcatalog.

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

deine spalten hast du ja schon in deinem ALV.

du mußt ihnen nur noch eine überschrift geben:

ändere mal deinen code bei der stelle:

Code: Alles auswählen.

  LOOP AT v_lief.
    ls_fieldcatalog-fieldname = v_lief-faktor.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
  ENDLOOP.
und füge die zeile:

Code: Alles auswählen.

  LOOP AT v_lief.
    ls_fieldcatalog-fieldname = v_lief-faktor.
************************************
    ls_fieldcatalog-coltext = v_lief-faktor.
************************************
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
  ENDLOOP.
ein.

dann haben deine spalten auch eine überschrift.

mfg
richard[/code]

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
wow man, super vielen dank

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
nun möchte ich meine daten, die ich in einer interne tabelle abgespeichert habe,
matrix weise in ALV GRID füllen. Siehe Anhang ist in Excel format.

Wäre sehr sehr für wenn mir jemand helfen könnte

gruss kostonstyle

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
bitte dringend um hilfe

Beitrag von JHM (Top Expert / 1212 / 2 / 202 ) »
kostonstyle hat geschrieben:bitte dringend um hilfe
Nur Geduld, manche müssen auch noch arbeiten :)

Wenn ich dich richtig verstanden habe sollte das in etwa so gehen wie im Beispiel gezeigt. Du kannst mittels FIELD-SYMBOLE dynamisch auf die Felder einer Strucktur zugreifen. Im Beispiel habe ich das ganze mittels dynamischen Namens gemacht, je nachdem wie deine Tabellen aufgebaut sind, könnte man es auch mit ASSIGNING COMPONENT comp OF STRUCTURE struct TO <field-symbole> lösen. Leider hast du zu den Tabellendefinitionen nichts geschrieben.

Hier das Beispiel:

Code: Alles auswählen.

TYPES: BEGIN OF t_data,
        kunnr TYPE kunnr,
        umvkz TYPE umvkz,
        lfimg TYPE lfimg,
        vol   TYPE i,
        g_vol TYPE i,
       END   OF t_data,

       BEGIN OF t_alv,
         kunnr TYPE kunnr,
         feld_1  TYPE i,
         feld_2  TYPE i,
         feld_3  TYPE i,
         g_vol TYPE i,
       END   OF t_alv.

DATA: gt_data TYPE TABLE OF t_data,
      gw_data TYPE          t_data,
      gt_alv  TYPE TABLE OF t_alv,
      gw_alv  TYPE          t_alv,

      g_num(1) TYPE c,
      g_fieldname(100) TYPE c.

FIELD-SYMBOLS <fs_field> TYPE i.

* Itab füllen
*1. Kunde
CLEAR gw_data.
gw_data-kunnr = 505041.
gw_data-lfimg = 14645.
gw_data-umvkz = 1.
gw_data-vol   = 272548.
APPEND gw_data TO gt_data.

CLEAR gw_data.
gw_data-kunnr = 505041.
gw_data-lfimg = 6.
gw_data-umvkz = 3.
gw_data-vol   = 6.
gw_data-g_vol = 308564.
APPEND gw_data TO gt_data.

* 2.Kunde
CLEAR gw_data.
gw_data-kunnr = 506160.
gw_data-lfimg = 1638.
gw_data-umvkz = 1.
gw_data-vol   = 29790.
APPEND gw_data TO gt_data.

CLEAR gw_data.
gw_data-kunnr = 506160.
gw_data-lfimg = 6.
gw_data-umvkz = 2.
gw_data-vol   = 6.
APPEND gw_data TO gt_data.

CLEAR gw_data.
gw_data-kunnr = 506160.
gw_data-lfimg = 39.
gw_data-umvkz = 3.
gw_data-vol   = 431.
gw_data-g_vol = 5444.
APPEND gw_data TO gt_data.

* Sortieren muss sein
SORT gt_data BY kunnr umvkz.

* Daten drehen und in ALV-Tabelle stellen
LOOP AT gt_data INTO gw_data.
  AT NEW kunnr.
*   Kundennummer übernehmen
    gw_alv-kunnr = gw_data-kunnr.
  ENDAT.

* Mittels Nummer aus UMVKZ das Zielfeld bestimmen
  g_num = gw_data-umvkz.

  CONCATENATE 'GW_ALV-FELD_'      "Feldnamen
              g_num
              INTO g_fieldname.

  ASSIGN (g_fieldname) TO <fs_field>.
  <fs_field> = gw_data-vol.

  gw_alv-g_vol = gw_data-g_vol.

  AT END OF kunnr.
*   Mit dem letzten Satz die Daten übernehmen
    APPEND gw_alv TO gt_alv.
    CLEAR gw_alv.
  ENDAT.
ENDLOOP.

LOOP AT gt_alv INTO gw_alv.
  WRITE: / gw_alv-kunnr,
           gw_alv-feld_1,
           gw_alv-feld_2,
           gw_alv-feld_3,
           gw_alv-g_vol.
ENDLOOP. "gt_alv INTO gw_alv
Hoffe dir geholfen zu haben.
Gruß Hendrik

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
hallo jhm

erstmal vielen dank für deine mühe, aber das ist nicht ganz was ich meine.
der interne tabelle i_lieferdatenn ist mit Daten gefüllt. Anhand von i_lieferdatenn-umvkz
Nummer muss Daten in der dymnamische Tabelle <fs_1> mit der Daten i_lieferdatenn gefüllt.
Bitte Excel datei anschauen, dann weisst du sicher was ich meine, Anhang Matrix.zip.

Beitrag von JHM (Top Expert / 1212 / 2 / 202 ) »
kostonstyle hat geschrieben: erstmal vielen dank für deine mühe, aber das ist nicht ganz was ich meine.
der interne tabelle i_lieferdatenn ist mit Daten gefüllt. Anhand von i_lieferdatenn-umvkz
Nummer muss Daten in der dymnamische Tabelle <fs_1> mit der Daten i_lieferdatenn gefüllt.
So wie ich es verstehe, macht mein Programm genau das was du willst. Nur das bei dir die zweite Tabelle dynamisch erzeugt wird. Das habe ich mir in meinem Beispiel gespart.
Ich versuchs mal an deinem Beispiel zu erklären:

Code: Alles auswählen.

* Deine Daten sind in Tabelle i_lieferdaten vorhanden 
* und nach Kundennummer sortiert

* x Zeilen aus Tabelle i_lieferdaten werden zu einer Zeile in Tabelle 
* <fs_1> geformt

* Daten initialisieren
  CLEAR <fs_2>.

  LOOP AT i_lieferdaten.
* Die Kundennummer und das Gesammtevolumen können wir einfach 
* übernehmen.
<fs_2>-kunnr = i_lieferdaten-kunnr.
<fs_2>-volumen = i_lieferdaten-volumen.

* Jetzt muss noch der Wert aus i_lieferdaten-lfimg übernommen werden.
* Das Feld  i_lieferdaten-umvkz sagt uns in welches Feld es in <fs_2> gestellt werden muss.
* Zuerst den Namen zusammen basteln :
CONCATENATE '<FS_2>-'        "Das ist ja immer gleich
                         i_lieferdaten-umvkz "Das ist der Feldname
                        INTO g_fieldname. 
* In g_fieldname steht also jetzt der Feldname (<FS_2>-1, <FS_2>-2, 
* <FS_2>-4, usw.) in das lfimg verschoben werden soll.


* Dynamische Zuweisungen gehen nur über field-symbols.
ASSIGN (g_fieldname) TO <fs_3>.
* Jetzt zeigt <fs_3> auf das Feld <FS_2>-1, bzw. <FS_2>-2, <FS_2>-4, usw.
* Dann den Wert zuweisen
<fs_3> = i_lieferdaten-lfimg.
* In der nächsten Schleife wird das ganze für 2, dann für 4, usw.  gemacht

* Speichern von <fs_2> nicht vergessen! Wenn kein neuer Satz für den 
* Kunden kommt, muss gespeichert werden.
AT END OF kunnr.
  APPEND <fs_2> to <fs_1>.
* Daten initialisieren
  CLEAR <fs_2>.
ENDAT.
ENDLOOP.
Hoffe es wird jetzt verständlicher.
Gruß Hendrik

Vergleichbare Themen

2
Antw.
3019
Views
Feld sperren, wenn in and. Feld gerade etwas eingegeben wird
von kbit100 » 18.07.2018 11:41 • Verfasst in ABAP® für Anfänger
0
Antw.
1570
Views
Setze EMARA Feld in Bapi bei IDOC Verarbeitung. Feld aber nachher leer
von Woelli » 12.02.2021 16:32 • Verfasst in ABAP® Core
0
Antw.
2303
Views
32
Antw.
4603
Views
Feld belegen
von 1337 » 02.12.2013 08:32 • Verfasst in ABAP® für Anfänger
0
Antw.
1476
Views
Feld kursx_m
von tt_bd » 24.01.2014 09:49 • Verfasst in Financials

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 8400
Meine Inbox
vor einer Woche von Rabea1103 1 / 6245
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7399
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 12884

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 8400
Meine Inbox
vor einer Woche von Rabea1103 1 / 6245
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7399
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 12884