Oft müssen auch Kundenfelder (Z-Felder) in einer Kontraktposition geändert werden, diese müssen in folgender Strukturen enthalten sein: – BAPE_VBAP – BAPE_VBAPX – VBAPKOZ – VBAPKOZX Hierzu gibt es auch einer sehr gute Dokumentation im Funktionsbaustein BAPI_CUSTOMERCONTRACT_CHANGE
hier ein Beispiel bei dem die Konraktposition 10 geändert wurde:
DATA:ls_header TYPE bapisdh1,
ls_headerx TYPE bapisdh1x,
lt_pos TYPETABLE OF bapisditm,
ls_pos TYPE bapisditm,
lt_posx TYPETABLE OF bapisditmx,
ls_posx TYPE bapisditmx,
lt_return TYPETABLE OF bapiret2,
lt_contract_inx TYPETABLE OF bapictrx,
ls_contract_inx TYPE bapictrx,
lt_contract TYPETABLE OF bapictr,
ls_contract TYPE bapictr,
lt_extensionin TYPETABLE OF bapiparex WITH HEADER LINE,
ls_extensionin TYPE bapiparex,
l_valuepart1(240)TYPE c,
l_kreuzleiste TYPEstring.
Beispielcoding um ein Kontrakt auf Positionsebene zu ändern. In diesem Beispiel wurde das Vertragsbeginn- Vertragsendedatum auf Positionsebene geändert.
DATA:ls_header TYPE bapisdh1,
ls_headerx TYPE bapisdh1x,
lt_pos TYPETABLE OF bapisditm,
ls_pos TYPE bapisditm,
lt_posx TYPETABLE OF bapisditmx,
ls_posx TYPE bapisditmx,
lt_return TYPETABLE OF bapiret2,
lt_contract_inx TYPETABLE OF bapictrx,
ls_contract_inx TYPE bapictrx,
lt_contract TYPETABLE OF bapictr,
ls_contract TYPE bapictr.
ls_contract_inx-itm_number ='000010'.
ls_contract_inx-con_st_dat ='X'.
ls_contract_inx-con_en_dat ='X'. APPEND ls_contract_inx TO lt_contract_inx.
ls_contract-itm_number ='000010'.
ls_contract-con_st_dat ='20200101'.
ls_contract-con_en_dat ='99991231'. APPEND ls_contract TO lt_contract.
*Vertragskopf CLEAR ls_headerx.
ls_headerx-updateflag ='U'."Mussfeld beim Updaten