4AP.de ~ alles fuer ABAP-Programmierer - Infos zur SAP Programmiersprache


das Neueste

10 Jahre 4ap.de

10 Jahre 4ap.de - kleines und stilles Jubiläum

|

 

Buchrezensionen

Einige neue Buchrezensionen sind vorhanden.

|

 

neues Coding: braune Kekse

Lange schwebte mir die Idee vor, aber es fehlte schlicht die Zeit. Heute war es endlich soweit: ich nahm sie mir, die Zeit :-) Ergebnis unter: braune Kekse.

|

 

neues Kontaktformular

Wegen Formularspoofing wurde eine neue Kontaktmöglichkeit geschaffen.
|

 

Codings gesucht

Codings gesucht, die NICHT im SDN stehen.
|

 

Suche



 


Dieser Inhalt wurde zuletzt geändert am:
09.08.2007 von TN

Materialvergleich

www.4AP.de - ABAP Syntaxbeispiel: Materialvergleich zwischen zwei Werken

Beispielcoding: Materialvergleich zwischen zwei Werken (kopieren erlaubt aber auf eigene Gefahr :-))




*---------------------------------------------------------------------*
* Report ZMMATVER *
*---------------------------------------------------------------------*
* erstellt 12.06.2003 Thorsten Neubüser, www.4ap.de
*
* entwickelt unter 3.1i
* auch getestet unter 4.6c, 4.7
* unter 4.7 muss hochkomma anders definiert werden, wenn Unicode-System
* dann geht aber auch eine andere dynamische Tabellenerzeugung ;-))
*
* ausgehend von einem Mustermaterial werden die Unterschiede zu den
* nachfolgend zu selektierenden Materialien angelistet
* Welche Felder verglichen werden ist in den Formroutinen (z.B.
* mara_felder_ausblenden) definiert
* Verzweigung in die MM02 bei line-select
* Download der Daten nach Excel für manuelle Sortierung / Pflege
*
* Dieser Download kann dann nach manueller Bearbeitung in einem anderen
* ABAP über MATERIAL_MAINTAIN_DARK die verbliebenen nicht gewollten
* Unterschiede ausgleichen
*
* Der Report benutzt einen eigenen pf-status 'Z_PICK'. Eine Kopie
* des 'PICK' aus SAPMSSY0 ergänzt um Drucktaste für Excel-Download
* Funktionscode PF5 = EXCL = Excel Download
*
* Es wird die Nachrichtenklasse ZP mit dem Fehler (000) benötigt.
* er ist definiert als '&1 &2 &3 &4'
*
* Die Tabellen J_ sind nur in der cable_solution enthalten
* Sie können gelöscht werden.
*
*---------------------------------------------------------------------*


REPORT ZMMATVER LINE-SIZE 240 LINE-COUNT 65.

* DATENDEKLARATIONEN
TABLES:
MARAV, " Materialstamm Konzern, der View enthält maktx!
MARC, " Materialstamm Werk
MVKE, " Materialstamm: Verkaufsdaten
MBEW, " Materialbewertung
EINA, " Einkaufsinfosatz - allgemeine Daten
EINE, " Einkaufsinfosatz - Einkaufsorganisationsdaten
J_1NE, " CS: Materialien auf VKORG-Ebene mit NE-Schlüsseln
J_1NEMM. " CS: Materialien auf Werks-Ebene mit NE-Schlüsseln


* Materialliste für zu vergleichende Materialien
DATA:
BEGIN OF MAT_LISTE OCCURS 0,
MATNR LIKE MARAV-MATNR,
WERKS LIKE MARC-WERKS,
MAKTX LIKE MARAV-MAKTX,
END OF MAT_LISTE.

* Felder für Vergleich
TABLES: DD03L, " Tabellenfelder
DD04T. " R/3-DD: Texte der Datenelemente
DATA:
BEGIN OF ITAB_FELDER OCCURS 0,
TABNAME LIKE DD03L-TABNAME,
FIELDNAME LIKE DD03L-FIELDNAME,
ROLLNAME LIKE DD03L-ROLLNAME,
SCRTEXT_L LIKE DD04T-SCRTEXT_M, " C20mittellang. Schlüsselwort
END OF ITAB_FELDER,
MARA_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
MARC_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
MVKE_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
MBEW_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
EINE_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
J_1NE_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
J_1NEMM_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
EK_TXT_FELDER LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE,
* Struktur für Excel-Download
XLS_STRUC LIKE ITAB_FELDER OCCURS 0 WITH HEADER LINE.

* Einzelvergleich für bestimmte Felder
FIELD-SYMBOLS: <TABNAME>, <FIELDNAME>, <SCRTEXT_L>,
<MAT_A_FIELD>, <MAT_B_FIELD>,
<TABNAME_FIELDNAME>, <TABELLE_FELD>,
<FELDWERT>.
DATA: FELDNAME(20). " 'marc' + 10 Char

* Strukturen für Vergleich
DATA:
WA_MARA_M LIKE MARAV, " Workarea MARA Muster
WA_MARA_V LIKE MARAV, " Workarea MARA Vergleich
WA_MARC_M LIKE MARC,
WA_MARC_V LIKE MARC,
WA_MVKE_M LIKE MVKE,
WA_MVKE_V LIKE MVKE,
WA_MBEW_M LIKE MBEW,
WA_MBEW_V LIKE MBEW,
BEGIN OF WA_EINE_M,
LFDNR TYPE I,
LIFNR LIKE EINA-LIFNR,
MATNR LIKE EINA-MATNR.
INCLUDE STRUCTURE EINE.
DATA:
END OF WA_EINE_M,
* wa_eine_m like eine,
WA_EINE_V LIKE WA_EINE_M,
WA_J_1NE_M LIKE J_1NE,
WA_J_1NE_V LIKE J_1NE,
WA_J_1NEMM_M LIKE J_1NEMM,
WA_J_1NEMM_V LIKE J_1NEMM.

* Hilfsfelder, Textpositionen der Ausgabe
DATA:
LINES_EK_M LIKE SY-TFILL,
LINES_EK_V LIKE SY-TFILL,
* sy_tabix like sy-tabix,
TP(3) VALUE '005', " Textposition
PM(3) VALUE '055', " Position Muster
PV(3) VALUE '100'. " Position Vergleichswert

* dynamische Generierung eines temporären Unterprogrammes
* unter 3.1i ist das leider ein wenig umständlich (Subroutinepool)
DATA: TABNAME_FIELDNAME(21), TABELLE_FELD(21).
DATA: CODE(72) OCCURS 100 WITH HEADER LINE,
CODE2(72), HOCHKOMMA TYPE X VALUE '27', " hex27 = dec39 = '
PROG(8), MSG(120), LIN(3), WRD(10), OFF(3).

* Einkaufsbestelltexte
DATA: EK_TXT_ID LIKE THEAD-TDID,
EK_TXT_LANGU LIKE THEAD-TDSPRAS,
EK_TXT_NAME LIKE THEAD-TDNAME,
EK_TXT_OBJECT LIKE THEAD-TDOBJECT,
EK_TEXT_ZEILE LIKE SY-TABIX,
BEGIN OF EK_TEXT_M OCCURS 0.
INCLUDE STRUCTURE TLINE. " tdformat tdline
DATA: END OF EK_TEXT_M,
BEGIN OF EK_TEXT_V OCCURS 0.
INCLUDE STRUCTURE EK_TEXT_M.
DATA: END OF EK_TEXT_V.



* SELEKTIONSBILDSCHIRM
SELECTION-SCREEN BEGIN OF BLOCK MUSTER
WITH FRAME TITLE TEXT-001. " 'Mustermaterial / Vorlage:'
PARAMETERS:
P_MATNR LIKE MARAV-MATNR OBLIGATORY,
P_WERKS LIKE MARC-WERKS OBLIGATORY,
P_LANGU LIKE SY-LANGU OBLIGATORY DEFAULT SY-LANGU,
P_BWKEY LIKE MBEW-BWKEY,
P_BWTAR LIKE MBEW-BWTAR,
P_VKORG LIKE MVKE-VKORG OBLIGATORY,
P_VTWEG LIKE MVKE-VTWEG OBLIGATORY,
P_LIFNR LIKE EINA-LIFNR OBLIGATORY MATCHCODE OBJECT KRED,
P_EKORG LIKE EINE-EKORG OBLIGATORY DEFAULT '0001',
P_ESOKZ LIKE EINE-ESOKZ OBLIGATORY DEFAULT '0',
P_J1NNES LIKE J_1NE-J_1NNES OBLIGATORY DEFAULT '001'.
SELECTION-SCREEN END OF BLOCK MUSTER.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK AUSWAHL WITH FRAME TITLE TEXT-002.
" 'Auswahl / Eingrenzung der zu überprüfenden Materialien'.
SELECT-OPTIONS:
S_MATNR FOR MARAV-MATNR, " Materialnummer
S_WERKS FOR MARC-WERKS, " Werk
S_MAKTX FOR MARAV-MAKTX, " Materialkurztext
S_MATKL FOR MARAV-MATKL, " Warengruppe
S_MTART FOR MARAV-MTART, " Materialart
S_PRDHA FOR MARAV-PRDHA, " Produkthierarchie
S_SPART FOR MARAV-SPART. " Sparte
SELECTION-SCREEN END OF BLOCK AUSWAHL.

PARAMETERS:
P_LISTEN, " Anlisten der Vergleichsfelder?
P_ZEIGID DEFAULT '', " zeigt völlig idente Materialien an
P_DETAIL DEFAULT 'X', " führt Detailvergleich durch
P_EKTEXT DEFAULT '', " listet die Einkaufsbestelltexte an
P_FILENM LIKE RLGRAP-FILENAME.


INITIALIZATION.
* Dateinamen für Excel-Download vorbelegen
* concatenate 'c:\' sy-repid '_' sy-datum '_' sy-uzeit '.XLS'
CONCATENATE 'c:\' SY-REPID '_' SY-DATUM '_' SY-UZEIT '.txt'
INTO P_FILENM.



* ES GEHT LOS!
START-OF-SELECTION.
* 'PICK' aus SAPMSSY0 ergänzt um Drucktaste für Excel-Download
SET PF-STATUS 'Z_PICK'.
* zu vergleichende Materialien in itab mat_liste
PERFORM MATERIALLISTE.

* diverse Feldlisten erstellen
PERFORM FELDER_HOLEN TABLES MARA_FELDER USING 'MARAV'.
PERFORM FELDER_HOLEN TABLES MARC_FELDER USING 'MARC'.
PERFORM FELDER_HOLEN TABLES MVKE_FELDER USING 'MVKE'.
PERFORM FELDER_HOLEN TABLES MBEW_FELDER USING 'MBEW'.
PERFORM FELDER_HOLEN TABLES EINE_FELDER USING 'EINE'.
PERFORM FELDER_HOLEN TABLES J_1NE_FELDER USING 'J_1NE'.
PERFORM FELDER_HOLEN TABLES J_1NEMM_FELDER USING 'J_1NEMM'.
* Einkaufstexte
PERFORM EX_TXT_FELDER TABLES EK_TXT_FELDER.

* nicht benötigte Felder ausblenden
* hier wird entschieden welche Felder überhaupt verglichen werden!
PERFORM MARA_FELDER_AUSBLENDEN.
PERFORM MARC_FELDER_AUSBLENDEN.
PERFORM MVKE_FELDER_AUSBLENDEN.
PERFORM MBEW_FELDER_AUSBLENDEN.
PERFORM EINE_FELDER_AUSBLENDEN.
PERFORM J_1NE_FELDER_AUSBLENDEN.
PERFORM J_1NEMM_FELDER_AUSBLENDEN.
PERFORM EX_TXT_FELDER_AUSBLENDEN.

* Struktur Excel-Tabelle anlegen
* da das unter 3.1i noch nicht anders geht, wird ein
* 'PROGRAM SUBPOOL' verwendet. Auch beide Kopfzeilen werden geschrieben
* im 'perform ausgabe_xls_itab' wird das Programm dann gestartet
PERFORM CREATE_XLS_ITAB.

* zu Materialdaten des Mustermaterials holen
PERFORM MUSTERMATERIALDATEN_HOLEN.
IF NOT P_EKTEXT IS INITIAL.
PERFORM MUSTER_EINKAUFSBESTELLTEXT.
ENDIF.
PERFORM MUSTERDATEN_XLS_ITAB.

* Vergleich aller selektierten Materialien
LOOP AT MAT_LISTE.
WRITE: / 'Mustermaterial / Vorlage:'(001), P_MATNR,
'Werk:'(004), P_WERKS,
'Materialkurztext:'(017), WA_MARA_M-MAKTX.
FORMAT HOTSPOT ON COLOR 5 INVERSE ON.
WRITE: / 'Vergleich mit Material :'(003), MAT_LISTE-MATNR,
'Werk:'(004), MAT_LISTE-WERKS,
'Materialkurztext:'(017), MAT_LISTE-MAKTX.
FORMAT HOTSPOT OFF COLOR OFF INVERSE OFF.

PERFORM MARA_VERGLEICHEN.
* unter 3.1i leider nicht verfügbar: CREATE DATA dref TYPE type.
* sonst könnte man das Ganze dynamisch aufrufen, so leider jede
* Tabelle einzeln
PERFORM MARC_VERGLEICHEN.
PERFORM MVKE_VERGLEICHEN.
PERFORM MBEW_VERGLEICHEN.
PERFORM EINE_VERGLEICHEN.
PERFORM J_1NE_VERGLEICHEN.
PERFORM J_1NEMM_VERGLEICHEN.
IF NOT P_EKTEXT IS INITIAL.
PERFORM EINKAUFSBESTELLTEXTE.
ENDIF. " not p_ektext is initial
ULINE.
IF NOT P_DETAIL IS INITIAL. " Detailvergleich durchgeführt
APPEND 'APPEND XLS_ITAB.' TO CODE.
APPEND '*' TO CODE.
ENDIF. " not p_detail is initial. " Detailvergleich durchgeführt
ENDLOOP. " at mat_liste


* Ausdrucken der Vergleichsfelder
IF NOT P_LISTEN IS INITIAL.
PERFORM DRUCK_FELDER.
ENDIF. " not p_listen is initial


* FERTIG
END-OF-SELECTION.

ULINE.
WRITE : / '** Listende **'(099).


AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'EXCL'.
IF P_DETAIL IS INITIAL.
MESSAGE I000(ZP) WITH
'Bitte Detailvergleich durchführen.'(022).
PERFORM AUSGABE_XLS_ITAB.
ELSE.
PERFORM AUSGABE_XLS_ITAB.
ENDIF.
WHEN OTHERS.
ENDCASE.

* auch bei Auswahl eines Hotspots
AT LINE-SELECTION.
IF SY-LISEL(9) = 'VERGLEICH'.
SET PARAMETER: ID 'MAT' FIELD SY-LISEL+26(18),
ID 'WRK' FIELD SY-LISEL+51(4),
ID 'BWT' FIELD P_BWTAR,
ID 'VKO' FIELD P_VKORG,
ID 'VTW' FIELD P_VTWEG.
CALL TRANSACTION 'MM02'.
ENDIF. "sy-lisel(9) = 'VERGLEICH'




* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
* AB HIE NUR NOCH FORM-ROUTINEN
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*


*---------------------------------------------------------------------*
* Form MATERIALLISTE
*---------------------------------------------------------------------*
FORM MATERIALLISTE.
* Alle zu prüfenden Materialien besorgen
SELECT MARAV~MATNR
MARC~WERKS
MARAV~MAKTX
FROM MARAV INNER JOIN MARC
ON MARAV~MATNR = MARC~MATNR
INTO CORRESPONDING FIELDS OF TABLE MAT_LISTE
WHERE MARAV~MATNR IN S_MATNR
AND MARC~WERKS IN S_WERKS
AND MARAV~MAKTX IN S_MAKTX
AND MARAV~SPRAS = P_LANGU
AND MARAV~MATKL IN S_MATKL
AND MARAV~MTART IN S_MTART
AND MARAV~PRDHA IN S_PRDHA
AND MARAV~SPART IN S_SPART.
ENDFORM. " MATERIALLISTE


*---------------------------------------------------------------------*
* Form FELDER_HOLEN
*---------------------------------------------------------------------*
* liest die Felder der Datenbanktabelle aus
*----------------------------------------------------------------------*
* -->ITAB_FELDER interne Tabelle für Feldnamen
* -->tabelle Name der transparenten Tabelle
*----------------------------------------------------------------------*
FORM FELDER_HOLEN TABLES ITAB_FELDER LIKE ITAB_FELDER[]
USING TABELLE.
SELECT DD03L~TABNAME DD03L~FIELDNAME DD03L~ROLLNAME
DD04T~SCRTEXT_L
FROM DD03L INNER JOIN DD04T
ON DD04T~ROLLNAME = DD03L~ROLLNAME
AND DD04T~DDLANGUAGE = P_LANGU
INTO CORRESPONDING FIELDS OF TABLE ITAB_FELDER
WHERE DD03L~TABNAME = TABELLE
AND DD03L~ROLLNAME NE ''.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Form "felder_holen" fehlgeschlagen'(008)
TABELLE.
ENDIF.
SORT ITAB_FELDER BY FIELDNAME.
ENDFORM. " FELDER_HOLEN


*---------------------------------------------------------------------*
* Form EX_TXT_FELDER
*---------------------------------------------------------------------*
FORM EX_TXT_FELDER TABLES ITAB_FELDER LIKE ITAB_FELDER[].
* tabname like dd03l-tabname,
* fieldname like dd03l-fieldname,
* rollname like dd03l-rollname,
* scrtext_l like dd04t-scrtext_m, " C20mittellang. Schlüsselwort
CLEAR ITAB_FELDER. REFRESH ITAB_FELDER.
ITAB_FELDER-TABNAME = 'EK_TXT'.
ITAB_FELDER-FIELDNAME = 'TDFORMAT'.
ITAB_FELDER-ROLLNAME = 'TDFORMAT'.
ITAB_FELDER-SCRTEXT_L = 'EK-TXT Format Zeile1'.
APPEND ITAB_FELDER.
ITAB_FELDER-TABNAME = 'EK_TXT'.
ITAB_FELDER-FIELDNAME = 'LINE_ANZ'.
ITAB_FELDER-ROLLNAME = 'LINE_ANZ'.
ITAB_FELDER-SCRTEXT_L = 'EK-TXT Anzahl Zeilen'.
APPEND ITAB_FELDER.
ITAB_FELDER-TABNAME = 'EK_TXT'.
ITAB_FELDER-FIELDNAME = 'TDLINE'.
ITAB_FELDER-ROLLNAME = 'TDLINE'.
ITAB_FELDER-SCRTEXT_L = 'EK-TXT Line Zeile 1'.
APPEND ITAB_FELDER.
ENDFORM. " EX_TXT_FELDER


*---------------------------------------------------------------------*
* Form MARA_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM MARA_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT MARA_FELDER WHERE
(
FIELDNAME NE 'MTART' " Materialart
AND FIELDNAME NE 'LVORM' " Löschvormerkung
AND FIELDNAME NE 'MATKL' " Warengruppe
AND FIELDNAME NE 'PRDHA' " Produkthierarchie
AND FIELDNAME NE 'XCHPF' " Chargenpflicht
AND FIELDNAME NE 'EKWSL' " Einkaufswerteschl.
AND FIELDNAME NE 'SPART' " Sparte
* and fieldname ne '' "
).
DELETE MARA_FELDER.
ENDLOOP. " at mara_felder where
* sonderhandlung Texte mara_felder
LOOP AT MARA_FELDER.
CASE MARA_FELDER-FIELDNAME.
WHEN 'LVORM'.
MARA_FELDER-SCRTEXT_L = 'Lösch-VM Material'.
MODIFY MARA_FELDER.
WHEN 'XCHPF'.
MARA_FELDER-SCRTEXT_L = 'Chargenpflicht Material'.
MODIFY MARA_FELDER.
ENDCASE.
ENDLOOP. " at mara_felder
APPEND LINES OF MARA_FELDER TO XLS_STRUC.
ENDFORM. " MARA_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form MARC_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM MARC_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT MARC_FELDER WHERE
(
FIELDNAME NE 'LVORM' " Löschvormerkung
AND FIELDNAME NE 'LADGR' " Ladegruppe
AND FIELDNAME NE 'STAWN' " Statistische Warennummer
AND FIELDNAME NE 'HERKL' " Herkunftsland
AND FIELDNAME NE 'MTVER' " Export(Importgruppe
AND FIELDNAME NE 'EKGRP' " Einkäufergruppe
AND FIELDNAME NE 'MMSTA' " MAT-/PPS-Status
AND FIELDNAME NE 'XCHPF' " Chargenpflicht Werksebene
AND FIELDNAME NE 'DISMM' " Dispomerkmal
AND FIELDNAME NE 'DISPO' " Disponent
AND FIELDNAME NE 'DISLS' " Dispolosgröße
AND FIELDNAME NE 'BSTRF' " Rundungswert
AND FIELDNAME NE 'BESKZ' " Beschaffungsart
AND FIELDNAME NE 'SOBSL' " Sonderbeschaffungsschlüssel
AND FIELDNAME NE 'DZEIT' " Eigenfertigungszeit
AND FIELDNAME NE 'WEBAZ' " WE-Baerb.Zeit
AND FIELDNAME NE 'FHORI' " Horizontschlüssel
AND FIELDNAME NE 'PLIFZ' " Planlieferzeit
* and fieldname ne '' "
).
DELETE MARC_FELDER.
ENDLOOP. " at marc_felder where
* sonderhandlung Texte marc_felder
LOOP AT MARC_FELDER.
CASE MARC_FELDER-FIELDNAME.
WHEN 'LVORM'.
MARC_FELDER-SCRTEXT_L = 'Lösch-VM Werk'.
MODIFY MARC_FELDER.
WHEN 'XCHPF'.
MARC_FELDER-SCRTEXT_L = 'Chargenpflicht Werk'.
MODIFY MARC_FELDER.
ENDCASE.
ENDLOOP. " at marc_felder
APPEND LINES OF MARC_FELDER TO XLS_STRUC.
ENDFORM. " MARC_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form MVKE_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM MVKE_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT MVKE_FELDER WHERE
(
FIELDNAME NE 'VKORG' " Verkaufsorganisation
AND FIELDNAME NE 'VTWEG' " Vertriebsweg
AND FIELDNAME NE 'DWERK' " Auslieferungswerk
AND FIELDNAME NE 'KONDM' " Materialgruppe
AND FIELDNAME NE 'MVGR2' " Materialgruppe 2
* and fieldname ne '' "
).
DELETE MVKE_FELDER.
ENDLOOP. " at mvke_felder where
APPEND LINES OF MVKE_FELDER TO XLS_STRUC.
ENDFORM. " MVKE_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form MBEW_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM MBEW_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT MBEW_FELDER WHERE
(
FIELDNAME NE 'PEINH' " Preiseinheit
AND FIELDNAME NE 'STPRS' " Standardpreis
* and fieldname ne '' "
).
DELETE MBEW_FELDER.
ENDLOOP. " at mbew_felder where
APPEND LINES OF MBEW_FELDER TO XLS_STRUC.
ENDFORM. " MBEW_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form EINE_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM EINE_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT EINE_FELDER WHERE
(
FIELDNAME NE 'NORBM' " Normalmenge
AND FIELDNAME NE 'MINBM' " Mindestmenge
AND FIELDNAME NE 'UNTTO' " Toleranz Unterlieferung
AND FIELDNAME NE 'UEBTO' " Toleranz Überlieferung
AND FIELDNAME NE 'MWSKZ' " Materialkurztext
AND FIELDNAME NE 'EKORG' " Einkaufsorganisation
AND FIELDNAME NE 'WERKS' " Werk
* and fieldname ne '' "
).
DELETE EINE_FELDER.
ENDLOOP. " at eine_felder where
* Sonderfelder für Einkaufsinfosatz BTCI einfügen
EINE_FELDER-TABNAME = 'EINE'.
EINE_FELDER-FIELDNAME = 'MATNR'.
EINE_FELDER-ROLLNAME = 'MATNR'.
EINE_FELDER-SCRTEXT_L = 'EKINFO Material'.
INSERT EINE_FELDER INDEX 1.
EINE_FELDER-FIELDNAME = 'LIFNR'.
EINE_FELDER-ROLLNAME = 'LIFNR'.
EINE_FELDER-SCRTEXT_L = 'EKINFO Lieferant'.
INSERT EINE_FELDER INDEX 1.
EINE_FELDER-FIELDNAME = 'LFDNR'.
EINE_FELDER-ROLLNAME = 'LFDNR'.
EINE_FELDER-SCRTEXT_L = 'EKINFO laufende Nr.'.
INSERT EINE_FELDER INDEX 1.
* für Excel
APPEND LINES OF EINE_FELDER TO XLS_STRUC.
ENDFORM. " EINE_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form J_1NE_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM J_1NE_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT J_1NE_FELDER WHERE
(
FIELDNAME NE 'J_1NVGW' " NE Gewicht Vertrieb
* and fieldname ne '' "
).
DELETE J_1NE_FELDER.
ENDLOOP. " at j_1ne_felder where
* sonderhandlung Texte j_1ne_felder
LOOP AT J_1NE_FELDER.
CASE J_1NE_FELDER-FIELDNAME.
WHEN 'J_1NVGW'.
J_1NE_FELDER-SCRTEXT_L = 'NE Gewicht Vertrieb'.
MODIFY J_1NE_FELDER.
ENDCASE.
ENDLOOP. " at j_1ne_felder
APPEND LINES OF J_1NE_FELDER TO XLS_STRUC.
ENDFORM. " J_1NE_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form J_1NEMM_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM J_1NEMM_FELDER_AUSBLENDEN.
* unnötige Felder entfernen
LOOP AT J_1NEMM_FELDER WHERE
(
FIELDNAME NE 'J_1NVGW' " NE Gewichte Einkauf
* and fieldname ne '' "
).
DELETE J_1NEMM_FELDER.
ENDLOOP. " at j_1nemm_felder where
* sonderhandlung Texte j_1ne_felder
LOOP AT J_1NEMM_FELDER.
CASE J_1NEMM_FELDER-FIELDNAME.
WHEN 'J_1NVGW'.
J_1NEMM_FELDER-SCRTEXT_L = 'NE Gewicht Einkauf'.
MODIFY J_1NEMM_FELDER.
ENDCASE.
ENDLOOP. " at j_1nemm_felder
APPEND LINES OF J_1NEMM_FELDER TO XLS_STRUC.
ENDFORM. " J_1NEMM_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form EX_TXT_FELDER_AUSBLENDEN
*---------------------------------------------------------------------*
FORM EX_TXT_FELDER_AUSBLENDEN.
* hier wird natürlich nur 'eingeblendet' :-))
APPEND LINES OF EK_TXT_FELDER TO XLS_STRUC.
ENDFORM. " EX_TXT_FELDER_AUSBLENDEN


*---------------------------------------------------------------------*
* Form MUSTERMATERIALDATEN_HOLEN
*---------------------------------------------------------------------*
FORM MUSTERMATERIALDATEN_HOLEN.
CLEAR: WA_MARC_M, WA_MARA_V, WA_MARC_M, WA_MARC_V,
WA_MVKE_M, WA_MVKE_V, WA_MBEW_M, WA_MBEW_V,
WA_EINE_M, WA_EINE_V, WA_J_1NE_M, WA_J_1NE_V,
WA_J_1NEMM_M, WA_J_1NEMM_V.
CLEAR MARAV.
SELECT SINGLE *
FROM MARAV
INTO CORRESPONDING FIELDS OF WA_MARA_M
WHERE MATNR = P_MATNR
AND SPRAS = P_LANGU.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'MARAV'.
ENDIF.
CLEAR MARC.
SELECT SINGLE *
FROM MARC
INTO CORRESPONDING FIELDS OF WA_MARC_M
WHERE MATNR = P_MATNR
AND WERKS = P_WERKS.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'MARC'.
ENDIF.
CLEAR MVKE.
SELECT SINGLE *
FROM MVKE
INTO CORRESPONDING FIELDS OF WA_MVKE_M
WHERE MATNR = P_MATNR
AND VKORG = P_VKORG
AND VTWEG = P_VTWEG.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'MVKE'.
* dringend benötigte Felder in Excel-Download
WA_MVKE_M-VKORG = P_VKORG.
WA_MVKE_M-VTWEG = P_VTWEG.
ENDIF.
* wenn bwkey nicht gepflegt bwkey = werks
IF P_BWKEY IS INITIAL.
P_BWKEY = P_WERKS.
ENDIF.
CLEAR MBEW.
SELECT SINGLE *
FROM MBEW
INTO CORRESPONDING FIELDS OF WA_MBEW_M
WHERE MATNR = P_MATNR
AND BWKEY = P_BWKEY
AND BWTAR = P_BWTAR.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'MBEW'.
ENDIF.
CLEAR EINA.
SELECT *
FROM EINA CLIENT SPECIFIED
WHERE MATNR = P_MATNR
AND LIFNR = P_LIFNR.
* es kann nur einen geben! der erste Satz gilt.
EXIT.
ENDSELECT. " from eina
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'EINA'.
ENDIF.
CLEAR EINE.
SELECT SINGLE *
FROM EINE
INTO CORRESPONDING FIELDS OF WA_EINE_M
WHERE INFNR = EINA-INFNR
AND EKORG = P_EKORG
AND ESOKZ = P_ESOKZ
AND WERKS = P_WERKS.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'EINE'.
ELSE.
WA_EINE_M-LFDNR = 999.
WA_EINE_M-LIFNR = P_LIFNR.
WA_EINE_M-MATNR = P_MATNR.
ENDIF.
SELECT SINGLE *
FROM J_1NE
INTO CORRESPONDING FIELDS OF WA_J_1NE_M
WHERE KUNNR = ''
AND J_1NMAT = P_MATNR
AND J_1NVKO = P_VKORG
AND J_1NNES = P_J1NNES.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'J_1NE'.
ENDIF.
SELECT * " single *
FROM J_1NEMM
INTO CORRESPONDING FIELDS OF WA_J_1NEMM_M
* where j_1nlif = p_lifnr
WHERE J_1NMAT = P_MATNR
* and j_1neko = p_ekorg
AND J_1NWRK = P_WERKS
AND J_1NNES = P_J1NNES.
EXIT. " Highlander-Prinzip (es kann nur einen geben)
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE I000(ZP) WITH 'Musterdaten nicht gefunden!!'(019) 'J_1NEMM'.
ENDIF.
ENDFORM. " MUSTERMATERIALDATEN_HOLEN


*---------------------------------------------------------------------*
* Form DRUCK_FELDER
*---------------------------------------------------------------------*
FORM DRUCK_FELDER.
SKIP 3.
WRITE: / 'Es wurden folgende Felder verglichen:'(005).
ULINE.
WRITE: / 'Materialstamm Konzernebene [MARA]:'(006).
LOOP AT MARA_FELDER.
WRITE: / 'MARA-',
MARA_FELDER-FIELDNAME,
* mara_felder-rollname,
MARA_FELDER-SCRTEXT_L.
ENDLOOP. " at mara_felder
SKIP.
WRITE: / 'Materialstamm Werksebene [MARC]:'(007).
LOOP AT MARC_FELDER.
WRITE: / 'MARC-',
MARC_FELDER-FIELDNAME,
* marc_felder-rollname,
MARC_FELDER-SCRTEXT_L.
ENDLOOP. " at marc_felder
SKIP.
WRITE: / 'Materialstamm: Verkaufsdaten [MVKE]:'(009).
LOOP AT MVKE_FELDER.
WRITE: / 'MVKE-',
MVKE_FELDER-FIELDNAME,
* mvke_felder-rollname,
MVKE_FELDER-SCRTEXT_L.
ENDLOOP. " at mvke_felder
SKIP.
WRITE: / 'Materialbewertung [MBEW]:'(010).
LOOP AT MBEW_FELDER.
WRITE: / 'MBEW-',
MBEW_FELDER-FIELDNAME,
* mbew_felder-rollname,
MBEW_FELDER-SCRTEXT_L.
ENDLOOP. " at mbew_felder
SKIP.
WRITE: / 'Einkaufsinfosatz - Einkaufsorganisationsdaten [EINE]:'(011).
LOOP AT EINE_FELDER.
WRITE: / 'EINE-',
EINE_FELDER-FIELDNAME,
* eine_felder-rollname,
EINE_FELDER-SCRTEXT_L.
ENDLOOP. " at eine_felder
SKIP.
WRITE: /
'CS: Materialien auf VKORG-Ebene mit NE-Schlüsseln [J_1NE]:'(012).
LOOP AT J_1NE_FELDER.
WRITE: / 'J_1NE-',
J_1NE_FELDER-FIELDNAME,
* j_1ne_felder-rollname,
J_1NE_FELDER-SCRTEXT_L.
ENDLOOP. " at j_1ne_felder
SKIP.
WRITE: /
'CS: Materialien auf Werks-Ebene mit NE-Schlüsseln [J_1NEMM]:'(013).
LOOP AT J_1NEMM_FELDER.
WRITE: / 'J_1NEMM-',
J_1NEMM_FELDER-FIELDNAME,
* j_1nemm_felder-rollname,
J_1NEMM_FELDER-SCRTEXT_L.
ENDLOOP. " at j_1nemm_felder
ENDFORM. " DRUCK_FELDER


*---------------------------------------------------------------------*
* Form MARA_VERGLEICHEN
*---------------------------------------------------------------------*
FORM MARA_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_MARA_V.
SELECT SINGLE *
FROM MARAV
INTO CORRESPONDING FIELDS OF WA_MARA_V
WHERE MATNR = MAT_LISTE-MATNR
AND SPRAS = P_LANGU.
* Werksdaten überschreiben!
WA_MARA_V-MATNR = P_MATNR.
IF WA_MARA_M EQ WA_MARA_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'MARA',
'[MM02: Grunddatensicht, Einkauf; MM06]'(018).
ENDIF. " not p_zeigid is initial
ELSE. " wa_mara_m eq wa_mara_v
* Werksinformation zurückschreiben
WA_MARA_V-MATNR = MAT_LISTE-MATNR.
WRITE: / 'Material'(014), 'ungleich.'(016), 'MARA',
'[MM02: Grunddatensicht, Einkauf; MM06]'(018).
IF NOT P_DETAIL IS INITIAL.

* Excel-Download
* Key-Daten schreiben.
APPEND 'CLEAR XLS_ITAB.' TO CODE.
CONCATENATE HOCHKOMMA WA_MARA_V-MATNR HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MATNR' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA MAT_LISTE-WERKS HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-WERKS' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA WA_MARA_V-MAKTX HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MAKTX' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.

PERFORM MARA_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_mara_m eq wa_mara_v
ENDFORM. " MARA_VERGLEICHEN


*---------------------------------------------------------------------*
* Form MARA_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM MARA_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT MARA_FELDER.
ASSIGN MARA_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN MARA_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARA_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARA_V TO <MAT_B_FIELD>.
IF <MAT_A_FIELD> NE <MAT_B_FIELD>.
CONCATENATE 'mara-' <FIELDNAME> INTO FELDNAME.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
* für Excel-Export
ASSIGN MARA_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARA_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at mara_felder
SKIP.
ENDFORM. " MARA_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form MARC_VERGLEICHEN
*---------------------------------------------------------------------*
FORM MARC_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_MARC_V.
SELECT SINGLE *
FROM MARC
INTO CORRESPONDING FIELDS OF WA_MARC_V
WHERE MATNR = MAT_LISTE-MATNR
AND WERKS = MAT_LISTE-WERKS.
* Werksdaten überschreiben!
WA_MARC_V-MATNR = P_MATNR.
WA_MARC_V-WERKS = P_WERKS.
IF WA_MARC_M EQ WA_MARC_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'MARC',
'[MM02: Disposition 1 - Einkauf - Vertrieb/allg.Werksdaten]'(023).
ENDIF. " not p_zeigid is initial
ELSE. " wa_marc_m eq wa_marc_v
* Werksinformation zurückschreiben
WA_MARC_V-MATNR = MAT_LISTE-MATNR.
WA_MARC_V-WERKS = MAT_LISTE-WERKS.
WRITE: / 'Material'(014), 'ungleich.'(016), 'MARC',
'[MM02: Disposition 1 - Einkauf - Vertrieb/allg.Werksdaten]'(023).
IF NOT P_DETAIL IS INITIAL.
PERFORM MARC_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_marc_m eq wa_marc_v
ENDFORM. " MARC_VERGLEICHEN


*---------------------------------------------------------------------*
* Form MARC_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM MARC_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT MARC_FELDER WHERE FIELDNAME NE 'WERKS'.
ASSIGN MARC_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN MARC_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARC_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARC_V TO <MAT_B_FIELD>.
IF <MAT_A_FIELD> NE <MAT_B_FIELD>.
CONCATENATE 'marc-' <FIELDNAME> INTO FELDNAME.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
* für Excel-Export
ASSIGN MARC_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARC_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at marc_felder
SKIP.
ENDFORM. " MARC_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form MVKE_VERGLEICHEN
*---------------------------------------------------------------------*
FORM MVKE_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_MVKE_V.
SELECT SINGLE *
FROM MVKE
INTO CORRESPONDING FIELDS OF WA_MVKE_V
WHERE MATNR = MAT_LISTE-MATNR
AND VKORG = P_VKORG
AND VTWEG = P_VTWEG.
* Werksdaten überschreiben!
WA_MVKE_V-MATNR = P_MATNR.
IF WA_MVKE_M EQ WA_MVKE_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'MVKE',
'[MM02: Vertrieb Verkaufsorgdaten]'(024).
ENDIF. " not p_zeigid is initial
ELSE. " wa_mvke_m eq wa_mvke_v
* Werksinformation zurückschreiben
WA_MVKE_V-MATNR = MAT_LISTE-MATNR.
WRITE: / 'Material'(014), 'ungleich.'(016), 'MVKE',
'[MM02: Vertrieb Verkaufsorgdaten]'(024).
IF NOT P_DETAIL IS INITIAL.
PERFORM MVKE_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_mvke_m eq wa_mvke_v
ENDFORM. " MVKE_VERGLEICHEN


*---------------------------------------------------------------------*
* Form MVKE_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM MVKE_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT MVKE_FELDER WHERE FIELDNAME NE 'WERKS'.
ASSIGN MVKE_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN MVKE_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MVKE_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MVKE_V TO <MAT_B_FIELD>.
IF ( <MAT_A_FIELD> NE <MAT_B_FIELD> )
OR MVKE_FELDER-FIELDNAME = 'VKORG' " immer übermitteln da
OR MVKE_FELDER-FIELDNAME = 'VTWEG'. " Keyfeld für ZMMATHAR
CONCATENATE 'mvke-' <FIELDNAME> INTO FELDNAME.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
* für Excel-Export
ASSIGN MVKE_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MVKE_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at mvke_felder
SKIP.
ENDFORM. " MVKE_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form MBEW_VERGLEICHEN
*---------------------------------------------------------------------*
FORM MBEW_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_MBEW_V.
SELECT SINGLE *
FROM MBEW
INTO CORRESPONDING FIELDS OF WA_MBEW_V
WHERE MATNR = MAT_LISTE-MATNR
AND BWKEY = P_BWKEY
AND BWTAR = P_BWTAR.
* Werksdaten überschreiben!
WA_MBEW_V-MATNR = P_MATNR.
IF WA_MBEW_M EQ WA_MBEW_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'MBEW',
'[MM02: Buchhaltung oder Kalkulation]'(025).
ENDIF. " not p_zeigid is initial
ELSE. " wa_mbew_m eq wa_mbew_v
* Werksinformation zurückschreiben
WA_MBEW_V-MATNR = MAT_LISTE-MATNR.
WRITE: / 'Material'(014), 'ungleich.'(016), 'MBEW',
'[MM02: Buchhaltung oder Kalkulation]'(025).
IF NOT P_DETAIL IS INITIAL.
PERFORM MBEW_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_mbew_m eq wa_mbew_v
ENDFORM. " MBEW_VERGLEICHEN


*---------------------------------------------------------------------*
* Form MBEW_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM MBEW_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT MBEW_FELDER WHERE FIELDNAME NE 'WERKS'.
ASSIGN MBEW_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN MBEW_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MBEW_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MBEW_V TO <MAT_B_FIELD>.
IF <MAT_A_FIELD> NE <MAT_B_FIELD>.
CONCATENATE 'mbew-' <FIELDNAME> INTO FELDNAME.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
* für Excel-Export
ASSIGN MBEW_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MBEW_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at mbew_felder
SKIP.
ENDFORM. " MBEW_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form EINE_VERGLEICHEN
*---------------------------------------------------------------------*
FORM EINE_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_EINE_V, EINA, EINE.
SELECT *
FROM EINA CLIENT SPECIFIED
WHERE MATNR = MAT_LISTE-MATNR
AND LIFNR = P_LIFNR.
* es kann nur einen geben! der erste Satz gilt.
EXIT.
ENDSELECT. " from eina
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
SELECT SINGLE *
FROM EINE
INTO CORRESPONDING FIELDS OF WA_EINE_V
WHERE INFNR = EINA-INFNR
AND EKORG = P_EKORG
AND ESOKZ = P_ESOKZ
AND WERKS = MAT_LISTE-WERKS.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
* Werksdaten überschreiben!
WA_EINE_V-LFDNR = WA_EINE_M-LFDNR.
WA_EINE_V-LIFNR = P_LIFNR.
WA_EINE_V-MATNR = P_MATNR.
WA_EINE_V-WERKS = P_WERKS.
IF WA_EINE_M EQ WA_EINE_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'EINE',
'[ME12: Einkaufsinfosatz ändern -> Einkaufsorgdaten]'(026).
ENDIF. " not p_zeigid is initial
ELSE. " wa_eine_m eq wa_eine_v
* Werksinformation zurückschreiben
WRITE: / 'Material'(014), 'ungleich.'(016), 'EINE',
'[ME12: Einkaufsinfosatz ändern -> Einkaufsorgdaten]'(026).
IF NOT P_DETAIL IS INITIAL.
* damit Daten weggesichert werden
CLEAR: WA_EINE_M-LIFNR, WA_EINE_M-MATNR,
WA_EINE_M-EKORG, WA_EINE_M-WERKS.
WA_EINE_V-MATNR = MAT_LISTE-MATNR.
WA_EINE_V-WERKS = MAT_LISTE-WERKS.
PERFORM EINE_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_marc_m eq wa_marc_v
WA_EINE_M-LIFNR = P_LIFNR.
WA_EINE_M-MATNR = P_MATNR.
ENDFORM. " EINE_VERGLEICHEN


*---------------------------------------------------------------------*
* Form EINE_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM EINE_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT EINE_FELDER.
ASSIGN EINE_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN EINE_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_EINE_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_EINE_V TO <MAT_B_FIELD>.
IF <MAT_A_FIELD> NE <MAT_B_FIELD>.
CONCATENATE 'eine-' <FIELDNAME> INTO FELDNAME.
* diese Felder werden IMMER exportiert, da in ZMMATHAR benötigt
IF <FIELDNAME> NE 'WERKS' AND <FIELDNAME> NE 'EKORG'
AND <FIELDNAME> NE 'MATNR' AND <FIELDNAME> NE 'LIFNR'.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
ENDIF. " <fieldname> ne 'WERKS' or <fieldname> ne 'VKORG'
* für Excel-Export
ASSIGN EINE_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_EINE_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at eine_felder
SKIP.
ENDFORM. " EINE_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form J_1NE_VERGLEICHEN
*---------------------------------------------------------------------*
FORM J_1NE_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_J_1NE_V.
SELECT SINGLE *
FROM J_1NE
INTO CORRESPONDING FIELDS OF WA_J_1NE_V
WHERE KUNNR = ''
AND J_1NMAT = MAT_LISTE-MATNR
AND J_1NVKO = P_VKORG
AND J_1NNES = P_J1NNES.
* Materialdaten überschreiben!
WA_J_1NE_V-J_1NMAT = P_MATNR.
IF WA_J_1NE_M EQ WA_J_1NE_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'J_1NE',
'[MM02: Zusätze -> NE Gewichte Vertrieb]'(027).
ENDIF. " not p_zeigid is initial
ELSE. " wa_j_1ne_m eq wa_j_1ne_v
* Werksinformation zurückschreiben
WA_J_1NE_V-J_1NMAT = MAT_LISTE-MATNR.
WRITE: / 'Material'(014), 'ungleich.'(016), 'J_1NE',
'[MM02: Zusätze -> NE Gewichte Vertrieb]'(027).
IF NOT P_DETAIL IS INITIAL.
PERFORM J_1NE_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_j_1ne_m eq wa_j_1ne_v
ENDFORM. " J_1NE_VERGLEICHEN


*---------------------------------------------------------------------*
* Form J_1NE_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM J_1NE_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT J_1NE_FELDER WHERE FIELDNAME NE 'WERKS'.
ASSIGN J_1NE_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN J_1NE_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NE_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NE_V TO <MAT_B_FIELD>.
IF <MAT_A_FIELD> NE <MAT_B_FIELD>.
CONCATENATE 'j_1ne-' <FIELDNAME> INTO FELDNAME.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
* für Excel-Export
ASSIGN J_1NE_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NE_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at j_1ne_felder
SKIP.
ENDFORM. " J_1NE_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form J_1NEMM_VERGLEICHEN
*---------------------------------------------------------------------*
FORM J_1NEMM_VERGLEICHEN.
* wir befinden uns im 'loop at mat_liste'
* Daten Vergleichmaterial beschaffen
CLEAR: WA_J_1NEMM_V.
SELECT * " single *
FROM J_1NEMM
INTO CORRESPONDING FIELDS OF WA_J_1NEMM_V
* where j_1nlif = p_lifnr
WHERE J_1NMAT = MAT_LISTE-MATNR
* and j_1neko = p_ekorg
AND J_1NWRK = P_WERKS
AND J_1NNES = P_J1NNES.
EXIT. " erster gilt
ENDSELECT.
* Werksdaten überschreiben!
WA_J_1NEMM_V-J_1NMAT = P_MATNR.
WA_J_1NEMM_V-J_1NWRK = P_WERKS.
IF WA_J_1NEMM_M EQ WA_J_1NEMM_V.
IF NOT P_ZEIGID IS INITIAL.
WRITE: / 'Material'(014), 'identisch.'(015), 'J_1NEMM',
'[MM02: Zusätze -> NE Gewichte Einkauf]'(028).
ENDIF. " not p_zeigid is initial
ELSE. " wa_j_1nemm_m eq wa_j_1nemm_v
* Werksinformation zurückschreiben
WA_J_1NEMM_V-J_1NMAT = MAT_LISTE-MATNR.
WA_J_1NEMM_V-J_1NWRK = MAT_LISTE-WERKS.
WRITE: / 'Material'(014), 'ungleich. '(016), 'J_1NEMM',
'[MM02: Zusätze -> NE Gewichte Einkauf]'(028).
IF NOT P_DETAIL IS INITIAL.
PERFORM J_1NEMM_DETAILVERGLEICH.
ENDIF.
ENDIF. " wa_j_1nemm_m eq wa_j_1nemm_v
ENDFORM. " J_1NEMM_VERGLEICHEN


*---------------------------------------------------------------------*
* Form J_1NEMM_DETAILVERGLEICH
*---------------------------------------------------------------------*
FORM J_1NEMM_DETAILVERGLEICH.
* Einzelvergleich für bestimmte Felder
LOOP AT J_1NEMM_FELDER.
ASSIGN J_1NEMM_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN J_1NEMM_FELDER-SCRTEXT_L TO <SCRTEXT_L>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NEMM_M TO <MAT_A_FIELD>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NEMM_V TO <MAT_B_FIELD>.
IF <MAT_A_FIELD> NE <MAT_B_FIELD>.
CONCATENATE 'j_1nemm-' <FIELDNAME> INTO FELDNAME.
WRITE: AT /TP FELDNAME, <SCRTEXT_L>,
AT PM <MAT_A_FIELD>.
FORMAT COLOR 5 INVERSE ON.
WRITE: AT PV <MAT_B_FIELD>.
FORMAT COLOR OFF INVERSE OFF.
* für Excel-Export
ASSIGN J_1NEMM_FELDER-TABNAME TO <TABNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NEMM_V TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDIF.
ENDLOOP. " at j_1nemm_felder
SKIP.
ENDFORM. " J_1NEMM_DETAILVERGLEICH


*---------------------------------------------------------------------*
* Form CREATE_XLS_ITAB
*---------------------------------------------------------------------*
* Anlegen der zum Download bestimmten Excel-Tabelle
*----------------------------------------------------------------------*
FORM CREATE_XLS_ITAB.
APPEND 'PROGRAM SUBPOOL.' TO CODE.
APPEND 'DATA BEGIN OF XLS_ITAB OCCURS 0.' TO CODE.
* APPEND 'DATA MATNR LIKE MARAV-MATNR. " Key_Material' TO CODE.
* APPEND 'DATA WERKS LIKE MARC-WERKS. " Key_Werk' TO CODE.
* APPEND 'DATA MAKTX LIKE MAKT-MAKTX. " Materialkurztext' TO CODE.
* APPEND 'DATA Muster. " Sortierfeld' TO CODE.
* Felder als CHAR definiert, um Spaltenüberschriften hineinschreiben zu
* können!
APPEND 'DATA MATNR(25). " Key_Material' TO CODE.
APPEND 'DATA WERKS(25). " Key_Werk' TO CODE.
APPEND 'DATA MAKTX(40). " Materialkurztext' TO CODE.
APPEND 'DATA Muster(25). " Sortierfeld' TO CODE.

LOOP AT XLS_STRUC.
ASSIGN XLS_STRUC-TABNAME TO <TABNAME>.
ASSIGN XLS_STRUC-FIELDNAME TO <FIELDNAME>.
CONCATENATE <TABNAME> '-' <FIELDNAME> INTO TABNAME_FIELDNAME.
CONCATENATE <TABNAME> '_' <FIELDNAME> INTO TABELLE_FELD.
ASSIGN TABNAME_FIELDNAME TO <TABNAME_FIELDNAME>.
ASSIGN TABELLE_FELD TO <TABELLE_FELD>.

CONCATENATE <TABELLE_FELD> '(40)' INTO CODE.
CONCATENATE 'data' CODE '.' INTO CODE SEPARATED BY ' '.

TRANSLATE CODE TO UPPER CASE.
APPEND CODE.
ENDLOOP. " at xls_struc
APPEND 'DATA END OF XLS_ITAB.' TO CODE.
APPEND '*' TO CODE.

* eigentlicher Programmstart bzw. Formstart
APPEND '*' TO CODE.
APPEND '* LOS GEHTs' TO CODE.
APPEND 'FORM DYN1.' TO CODE.

* Kopfzeile 1 schreiben (Klarschrifttexte)
APPEND '* Kopfzeile 1 schreiben (Klarschrifttexte)' TO CODE.
APPEND 'CLEAR XLS_ITAB.' TO CODE.
CONCATENATE HOCHKOMMA 'Material' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MATNR' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA 'Werk' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-WERKS' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA 'Materialkurztext' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MAKTX' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
* Flag für Musterzeile setzen
CONCATENATE HOCHKOMMA 'Musterflag' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MUSTER' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
LOOP AT XLS_STRUC.
ASSIGN XLS_STRUC-TABNAME TO <TABNAME>.
ASSIGN XLS_STRUC-FIELDNAME TO <FIELDNAME>.
ASSIGN XLS_STRUC-SCRTEXT_L TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP. " at xls_struc
APPEND 'APPEND XLS_ITAB.' TO CODE.

* Kopfzeile 2 schreiben (Feldnamen)
APPEND '* Kopfzeile 2 schreiben (Feldnamen)' TO CODE.
APPEND 'CLEAR XLS_ITAB.' TO CODE.
CONCATENATE HOCHKOMMA 'MARAV-MATNR' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MATNR' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA 'MARC-WERKS' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-WERKS' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA 'MAKT-MAKTX' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MAKTX' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
* Flag für Musterzeile setzen
CONCATENATE HOCHKOMMA 'Musterflag' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MUSTER' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
LOOP AT XLS_STRUC.
ASSIGN XLS_STRUC-TABNAME TO <TABNAME>.
ASSIGN XLS_STRUC-FIELDNAME TO <FIELDNAME>.
* assign xls_struc-scrtext_l to <feldwert>.
CONCATENATE <TABNAME> '-' <FIELDNAME> INTO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP. " at xls_struc
APPEND 'APPEND XLS_ITAB.' TO CODE.
ENDFORM. " CREATE_XLS_ITAB


*---------------------------------------------------------------------*
* Form MUSTERDATEN_XLS_ITAB
*---------------------------------------------------------------------*
FORM MUSTERDATEN_XLS_ITAB.
* Key-Daten schreiben.
APPEND 'CLEAR XLS_ITAB.' TO CODE.
CONCATENATE HOCHKOMMA WA_MARA_M-MATNR HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MATNR' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA WA_MARC_M-WERKS HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-WERKS' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA WA_MARA_M-MAKTX HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MAKTX' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
* Flag für Musterzeile setzen
CONCATENATE HOCHKOMMA 'X' HOCHKOMMA INTO CODE.
CONCATENATE 'XLS_ITAB-MUSTER' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
LOOP AT MARA_FELDER.
ASSIGN MARA_FELDER-TABNAME TO <TABNAME>.
ASSIGN MARA_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARA_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at mara_felder
LOOP AT MARC_FELDER.
ASSIGN MARC_FELDER-TABNAME TO <TABNAME>.
ASSIGN MARC_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MARC_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at marc_felder
LOOP AT MVKE_FELDER.
ASSIGN MVKE_FELDER-TABNAME TO <TABNAME>.
ASSIGN MVKE_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MVKE_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at mvke_felder
LOOP AT MBEW_FELDER.
ASSIGN MBEW_FELDER-TABNAME TO <TABNAME>.
ASSIGN MBEW_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_MBEW_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at mbew_felder
LOOP AT EINE_FELDER.
ASSIGN EINE_FELDER-TABNAME TO <TABNAME>.
ASSIGN EINE_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_EINE_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at eine_felder
LOOP AT J_1NE_FELDER.
ASSIGN J_1NE_FELDER-TABNAME TO <TABNAME>.
ASSIGN J_1NE_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NE_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at j_1ne_felder
LOOP AT J_1NEMM_FELDER.
ASSIGN J_1NEMM_FELDER-TABNAME TO <TABNAME>.
ASSIGN J_1NEMM_FELDER-FIELDNAME TO <FIELDNAME>.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE WA_J_1NEMM_M TO <FELDWERT>.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at j_1nemm_felder
* Musterdaten Einkaufsbestelltext
* es wird nur die erste Zeile übertragen!!!
DESCRIBE TABLE EK_TEXT_M LINES LINES_EK_M.
READ TABLE EK_TEXT_M INDEX 1.
LOOP AT EK_TXT_FELDER.
ASSIGN EK_TXT_FELDER-TABNAME TO <TABNAME>.
ASSIGN EK_TXT_FELDER-FIELDNAME TO <FIELDNAME>.
IF <FIELDNAME> NE 'LINE_ANZ'.
ASSIGN COMPONENT <FIELDNAME> OF STRUCTURE EK_TEXT_M TO <FELDWERT>.
ELSE.
MOVE LINES_EK_M TO <FELDWERT>.
ENDIF.
PERFORM FELDZUWEISUNG_XLS_ITAB.
ENDLOOP." at ek_text_felder
* Zeile wegschreiben
APPEND 'APPEND XLS_ITAB.' TO CODE.
APPEND '*' TO CODE.
APPEND '*' TO CODE.
APPEND '* ab hier jetzt die Daten' TO CODE.
APPEND '*' TO CODE.
ENDFORM. " MUSTERDATEN_XLS_ITAB


*---------------------------------------------------------------------*
* Form FELDZUWEISUNG_XLS_ITAB
*---------------------------------------------------------------------*
FORM FELDZUWEISUNG_XLS_ITAB.
CONCATENATE <TABNAME> '_' <FIELDNAME> INTO TABELLE_FELD.
ASSIGN TABELLE_FELD TO <TABELLE_FELD>.
CONCATENATE 'xls_itab-' <TABELLE_FELD> INTO CODE.
WRITE <FELDWERT> TO CODE2.
SHIFT CODE2 LEFT DELETING LEADING ' '.
CONCATENATE '@' CODE2 '@' INTO CODE2.
REPLACE '@' WITH HOCHKOMMA INTO CODE2.
REPLACE '@' WITH HOCHKOMMA INTO CODE2.
CONCATENATE CODE '=' CODE2 '.' INTO CODE SEPARATED BY ' '.
TRANSLATE CODE TO UPPER CASE.
APPEND CODE.
ENDFORM. " FELDZUWEISUNG_XLS_ITAB


*---------------------------------------------------------------------*
* Form AUSGABE_XLS_ITAB
*---------------------------------------------------------------------*
FORM AUSGABE_XLS_ITAB.
* append 'LOOP AT XLS_ITAB.' to code.
* append 'WRITE: / SY-TABIX, XLS_ITAB(120).' to code.
* append 'ENDLOOP. " AT XLS_ITAB' to code.

APPEND 'DATA FILENAME LIKE RLGRAP-FILENAME.' TO CODE.
CONCATENATE HOCHKOMMA
* p_filenm " 'c:\' sy-datum '_' sy-uzeit '.xls'
P_FILENM " 'c:\' sy-datum '_' sy-uzeit '.txt'
HOCHKOMMA INTO CODE.
CONCATENATE 'FILENAME' '=' CODE '.' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA 'RH_START_EXCEL_WITH_DATA' HOCHKOMMA INTO CODE.
CONCATENATE 'CALL' 'FUNCTION' CODE INTO CODE SEPARATED BY ' '.
APPEND CODE.
APPEND 'EXPORTING' TO CODE.
CONCATENATE 'DATA_NAME' '=' 'FILENAME' INTO CODE SEPARATED BY ' '.
APPEND CODE.
CONCATENATE HOCHKOMMA ' ' HOCHKOMMA INTO CODE.
CONCATENATE 'DATA_PATH_FLAG' '=' CODE INTO CODE SEPARATED BY ' '.
APPEND CODE.
* DATA_TYPE = 'DAT'
*BEIM DOWNLOAD KOENNEN VERSCHIEDENE KONVERTIERUNGEN DURCHGEFUEHRT WERDEN
*DAS ZIELFORMAT WIRD DURCH DEN FILETYPE BESTIMMT.
*'ASC' : ASCII-FORMAT, DIE TABELLE WIRD ZEILENGERECHT ABGELEGT
*'IBM' : ASCII-FORMAT WIE 'ASC' MIT IBM-CODEPAGE KONVERTIERUNG (DOS)
*'DAT' : ASCII-FORMAT WIE 'ASC', ZUSAETZLICH SPALTENTRENNUNG MIT TAB
* SPALTENAUSWAHL MIT COL_SELCECT UND COL_SELECTMASK IST MÖGLICH
*'WK1' : ZEILEN- UND SPALTENGERECHTE ABLAGE IM TABELLENFORMAT WK1
* : SPALTENBREITE FÜR C-FELDER MAX. 240 ZEICHEN
*'BIN' : BINÄRES FORMAT (ANGABE VON BIN_FILESIZE ERFORDERLICH)
*'DBF' : ABLAGE ALS DBASE-DATEI (IMME