创建预留mb21添加附加字段的增强
創建預留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
總結
以上是生活随笔為你收集整理的创建预留mb21添加附加字段的增强的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ME2N标准报表中加EKKO/EKPO中
- 下一篇: SAP HR模块的基础数据表和增强配置