您的位置:首页 > 其它

关于怎么修改供应商状态的函数说明

2013-09-10 16:10 561 查看
怎么修改供应商状态呢 我们需要的不能直接去改表字段

那我们怎么取修改呢?例如供应商的记账冻结字段 SPERR ,取自SCN里面的一段语句:

In class VMD_EI_API, method MAINTAIN_BAPI, the parameter IS_MASTER_DATA

The specified field exists in

VENDORS-VMDS_EI_EXTERN_T-VMDS_EI_EXTERN-CENTRAL_DATA-CENTRAL-DATA-SPERR

Guys, VENDOR_UPDATE is an update function module. Do not suggest such things.

通过观察我们发现,MAINTAIN_BAPI 有三个输入参数和四个输出参数,其中只有IS_MASTER_DATA一个必输参数,

但这个函数有很多讲究。

首先需要说明的是:IS_MASTER_DATA 是一个deep的结构,个人感觉还是蛮复杂的,如果说 我们要完全命名一个这个结构的话 还是需要参考一些专门的书。

于是就有了下面这个问题

1、首先我们会问 我们怎么取这个参数呢 做过其他编程的同学们都知道 有 set 就需要有对应的get,因为我们只需要修改其中的几个字段而已 。

反正我在VMD_EI_API,这个接口里面没有找打get函数,但是在其他的里面找到了一个,可以稍微用下。可以在下面的语句中找下:

FORM MAINTAIN .

DATA L_DATA TYPE VMDS_EI_VMD_CENTRAL_DATA.

DATA L_DATAX TYPE VMDS_EI_VMD_CENTRAL_DATA_XFLAG.

DATA L_CENTRAL TYPE VMDS_EI_VMD_CENTRAL.

DATA L_CENTRAL_DATA TYPE VMDS_EI_CENTRAL_DATA.

DATA LS_VENDORS TYPE VMDS_EI_EXTERN .

DATA LT_VENDORS TYPE VMDS_EI_EXTERN_T .

DATA L_MASTER_DATA TYPE VMDS_EI_MAIN.

DATA OB_VMD TYPE REF TO VMD_EI_API.

CREATE OBJECT OB_VMD .

DATA GETDATA TYPE REF TO VMD_EI_API_MAP_STRUCTURE.

CREATE OBJECT GETDATA.

DATA L_L TYPE VMDS_EI_EXTRACT.

DATA LFA TYPE LFA1 .

DATA: L_ES_MASTER_DATA_CORRECT TYPE VMDS_EI_MAIN,

L_ES_MESSAGE_CORRECT TYPE CVIS_MESSAGE,

L_ES_MASTER_DATA_DEFECTIVE TYPE VMDS_EI_MAIN,

L_ES_MESSAGE_DEFECTIVE TYPE CVIS_MESSAGE.

LOOP AT GT_ITAB INTO GS_ITAB.

LFA-LIFNR = GS_ITAB-LIFNR .

L_L-LFA1 = LFA .

CALL METHOD GETDATA->ECC_TO_EXTERN

EXPORTING

IS_MASTER_DATA_ECC = L_L

IMPORTING

ES_MASTER_DATA_EXTERN = LS_VENDORS.

L_DATA-SPERR = 'X'.

L_DATA-SPERM = 'X'.

L_DATAX-SPERR = 'X'.

L_DATAX-SPERM = 'X'.

L_CENTRAL-DATA = L_DATA.

L_CENTRAL-DATAX = L_DATAX.

L_CENTRAL_DATA-CENTRAL = L_CENTRAL.

LS_VENDORS-CENTRAL_DATA = L_CENTRAL_DATA.

LS_VENDORS-HEADER-OBJECT_TASK = 'U'.

APPEND LS_VENDORS TO LT_VENDORS.

ENDLOOP.

L_MASTER_DATA-VENDORS = LT_VENDORS.

CALL METHOD OB_VMD->MAINTAIN_BAPI

EXPORTING

* iv_test_run = 'X'

iv_collect_messages = 'X'

IS_MASTER_DATA = L_MASTER_DATA

IMPORTING

ES_MASTER_DATA_CORRECT = L_ES_MASTER_DATA_CORRECT

ES_MESSAGE_CORRECT = L_ES_MESSAGE_CORRECT

ES_MASTER_DATA_DEFECTIVE = L_ES_MASTER_DATA_DEFECTIVE

ES_MESSAGE_DEFECTIVE = L_ES_MESSAGE_DEFECTIVE.

ENDFORM. " MAINTAIN

2、其实如果你知道了这个函数的工作模式,咱们基本上可以忽略到第一条中的问题

他这里的更改很只能。对于需要更改的数,基本上都提供了对应的结构判断这个字段是否需要更新

这里的体现是 data 和 datax 的对比

3、另外 需要注意的是header 中的一个是操作标识

我们需要赋值 (U I C M )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: