我有以下场景:我使用BAPI BAPI_BUPR_RELATIONSHIP_CHANGE
来更改validuntildate
。(BUT050-DATE_TO
/ BUT051-DATE_TO
)。但我还需要更新字段BUT051-PAFKT
和BUT050
中的自定义字段(让我们称之为ZZFIELD
)。为此,我从内部表中更新BUT050
/ BUT051
。
最后,如果我编写COMMIT WORK
或调用FM BAPI_TRANSACTION_COMMIT
,则只更新来自BAPI_BUPR_RELATIONSHIP_CHANGE
的字段。如果我在结尾没有写任何东西,那么只有来自UPDATE FROM TABLE
的字段会被更新。
如何更新所有字段?是否有任何BAPI可以允许我从BUT051-PAFKT
修改BUT050
和自定义字段?
用于测试的示例代码:
DATA: lt_return TYPE bapiret2_t,
lv_kunnr TYPE kunnr VALUE '111',
lv_partner TYPE bu_partner VALUE '222',
lv_rel_cat TYPE bu_reltyp VALUE 'BUR001',
lv_new_date TYPE sy-datum VALUE '20300101',
lt_but051 TYPE TABLE OF but051.
CALL FUNCTION 'BAPI_BUPR_RELATIONSHIP_CHANGE'
EXPORTING
businesspartner1 = lv_kunnr
businesspartner2 = lv_partner
relationshipcategory = lv_rel_cat
validfromdate = sy-datum
validuntildate = sy-datum
validuntildatenew = lv_new_date
datetox = abap_true
TABLES
RETURN = lt_return.
SELECT *
FROM but051
INTO TABLE lt_but051
WHERE partner1 = lv_kunnr
AND partner2 = lv_partner
AND reltyp = lv_rel_cat.
LOOP AT lt_but051 ASSIGNING FIELD-SYMBOL(<ls_but051>).
<ls_but051>-pafkt = '0003'.
ENDLOOP.
UPDATE but051 FROM TABLE lt_but051.
COMMIT WORK.
发布于 2021-12-22 10:31:46
试试这个(或它的包装器BAPI_BUPR_CONTP_CHANGE
):
DATA: ls_person TYPE bapibus1006_central_person.
DATA: ls_person_x TYPE bapibus1006_central_person_x.
DATA: ls_central TYPE bapibus1006_central.
DATA: ls_central_x TYPE bapibus1006_central_x.
DATA: lt_return TYPE bapiret2_t.
is_data-function = '0001'. "<-- your PAFKT
is_data_x-function = abap_true.
* changes of the central data
CALL FUNCTION 'BUPR_CONTP_CHANGE'
EXPORTING
iv_partner = is_data-partner1
* IV_PARTNER_GUID =
iv_contactperson = is_data-partner2
* IV_CONTACTPERSON_GUID =
* IV_DATE_FROM =
* IV_DATE_TO =
* IV_DEFAULTRELATIONSHIP =
* IV_DEFAULTRELATIONSHIP_X =
is_data = is_data-data
is_data_x = is_data_x-central
* IV_TESTRUN = ' '
TABLES
et_return = lt_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = abap_true.
还检查我的回答关于更新关系和相应的注意事项。
https://stackoverflow.com/questions/70438844
复制相似问题