创建PR:
BAPI_REQUISITION_CREATE

BAPI_PR_CREATE                 "Create Enjoy Purchase Requisistion(这是新函数)

BAPI_PR_CHANGE
BAPI_PR_CREATE
BAPI_PR_GETDETAIL

相关函数:

函数组 函数组短文本
功能模块名称 函数模块短文本

MEWF 批准的BAPI
BAPI_REQUISITION_RELEASE 批准采购请求
BAPI_REQUISITION_RELEASE_GEN
BAPI_REQUISITION_RESET_RELEASE 取消请购的下达
BAPI_REQUISITION_RESET_REL_GEN

MEWQ
BAPI_REQUISITION_CHANGE
BAPI_REQUISITION_CREATE
BAPI_REQUISITION_DELETE
BAPI_REQUISITION_GETDETAIL
BAPI_REQUISITION_GETITEMS
BAPI_REQUISITION_GETITEMSREL
BAPI_REQUISITION_GETRELINFO

FUNCTION ZRFC_OA_CREATE_PR.
*"----------------------------------------------------------------------
*"*"Local interface:
*" EXPORTING
*" VALUE(EX_RESULT) TYPE CHAR1
*" VALUE(EX_BANFN) TYPE BANFN
*" TABLES
*" DATA_TAB STRUCTURE ZOA_PR01
*" RETURN STRUCTURE BAPIRET2
*" PR_NEW STRUCTURE ZOA_PR02
*"----------------------------------------------------------------------

DATA: GT_DATA TYPE TABLE OF ZOA_PR01 WITH HEADER LINE .

DATA: PR_ITEM LIKE TABLE OF BAPIEBANC WITH HEADER LINE,
PR_ACCOUNT LIKE TABLE OF BAPIEBKN WITH HEADER LINE,
PR_ITEM_ID LIKE TABLE OF BAPIEBANTX WITH HEADER LINE,
PR_RETURN LIKE TABLE OF BAPIRETURN WITH HEADER LINE,
PR_REL LIKE TABLE OF BAPIMMPARA WITH HEADER LINE.
DATA: L_RETURN LIKE PR_RETURN.
DATA: LV_MESSAGE(255).
DATA: PR_NO TYPE BAPIEBANC-PREQ_NO.
DATA: BNFPO TYPE BNFPO.
DATA: PP_FILE TYPE STRING.

RETURN-MESSAGE = '开始调用接口。创建采购申请'.
RETURN-TYPE = 'I'.
APPEND RETURN.

IF DATA_TAB[] IS INITIAL.
RETURN-MESSAGE = '没有可以处理数据'.
RETURN-TYPE = 'E'.
APPEND RETURN.
ENDIF.

LOOP AT DATA_TAB.

MOVE-CORRESPONDING DATA_TAB TO GT_DATA.

DATA: LINE(10) TYPE C.
DATA: LV_DATE TYPE SY-DATUM.

WRITE SY-TABIX TO LINE.

IF DATA_TAB-MATNR IS INITIAL .
CONCATENATE '行 ' LINE ' 请输入物料编号' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
GT_DATA-MATNR = DATA_TAB-MATNR."物料编号
ENDIF.

IF DATA_TAB-MENGE IS INITIAL.
CONCATENATE '行 ' LINE ' 请输入数量' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
GT_DATA-MENGE = DATA_TAB-MENGE."数量
ENDIF.

IF DATA_TAB-MEINS IS INITIAL.
CONCATENATE '行 ' LINE ' 请输入单位' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
GT_DATA-MEINS = DATA_TAB-MEINS."单位
ENDIF.

* GT_DATA-MEINS = 'PCS'. "强制使用PCS

IF DATA_TAB-EEIND IS INITIAL.
CONCATENATE '行 ' LINE ' 请输入交货时间' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
* CONCATENATE DATA_TAB-EEIND+0(4) DATA_TAB-EEIND+5(2) DATA_TAB-EEIND+8(2) INTO LV_DATE.
** gt_data-eeind = data_tab-value_0005."交货时间
* CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
* EXPORTING
* DATE = LV_DATE
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
** WRITE : / '请按格式YYYY-MM-DD 输入正确的日期'.
* CONCATENATE '行 ' LINE ' 请按格式YYYY-MM-DD 输入正确的日期' INTO RETURN-MESSAGE .
* APPEND RETURN.
* ELSEIF SY-SUBRC = 0 .
* GT_DATA-EEIND = LV_DATE.
GT_DATA-EEIND = DATA_TAB-EEIND.
* ENDIF.

ENDIF.
GT_DATA-BSART = DATA_TAB-BSART."'NB'. "凭证类型
GT_DATA-WERKS = DATA_TAB-WERKS ."'1000'. "工厂
COLLECT GT_DATA.
CLEAR GT_DATA.
ENDLOOP.

LOOP AT GT_DATA.
BNFPO = GT_DATA-BNFPO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = BNFPO
IMPORTING
OUTPUT = BNFPO.

PR_ITEM-PREQ_ITEM = BNFPO. "项目

PR_ITEM-MATERIAL = GT_DATA-MATNR.
PR_ITEM-DOC_TYPE = GT_DATA-BSART. "凭证类型

PR_ITEM-ACCTASSCAT = GT_DATA-KNTTP."科目分配类别
PR_ITEM-SHORT_TEXT = GT_DATA-TXZ01."短文本
PR_ITEM-QUANTITY = GT_DATA-MENGE. "数量
PR_ITEM-UNIT = GT_DATA-MEINS."单位
PR_ITEM-DELIV_DATE = GT_DATA-EEIND. "交货日期
PR_ITEM-MAT_GRP = GT_DATA-MATKL. "物料组
PR_ITEM-PLANT = GT_DATA-WERKS."工厂
PR_ITEM-PUR_GROUP = GT_DATA-EKGRP."采购组
PR_ITEM-PREQ_NAME = GT_DATA-AFNAM."申请者
PR_ITEM-TRACKINGNO = GT_DATA-BEDNR."需求跟踪号
PR_ITEM-C_AMT_BAPI = GT_DATA-PREIS."评估价格
PR_ITEM-CURRENCY = GT_DATA-WAERS."货币码
PR_ITEM-PRICE_UNIT = GT_DATA-PEINH."价格单位
PR_ITEM-MRP_CONTR = GT_DATA-DISPO."MRP控制者
PR_ITEM-TRACKINGNO = GT_DATA-BEDNR."跟踪号
PR_ITEM-STORE_LOC = GT_DATA-LGORT."库存
PR_ITEM-VEND_MAT = GT_DATA-IDNLF." OA : ID

PR_ITEM-GR_IND = 'X'."GR
PR_ITEM-IR_IND = 'X'."IR

APPEND PR_ITEM.
CLEAR PR_ITEM.

pr_account-preq_item = bnfpo. "项目
pr_account-g_l_acct = gt_data-sakto. "总帐科目
pr_account-cost_ctr = gt_data-kostl. "成本中心
* pr_account-asset_no = gt_data-anln1. "资产
* pr_account-order_no = gt_data-aufnr. "订单
* pr_account-co_area = 'BELL'.
APPEND pr_account.
CLEAR pr_account.

PR_REL-PO_REL_IND = 'X'.
PR_REL-REL_IND ='X'.
APPEND PR_REL.
*
* pr_item_id-preq_item = bnfpo."项目
* pr_item_id-text_id = 'B03'.
* pr_item_id-text_line = gt_data-str1."行项目文本-传送文本
* APPEND pr_item_id.
* CLEAR pr_item_id.
*
* pr_item_id-preq_item = bnfpo."项目
* pr_item_id-text_id = 'B07'.
* pr_item_id-text_line = gt_data-str2."行项目文本-预算年度
* APPEND pr_item_id.
* CLEAR pr_item_id.
*
* pr_item_id-preq_item = bnfpo."项目
* pr_item_id-text_id = 'B08'.
* pr_item_id-text_line = gt_data-str3."行项目文本-资产类别
* APPEND pr_item_id.
* CLEAR pr_item_id.
*
* AT END OF BEDNR.
*
*
* ENDAT.
ENDLOOP.

CALL FUNCTION 'BAPI_REQUISITION_CREATE'
EXPORTING
AUTOMATIC_SOURCE = ''
SKIP_ITEMS_WITH_ERROR = ''
IMPORTING
NUMBER = PR_NO
TABLES
REQUISITION_ITEMS = PR_ITEM
REQUISITION_ACCOUNT_ASSIGNMENT = pr_account
RETURN = PR_RETURN.

LOOP AT PR_RETURN .
MOVE-CORRESPONDING PR_RETURN TO RETURN.
APPEND RETURN.
ENDLOOP.
* APPEND LINES OF PR_RETURN TO RETURN.
READ TABLE PR_RETURN WITH KEY TYPE = 'E' .

IF SY-SUBRC = 0.
CLEAR: LV_MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT PR_RETURN INTO L_RETURN WHERE TYPE = 'E' .
CONCATENATE LV_MESSAGE L_RETURN-MESSAGE ';'
INTO LV_MESSAGE.
ENDLOOP.
CONCATENATE GT_DATA-BEDNR LV_MESSAGE INTO PR_NEW-TEXT.
APPEND PR_NEW.
CLEAR PR_NEW.
EX_RESULT = 'E'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CONCATENATE PR_NO '创建成功' INTO PR_NEW-TEXT.
PR_NEW-BANFN = PR_NO.
APPEND PR_NEW.
CLEAR PR_NEW.
EX_RESULT = 'S'.
EX_BANFN = PR_NO.
*批准采购申请
WAIT UP TO 5 SECONDS.
PERFORM APPROVE_PR USING PR_NO.
ENDIF.

FREE PR_ITEM.
FREE PR_ACCOUNT.
FREE PR_ITEM_ID.
FREE PR_RETURN.

RETURN-MESSAGE = '结束调用接口。创建采购申请'.
RETURN-TYPE = 'I'.
APPEND RETURN.

ENDFUNCTION.

RFC 在OA中创建PR的更多相关文章

  1. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

  2. 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像

    Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...

  3. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  4. 【初学者指南】在ASP.NET MVC 5中创建GridView

    介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些 ...

  5. SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...

  6. SAP CRM 在Web UI中创建搜索帮助

    多数情况下,在Web UI为一个特定的字段提供搜索帮助需要在事务SE11中创建搜索帮助. (注:也可以通过在SE24中创建一个类并实现实现IF_BSP_WD_CUSTOM_F4_CALLBACK接口来 ...

  7. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  8. 如何在ARM中创建Express Route

    很早之前就想试试Azure的express route,但是一直没有找到合适的机会,正好有个客户需要上express route,所以最近先自己研究研究,防止在做poc的时候耗费更多时间,本次场景我们 ...

  9. 在powerdesigner中创建物理数据模型

    物理数据模型(PDM)是以常用的DBMS(数据库管理系统)理论为基础,将CDM/LDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本.PDM叙述数据库的物理实现,是对真实数据库的描述 PDM ...

随机推荐

  1. Java自动生成asmx的webservice代码

    第一种方式:针对CXF自动生成的代码对响应类大小写区别问题,可以使用此方法. 工具为Eclipse. 新建Web Service Client. 输入地址点击finish即可自动生成. 调用方式: p ...

  2. LayUI分页基于ASP.NET MVC

    ---恢复内容开始--- 今天写了挺久的分页,百度了很多都没有很好的.Net实例,今天我来更新一期关于layuiTable分页 首先你得理解layui的官方文档的Table分页部分,我在这里附上地址 ...

  3. reactNative 介绍

    React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的UI框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安 ...

  4. 大数据学习——hdfs集群启动

    第一种方式: 1 格式化namecode(是对namecode进行格式化) hdfs namenode -format(或者是hadoop namenode -format) 进入 cd /root/ ...

  5. OO第三次作业总结(JML)

    第三单元的课题是JML, 即java建模语言.JML是一种描述接的语言.通过前置条件和后置条件,描述一个模块的行为.本单元我们扮演一个项目中的一员,完成自己的一小部分工作,最终实现整个项目.而限制我们 ...

  6. 表连接sql执行计划学习

    循环嵌套连接(Nested Loop Join) 合并连接(Merge Join) 哈西匹配(Hash Join) 文章:浅谈SQL Server中的三种物理连接操作 循环嵌套,如果内循环列上有索引, ...

  7. eclipse pom.xml 报错org.apache.maven.plugin.war.WarMojo的解决办法

    如题,maven项目eclipse提示pom.ml有错,提示信息就是org.apache.maven.plugin.war.WarMojo. 然后执行 maven install 出现如下错误提示 [ ...

  8. android修改系统时系统黑屏时不进入休眠状态

    基于android4.4修改,在frameworks/base/services/java/com/android/server/power/PowerManagerService.java里,查看休 ...

  9. 同步OR异步?WebFlux开发真的比Servlet开发要快?顺便再科普下CompletableFuture

    在看下文之前,先给大家科普一点基础知识 Runable:线程任务类接口,没有返回值 Callable:与上面的不同就是有返回值 Executor:定义了线程池执行任务的接口,不过只定义了Runable ...

  10. PatentTips - Solid State Disk (SSD) Device

    BACKGROUND OF THE INVENTION A SSD apparatus is a large-capacity data storage device using a nonvolat ...