创建预留mb21添加附加字段的增强

343 篇文章 262 订阅

创建预留mb21添加附加字段的增强(在屏幕没有需要的字段但是表RKPF和RSEB有):

我们的需求是在表RESB里面有个特殊库存字段SOBKZ,可是在MB11前台操作里面却没有,所以希望通过增强和BAPI来实现这个字段的赋值

1.首先创建一个附加的结构ZSRESB_APPEND,里面有字段RSPOS,SOBKZ
2.BADI:MB_RES_BAPI_CREATE1对他进行实现,里面代码如下:
  DATA: LS_EXTENSION LIKE LINE OF IT_EXTENSION_IN.
  DATA: LS_RESB LIKE LINE OF RESB.
  DATA: LS_ZRESB TYPE ZSRESB_APPEND.
  DATA: L_INDEX TYPE SY-TABIX.
  BREAK ZZWANGLP.
  LOOP AT IT_EXTENSION_IN INTO LS_EXTENSION.

    IF LS_EXTENSION-STRUCTURE = ‘ZSRESB_APPEND’.

      MOVE LS_EXTENSION-VALUEPART1 TO LS_ZRESB-RSPOS.
      MOVE LS_EXTENSION-VALUEPART2 TO LS_ZRESB-SOBKZ.

      READ TABLE RESB INTO LS_RESB INDEX LS_ZRESB-RSPOS.
      IF SY-SUBRC IS INITIAL.

        LS_RESB-SOBKZ = LS_ZRESB-SOBKZ.
        MODIFY RESB FROM LS_RESB INDEX LS_ZRESB-RSPOS TRANSPORTING SOBKZ.

      ENDIF.
    ENDIF.

  ENDLOOP.
3.在调用BAPI的时候对相应的附加结构赋值:
*&———————————————————————*
*& Report  ZWLP_RES
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT  ZWLP_RES.
PERFORM FRM_CREATE_RESER.
*———————————————————————-*
***INCLUDE LZMM_EAMF01 .
*———————————————————————-*
*&———————————————————————*
*&      Form  FRM_CREATE_RESER
*&———————————————————————*
*       创建预留
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM FRM_CREATE_RESER .
  DATA: BEGIN OF LS_HEADER.
          INCLUDE STRUCTURE BAPI2093_RES_HEAD.
  DATA: END OF LS_HEADER.
  DATA: BEGIN OF LT_ITEM OCCURS 0.
          INCLUDE STRUCTURE BAPI2093_RES_ITEM.
  DATA: END OF LT_ITEM.
  DATA: BEGIN OF LT_RETURN OCCURS 0.
          INCLUDE STRUCTURE BAPIRET2.
  DATA: END OF LT_RETURN.

  DATA: BEGIN OF LT_EXT OCCURS 0.
          INCLUDE STRUCTURE BAPIPAREX.
  DATA: END OF LT_EXT.

  DATA: BEGIN OF LT_PRO OCCURS 0.
          INCLUDE STRUCTURE BAPI_PROFITABILITY_SEGMENT.
  DATA: END OF LT_PRO.

  DATA: L_MSG TYPE STRING.
  DATA: L_ZGD LIKE ZTMM_GDXX-ZGD.
  DATA: L_INDEX TYPE I.
  DATA: L_RSNUM TYPE RSNUM.
  CLEAR: LT_ITEM,LT_ITEM[],LS_HEADER.

  LS_HEADER-RES_DATE   = SY-DATUM.  “基准日期
  LS_HEADER-MOVE_PLANT = ‘SD00′. “工厂
  LS_HEADER-COSTCENTER = ‘C311600001′. “成本中心
  LS_HEADER-MOVE_TYPE  = ‘201′. “移动类型
  IF LS_HEADER-MOVE_TYPE  = ‘251′.
    LS_HEADER-WBS_ELEM   = ”. “WBS元素
  ENDIF.

  LS_HEADER-CREATED_BY = SY-UNAME.

 

  LT_ITEM-MATERIAL     = ‘10000004′. “物料编码
  CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
    EXPORTING
      INPUT  = LT_ITEM-MATERIAL
    IMPORTING
      OUTPUT = LT_ITEM-MATERIAL.

  LT_ITEM-ENTRY_QNT     = 1. ” 需求数量
  LT_ITEM-STGE_LOC    = ”. “库存地点
  LT_ITEM-PLANT    = ‘SD00′. “库存地点
  LT_ITEM-MOVEMENT     = ‘X’. “允许预留的货物移动

*  GS_ZTMM_GDXX-SOBKZ = ‘K’.

  APPEND LT_ITEM.
  CLEAR: LT_ITEM.

  CLEAR: SY-MSGID,SY-MSGTY,SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3, SY-MSGV4.

  LT_EXT-STRUCTURE = ‘ZSRESB_APPEND’.
  LT_EXT-VALUEPART1 = ‘1′.
  LT_EXT-VALUEPART2 = ‘K’.
  APPEND LT_EXT.

  LT_ITEM-MATERIAL     = ‘10000014′. “物料编码
  CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
    EXPORTING
      INPUT  = LT_ITEM-MATERIAL
    IMPORTING
      OUTPUT = LT_ITEM-MATERIAL.

  LT_ITEM-ENTRY_QNT     = 1. ” 需求数量
  LT_ITEM-STGE_LOC    = ”. “库存地点
  LT_ITEM-PLANT    = ‘SD00′. “库存地点
  LT_ITEM-MOVEMENT     = ‘X’. “允许预留的货物移动

*  GS_ZTMM_GDXX-SOBKZ = ‘K’.

  APPEND LT_ITEM.
  CLEAR: LT_ITEM.

  CLEAR: SY-MSGID,SY-MSGTY,SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3, SY-MSGV4.

  LT_EXT-STRUCTURE = ‘ZSRESB_APPEND’.
  LT_EXT-VALUEPART1 = ‘2′.
  LT_EXT-VALUEPART2 = ‘Q’.
  APPEND LT_EXT.

  CLEAR: LT_ITEM,LT_EXT.

  CALL FUNCTION ‘BAPI_RESERVATION_CREATE1′
    EXPORTING
      RESERVATIONHEADER    = LS_HEADER
    IMPORTING
      RESERVATION          = L_RSNUM
    TABLES
      RESERVATIONITEMS     = LT_ITEM
      RETURN               = LT_RETURN
      EXTENSIONIN          = LT_EXT
      PROFITABILITYSEGMENT = LT_PRO.
  BREAK-POINT.
  IF L_RSNUM IS NOT INITIAL.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
      .
    WRITE: L_RSNUM.
  ELSE.
  ENDIF.

ENDFORM.                    ” FRM_CREATE_RESER


http://scnblogs.techweb.com.cn/winson/archives/15.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值