在SAP中通过编程更改库位号(保管员名)
来源:互联网 发布:游戏加速器mac 编辑:程序博客网 时间:2024/05/20 09:46
这是以前写的SAP程序,特点是通过录入(更改)界面,即时驱动批输入模块,后台处理数据。程序清单如下:
REPORT ZBH NO STANDARD PAGE HEADING LINE-SIZE 95 MESSAGE-ID Z1.
*&---------------------------------------------------------------------&
* 修改帐本号(XXXX) by Paul Feng(FQ) 2003.07.07
* Ver1.5 Last Modified 2005.01.10
*&---------------------------------------------------------------------&
TABLES: MARA, MAKT.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: WZDM(18) TYPE C, BH(18) TYPE C, WLMS LIKE MAKT-MAKTX.
SELECTION-SCREEN BEGIN OF BLOCK XGBH WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 2.
SELECT-OPTIONS: DM FOR MARA-MATNR NO-EXTENSION NO INTERVALS OBLIGATORY
MEMORY ID MAT.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK XGBH.
START-OF-SELECTION.
IF NOT DM-LOW IS INITIAL.
WZDM = DM-LOW.
CALL FUNCTION 'ZFORMATDM'
CHANGING MATERIALDM = WZDM.
SELECT SINGLE * FROM MARA WHERE MATNR EQ WZDM.
IF SY-SUBRC EQ 0.
BH = MARA-BISMT.
CALL SCREEN '0100'.
ELSE.
MESSAGE I079 WITH DM-LOW.
ENDIF.
ENDIF.
END-OF-SELECTION.
FORM DYNPRO USING DYNBEGIN NAME VALUE.
IF DYNBEGIN = 'X'.
CLEAR BDCDATA.
MOVE: 'X' TO BDCDATA-DYNBEGIN,
NAME TO BDCDATA-PROGRAM,
VALUE TO BDCDATA-DYNPRO.
APPEND BDCDATA.
ELSE.
CLEAR BDCDATA.
MOVE: NAME TO BDCDATA-FNAM,
VALUE TO BDCDATA-FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'XGBH'.
SET TITLEBAR '100'.
WZDM = DM-LOW.
SHIFT WZDM LEFT DELETING LEADING '0'.
SELECT SINGLE * FROM MAKT WHERE MATNR = DM-LOW.
IF SY-SUBRC EQ 0.
WLMS = MAKT-MAKTX.
ELSE.
WLMS = ''.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE USER_COMMAND_0100 INPUT.
IF SY-UCOMM EQ 'WRITE'.
IF WZDM IS INITIAL.
MESSAGE E096.
ELSE.
CALL FUNCTION 'ZFORMATDM'
CHANGING MATERIALDM = WZDM.
SELECT SINGLE * FROM MARA WHERE MATNR EQ WZDM.
IF SY-SUBRC EQ 0.
PERFORM ZBHXG USING WZDM BH. "BDC Direct Input
IF SY-SUBRC EQ 0.
MESSAGE I131 WITH '成功!'.
ELSE.
MESSAGE I131 WITH '失败!原因未知。'.
ENDIF.
ELSE.
SHIFT WZDM LEFT DELETING LEADING '0'.
MESSAGE E079 WITH WZDM.
ENDIF.
ENDIF.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
FORM ZBHXG USING P_WZDM
P_BH.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR' P_WZDM.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-KZSEL(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(01)' 'X'.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'BDC_CURSOR'
'MARA-BISMT'.
perform bdc_field using 'MARA-BISMT'
P_BH.
perform bdc_transaction using 'MM02'.
ENDFORM. " ZBHXG
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> '/'.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
FORM BDC_TRANSACTION USING TCODE.
TABLES: T100.
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: CTUMODE LIKE CTU_PARAMS-DISMODE VALUE 'N'.
DATA: CUPDATE LIKE CTU_PARAMS-UPDMODE VALUE 'L'.
DATA: E_GROUP(12), E_GROUP_OPENED.
DATA: E_USER(12), E_KEEP(1) TYPE C VALUE ''. " not keep session
DATA: E_HDATE LIKE SY-DATUM.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO MESSTAB.
L_SUBRC = SY-SUBRC.
LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.
SKIP.
IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
IF E_GROUP_OPENED = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
GROUP = E_GROUP
USER = E_USER
KEEP = E_KEEP
HOLDDATE = E_HDATE.
E_GROUP_OPENED = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE
TABLES DYNPROTAB = BDCDATA.
ENDIF.
REFRESH BDCDATA.
CLEAR T100.
ENDFORM.
- 在SAP中通过编程更改库位号(保管员名)
- 在C# 编程中通过类名动态创建实例
- 在myEclipse更改工程名
- 在SAP中通过批输入实现拣配
- 【android】在eclipse中更改应用包名及源码包名
- Javascript通过控制类名更改样式
- Unity在编辑器中通过代码更改Tag
- Unity中更改文件夹名
- MyEclipse中更改项目名
- 在linux中通过进程名获得进程id
- 在url中通过属性名获取属性值
- SAP中如何更改供应商账户组
- SAP 查表程序(通过字段,元素,表名,描述)查表
- VFP更改文件夹名(目录名)
- Android在一个APP中通过包名或类名启动另一个APP
- android 在一个APP中通过包名或类名启动另一个APP
- Android在一个APP中通过包名或类名启动另一个APP
- Android在一个APP中通过包名或类名启动另一个APP
- “日领日配”系统浅谈
- 网络性能健康检查表
- 青岛行散记
- 成为SAP开发的ABAP/Java双语者
- 通过二次开发在SAP R/3中实现库存日清功能
- 在SAP中通过编程更改库位号(保管员名)
- 在SAP中通过批输入实现拣配
- 利用VB开发SAP接口程序初探
- 也谈“ERP是否过时?”
- 信息化要量力而行
- 打造有企业特色的ERP
- 企业信息化之五大怪现象
- 100句最经典台词
- 中小企业上马ERP要谨慎