by Sören4339 » Mon Jul 11, 2016 1:37 pm
Ich habe selbst die Lösung gefunden:
Man muss dem Baustein CALO_INIT_API (, der ja eigentlich für das Logging bzw. das Sammeln der aufgetretenen Meldung bei der Stücklistenänderung ist) im Parameter "data_reset_sign" das Zeichen mitgeben, das dann später beim Baustein CSAP_MAT_BOM_MAINTAIN als Löschflag interpretiert wird!
Da muss man auch erstmal drauf kommen.
Beispiel:
READ TABLE lt_stko2 INTO ls_stko2 INDEX 1.
MOVE-CORRESPONDING ls_stko2 TO ls_stko1.
CLEAR: ls_stko1-alt_text,
ls_stko1-bom_text.
ls_stko1-alt_text = '!'. "<- Löschkennzeichen wird unten definiert!
ls_stko1-bom_text = '!'.
LOOP AT lt_stpo INTO ls_stpo.
CLEAR ls_stpo-item_text1.
ls_stpo-item_text1 = '!'.
MODIFY lt_stpo FROM ls_stpo.
ENDLOOP.
* Logging aktivieren, um später die aufgetretenen Meldungen lesen zu können
CALL FUNCTION 'CALO_INIT_API'
EXPORTING
flag_api_api_call_on = 'X'
flag_collect_msg_on = 'X'
del_log_after_days = '-1'
data_reset_sign = '!' "<- Löschkennzeichen wird hier definiert!!
EXCEPTIONS
log_object_not_found = 1
log_sub_object_not_found = 2
OTHERS = 3.
* Nun die Änderungen auf die Stückliste schreiben
CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
EXPORTING
material = ls_mast-matnr
plant = ls_mast-werks
bom_usage = ls_mast-stlan
alternative = ls_mast-stlal
* VALID_FROM = VALID_FROM
change_no = ls_mast-aennr
* REVISION_LEVEL = REVISION_LEVEL
i_stko = ls_stko1
* FL_NO_CHANGE_DOC = ' '
* FL_COMMIT_AND_WAIT = 'X'
* FL_CAD = ' '
* FL_BOM_CREATE = ' '
* FL_NEW_ITEM = ' '
* FL_COMPLETE = ' '
* FL_DEFAULT_VALUES = 'X'
* FL_IDENTIFY_BY_GUID = ' '
* IMPORTING
* FL_WARNING = FL_WARNING
* O_STKO = O_STKO
TABLES
t_stpo = lt_stpo
* T_DEP_DATA = T_DEP_DATA
* T_DEP_DESCR = T_DEP_DESCR
* T_DEP_ORDER = T_DEP_ORDER
* T_DEP_SOURCE = T_DEP_SOURCE
* T_DEP_DOC = T_DEP_DOC
* T_DOC_LINK = T_DOC_LINK
* T_DMU_TMX = T_DMU_TMX
* T_LTX_LINE = T_LTX_LINE
* T_STPU = T_STPU
EXCEPTIONS
error = 1.
* Aufgetretene Meldungen auslesen
REFRESH: lt_messages.
CALL FUNCTION 'CALO_LOG_READ_MESSAGES'
TABLES
messages_and_parameters = lt_messages.