zl程序教程

您现在的位置是:首页 >  其他

当前栏目

成本中心领用接口详解编程语言

接口编程语言 详解 中心 成本
2023-06-13 09:11:50 时间

广州某粮油公司的接口,因为OA太死板,所以这边接口统一做成字段,值 的形式传递。

抬头结构:ZMMS001

KOSTL 1 类型 KOSTL CHAR 10 0 成本中心 

BLDAT 1 类型 BLDAT DATS 8 0 凭证中的凭证日期 

XBLNR 1 类型 XBLNR CHAR 16 0 参考凭证编号 

行项目结构:ZMMS002

ZEILE 1 类型 MBLPO NUMC 4 0 物料凭证中的项目 

MATNR 1 类型 MATNR CHAR 18 0 物料号 

WERKS 1 类型 WERKS_D CHAR 4 0 工厂 

LGORT 1 类型 LGORT_D CHAR 4 0 库存地点 

ERFMG 1 类型 ERFMG QUAN 13 3 以输入单位计的数量 

SGTXT 1 类型 SGTXT CHAR 50 0 项目文本 

ERFME 1 类型 ERFME UNIT 3 0 条目单位

函数代码:

FUNCTION ZMM_OAMB1A. 

*"---------------------------------------------------------------------- 

*"*"本地接口: 

*" TABLES 

*" T_TAB STRUCTURE ZJKS001 OPTIONAL 

*" T_TAB_I STRUCTURE ZJKS002 OPTIONAL 

*"---------------------------------------------------------------------- 

 DATA:S_TAB TYPE ZJKS001."表头结构 

 DATA:S_TAB_I TYPE ZJKS002."表体结构 

 FIELD-SYMBOLS: DYN_WA ,"表头 

 DYN_LA ,"表体 

 DYN_FIELD ."字段 

 DATA:GS_ZTMM_WADAT TYPE ZTMM_WADAT. 

 DATA:GT_ZMB1A01 TYPE TABLE OF ZMB1A01, 

 GS_ZMB1A01 LIKE LINE OF GT_ZMB1A01. 

 DATA:LV_NUM TYPE N. 

 DATA:LS_TABH TYPE ZMMS001, 

 LS_TABI TYPE ZMMS002. 

 DATA:LV_FUNC TYPE CHAR50."结构ID 

 DATA:LV_XBLNR TYPE XBLNR1. 

 DATA:GS_HEAD TYPE BAPI2017_GM_HEAD_01, 

 GV_CODE TYPE BAPI2017_GM_CODE VALUE 03, 

 GT_ITEM TYPE TABLE OF BAPI2017_GM_ITEM_CREATE, 

 GS_ITEM TYPE BAPI2017_GM_ITEM_CREATE, 

 GT_RETU TYPE TABLE OF BAPIRET2, 

 GS_RETU TYPE BAPIRET2, 

 GV_MDOC TYPE BAPI2017_GM_HEAD_RET-MAT_DOC. 

 DEFINE MESGADD."返回消息赋值 

 S_TAB-FIELDNAME = 1. 

 S_TAB-VALUE = 2. 

 APPEND S_TAB TO T_TAB. 

 END-OF-DEFINITION. 


"************************************************************正式程序 READ TABLE T_TAB INTO S_TAB WITH KEY FIELDNAME = FUNCTION. IF SY-SUBRC = 0. LV_FUNC = S_TAB-VALUE. IF LV_FUNC = OAMB1A. ELSE. REFRESH:T_TAB. MESGADD:RETURN E, MESSAGE 引用错误函数,请联系管理员!. RETURN. ENDIF. ELSE. REFRESH:T_TAB. MESGADD:RETURN E, MESSAGE 未指定函数!. RETURN. ENDIF. IF T_TAB[] IS INITIAL OR T_TAB_I[] IS INITIAL. REFRESH:T_TAB. MESGADD:RETURN E, MESSAGE 传入参数不完整,需要完整的表头表体信息!. RETURN. ENDIF. ASSIGN LS_TABH TO DYN_WA ."表头结构 ASSIGN LS_TABI TO DYN_LA ."表体结构
LOOP AT T_TAB INTO S_TAB."表头数据装换 ASSIGN COMPONENT S_TAB-FIELDNAME OF STRUCTURE DYN_WA TO DYN_FIELD . IF SY-SUBRC = 0. DYN_FIELD = S_TAB-VALUE. ENDIF. ENDLOOP. IF LS_TABH-KOSTL IS INITIAL. MESGADD:RETURN E, MESSAGE 成本中心不能为空!. ENDIF.
ASSIGN COMPONENT S_TAB_I-FIELDNAME OF STRUCTURE DYN_LA TO DYN_FIELD . IF SY-SUBRC = 0. DYN_FIELD = S_TAB_I-VALUE. ENDIF. AT END OF COL. LV_NUM = LV_NUM + 1. IF LS_TABI-MATNR IS INITIAL. MESGADD:RETURN E, MESSAGE 物料编码不能为空!. RETURN. ENDIF. IF LS_TABI-WERKS IS INITIAL. MESGADD:RETURN E, MESSAGE 工厂编码不能为空!. RETURN. ENDIF. IF LS_TABI-LGORT IS INITIAL. MESGADD:RETURN E, MESSAGE 库位编码不能为空!. RETURN. ENDIF. IF LS_TABI-ERFMG IS INITIAL. MESGADD:RETURN E, MESSAGE 数量字段不能为空!. RETURN. ENDIF. IF LS_TABI-ERFME IS INITIAL. MESGADD:RETURN E, MESSAGE 单位不能为空!. RETURN. ENDIF. CALL FUNCTION CONVERSION_EXIT_ALPHA_INPUT EXPORTING INPUT = LS_TABI-MATNR IMPORTING OUTPUT = LS_TABI-MATNR. CALL FUNCTION CONVERSION_EXIT_CUNIT_INPUT EXPORTING INPUT = LS_TABI-ERFME LANGUAGE = SY-LANGU IMPORTING OUTPUT = LS_TABI-ERFME EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. IF SY-SUBRC 0. ENDIF. GS_ITEM-MATERIAL = LS_TABI-MATNR. GS_ITEM-PLANT = LS_TABI-WERKS. IF GS_HEAD-DOC_DATE IS INITIAL. SELECT SINGLE * INTO CORRESPONDING FIELDS OF GS_ZTMM_WADAT FROM ZTMM_WADAT WHERE WERKS = LS_TABI-WERKS AND SDATE = SY-DATUM AND ETIME = SY-UZEIT AND STIME = SY-UZEIT. IF SY-SUBRC = 0. GS_HEAD-DOC_DATE = GS_ZTMM_WADAT-BUDAT. GS_HEAD-PSTNG_DATE = GS_ZTMM_WADAT-BUDAT. ELSE. GS_HEAD-DOC_DATE = SY-DATUM. GS_HEAD-PSTNG_DATE = SY-DATUM. ENDIF. ENDIF. GS_ITEM-STGE_LOC = LS_TABI-LGORT. GS_ITEM-MOVE_TYPE = 201. GS_ITEM-ENTRY_QNT = LS_TABI-ERFMG. GS_ITEM-ENTRY_UOM = LS_TABI-ERFME. IF LS_TABH-KOSTL IS INITIAL. MESGADD:RETURN E, MESSAGE 传递值中成本中心为空,请联系管理员!. RETURN. ENDIF. CALL FUNCTION CONVERSION_EXIT_ALPHA_INPUT EXPORTING INPUT = LS_TABH-KOSTL IMPORTING OUTPUT = LS_TABH-KOSTL. * CONCATENATE 000 LS_TABH-KOSTL INTO GS_ITEM-COSTCENTER. * CONDENSE GS_ITEM-COSTCENTER NO-GAPS. GS_ITEM-COSTCENTER = LS_TABH-KOSTL. GS_ITEM-ITEM_TEXT = LS_TABI-SGTXT. APPEND GS_ITEM TO GT_ITEM. "ADD BY LY FOR LOG * GS_ZMB1A01-ZJLLSH = GS_ZMB1A01-POSNR = LV_NUM. GS_ZMB1A01-XBLNR = GS_HEAD-REF_DOC_NO. GS_ZMB1A01-KOSTL = GS_ITEM-COSTCENTER. GS_ZMB1A01-MATNR = GS_ITEM-MATERIAL. GS_ZMB1A01-WERKS = GS_ITEM-PLANT. GS_ZMB1A01-LGORT = GS_ITEM-STGE_LOC. GS_ZMB1A01-ERFMG = GS_ITEM-ENTRY_QNT. GS_ZMB1A01-ERFME = GS_ITEM-ENTRY_UOM. GS_ZMB1A01-DAT = SY-DATUM. GS_ZMB1A01-TIM = SY-UZEIT. APPEND GS_ZMB1A01 TO GT_ZMB1A01. "ADD BY LY FOR LOG ENDAT. ENDLOOP. CLEAR:LV_XBLNR. SELECT SINGLE XBLNR INTO LV_XBLNR FROM MKPF WHERE XBLNR = LS_TABH-XBLNR. IF LV_XBLNR IS NOT INITIAL. MESGADD:RETURN S. RETURN. ENDIF.