Mussfeld definieren durch Tabellenabfrage

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Mussfeld definieren durch Tabellenabfrage

Beitrag von Cloakr (ForumUser / 3 / 0 / 0 ) »
Hallo, ich hoffe die Experten in diesem Forum können mir weiterhelfen:

Ich bin ganz neu in SAP und ABAP und daher bringt mich die folgende Aufgabe leider an meine Grenzen:

Code: Alles auswählen.

CASE header_imp-werks.
  WHEN '0600'.   "Filterung Werk1

    IF  header_imp-autyp   EQ '10'         "Fertigungsauftrag
    AND header_imp-auart   EQ 'PP03'       "Prüfung nur bei Auftragsart PP03
    AND header_imp-zzvbeln IS INITIAL.     
      MESSAGE e001(zpp).
    ENDIF.

  WHEN '0900'.   "Werk2.
    IF      header_imp-autyp EQ '10'       "Fertigungsauftrag
    AND NOT header_imp-projn IS INITIAL    "Kontiert auf PSP
    AND     header_imp-aufnr(1) EQ '%'.    "Prüfen nur bei der Erstanlage
      CLEAR h_labst.
      SELECT SUM( labst ) INTO  h_labst
                          FROM  mard
                          WHERE matnr EQ header_imp-matnr
                          AND   werks EQ header_imp-werks.
      IF h_labst GT 0.
        MESSAGE w003(zpp).   "Fehler.
      ENDIF.
    ENDIF.
ENDCASE.
Die Aufgabenstellung ist folgende:
Ich soll im User-Exit die Materialnummer (aus der Struktur HEADER_IMP) nehmen und die Warengruppe aus der Tabelle MARA auslesen. Dabei soll geprüft werden, ob es sich um eine bestimmte Warengruppe handelt und wenn das Feld zzvbeln leer ist, soll eine Fehlermeldung ausgegeben werden. Ist dies der Fall soll ein Feld im zugehörigen Fertigungsauftrag als Mussfeld definiert werden. (Werksunabhängig/Global)

Ich hoffe ihr könnt mir hier weiterhelfen.
Danke schon im Voraus für die Mühe

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


Re: Mussfeld definieren durch Tabellenabfrage

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Die Warengruppe aus der MARA auslesen ist relativ simpel.

Code: Alles auswählen.

SELECT mtart FROM mara WHERE matnr = @header_imp-matnr
  INTO @DATA(material_group).
Etwas schwieriger wird es mit dem Mussfeld. Enthält das User-Exit einen Export-Parameter oder eine Exception, um das Sichern des Fertigungsauftrages abzubrechen?

Re: Mussfeld definieren durch Tabellenabfrage

Beitrag von rob_abc (Specialist / 107 / 27 / 44 ) »
Materialgruppe ist aber MATKL ;)

Re: Mussfeld definieren durch Tabellenabfrage

Beitrag von Cloakr (ForumUser / 3 / 0 / 0 ) »
Hier ist der Rest des Exits:

Code: Alles auswählen.

IF  header_imp-autyp   =  '10'        "Fertigungsauftrag
AND header_imp-auart   =  'PP01'      "Prüfung nur bei Auftragsart PP01
 OR header_imp-auart   =  'PP02'      "Prüfung nur bei Auftragsart PP02
 OR header_imp-auart   =  'PP03'      "Prüfung nur bei Auftragsart PP03
 OR header_imp-auart   =  'PROT'      "Prüfung nur bei Auftragsart PROT
 OR header_imp-auart   =  'SONF'      "Prüfung nur bei Auftragsart SONF
 OR header_imp-auart   =  'AS40'      "Prüfung nur bei Auftragsart AS40
 OR header_imp-auart   =  'ZO01'      "Prüfung nur bei Auftragsart ZO01

AND header_imp-awsls   =  ''.         "Abweichungsschlüssel ist leer

  header_exp = header_imp.            "füllen Exportstruk. mit Importstruk.
  header_exp-awsls = 'FA'.

ENDIF.

*--> wenn Fertigungsauftrag Komponenten besitzt mit Menge 0, dann soll das Kennzeichen --> Endausgeliefert 'KZEAR' auf X gesetzt werden.

* Daten - Declaration RESB_NEW 
  TYPES: BEGIN OF ts_resb_bt.
    INCLUDE TYPE resbb.
    TYPES: indold LIKE sy-tabix,
    no_req_upd LIKE sy-datar,
  END OF ts_resb_bt.

TYPES tt_resb_bt TYPE TABLE OF ts_resb_bt.
DATA: lt_resb_new TYPE tt_resb_bt.
clear lt_resb_new.

* Get all Components from Stack with dirty assign
FIELD-SYMBOLS <ls_resb_bt> TYPE ts_resb_bt.
FIELD-SYMBOLS <lt_resb_bt> TYPE tt_resb_bt.
  ASSIGN ('(SAPLCOBC)RESB_BT[]') TO  <lt_resb_bt> .

*RESB_OLD Typ-Definition aus Report: SAPLCOBC. (Bestehende Daten)
TYPES: BEGIN OF resb_bt_old.
        INCLUDE STRUCTURE aresb.
        INCLUDE STRUCTURE rsebani.
TYPES: END OF resb_bt_old.
TYPES: tt_resb_old TYPE TABLE OF resb_bt_old. "Tabellentyp RESB_OLD

* Get updated old Components from Stack with dirty assign
FIELD-SYMBOLS <lt_resb_bt_OLD>  TYPE tt_resb_old.
  ASSIGN ('(SAPLCOBC)resb_bt_old[]') TO  <lt_resb_bt_OLD> .

* Überprüfen ob Komponenten mit Menge = 0 existieren, und Kennzeichen "abap_true" setzen.
" IF BDMENG EQ 0, VBKZ SPACE, Kennzeichen = false --> Diese Komponente muss aktualisiert werden. * VBKZ = U (update) zum aktualisieren des Datenstand, anschließend RESB_OLD überführen.
" ELSEIF --> Komponente wurde geändert, hinzugefügt etc. --> nur das Kennzeichen setzen, VBKZ bereits korrekt gesetzt, muss nicht RESB_OLD überführt werden, da bereits enthalten.

loop at <lt_resb_bt> assigning <ls_resb_bt>.
  if <ls_resb_bt>-bdmng EQ 0 and <ls_resb_bt>-VBKZ EQ space AND <ls_resb_bt>-KZEAR NE abap_true.
    <ls_resb_bt>-KZEAR = abap_true.
    <ls_resb_bt>-VBKZ = 'U'.
    append <ls_resb_bt> TO lt_resb_new.
  elseif <ls_resb_bt>-bdmng EQ 0.   " VBKZ = I, U, D ...
    <ls_resb_bt>-KZEAR = abap_true.
  endif.
endloop.

* Tabelleinhalte aus RESB_NEW in RESB_OLD übertragen, zum aktualisieren der Einträge.
DATA: wa_old TYPE resb_bt_old.
field-symbols <resb_new> LIKE LINE OF lt_resb_new.

loop at lt_resb_new assigning <resb_new>.
  clear wa_old.
  move-corresponding <resb_new> TO wa_old.
  append wa_old to <lt_resb_bt_OLD>.
endloop.

Re: Mussfeld definieren durch Tabellenabfrage

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Die Schnittstelle bzw. der Name des User-Exists wäre interessanter.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
DeathAndPain

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Mussfeld definieren durch Tabellenabfrage

Beitrag von Cloakr (ForumUser / 3 / 0 / 0 ) »
a-dead-trousers hat geschrieben:
04.10.2023 21:14
Die Schnittstelle bzw. der Name des User-Exists wäre interessanter.
Es ist der EXIT_SAPLCOZV_001.

Lg

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4398
Views
Mussfeld abhängig von anderen Eingaben / Feldern definieren
von Rebecca » 28.04.2021 09:17 • Verfasst in ABAP® für Anfänger
5
Antw.
1906
Views
Tabellenabfrage
von Lbyte » 13.10.2017 13:25 • Verfasst in ABAP® für Anfänger
2
Antw.
2226
Views
TC: Eingabebereitschaft vs. Mussfeld
von ralf.wenzel » 16.12.2005 21:15 • Verfasst in Dialogprogrammierung
3
Antw.
3901
Views
Mussfeld in der MIGO
von Barney » 01.03.2016 13:20 • Verfasst in Material Management & Produktionsplanung
4
Antw.
3249
Views
Fehler bei Mussfeld
von Steffi221185 » 19.10.2006 12:03 • Verfasst in Dialogprogrammierung

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

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

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2402
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8986