Feldwert leeren in Materialstückliste per FuBa

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Feldwert leeren in Materialstückliste per FuBa

Postby Sören4339 » Tue Jul 05, 2016 12:40 pm

Hallo zusammen,

ich versuche verzweilfelt programmatisch einige Felder einer Materialstückliste zu leeren. Dazu benutze ich den Funktionsbaustein CSAP_MAT_BOM_MAINTAIN. Das Ändern eines bestehenden Wertes auf einen neuen (nicht-leeren) Wert funktioniert tadellos. Aber ich muss die Felder explizit leeren. Leere Werte in der Übergabestruktur erkennt der Baustein aber leider als "nix zu tun" -> das heißt, der alte Feldwert bleibt bestehen.

Hat jemand Erfahrung mit diesem Baustein oder wie es generell gehandhabt wird, auf diesem Wege Felder zu leeren? Gibt es evtl. einen Platzhalter, den man angeben muss, damit ein Feld geleert wird?

Ich bin für jeden Hinweis dankbar!
Viele Grüße
Sven
Sören4339
.
.
 
Posts: 2
Joined: Tue Jul 05, 2016 12:40 pm

Re: Feldwert leeren in Materialstückliste per FuBa

Postby 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.
Sören4339
.
.
 
Posts: 2
Joined: Tue Jul 05, 2016 12:40 pm


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 9 guests

cron