2023 Jun 15 1:13 PM
I am having 6 Custom fields from MARC table to update in Material master if I use the structure BAPIPAREX I can fill only 4 custom fields as it is containing STRUCTURE, VALUEPART1, VALUEPART2, VALUEPART1,VALUEPART4.
And in OMSR also 6custom fields are maintained from MARC table.
How we can add more than 4 custom fields to the material master.
Please suggest any other way of adding more than custom fields.
Please help me with this issue ASAP.
Thanks in advance.
The signature of the method is missing.
2023 Jun 15 1:49 PM
Don't use the VALUEPARTn with only one field, you must append your fields in structures BAPI_TE_MARC (actual character fields) and BAPI_TE_MARCX (update flags) and move those structures in EXTENSIONIN, for example
ls_extensionin-structure = 'BAPI_TE_MARC'.
cl_abap_container_utilities=>fill_container_c(
EXPORTING
im_value = ls_bapi_te_marc " structure of type bapi_te_marc
IMPORTING
ex_container = ls_extensionin+30 " values 1-4
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2 ).
<br>In case of problem check my answer to this other post.
2023 Jun 15 2:13 PM
We we need to maintain the new Z fields in the BAPI Structures
2023 Jun 15 2:23 PM
Yes append your fields in structures BAPI_TE_MARC and BAPI_TE_MARCX (and read documentation of EXTENSIONI parameter)
2023 Jun 15 1:55 PM
I have an abstract method for this:
METHOD fill_extension.
DATA:
r_type_desc TYPE REF TO cl_abap_typedescr,
s_value TYPE REF TO data,
s_extension TYPE bapiparex,
v_value TYPE c LENGTH 960,
v_type TYPE string.
FIELD-SYMBOLS:
<fs_any> TYPE any.
* Create output structure
IF i_value IS SUPPLIED.
* Structure
r_type_desc = cl_abap_typedescr=>describe_by_data( i_value ).
ELSEIF it_value IS SUPPLIED.
* Table
CREATE DATA s_value LIKE LINE OF it_value.
ASSIGN s_value->* TO FIELD-SYMBOL(<fs_value>).
CHECK sy-subrc IS INITIAL.
r_type_desc = cl_abap_typedescr=>describe_by_data( <fs_value> ).
ENDIF.
* Get type
CHECK r_type_desc IS BOUND.
v_type = r_type_desc->absolute_name.
REPLACE '\TYPE=' IN v_type WITH space.
s_extension-structure = v_type.
IF i_value IS NOT INITIAL.
CLASS cl_abap_container_utilities DEFINITION LOAD.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = i_value
IMPORTING
ex_container = v_value
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
s_extension-valuepart1 = v_value(240).
s_extension-valuepart2 = v_value+240(240).
s_extension-valuepart3 = v_value+480(240).
s_extension-valuepart4 = v_value+720(240).
APPEND s_extension TO et_extension.
ELSE.
* Add all values to the extension table
LOOP AT it_value ASSIGNING <fs_any>.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = <fs_any>
IMPORTING
ex_container = v_value
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
DESCRIBE FIELD v_value LENGTH DATA(lv_length) IN CHARACTER MODE.
IF lv_length LE 240.
s_extension-valuepart1 = v_value+0(lv_length).
ENDIF.
IF lv_length GT 240 AND lv_length LE 480.
s_extension-valuepart1 = v_value+0(240).
DATA(lv_max) = lv_length - 240.
s_extension-valuepart2 = v_value+240(lv_max).
ENDIF.
IF lv_length GT 480 AND lv_length LE 720.
s_extension-valuepart1 = v_value+0(240).
s_extension-valuepart2 = v_value+240(240).
lv_max = lv_length - 480.
s_extension-valuepart3 = v_value+480(lv_max).
ENDIF.
IF lv_length GT 720 AND lv_length LE 960.
s_extension-valuepart1 = v_value+0(240).
s_extension-valuepart2 = v_value+240(240).
s_extension-valuepart3 = v_value+480(240).
lv_max = lv_length - 720.
s_extension-valuepart4 = v_value+720(lv_max).
ELSEIF lv_length GT 960.
s_extension-valuepart1 = v_value+0(240).
s_extension-valuepart2 = v_value+240(240).
s_extension-valuepart3 = v_value+480(240).
s_extension-valuepart4 = v_value+720(240).
ENDIF.
APPEND s_extension TO et_extension.
ENDLOOP.
ENDIF.
ENDMETHOD.
This can be passed like this:
DATA:
t_extension TYPE bapiparex_tab.
zcl_bc_util=>fill_extension(
EXPORTING
* i_structure = 'BAPI_TE_AUFK'
i_value = s_bapi_te_aufk
IMPORTING
et_extension = t_extension
).
2023 Jun 15 1:57 PM
Make sure to just use CHAR fields in your extension (this is recommended by SAP).
I once had major issues when using numeric values.
2023 Jun 15 2:13 PM
Can you pls explain me end to end process of adding zfilds to the material master
2023 Jun 15 6:12 PM
2023 Jul 12 3:14 PM
Sorry, saw your comment just now...
Here's the signature:
CLASS-METHODS fill_extension
IMPORTING
i_value TYPE any OPTIONAL
it_value TYPE table OPTIONAL
EXPORTING
et_extension TYPE bapiparex_t .
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |