Serialnummern in Kundenauftrag einfügen

Hier ein kleiner Codeschnipsel mit dem es möglich ist, Serialnummern in eine Kundenauftragsposition einzufügen.

Die vorhanden Serialnummern werden eingelesen. Sind keine vorhanden, so erscheint der Standard-Serialnummerndialog, um Serialnummern einzutragen.

Soll das Hinzufügen ohne Dialog erfolgen, dann muss der Funktionsbaustein SERNR_ADD_TO_DOCUMENT verwendet werden.

Coding

DATA ls_serxx          TYPE rserxx.
DATA lt_serxx          TYPE STANDARD TABLE OF rserxx.
DATA lt_sernr          TYPE STANDARD TABLE OF e1rmsno.
DATA ls_rserob         TYPE rserob.
DATA ls_vbap TYPE vbap.
FIELD-SYMBOLS <sernr>  TYPE e1rmsno.

*** Select customer order item
SELECT single * FROM vbap
INTO ls_vbap
WHERE vbeln = p_vbeln
AND posnr = p_posnr.
CHECK sy-subrc = 0.

*** get existing serial numbers
ls_rserob-taser   = ‘SER02’.
ls_rserob-sdaufnr = ls_vbap-vbeln.
ls_rserob-posnr   = ls_vbap-posnr.
CALL FUNCTION ‘GET_SERNOS_OF_DOCUMENT’
EXPORTING
key_data            = ls_rserob
TABLES
serxx               = lt_serxx
EXCEPTIONS
key_parameter_error = 1
no_supported_access = 2
no_data_found       = 3
OTHERS              = 4.
IF sy-subrc = 3 AND lt_serxx IS INITIAL.
*** No serial numbers exist: show maintenance popup
  ls_serxx-sdaufnr = ls_vbap-vbeln.
ls_serxx-posnr   = ls_vbap-posnr.
CALL FUNCTION ‘SERNR_MAINTAIN_IN_DOCUMENT’
EXPORTING
operation                 = ‘SDAU’
objkopf                   = ‘SER02’
serxx                     = ls_serxx
activity                  = ‘H’ “create
material                  = ls_vbap-matnr
profile                   = ls_vbap-serail
quantity                  = 1
EXCEPTIONS
konfigurations_error      = 1
general_serial_error      = 2
no_profile_operation      = 3
no_automatic              = 4
difference_in_header_data = 5
OTHERS                    = 6.
IF sy-subrc = 0.
*** Post entered serial numbers
    CALL FUNCTION ‘SERIAL_LISTE_POST_AU’.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.

Enno Wulff