成本中心领用接口详解编程语言
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.
相关文章
- 为什么总是控制不住买东西?脑机接口告诉你答案
- 深入理解 抽象类和接口详解编程语言
- Java面向对象接口的应用实例练习详解编程语言
- Java学习笔记之二十二解析接口在Java继承中的用法及实例分析详解编程语言
- [PHP] PHP服务器接口SAPI中的结构体详解编程语言
- java通用URL接口地址调用方式GET和POST方式详解编程语言
- Java8 新特性函数式接口,以及和Lambda表达式的关系详解编程语言
- ython学习笔记(接口自动化框架 V2.0)详解编程语言
- [六] 函数式接口的复合方法示例 predicate 谓词逻辑运算 Function接口 组合运算 比较器 逆序 比较链详解编程语言
- Java高效编程之三【类和接口】详解编程语言
- api接口数据加密和身份验证详解编程语言
- Http接口调用示例教程详解编程语言
- 函数式接口(Functional Interface)详解编程语言
- ABAP接口用法详解编程语言
- Go-json解码到接口及根据键获取值详解编程语言
- 通用函数接口日志详解编程语言
- PHP 面向对象的特性 抽象类和接口详解编程语言
- PHP腾讯地图地图接口调用提示{ “status”: 110, “message”: “请求来源未被授权,此次请求无来源信息” }详解编程语言
- SAP获取函数/接口输入参数、输出参数、表结构等信息详解编程语言
- SAP发布REST/HTTP接口详解编程语言