服务主数据的创建和特性的维护BAPI…

目录

服务主数据的创建和特性的维护... 1

一、         服务主数据相关TCODAC01  AC02 AC03. 2

二、         服务主数据前台创建过程... 2

三、         维护特性TCODCL01 CL02 CL03. 3

四、         服务主数据BAPI创建... 5

五、         服务主数据冻结和解冻... 6

六、         服务主数据创建修改和特性维护完整代码... 8

七、         服务主数据冻结解冻完整代码... 13

 

一、      服务主数据相关TCODAC01  AC02 AC03

二、      服务主数据前台创建过程

AC03进入,点击新建服务条目

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

填写相应必输项目:

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

点击保存,生成服务主数据

挂服务主数据分类信息

点击转到-分类

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

维护服务主数据分类信息

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

三、      维护特性TCODCL01 CL02 CL03

 服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

双击某行特性,查看其特现值

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

创建过程(根据前台数据判断BAPI如何赋值)

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

如果特性已经创建,那么服务主数据挂特性需要的只有:

a)         服务主数据编号

b)         特性的类号

c)         特征名称

d)         特性值

四、      服务主数据BAPI创建

"创建服务主数据BAPI      

CALL FUNCTION 'BAPI_SERVICE_CREATE'
       
EXPORTING
         im_service_data     
lm_service_data
         im_service_datax    
lm_service_datax
       
TABLES
         
return              li_return[]
         service_description 
li_service_description[].

 

其中lm_service_datalm_service_data内字段参考前台操作的必输项

 

 "服务类别不能修改(可参考前台,点击修改时,查看哪些字段是可以修改的)

lm_service_datax-serv_cat ''                               
l_servicenumber 
lw_fwzsj-asnum.
"修改服务主数据BAPI  
CALL FUNCTION 'BAPI_SERVICE_CHANGE'
  
EXPORTING
    servicenumber       
l_servicenumber      "作业编号
    im_service_data     
lm_service_data
    im_service_datax    
lm_service_datax
    
TABLES
      
return              li_return[]
      service_description 
li_service_description[].

 

 

"维护服务特性BAPI,不同类型特性值放在不同表中(创建,修改都可以使用此BAPI

" BAPI_OBJCL_CHANGE 可以替代 BAPI_OBJCL_CREATE

CALL FUNCTION 'BAPI_OBJCL_CHANGE'
  
EXPORTING
    objectkey          
objectkeynew             "作业编号
    objecttable        
'ASMD'
    classnum           
classnumnew              "类号,cl01创建的类号
    classtype          
'038'
  
TABLES
    allocvaluesnumnew  
li_allocvaluesnumnew   "日期类型
    allocvaluescharnew 
li_allocvalueschar     "char类型
    allocvaluescurrnew 
li_allocvaluescurrnew  "金额类型                                                               

    return             li_return.

 

五、      服务主数据冻结和解冻

服务主数据的创建和特性的维护BAPI(BAPI_SERVICE_CREATE、BAPI_OBJCL_CHANGE)

"查找是否存在,如果存在是冻结状态还是解冻状态
    
SELECT SINGLE lvorm
      
FROM asmd
      
INTO  l_lvorm
     
WHERE asnum lw_input-asnum.

 

     "解冻修改

      im_service_data-del_ind ''.
      im_service_datax
-del_ind 'X'.

      
CALL FUNCTION 'BAPI_SERVICE_CHANGE'
        
EXPORTING
          servicenumber       
servicenumber
          im_service_data     
im_service_data
          im_service_datax    
im_service_datax
        
TABLES
          
return              return[]
          service_description 
i_service_description[].

 

      "冻结

      im_service_data-del_ind  'X'.
      im_service_datax
-del_ind 'X'.

      
CALL FUNCTION 'BAPI_SERVICE_CHANGE'
        
EXPORTING
          servicenumber       
servicenumber
          im_service_data     
im_service_data
          im_service_datax    
im_service_datax
        
TABLES
          
return              return[]
          service_description 
i_service_description[].


FUNCTION zmm00_fm_fwzsj_cj.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  TABLES
*"      IT_FWZSJ STRUCTURE  ZMM00T_001 OPTIONAL
*"      ET_RETURN STRUCTURE  Z00S_FWZSJ_RETURN OPTIONAL
*"----------------------------------------------------------------------

  
DATA:l_exist                    TYPE flag.

  
"服务主数据创建bapi所用
  
DATAlm_service_data            TYPE bapisrv_asmd,
        lm_service_datax           
TYPE bapisrv_asmdx.
  
DATA  li_return                  LIKE STANDARD TABLE OF bapiret2      WITH HEADER LINE.
  
DATA  li_service_description     LIKE STANDARD TABLE OF bapisrv_asmdt WITH HEADER LINE.

  
"特征值创建bapi所用
  
DATAobjectkeynew              TYPE bapi1003_key-object,
        classnumnew               
TYPE bapi1003_key-classnum,
        li_allocvalueschar        
TYPE STANDARD TABLE OF bapi1003_alloc_values_char WITH HEADER LINE.
  
DATAli_allocvaluesnumnew      TYPE STANDARD TABLE OF bapi1003_alloc_values_num  WITH HEADER LINE.
  
DATAli_allocvaluescurrnew     TYPE STANDARD TABLE OF bapi1003_alloc_values_curr WITH HEADER LINE.
  
DATAlw_fwzsj                  LIKE zmm00t_001.
  
DATAlw_return                 LIKE z00s_fwzsj_return.
  
DATAl_servicenumber           TYPE bapisrv_asmd-service .

 

  "物料特性赋值
  
DEFINE mac_add_atwrt.
    
if &1 ne space.
      li_allocvalueschar
-value_char &1  特性值
    
 li_allocvalueschar-charact     = &2   "特征编码   

append li_allocvalueschar.
      
clear li_allocvalueschar.
    
endif.
  
END-OF-DEFINITION.

 

LOOP AT it_fwzsj INTO lw_fwzsj.

*"----------------------------------------------------------------------
*&服务主数据BAPI相关赋值
*"----------------------------------------------------------------------

    
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'                         "加前导零
      
EXPORTING
        
input  lw_fwzsj-asnum
      
IMPORTING
        
output lw_fwzsj-asnum.

    
"判断是否已经存在
    
SELECT SINGLE asnum INTO lw_fwzsj-asnum
      
FROM asmd WHERE asnum lw_fwzsj-asnum.

    
IF sy-subrc 0.
      l_exist 
'E'.
    
ELSE.
      l_exist 
space.
    
ENDIF.


    
CLEAR lm_service_data.
    
CLEAR lm_service_datax.
    
CLEAR li_service_description[].

    lm_service_data
-service           lw_fwzsj-asnum            "作业编号 物料号
    lm_service_datax
-service          lw_fwzsj-asnum.

    
"类号大类编码+中类编码+小类编码;例如9003002
    
CONCATENATE lw_fwzsj-classb  lw_fwzsj-classm lw_fwzsj-classs INTO lw_fwzsj-class.

    
"物料组=G+类号,例如G9001001
    
CONCATENATE 'G' lw_fwzsj-classb  lw_fwzsj-classm lw_fwzsj-classs INTO lw_fwzsj-matkl_srv.

    lm_service_data
-matl_group        lw_fwzsj-matkl_srv        "物料组
    lm_service_datax
-matl_group       text-x00.

    
"6.  服务类别=中类编码+小类编号后两位;例如:服务主数据对应的分类为:9003002,则服务类别为:0302
    
IF lw_fwzsj-astyp IS INITIAL.
      
CONCATENATE lw_fwzsj-classm lw_fwzsj-classs+1(2INTO lw_fwzsj-astyp.
    
ENDIF.

    lm_service_data
-serv_cat          lw_fwzsj-astyp            "服务类别
    lm_service_datax
-serv_cat         text-x00.

    lm_service_data
-base_uom          lw_fwzsj-meins            "基本计量单位
    lm_service_datax
-base_uom         text-x00.

    lm_service_data
-val_class        '9000'                     "评价分类
    lm_service_datax
-val_class       text-x00.


    li_service_description
-language   1.
    
IF lw_fwzsj-asktx IS INITIAL.
      lw_fwzsj
-asktx lw_fwzsj-kschls                            "服务类别描述=小类名称
    
ENDIF.
    li_service_description
-short_text lw_fwzsj-asktx            "服务短文本

    
APPEND li_service_description.

*"----------------------------------------------------------------------
*&特性相关赋值
*"----------------------------------------------------------------------
    
"填充特征值和特征描述
    
CLEAR li_allocvalueschar.
    
CLEAR li_allocvalueschar[].

    mac_add_atwrt
:
       lw_fwzsj
-atwrt1    lw_fwzsj-atnam1 ,
       lw_fwzsj
-atwrt2    lw_fwzsj-atnam2 ,
       lw_fwzsj
-atwrt3    lw_fwzsj-atnam3 ,
       lw_fwzsj
-atwrt4    lw_fwzsj-atnam4 ,
       lw_fwzsj
-atwrt5    lw_fwzsj-atnam5 ,
       lw_fwzsj
-atwrt6    lw_fwzsj-atnam6 ,
       lw_fwzsj
-atwrt7    lw_fwzsj-atnam7 ,
       lw_fwzsj
-atwrt8    lw_fwzsj-atnam8 ,
       lw_fwzsj
-atwrt9    lw_fwzsj-atnam9 ,
       lw_fwzsj
-atwrt10   lw_fwzsj-atnam10 ,
       lw_fwzsj
-atwrt11   lw_fwzsj-atnam11 ,
       lw_fwzsj
-atwrt12   lw_fwzsj-atnam12 .

      objectkeynew 
lw_fwzsj-asnum."作业编号号
      classnumnew  
lw_fwzsj-class                           "类号=大类编码+中类编码+小类编码;例如9003002


*"----------------------------------------------------------------------
*&BAPI调用
*"----------------------------------------------------------------------

    
"如果不存在
    
IF l_exist space.

      
CALL FUNCTION 'BAPI_SERVICE_CREATE'"维护服务主数据BAPI
       
EXPORTING
         im_service_data     
lm_service_data
         im_service_datax    
lm_service_datax
       
TABLES
         
return              li_return[]
         service_description 
li_service_description[].

      
LOOP AT li_return WHERE type 'E'.
      
ENDLOOP.

      
IF sy-subrc 0.
      
ENDIF.

      
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        
EXPORTING
          
wait 'X'.


      
CLEAR li_return[].

      
CALL FUNCTION 'BAPI_OBJCL_CHANGE'
        
EXPORTING
          objectkey          
objectkeynew
          objecttable        
'ASMD'
          classnum           
classnumnew
          classtype          
'038'
        
TABLES
          allocvaluesnumnew  
li_allocvaluesnumnew                     "日期类型
          allocvaluescharnew 
li_allocvalueschar                       "char类型
          allocvaluescurrnew 
li_allocvaluescurrnew                    "金额;类型,不同类型数据不同的表
          
return             li_return.

      
SORT li_return BY type DESCENDING.

      
LOOP AT li_return WHERE type 'E'.
      
ENDLOOP.

      
IF sy-subrc 0.
      
ENDIF.

    
"存在则修改
    
IF l_exist 'E'.
      lm_service_datax
-serv_cat ''                                 "服务类别不能修改
      l_servicenumber 
lw_fwzsj-asnum.

      
CALL FUNCTION 'BAPI_SERVICE_CHANGE'
        
EXPORTING
          servicenumber       
l_servicenumber
          im_service_data     
lm_service_data
          im_service_datax    
lm_service_datax
        
TABLES
          
return              li_return[]
          service_description 
li_service_description[].

      
LOOP AT li_return WHERE type 'E'.

""""""
      
ENDLOOP.

      
IF sy-subrc 0.
   
      
ENDIF.

      
CALL FUNCTION 'BAPI_OBJCL_CHANGE'
        
EXPORTING
          objectkey          
objectkeynew
          objecttable        
'ASMD'
          classnum           
classnumnew
          classtype          
'038'
        
TABLES
          allocvaluesnumnew  
li_allocvaluesnumnew   "日期类型
          allocvaluescharnew 
li_allocvalueschar     "char类型
          allocvaluescurrnew 
li_allocvaluescurrnew  "金额;类型,不同类型数据不同的表
          
return             li_return.

      
SORT li_return BY type DESCENDING.

      
LOOP AT li_return WHERE type 'E'.
      
ENDLOOP.

      
IF sy-subrc 0.

      
ENDIF.


    
ENDIF."IF l_exist text-x00.

  
ENDLOOP.

ENDFUNCTION.

 

 

七、      服务主数据冻结解冻完整代码

FUNCTION zmm00_fmfwzt_xg.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  TABLES
*"      IT_FWZSJ STRUCTURE  Z00S_FWZSJ_XG OPTIONAL
*"      ET_RETURN STRUCTURE  Z00S_FWZSJ_RETURN OPTIONAL
*"----------------------------------------------------------------------

  
DATA:
        servicenumber         
TYPE  bapisrv_asmd-service,
        im_service_data       
TYPE  bapisrv_asmd,
        im_service_datax      
TYPE  bapisrv_asmdx.
  
DATA:
        
return                LIKE TABLE OF bapiret2 WITH HEADER LINE,
        i_service_description  
LIKE TABLE OF  bapisrv_asmdt.

  
DATAl_lvorm               TYPE asmd-lvorm.

  
DATAlw_input              LIKE z00s_fwzsj_cj,
        lw_return             
LIKE z00s_fwzsj_return.


  
LOOP AT it_fwzsj INTO lw_input.

    
"服务编码
    servicenumber 
lw_input-asnum.

    
"查找是否存在,如果存在是冻结状态还是解冻状态
    
SELECT SINGLE lvorm
      
FROM asmd
      
INTO  l_lvorm
     
WHERE asnum lw_input-asnum.

    
"不存在报错,提示服务主数据不存在
    
IF sy-subrc <> 0.
    
ENDIF.


    
存在,解冻.
    
IF lw_input-statu_id '01' AND l_lvorm 'X'.

      im_service_data
-del_ind ''.
      im_service_datax
-del_ind text-x00.

      
"解冻修改
      
CALL FUNCTION 'BAPI_SERVICE_CHANGE'
        
EXPORTING
          servicenumber       
servicenumber
          im_service_data     
im_service_data
          im_service_datax    
im_service_datax
        
TABLES
          
return              return[]
          service_description 
i_service_description[].


      
LOOP AT return WHERE type text-e00.
      
ENDLOOP.

      
IF sy-subrc 0.
      
ENDIF.

    
"冻结
    
IF lw_input-statu_id = '02' AND l_lvorm  IS INITIAL.

      im_service_data
-del_ind  'X'.
      im_service_datax
-del_ind 'X'.

      
"冻结
      
CALL FUNCTION 'BAPI_SERVICE_CHANGE'
        
EXPORTING
          servicenumber       
servicenumber
          im_service_data     
im_service_data
          im_service_datax    
im_service_datax
        
TABLES
          
return              return[]
          service_description 
i_service_description[].

      
LOOP AT return WHERE type 'E'.
      
ENDLOOP.

      
IF sy-subrc 0.
     
ENDIF.

  
ENDLOOP.

ENDFUNCTION.

 
















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值