wreichelt hat geschrieben: ↑30.05.2022 20:50Hallo,
vielleicht passt der:
„ RFC Function Module to Create and Change Info Record
CALL FUNCTION 'ME_INFORECORD_MAINTAIN'
EXPORTING
i_eina = ls_eina
i_einax = ls_einax
i_eine = ls_eine
i_einex = ls_einex
testrun = lv_test
* IMPORTING
* E_EINA =
* E_EINE =
TABLES
* TXT_LINES =
* COND_VALIDITY =
* CONDITION =
* COND_SCALE_VALUE =
* COND_SCALE_QUAN =
return = it_return.
* Fehlerauswertung
DATA(lv_message) = ||.
LOOP AT it_return INTO DATA(ls_return) WHERE type CA 'AEX'.
IF lv_message IS INITIAL.
lv_message = ls_return-message.
ELSE.
lv_message = |{ lv_message }/{ ls_return-message }|.
ENDIF.
ENDLOOP.
IF lv_message IS INITIAL.
DATA(lv_return) = VALUE bapiret2( ).
* alles ok: COMMIT
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = lv_return.
ELSE.
* bei Fehlern: ROLLBACK
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
Gruß Wolfgang
Code: Alles auswählen.
ls_eina-info_rec = '2300088309'.
ls_eina-material = '0000000000034578204'.
ls_eina-vendor = '0003068884'.
ls_eina-po_unit = 'ST'.
ls_eina-base_uom = 'ST'.
ls_eina-conv_num1 = 1.
ls_eina-conv_den1 = 1.
ls_einax-info_rec = 'X'.
ls_einax-material = 'X'.
ls_einax-vendor = 'X'.
ls_einax-po_unit = 'X'.
ls_einax-base_uom = 'X'.
ls_einax-conv_num1 = 'X'.
ls_einax-conv_den1 = 'X'.
ls_eine-info_rec = '2300088309'.
ls_eine-purch_org = '0300'.
ls_eine-plant = ''.
ls_eine-info_type = '0'.
ls_eine-conv_num1 = 1.
ls_eine-conv_den1 = 1.
ls_eine-nrm_po_qty = 1.
ls_eine-plnd_delry = 10.
ls_eine-pur_group = '056'.
ls_eine-tax_code = ''.
ls_einex-info_rec = 'X'.
ls_einex-purch_org = 'X'.
ls_einex-plant = 'X'.
ls_einex-info_type = 'X'.
ls_einex-conv_num1 = 'X'.
ls_einex-conv_den1 = 'X'.
ls_einex-nrm_po_qty = 'X'.
ls_einex-plnd_delry = 'X'.
ls_einex-pur_group = 'X'.
ls_einex-tax_code = 'X'.
ls_cond_validity-serial_id = '0031683497'.
ls_cond_validity-valid_from = '20201202'.
[b] ls_cond_validity-valid_to = '20221231'.[/b]
* ls_condition-cond_type = gs_output-kschl.
* ls_condition-serial_id = gs_output-knumh.
* ls_condition-change_id = 'U'.
APPEND ls_cond_validity TO lt_cond_validity.
* APPEND ls_condition TO lt_condition.
CALL FUNCTION 'ME_INFORECORD_MAINTAIN'
EXPORTING
i_eina = ls_eina
i_einax = ls_einax
i_eine = ls_eine
i_einex = ls_einex
* testrun = lv_test
* IMPORTING
* E_EINA =
* E_EINE =
TABLES
* TXT_LINES =
cond_validity = lt_cond_validity
* condition = lt_condition
* COND_SCALE_VALUE =
* COND_SCALE_QUAN =
return = lt_return.
LOOP AT lt_return INTO DATA(ls_return) WHERE type CA 'AEX'.
IF lv_message IS INITIAL.
lv_message = ls_return-message.
ELSE.
lv_message = |{ lv_message }/{ ls_return-message }|.
ENDIF.
ENDLOOP.
IF lv_message IS INITIAL.
CLEAR lv_return.
* alles ok: COMMIT
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = lv_return.
ELSE.
* bei Fehlern: ROLLBACK
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
lisa
Hallo PeterPaletti,PeterPaletti hat geschrieben: ↑29.06.2022 08:29Wissen weiß ich es auch nicht, aber das Feld DATBI aus Tabelle A018 ist ein Teilschlüsselfeld. Und Schlüsselfelder in Tabellen können nicht so einfach geändert werden. Eigentlich braucht es einen neuen Satz in der A018.
Entweder der Baustein ist prinzipiell schlau genug, das zu erkennen und entsprechend zu verfahren, tut es aber in deinem Fall aus mir unbekannten Gründen nicht. Oder aber das Wissen wird von demjenigen abverlangt, der/die den Baustein verwendet, so dass er/sie mit dem Baustein entsprechend verfährt.