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.
- ALV-Grid Tabelle direkt ändern - 3. März 2023
- Subscreen-Bereiche anzeigen - 23. Februar 2023
- Komplexe Datenobjekte editieren - 23. Januar 2023