Lieferungen löschen
In einem Transport können Sie über eine Customer-Function abfragen, ob Funktionscodes ausgeführt werden dürfen. Leider wird beim Löschen einer Lieferung die Lieferungsnummer selbst nicht übergeben. Ein fieser Trick hilft hier.
Folgender Trick bezieht sich auf die Transaktion VT02n ab SAP R/3 Release 4.6
Das folgende Coding verbietet das Löschen einer Lieferung, wenn diese schon Warenausgang gebucht wurde.
Als Erstes müssen Sie die Erweiterung
V56AFCCH – Transportbearbeitung: Prüfen Funktionscode erlaubt
in ein Erweiterungsprojekt aufnehmen (Transaktion CMOD).
Im Funktionsexit EXIT_SAPMV56A_001 müssen Sie das vorgegebene Include anlegen und das folgende Coding hinterlegen:
CASE i_fcode.
*** Prüfen, ob Lieferung gelöscht werden darf:
WHEN ‘MM_TPDL’.
*** Datendeklaration
DATA: l_tree TYPE REF TO cl_gui_alv_tree,
l_wbstk TYPE wbstk,
l_selected_node TYPE lvc_nkey,
l_fieldname TYPE lvc_fname,
l_vbeln TYPE vbeln_vl,
l_node_text TYPE lvc_value.
*** Feldsymbol
FIELD-SYMBOLS <fs_treemodel>.
*** Dirty Assign für das TreeModel in Transaktion VT02n
ASSIGN (‘(SAPLV56I_PLAN_SCREEN)G_VIEW_ADM-ASSG-REF_ALV_TREE’)
TO <fs_treemodel>.
CHECK sy-subrc = 0.
l_tree = <fs_treemodel>.
*** Den ausgewählten Knoten ermitteln
CALL METHOD l_tree->get_selected_item
IMPORTING e_selected_node = l_selected_node
e_fieldname = l_fieldname
EXCEPTIONS OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ELSE.
*** Nur weiter, wenn die Lieferung selbst markiert wurde:
CHECK l_fieldname = ‘&Hierarchy’.
ENDIF.
*** Der Knotentext enthält die angeklickte Lieferung
CALL METHOD l_tree->get_outtab_line
EXPORTING i_node_key = l_selected_node
IMPORTING e_node_text = l_node_text
EXCEPTIONS node_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
*** Prüfung durchführen, ob Lieferung gelöscht werden darf
*** In diesem Fall darf die Lieferung nicht gelöscht werden,
*** wenn sie schon Warenausgang gebucht wurde
SELECT SINGLE vbeln wbstk FROM vbuk
INTO (l_vbeln, l_wbstk)
WHERE vbeln = l_node_text.
CHECK sy-subrc = 0.
IF l_wbstk = ‘C’.
*** Ausnahme auslösen
MESSAGE e001(zv7) with l_vbeln
RAISING fcode_not_permitted.
ENDIF.
ENDCASE.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024