关于怎么修改供应商状态的函数说明
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 )
那我们怎么取修改呢?例如供应商的记账冻结字段 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 )
相关文章推荐
- Thinkphp3.2 关于快捷函数 模板引擎换为smarty时 地址跳转函数U()的使用修改及说明
- 关于主线程等待子线程退出状态的判断函数的使用说明
- 关于数据库 System lock 状态的说明和处理方式
- 关于socket send recv 两个函数各种错误说明
- 关于hook设置函数如何支持多核CPU的一个说明
- 关于字符串操作的一些函数简单说明与应用
- Thread、Runnable、线程状态转换、线程调度、常用函数说明.md
- main 函数的返回值用于说明程序的退出状态
- 关于状态栏的颜色/状态修改
- 关于 多个内容变量 仅显示同一条的修改说明
- 关于hook设置函数如何支持多核CPU的一个说明
- 关于PHP中命名空间和spl_autoload_register函数的关系说明
- 怎么让word文档不显示标记及修改的状态
- win7原始账户密码无法修改怎么办?win7恢复账户可修改密码状态教程
- [cocos2dx笔记015]关于cocos2dx Button三种状态说明
- 关于状态相关函数调用的处理办法
- avr-gcc中关于delay延时函数的应用修改版[ourdev]
- 关于本特利内华达状态监测保护系统相关说明
- 关于virgo-tomcat-server-3.6.0.RELEASE配置文件修改说明
- 关于C++中_finite()函数的说明 [转]