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

怎么修改供应商状态呢  我们需要的不能直接去改表字段  

那我们怎么取修改呢?例如供应商的记账冻结字段 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 .

  DATAL_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 )


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值