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.
Code: Alles auswählen.
SELECT mtart FROM mara WHERE matnr = @header_imp-matnr
INTO @DATA(material_group).
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.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
DeathAndPain
Es ist der EXIT_SAPLCOZV_001.a-dead-trousers hat geschrieben: ↑04.10.2023 21:14Die Schnittstelle bzw. der Name des User-Exists wäre interessanter.