如何更新 BUT050 和 BUT051 表?
How can I update BUT050 & BUT051 tables?
我有以下场景:
我正在使用 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.
试试这个(或其包装器 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.
同时检查关于更新关系和相应的注释。
关于 BUT050 中的自定义字段,you can't just add a new field and update it, you need to change the BOL model。
我有以下场景:
我正在使用 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.
试试这个(或其包装器 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.
同时检查
关于 BUT050 中的自定义字段,you can't just add a new field and update it, you need to change the BOL model。