ABAP Stücklistenauflösung mit CS_BOM_EXPL_MAT_V2

Mit dem Funktionsbaustein CS_BOM_EXPL_MAT_V2 können Stücklisten eines Materials aufgelöst werden. Wie gewöhnlich ist der Funktionsbaustein von SAP nur rudimentär dokumentiert. In diesem Beitrag beschreibe ich einige Besonderheiten, die mir bei der Verwendung des Funktionsbausteins aufgefallen sind.

Beispielaufruf

    CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
      EXPORTING
        capid                 = 'PP01'
        datuv                 = sy-datum
       MEHRS                 = 'X'
        mtnrv                 = lv_mat_for_bom
        STLAL                 = lv_stlal
        stlan                 = 'S'
        werks                 = lv_plant
*       IMPORTING
*       TOPMAT                =
*       DSTST                 =
      TABLES
        stb                   = lt_stpox
*       MATCAT                =
      EXCEPTIONS
        alt_not_found         = 1
        call_invalid          = 2
        material_not_found    = 3
        missing_authorization = 4
        no_bom_found          = 5
        no_plant_data         = 6
        no_suitable_bom_found = 7
        conversion_error      = 8

        OTHERS                = 9. 

Es müssen mindestens diese Parameter versorgt werden:

CAPID Anwendungskennung
DATUV Gültig ab
MTNRV Materialnummer
STLAN Stücklistenverwendung
WERKS Werk

Besonderheit bei Stücklistenalternative

Bei der Verwendung von Stücklistenalternativen ist folgendes zu beachten. Die Angabe der Alternative wird von dem Baustein so lange ignoriert, wie es nur eine Alternative 01 gibt. Existieren also keine Alternativen, ist die Verwendung immer erfolgreich, egal was dem Parameter STLAL übergeben wird.
Erst wenn eine Alternative existiert (02 etc.), wird der Parameter ausgewertet und bei erfolgloser Auflösung die Ausnahme ALT_NOT_FOUND ausgelöst.

Besonderheiten bei konfigurierbaren Materialien

Stücklisten können durch Beziehungswissen (Bedingungen für eine Position) konfigurierbar gemacht werden. Nur wenn die Bedingung zutrifft (Materialklassifizierung, Klasse 300 Varianten), wird die Position gezogen.
Der Funktionsbaustein liest die Konfiguration nur dann, wenn ein gültiges Konfigurationsobjekt dem Parameter CUOBJ übergeben wird. Der Wert für ein bestimmtes Material kann in der Tabelle MARC Spalte CUOBJ nachgelesen werden.