Code: Alles auswählen.
Report ZR_AUSW.
*--------------------------------------------------------------------*
*Tabellenarbeitsbereich deklarieren*
*--------------------------------------------------------------------*
DATA: wa_mara TYPE MARA,
wa_makt TYPE MAKT,
wa_marc TYPE MARC,
wa_mard TYPE MARD,
wa_mbew TYPE MBEW,
wa_mver TYPE MVER.
*--------------------------------------------------------------------*
*Felder deklarieren*
*--------------------------------------------------------------------*
DATA: zeilen_itab01 TYPE i.
DATA: LGEGI TYPE i.
*--------------------------------------------------------------------*
*Datentypen für Zeilen deklarieren*
*--------------------------------------------------------------------*
TYPES: BEGIN OF zeile01_typ,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
MATKL TYPE MARA-MATKL,
PRDHA TYPE MARA-PRDHA,
EKGRP TYPE MARC-EKGRP,
DISPO TYPE MARC-DISPO,
BESKZ TYPE MARC-BESKZ,
SOBSL TYPE MARC-SOBSL,
LO1 TYPE MARD-LGORT, "Lagerort 1
LO2 TYPE MARD-LGORT, "Lagerort 2
LO3 TYPE MARD-LGORT, "Lagerort 3
LO4 TYPE MARD-LGORT, "Lagerort 4
LGPBE TYPE MARD-LGPBE,
VPRSV TYPE MBEW-VPRSV,
VERPR TYPE MBEW-VERPR,
STPRS TYPE MBEW-STPRS,
NCOST TYPE MARC-NCOST,
HRKFT TYPE MBEW-HRKFT,
EKALR TYPE MBEW-EKALR,
LOSGR TYPE MARC-LOSGR,
LABST TYPE MARD-LABST,
END OF zeile01_typ.
*--------------------------------------------------------------------*
*Datentypen für interne Tabellen deklarieren*
*--------------------------------------------------------------------*
TYPES itab01_typ TYPE STANDARD TABLE OF zeile01_typ.
*--------------------------------------------------------------------*
*Interne Tabellen deklarieren ohne Kopfzeile*
*--------------------------------------------------------------------*
DATA itab01 TYPE itab01_typ.
*--------------------------------------------------------------------*
*Workareas für interen Tabellen deklarieren*
*--------------------------------------------------------------------*
DATA wa_itab01 TYPE zeile01_typ.
*--------------------------------------------------------------------*
*Selektionsbild gesalten*
*--------------------------------------------------------------------*
SELECT-OPTIONS MATNR FOR wa_MARA-MATNR.
SELECT-OPTIONS EKGRP FOR wa_MARC-EKGRP.
SELECT-OPTIONS DISPO FOR wa_MARC-DISPO.
SELECT-OPTIONS LGPBE FOR wa_MARD-LGPBE.
PARAMETERS BESKZ TYPE MARC-BESKZ.
PARAMETERS SPRAS TYPE MAKT-SPRAS.
PARAMETERS VPRSV TYPE MBEW-VPRSV.
*PARAMETERS GJAHR TYPE MVER-GJAHR OBLIGATORY.
START-OF-SELECTION.
*--------------------------------------------------------------------*
*DBtab lesen und itab01 füllen über Workarea*
*--------------------------------------------------------------------*
SELECT *
INTO CORRESPONDING FIELDS OF TABLE itab01
FROM MARA
JOIN MARC
ON MARC~MATNR EQ MARA~MATNR
JOIN MARD
ON MARD~MATNR EQ MARA~MATNR
AND MARD~WERKS = '1000'
AND LO1 = '1000' "Lagerort 1
AND LO2 = '1010' "Lagerort 2
AND LO3 = '1020' "Lagerort 3
AND LO4 = '1030' "Lagerort 4
JOIN MBEW
ON MBEW~MATNR EQ MARA~MATNR
JOIN MAKT
ON MAKT~MATNR EQ MARA~MATNR
JOIN MVER
ON MVER~MATNR EQ MARA~MATNR
AND GJAHR = '2014'
WHERE mara~matnr IN matnr.
LOGES = LO1 + LO2 + LO3 + LO4.
END-OF-SELECTION.
*--------------------------------------------------------------------*
*ITAB01 ausgeben in Liste*
*--------------------------------------------------------------------*
WRITE: / 'sy-tabix, itab01-MATNR'.
LOOP AT itab01 INTO wa_itab01.
WRITE: / sy-tabix,
wa_itab01-MATNR, "Materialnummer
wa_itab01-MAKTX, "Materialkurztext
wa_itab01-MATKL, "Warengruppe
wa_itab01-PRDHA, "Produkthyrarchie
wa_itab01-EKGRP, "Einkäufergruppe
wa_itab01-DISPO, "Disponent
wa_itab01-BESKZ, "Beschaffungskennzeichen
wa_itab01-SOBSL, "Sonderbeschaffungskennzeichen£
wa_itab01-LGPBE, "Lagerplatz
wa_itab01-LABST, "Lagerbestand
wa_itab01-VPRSV, "Preissteuerung
wa_itab01-VERPR, "Gleitender Preis
wa_itab01-STPRS, "Standartpreis
wa_itab01-NCOST, "Kalkulationshäckchen
wa_itab01-HRKFT, "Herkunftsgrupper
wa_itab01-EKALR, "Mengengerüst
wa_itab01-LOSGR. "Kalkulationslosgrösse
ENDLOOP.
Code: Alles auswählen.
LOOP AT material.
NEW-LINE.
WRITE material.
LOOP AT lager.
READ TABLE bestand WITH KEY material lager.
WRITE bestand.
ENDLOOP.
ENDLOOP.
Code: Alles auswählen.
LOOP AT material_bestand.
AT NEW material.
NEW-LINE.
WRITE material.
ENDAT.
WRITE bestand.
ENDLOOP.
Code: Alles auswählen.
REPORT.
DATA: gt_data TYPE STANDARD TABLE OF mara WITH NON-UNIQUE DEFAULT KEY.
SELECT * UP TO 100 ROWS INTO TABLE gt_data FROM mara. " Dabenbeschaffung
DATA: go_salv TYPE REF TO cl_salv_table.
TRY.
cl_salv_table=>factory( IMPORTING
r_salv_table = go_salv
CHANGING
t_table = gt_data ).
* go_salv->get_functions( )->set_all( ).
* go_salv->get_columns( )->set_optimize( ).
go_salv->display( ).
CATCH cx_salv_msg .
ENDTRY.
@adt: Habe ich auch gesehen. Aber dafür müssten ja erst mal Daten korrekt angelesen werden. Und wenn ich mir das bisherige Coding anschaue ( ist nicht böse gemeint christof ) müssen erst die Grundlagen sitzen bevor man sich an dynamische Listen wagt. Wenn hier nur eine Handvoll Lagerorte möglich sind ist eine fest verdrahtete Anzeigestruktur mit 1 Feld pro Lagerort (evtl. 2-3 Reserve falls die Fa. wächst ) und irgendwo im Codeing halt ein CASE mit WHEN pro (bekanntem) Lagerort der einfachste (lesbare/wartbare) Ansatz.a-dead-trousers hat geschrieben:@black_adept
Unabhängig von den Fehlern die christof in seinem Coding hat, sucht er glaub ich eine Möglichkeit wie man eine Tabelle mit "dynamischen" Spalten ausgibt. In seinem Fall halt je Lagerort eine Spalte.
...
lg ADT