Using BAPI_CONTRACT_CREATE is quite tricky when you want to add customised fields, conditions and header/item texts.
Just sharing my experience for my own future references and to anyone who'll benefit from this as I can't find any specific help on the net on this.
CUSTOMISED FIELDS - LINE ITEMS LEVEL
In my case, it's ZZREGION and ZZTECH fields that were appended to table EKKN.
In ME31K, these fields are located on item level, on 'Account Assignment' tab - 'More' tab - then you'll get region/technology fields.
In BAPI, you have to use structure BAPI_TE_MEOUTACCOUNT as in the code excerpts below:
lt_extensionin-structure = 'BAPI_TE_MEOUTACCOUNT'.
lt_regiontech-item_no = '00010'.
lt_regiontech-serial_no = '01'.
lt_regiontech-zzregion = 'EAST'.
lt_regiontech-zztech = 'C'.
CONCATENATE lt_regiontech-item_no lt_regiontech-serial_no lt_regiontech-zzregion lt_regiontech-zztech INTO lt_extensionin-valuepart1.
APPEND lt_extensionin. CLEAR lt_extensionin.
CUSTOMISED FIELDS - HEADER LEVEL
Working With CHECKBOXES:
- If it's standard checkbox field, we can move directly to BAPI contract header data.
- If it's CUSTOMIZED checkbox field, we have to find the structure and use EXTENSIONIN to append data.
Example 1:
Checkbox: 'Notification not required'.
(Field EKKO-WEAKT in ME33K - Header - Details) - Standard field
In BAPI, use structure BAPI_TE_MEOUTHEADER to move the data as in below:
lt_extensionin-structure = 'BAPI_TE_MEOUTHEADER'.
PERFORM fill_leading_zero USING lw_ufile-ebeln CHANGING lt_zzsdro-number.
lt_zzsdro-zzcode = lc_zzcode.
lt_zzsdro-zzamount = lc_zzamount.
lt_zzsdro-zzsdro = lw_ufile-zsdro.
CONCATENATE lt_zzsdro-number lt_zzsdro-zzcode lc_zzamount lt_zzsdro-zzsdro INTO lt_extensionin-valuepart1.
APPEND lt_extensionin. CLEAR lt_extensionin.
lt_extensionin-structure = 'BAPI_TE_MEOUTHEADERX'.
PERFORM fill_x_structure CHANGING lt_zzsdrox.
PERFORM fill_leading_zero USING lw_ufile-ebeln CHANGING lt_zzsdrox-number.
CONCATENATE lt_zzsdrox-number lt_zzsdrox-zzcode lt_zzsdrox-zzamount lt_zzsdrox-zzsdro INTO lt_extensionin-valuepart1.
APPEND lt_extensionin. CLEAR lt_extensionin.
**Remember to concatenate ALL fields BEFORE the fields u need (zzcode & zzamount) in the BAPI structure before moving it to structure field EXTENSIONIN-VALUEPART1.
**Or try to point to the field directly: lt_extensionin-valuepart1+4(2) = lt_zzsdrox-zzcode.
Serkan AKKAVAK
Computer Engineer
SAP Department Deputy Manager
Contact : serkurumsal@yandex.com
0 Comments