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.

 

 

Enno Wulff