BAPI_COPAACTUALS_POSTCOSTDATA--COPA

本文介绍了一个用于SAP系统的ABAP程序,该程序能够从Excel文件中读取成本数据并将其上传到SAP系统中。程序通过调用SAP标准函数实现文件上传、数据转换及成本数据的批量更新。

*&---------------------------------------------------------------------*
*& Report ZCO_COST_UPLOAD
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zco_cost_upload.

*Tables
TABLES : mara,lfa1.

* Type / Data declarations
TYPES : BEGIN OF ty_upload ,

record_id TYPE char6,
val_01 TYPE rke_param_value,
val_02 TYPE rke_param_value,
val_03 TYPE rke_param_value,
val_04 TYPE rke_param_value,
val_05 TYPE rke_param_value,
val_06 TYPE rke_param_value,
val_07 TYPE rke_param_value,
val_08 TYPE rke_param_value,
val_09 TYPE rke_param_value,
val_10 TYPE rke_param_value,
val_11 TYPE rke_param_value,
val_12 TYPE rke_param_value,
val_13 TYPE rke_param_value,
val_14 TYPE rke_param_value,
val_15 TYPE rke_param_value,
val_16 TYPE rke_param_value,
val_17 TYPE rke_param_value,
val_18 TYPE rke_param_value,
val_19 TYPE rke_param_value,
val_20 TYPE rke_param_value,
val_21 TYPE rke_param_value,
val_22 TYPE rke_param_value,
val_23 TYPE rke_param_value, " new
val_24 TYPE rke_param_value, " new KWGOHD

END OF ty_upload.


TYPES : BEGIN OF ty_matnr,

matnr TYPE matnr,

END OF ty_matnr.

 

DATA : it_upload TYPE TABLE OF ty_upload,
it_uploadx TYPE TABLE OF ty_upload,
wa_upload LIKE LINE OF it_upload,
it_ipdata TYPE TABLE OF bapi_copa_data,
wa_ipdata LIKE LINE OF it_ipdata,
it_flist TYPE TABLE OF bapi_copa_field,
wa_flist LIKE LINE OF it_flist,
it_ret TYPE TABLE OF bapiret2 WITH HEADER LINE,
it_mara TYPE TABLE OF mara,
wa_mara LIKE LINE OF it_mara,
it_matnr TYPE TABLE OF ty_matnr,
wa_matnr LIKE LINE OF it_matnr.


* Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001 .
SELECTION-SCREEN SKIP 1.

PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY MEMORY ID file,
p_oc LIKE bapi0017-op_concern DEFAULT 'HOPE' ,
p_test LIKE bapi0017-testrun DEFAULT 'X'.

SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK blk.

 


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

PERFORM get_filename CHANGING p_file .


START-OF-SELECTION.

PERFORM upload_file.

PERFORM fill_feild_table.

PERFORM bapi_update.


*&---------------------------------------------------------------------*
*& Form get_filename
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_P_FILE text
*----------------------------------------------------------------------*
FORM get_filename CHANGING p_p_file LIKE p_file.

DATA: filename LIKE p_file.

CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = 'BDS.txt'
def_path = 'C:'
mask = ',BDC Upload File,*.*.'
mode = '0'
title = 'Chose file location'
IMPORTING
filename = filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
EXIT.
ELSE.
p_p_file = filename.

ENDIF.


ENDFORM. " get_filename
*&---------------------------------------------------------------------*
*& Form upload_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_file .

DATA : v_file TYPE string.
v_file = p_file.

 


CALL FUNCTION 'WS_UPLOAD'
EXPORTING
codepage = 'IBM'
filename = p_file
filetype = 'DAT'
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* DAT_D_FORMAT = ' '
* IMPORTING
* FILELENGTH =
TABLES
data_tab = it_upload
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

 


* BREAK-POINT.

* DELETE it_upload WHERE lifnr IS INITIAL.

ENDFORM. " upload_file
*&---------------------------------------------------------------------*
*& Form fill_feild_table
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_feild_table .

DATA : cnt TYPE rke_record_id,
v_kunnr TYPE kunnr.

LOOP AT it_upload INTO wa_upload.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = wa_upload-val_02
IMPORTING
output = wa_upload-val_02
* EXCEPTIONS
* LENGTH_ERROR = 1
* OTHERS = 2
.
* IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.

wa_matnr-matnr = wa_upload-val_02.
APPEND wa_matnr TO it_matnr.

ENDLOOP.

IF it_matnr[] IS NOT INITIAL.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE it_mara
FOR ALL ENTRIES IN it_matnr
WHERE matnr = it_matnr-matnr.

ENDIF.


LOOP AT it_upload INTO wa_upload.
* Fill the field name and value based on fixed sequence

* Starts from Col 2 of EXCEL
CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'BUDAT'.
wa_ipdata-value = wa_upload-val_01.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'ARTNR'.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = wa_upload-val_02
IMPORTING
output = wa_upload-val_02
* EXCEPTIONS
* LENGTH_ERROR = 1
* OTHERS = 2
.
* IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.

wa_ipdata-value = wa_upload-val_02.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.


* Find wt and dimension

READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_upload-val_02.
IF sy-subrc = 0.

CLEAR: wa_ipdata.

wa_mara-volum = wa_mara-volum * wa_upload-val_13. "ABSMG
wa_mara-ntgew = wa_mara-ntgew * wa_upload-val_13. "ABSMG

wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVVOL'.
wa_ipdata-value = wa_mara-volum.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVVOL_ME'.
wa_ipdata-value = wa_mara-voleh.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.


CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVWGT'.
wa_ipdata-value = wa_mara-ntgew.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVWGT_ME'.
wa_ipdata-value = wa_mara-gewei.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

ENDIF.

 

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'BUKRS'.
wa_ipdata-value = wa_upload-val_03.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'KNDNR'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_upload-val_04
IMPORTING
output = v_kunnr.


wa_ipdata-value = v_kunnr.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'KOKRS'.
wa_ipdata-value = wa_upload-val_05.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

 


CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'PRCTR'.
wa_ipdata-value = wa_upload-val_06.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VKORG'.
wa_ipdata-value = wa_upload-val_07.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VRGAR'.
wa_ipdata-value = wa_upload-val_08.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VTWEG'.
wa_ipdata-value = wa_upload-val_09.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'WERKS'.
wa_ipdata-value = wa_upload-val_10.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

 


CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'KMKDGR'.
wa_ipdata-value = wa_upload-val_11.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'MVGR1'.
wa_ipdata-value = wa_upload-val_12.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'ABSMG'.
wa_ipdata-value = wa_upload-val_13.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'ERLOS'.
wa_ipdata-value = wa_upload-val_14.
wa_ipdata-currency = 'LKR'.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'KWAGTK'.
wa_ipdata-currency = 'LKR'.
wa_ipdata-value = wa_upload-val_15.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.


CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVCOG'.
wa_ipdata-currency = 'LKR'.
wa_ipdata-value = wa_upload-val_16.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'KWMAEK'.
wa_ipdata-currency = 'LKR'.
wa_ipdata-value = wa_upload-val_17.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVCPK'.
wa_ipdata-currency = 'LKR'.
wa_ipdata-value = wa_upload-val_18.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVDLR'.
wa_ipdata-value = wa_upload-val_19.
wa_ipdata-currency = 'LKR'.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVDSA'.
wa_ipdata-value = wa_upload-val_20.
wa_ipdata-currency = 'LKR'.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVTXS'.
wa_ipdata-value = wa_upload-val_21.
wa_ipdata-currency = 'LKR'.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.


* Hardcoded feilds
* ABSMG_ME
CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'ABSMG_ME'.
wa_ipdata-value = wa_upload-val_22.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'VVTOT'.
wa_ipdata-value = wa_upload-val_23.
wa_ipdata-currency = 'LKR'.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

CLEAR: wa_ipdata.
wa_ipdata-record_id = wa_upload-record_id.
wa_ipdata-fieldname = 'KWGOHD'.
wa_ipdata-value = wa_upload-val_24.
wa_ipdata-currency = 'LKR'.
APPEND wa_ipdata TO it_ipdata.
wa_flist-fieldname = wa_ipdata-fieldname.
APPEND wa_flist TO it_flist.

ENDLOOP.

ENDFORM. " fill_feild_table
*&---------------------------------------------------------------------*
*& Form bapi_update
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM bapi_update .
DATA : ret LIKE LINE OF it_ret.
WRITE : / 'Log of the Cost Data upload..'.
SKIP 2.
SORT it_flist .
DELETE ADJACENT DUPLICATES FROM it_flist COMPARING fieldname.


CALL FUNCTION 'BAPI_COPAACTUALS_POSTCOSTDATA'
EXPORTING
operatingconcern = p_oc
testrun = p_test
TABLES
inputdata = it_ipdata
fieldlist = it_flist
return = it_ret.

 

 


READ TABLE it_ret WITH KEY type = 'E'.

IF sy-subrc NE 0.
READ TABLE it_ret WITH KEY type = 'A'.

ENDIF.

IF sy-subrc = 0.
* error.

WRITE : / 'Upload error...'.

LOOP AT it_ret INTO ret.

WRITE : / ret-type , ret-id , ret-number,
ret-message, ret-log_no,
ret-message_v1, ret-message_v2,
ret-message_v3, ret-message_v4.

ENDLOOP.
SKIP 1.

ELSE.

IF p_test = ' '.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
WRITE : 'List of Records uploaded...'.
ENDIF.

 

LOOP AT it_upload INTO wa_upload.

WRITE : / 'Record No. ' , wa_upload-record_id,
'Product : ' , wa_upload-val_02.
ENDLOOP.

ENDIF.

SKIP 2.

ENDFORM. " bapi_update  

<think>根据用户查询和引用内容,用户需要知道如何在BAPI_MATERIAL_SAVEDATA中维护物料主数据的附加数据描述(如扩展字段)。引用[^1]和[^3]提到了BAPI_MATERIAL_SAVEREPLICA和BAPI_MATERIAL_SAVEDATA的扩展字段处理方式。 关键点: - 引用[^1]指出BAPI_MATERIAL_SAVEREPLICA处理扩展字段时,使用FORM extension_preprocess和FORM process_extension,其中FORM process_extension处理所有部分。 - 引用[^3]说明BAPI_MATERIAL_SAVEDATA可以通过EXTENSIONIN参数传入自定义字段。 因此,对于BAPI_MATERIAL_SAVEDATA,维护附加数据描述(如自定义字段)应通过EXTENSIONIN参数实现。此参数是一个表类型,结构为BAPIPAREX,包含字段: - STRUCTURE: 扩展结构的名称(如ZMARAM) - VALUEPART1 ~ VALUEPART4: 字段值(每部分240字符,共960字符) 步骤: 1. 定义扩展结构(如附加到MARA表的自定义结构)。 2. 在调用BAPI_MATERIAL_SAVEDATA时,将扩展字段的值填充到EXTENSIONIN表中: - STRUCTURE字段:扩展结构名 - VALUEPART1~4:字段值(按顺序拼接) 例如,若扩展结构ZMARAM有字段ZZDESC(字符型,长度40),则需将其值拆分到VALUEPART1~4(若长度超过240)。 由于用户询问的是“附加数据描述”,可能是自定义的描述字段(如ZZMAT_DESC),因此同样通过EXTENSIONIN传入。 回答结构: 1. 明确维护位置:通过EXTENSIONIN参数 2. 说明EXTENSIONIN的使用方法 3. 提供示例(ABAP代码片段) 注意:用户上一次问题可能涉及BAPI_MATERIAL_SAVEREPLICA,但当前问题明确指向BAPI_MATERIAL_SAVEDATA,因此以该BAPI为主。 </think>在 SAP ABAP 中,使用 `BAPI_MATERIAL_SAVEDATA` 维护物料主数据的附加数据描述(如自定义字段或扩展字段),需通过 **`EXTENSIONIN` 输入参数**实现。具体步骤如下: --- ### 维护原理 1. **`EXTENSIONIN` 参数作用** 用于传递标准表结构中不包含的扩展字段值,参数类型为表 `BAPIPAREX`,结构包含: - `STRUCTURE`:扩展结构名(如 `ZMARAM`) - `VALUEPART1`-`VALUEPART4`:字段值分段存储(每段最大长度 240 字符) 2. **字段值映射逻辑** 若扩展字段 `ZZDESC`(描述字段)长度为 500 字符,需按顺序拆分: - `VALUEPART1`:第 1-240 字符 - `VALUEPART2`:第 241-480 字符 - `VALUEPART3`:第 481-500 字符(剩余部分) --- ### 代码示例 ```abap DATA: lt_extension TYPE TABLE OF bapiparex, ls_extension LIKE LINE OF lt_extension. " 设置扩展结构名(需与DDIC中自定义结构一致) ls_extension-structure = 'ZMARAM'. " 自定义结构名 " 填充扩展字段值(此处ZZDESC为500字符的描述字段) ls_extension-valuepart1 = '前240字符描述...'. ls_extension-valuepart2 = '中间240字符描述...'. ls_extension-valuepart3 = '最后20字符描述'. APPEND ls_extension TO lt_extension. " 调用BAPI CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' EXPORTING material = 'MAT001' TABLES extensionin = lt_extension " 传入扩展字段 return = lt_return. ``` --- ### 关键注意事项 1. **自定义结构要求** - 扩展字段需通过 **Append Structure** 附加到标准表(如 `MARA`)[^3] - 结构名必须与 `EXTENSIONIN-STRUCTURE` 完全匹配 2. **值拆分规则** - 字段总长度 ≤ 960 字符(`VALUEPART1` 至 `4` 总和) - 若长度 ≤ 240:仅需填充 `VALUEPART1` 3. **处理逻辑** BAPI 内部通过函数组 `MGMT` 中的 `PROCESS_EXTENSION` 子程序解析扩展字段值[^1],自动映射到数据库表。 --- ### 常见问题排查 - **字段未更新**:检查结构名是否正确,或值是否超出长度限制 - **短文本字段**:若描述字段 ≤ 240 字符,只需填充 `VALUEPART1` - **权限问题**:确保用户有扩展字段的维护权限 > 提示:可通过 `BAPI_MATERIAL_GET_ALL` 并使用 `EXTENSIONOUT` 参数验证扩展字段值[^3]。 --- ### 相关问题 1. 如何通过 `BAPI_MATERIAL_GET_ALL` 读取扩展字段的值? 2. `BAPI_MATERIAL_SAVEDATA` 和 `BAPI_MATERIAL_SAVEREPLICA` 在处理扩展字段时有何区别? 3. 当扩展字段跨多个表(如 `MARA` 和 `MAKT`)时,如何正确配置 `EXTENSIONIN`? [^1]: 扩展字段由 `PROCESS_EXTENSION` 子程序处理完整值 [^3]: 通过 `EXTENSIONIN` 传入自定义字段是 SAP 推荐的扩展方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值