在 SAP 中批量删除供应商银行信息有以下几种方法:
- 准备数据文件:按照 LSMW 要求的格式,创建一个包含要删除银行信息的供应商编号以及对应的银行账户等相关标识信息的 Excel 或文本文件。
- 进入 LSMW 操作界面:输入相应的事务代码进入 LSMW,选择与供应商银行信息删除相关的项目和对象。
- 映射字段:将数据文件中的字段与 SAP 系统中供应商银行信息相关的字段进行对应映射,比如将文件中的供应商编号映射到 SAP 的供应商主数据编号字段等。
- 导入数据:将准备好的数据文件导入到 LSMW 中。
- 执行删除操作:在 LSMW 中配置好删除操作的相关设置,通常可以通过设置删除标志或指定删除操作类型等方式,然后执行批量删除操作。
- 检查结果:操作完成后,在系统中检查供应商银行信息是否已被成功批量删除。
- 使用相关 BAPI:可使用 “VMD_EI_API” 等 BAPI 进行操作1。
- 编写 ABAP 代码:以 “VMD_EI_API” 为例,使用该类的 “GET_DATA” 方法获取供应商的完整数据,再将需要删除的银行信息的相关记录标记为删除任务,最后调用 “MAINTAIN_BAPI” 方法来执行更新操作以实现删除1。以下是一个简单示例代码1:
REPORT Y_TEST_UPDATE_VENDOR_DEL.
PARAMETERS: P_LIFNR TYPE LIFNR OBLIGATORY.
START-OF-SELECTION.
PERFORM UPDATE_DATA.
FORM UPDATE_DATA.
DATA: LO_VMD_EI_API TYPE REF TO VMD_EI_API.
DATA: L_TI_IS_MASTER_DATA TYPE VMDS_EI_MAIN,
L_TI_IS_MASTER_DATA_IN TYPE VMDS_EI_MAIN.
DATA: LS_VMDS_EI_EXTERN TYPE VMDS_EI_EXTERN.
DATA: LC_LIFNR TYPE LIFNR.
CHECK P_LIFNR IS NOT INITIAL.
CREATE OBJECT LO_VMD_EI_API.
LS_VMDS_EI_EXTERN-HEADER-OBJECT_INSTANCE-LIFNR = P_LIFNR.
LS_VMDS_EI_EXTERN-HEADER-OBJECT_TASK = 'U'.
APPEND LS_VMDS_EI_EXTERN TO L_TI_IS_MASTER_DATA_IN-VENDORS.
* Capture all the vendor data
CALL METHOD VMD_EI_API_EXTRACT=>GET_DATA
EXPORTING
IS_MASTER_DATA = L_TI_IS_MASTER_DATA_IN
IMPORTING
ES_MASTER_DATA = DATA(L_TI_IS_MASTER_DATA_ES)
ES_ERROR = DATA(L_ERROR).
* Get the current vendor data into a structure
READ TABLE L_TI_IS_MASTER_DATA_ES-VENDORS INTO LS_VMDS_EI_EXTERN WITH KEY HEADER-OBJECT_INSTANCE-LIFNR = P_LIFNR.
IF SY-SUBRC EQ 0.
LS_VMDS_EI_EXTERN-HEADER-OBJECT_INSTANCE-LIFNR = P_LIFNR.
LS_VMDS_EI_EXTERN-HEADER-OBJECT_TASK = 'U'.
LOOP AT LS_VMDS_EI_EXTERN-CENTRAL_DATA-BANK_DETAIL-BANK_DETAILS ASSIGNING FIELD-SYMBOL(<LFS_BANK>).
* This is the delete order
<LFS_BANK>-TASK = 'D'.
END LOOP.
APPEND LS_VMDS_EI_EXTERN TO L_TI_IS_MASTER_DATA-VENDORS.
CALL METHOD LO_VMD_EI_API->MAINTAIN_BAPI
EXPORTING
IS_MASTER_DATA = L_TI_IS_MASTER_DATA
IV_COLLECT_MESSAGES = ABAP_TRUE
IMPORTING
ES_MASTER_DATA_CORRECT = DATA(LS_ES_MASTER_DATA_CORRECT)
ES_MESSAGE_CORRECT = DATA(LS_ES_MESSAGE_CORRECT)
ES_MASTER_DATA_DEFECTIVE = DATA(LS_ES_MASTER_DATA_DEFECTIVE)
ES_MESSAGE_DEFECTIVE = DATA(LS_ES_MESSAGE_DEFECTIVE).
IF LS_ES_MESSAGE_DEFECTIVE-IS_ERROR IS INITIAL AND
LS_ES_MESSAGE_DEFECTIVE-MESSAGES() IS INITIAL.
COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
END IF.
END IF.
ENDFORM.
在使用上述代码时,需要将P_LIFNR
参数设置为要删除银行信息的供应商编号。
- 进入供应商主数据批量维护界面:例如使用事务码
XK99
7。 - 选择筛选条件:在
XK99
界面中,选择合适的筛选条件,以确定要批量删除银行信息的供应商范围,可以根据供应商组、公司代码等条件进行筛选。 - 进入银行信息维护页面:选中要操作的供应商后,进入供应商银行信息维护页面。
- 删除银行信息:在银行信息维护页面中,批量选择要删除的银行信息记录,然后点击删除按钮或设置删除标志,最后保存操作。