BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Getting started ... Alles für einen gelungenen Start.
6 Beiträge Seite 1 von 1
6 Beiträge Seite 1 von 1

BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Beitrag von carlie (ForumUser / 46 / 0 / 2 ) » 31. Mär 2019 19:57

Hallo,

ich benörtige bitte euer Hilfe bei dem Funktionsbaustein "CSAP_MAT_BOM_MAINTAIN". Ziel ist es eine Baugruppe von der verwendung 3 auf die verwendung 6 zu kopieren. Dazu lege ich erst den Stücklistenkopf an, was ohne probleme Funktioniert.
Danach möchte ich Position für Position mit der Richtigen Änderungsnummer anlegen.
Mein Problem ist das die erste Position sauber angelegt wird, aber weiter Positionen nicht angelegt werden.

Im Log der SLG1 erhalte ich die im Anhang befindliche Fehlermeldung. Das Problem scheint wohl der Aufruf "CSAP_MAT_BOM_CLOSE" zu sein. Hier wird beim hinzufügen des ersten Datensatz Sy-SUBRC = 1 geworfen. Somit ist die BOM nicht geschlossen und kann für Loop 2 natürlich nicht geöffnet werden.

Ich verstehe jedoch an dieser Stelle das verhalten nicht. Wäre super wenn mir jemand helfen könnte was ich falsch mache.

Hier mal mein ABAP - Code.

Code: Alles auswählen.

*- Datenbankprotokoll eröffnen
        CALL FUNCTION 'CALO_INIT_API'
          EXCEPTIONS
            log_object_not_found     = 1
            log_sub_object_not_found = 2
            other_error              = 3
            others                   = 4.

        CALL FUNCTION 'CSAP_MAT_BOM_OPEN'
          EXPORTING
            MATERIAL         = lv_matnr_merk
            PLANT            = ''
            BOM_USAGE        = '6'
            ALTERNATIVE      = '1'
            VALID_FROM       = lv_datum
            CHANGE_NO        = lv_aennr
*           REVISION_LEVEL   =
*           FL_NO_CHANGE_DOC = ' '
          IMPORTING
*           O_STKO           =
            FL_WARNING       = flg_warning
          TABLES
            T_STPO           = tstp3
            T_DEP_DATA       = tdep_data
            T_DEP_DESCR      = tdep_descr
            T_DEP_ORDER      = tdep_order
            T_DEP_SOURCE     = tdep_source
            T_DEP_DOC        = tdep_doc
          EXCEPTIONS
            ERROR            = 1
            OTHERS           = 2.
        IF SY-SUBRC <> 0.
* Implement suitable error handling here
        ENDIF.

*        CLEAR tstp3[].

        tstp3-ITEM_CATEG    = wa_t_stpo-ITEM_CATEG.
        tstp3-item_no       = wa_t_stpo-item_no.
        tstp3-component     = wa_t_stpo-component.
        tstp3-comp_qty      = wa_t_stpo-comp_qty.
        tstp3-comp_unit     = wa_t_stpo-comp_unit.
        tstp3-item_text1    = wa_t_stpo-item_text1.

        APPEND tstp3.

        CLEAR tstko.

        CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
          EXPORTING
            MATERIAL            = lv_matnr_merk
            PLANT               = ''
            BOM_USAGE           = '6'
            ALTERNATIVE         = '1'
            VALID_FROM          = lv_datum
            CHANGE_NO           = lv_aennr
*           REVISION_LEVEL      =
            I_STKO              = tstko
*           FL_NO_CHANGE_DOC    = ' '
*            FL_COMMIT_AND_WAIT  = 'X'
            FL_CAD              = 'X'
*           FL_BOM_CREATE       = ' '
            FL_NEW_ITEM         = 'X'
*           FL_COMPLETE         = ' '
*           FL_DEFAULT_VALUES   = 'X'
*           FL_IDENTIFY_BY_GUID = ' '
          IMPORTING
            FL_WARNING          = flg_warning
*           O_STKO              =
          TABLES
            T_STPO              = tstp3
            T_DEP_DATA          = tdep_data
            T_DEP_DESCR         = tdep_descr
            T_DEP_ORDER         = tdep_order
            T_DEP_SOURCE        = tdep_source
            T_DEP_DOC           = tdep_doc
*           T_DOC_LINK          =
*           T_DMU_TMX           =
*           T_LTX_LINE          =
*           T_STPU              =
          EXCEPTIONS
            ERROR               = 1
            OTHERS              = 2.
        IF SY-SUBRC <> 0.

        ENDIF.

        CALL FUNCTION 'CSAP_MAT_BOM_CLOSE'
          EXPORTING
            FL_COMMIT_AND_WAIT = 'X'
          IMPORTING
            FL_WARNING         = flg_warning
          EXCEPTIONS
            ERROR              = 1
            OTHERS             = 2.
        IF SY-SUBRC <> 0.

        ENDIF.

Grüße, Carlie


Re: BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Beitrag von Tron (Top Expert / 1026 / 8 / 206 ) » 31. Mär 2019 23:49

Moin.
Ich habe damals eine Wartezeit einbauen müssen.
Probier mal bitte :

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&      Form  maint_bom
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM maint_bom.

* für BOM_OPEN
  DATA: BEGIN OF tstpo2 OCCURS 0.
          INCLUDE STRUCTURE stpo_api02.
  DATA: END OF tstpo2.

  DATA ls_tstpo2 TYPE stpo_api02.

  DATA lv_matnr TYPE matnr.

  DATA lv_ptext(80).
  DATA lv_txt(6).
  DATA lv_cnt TYPE i.

  CHECK NOT <p>-component IS INITIAL.

* Böse Falle !
  DO 100 TIMES.
    WAIT UP TO 1 SECONDS.

    CALL FUNCTION 'CSAP_MAT_BOM_OPEN'
      EXPORTING
        material         = <p>-component
        plant            = p_werk
        bom_usage        = p_stlan
        valid_from       = gv_heute
*       change_no        = <p>-aennr
        fl_no_change_doc = 'X'
      TABLES
        t_stpo           = tstpo2
      EXCEPTIONS
        error            = 1
        OTHERS           = 2.

    IF sy-subrc = 0. " Test(ohne wait) erreicht 4-5 durchläufe !
      EXIT.
    ENDIF.

  ENDDO.

  IF sy-subrc = 0.
    i = lines( it_bom ).

    LOOP AT it_bom.
      lv_cnt = sy-tabix.
      CLEAR ls_tstpo2.


      MOVE-CORRESPONDING it_bom TO ls_tstpo2.
*      ls_tstpo2-item_categ = 'L'.         "Mußeingabe

      IF ls_tstpo2-bulk_mat = 'X' AND ls_tstpo2-item_categ = 'L'.
        ls_tstpo2-rel_cost = space.
        ls_tstpo2-rel_engin = space.
        ls_tstpo2-rel_pmaint = space.
        ls_tstpo2-rel_sales = space.
        ls_tstpo2-rel_prod = 'X'.
      ENDIF.

*        CLEAR ls_tstpo2-BULK_MAT.

      IF ls_tstpo2-item_categ = 'D'.
        ls_tstpo2-document = ls_tstpo2-component.
        CLEAR ls_tstpo2-component.
        CLEAR ls_tstpo2-bulk_mat.
        ls_tstpo2-doc_type = 'SEG'.
      ENDIF.

      CALL FUNCTION 'CSAP_BOM_ITEM_MAINTAIN'
        EXPORTING
          i_stpo = ls_tstpo2
        EXCEPTIONS
          error  = 1
          OTHERS = 2.

      IF sy-subrc <> 0.
        IF ls_tstpo2-component IS INITIAL.
          PERFORM write_log USING ls_tstpo2-document 'could not be saved'(009).
        ELSE.
          PERFORM write_log USING ls_tstpo2-component 'could not be saved'(009).
        ENDIF.

        rc = 1.
      ENDIF.


* Fortschrittsanzeige
      lv_ptext = 'bearbeite Material'.
      CONCATENATE lv_ptext ls_tstpo2-component INTO lv_ptext
      SEPARATED BY space.

      WRITE lv_cnt TO lv_txt.
      CONDENSE lv_txt NO-GAPS.
      CONCATENATE lv_ptext '-' lv_txt 'von' INTO lv_ptext
      SEPARATED BY space.

      WRITE i TO lv_txt.
      CONDENSE lv_txt NO-GAPS.
      CONCATENATE lv_ptext lv_txt INTO lv_ptext
      SEPARATED BY space.


      CALL FUNCTION 'PROGRESS_INDICATOR'
        EXPORTING
          i_text               = lv_ptext
          i_processed          = lv_cnt
          i_total              = i
          i_output_immediately = 'X'.

    ENDLOOP.

    CALL FUNCTION 'CSAP_MAT_BOM_CLOSE'
      EXCEPTIONS
        error  = 1
        OTHERS = 2.

  ELSE.
    PERFORM write_log USING <p>-component 'could not be Opened'.
  ENDIF.

ENDFORM.                    "maint_bom
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Beitrag von carlie (ForumUser / 46 / 0 / 2 ) » 4. Apr 2019 20:46

Hallo,

erst einmal danke für deine Hilfe. IDas komische in meinem fall war das ich den FUBA "BOM_OPEN" weglassen musste. jetzt laufe ich jedoch in ein neues problem. Ich lese z.b 10 Baugruppen ein. irgend wann wird die verarbeitung abgebrochen. Der Verbucher scheint beim verbuchen der einzelnen BOM Positionen nicht nachzukommen. Der Abbruch erfolgt auch immer an unterschiedlichen stellen.

Folgende Meldungen erhalte ich.

Verbuchungsfehler: Tabelle AEPF Funktion I Returncode 4
Fehlercode: CC-127

So richtig verstehe ich den fehler noch nicht. Es muss jedoch mit dem Änderungsdienst zusammenhängen.

Vielleicht kann nochmals jemand Hilfestellung geben.

Gruß

Re: BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Beitrag von carlie (ForumUser / 46 / 0 / 2 ) » 5. Apr 2019 09:52

Hallo.

das Problem ist Lokalisiert. ich habe den folgenden FUBA in einem Loop aufgerufen. Was letztlich irgend wann zu der beschriebenen Fehlermeldung führt.

Code: Alles auswählen.

 CALL FUNCTION 'ECM_PROCESSOR_INIT'
      EXPORTING
*        topmatnr       = wa_matnr-matnr
        batchlauf      = 'X'
        batch_aeef     = h_aeef
      TABLES
        parameter      = l_t_param
      EXCEPTIONS
        exit_in_dynpro = 1.

    CHECK sy-subrc = 0.

    LOOP AT so_werks.
      MOVE so_werks-low TO lv_werk.
    ENDLOOP.
Habe den Code jetzt außerhalb des Loop platziert. Jetzt läuft das Programm sauber durch.

Dennoch gibt es eine weiter frage. An den BOM Positionen hängt scheint etwas mit der menge nicht zu stimmen. Schaue ich in der CS03 habe ich die menge "1,700". In der CS11 jedoch bekomme ich "0,002" angezeigt. Muss die Menge in einem bestimmten Format vorliegen.

Grüße

Re: BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Beitrag von carlie (ForumUser / 46 / 0 / 2 ) » 9. Apr 2019 13:06

Das problem ist gelöst.

Re: BOM Änderung "CSAP_MAT_BOM_MAINTAIN"

Beitrag von deejey (Specialist / 200 / 49 / 17 ) » 15. Apr 2019 22:43

Glaube das mit den Mengen passiert immer dann wenn das referenzierte Mengeneinheitsfeld leer ist

Seite 1 von 1

Aktuelle Forenbeiträge

Datenquelle einer Query ändern
vor 9 Stunden von Level83 3 / 45
Spaltennummer-Umwandlung Excel.
vor 13 Stunden von il.ost 7 / 160
Black out im Bereich Objekterzeugung bei Vererbung gelöst
vor 15 Stunden von Thomas R. 4 / 91

Unbeantwortete Forenbeiträge

Transaktion VL06 Verteilung ausgehender Lieferungen
vor 2 Tagen von SAP_ENTWICKLER 1 / 50
FuBa EXIT_SAPLVEDC_003 S/4 1809
vor 4 Tagen von SAP_ENTWICKLER 1 / 84
CDS VIEW mit BOPF Framework update
vor einer Woche von Abapanfänger 1 / 78
SAP Document Builder: Dokumenterzeugung
vor einer Woche von robin.heidrich 1 / 197
Lohnsteuerbescheinigung
vor einer Woche von kaim77 1 / 116