http://www.cnblogs.com/rainysblog/p/6640515.html

ZPOSRM 采购订单下传SRM

*&---------------------------------------------------------------------*
*& Report  ZPOSRM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*REPORT  ZPOSRM.TABLES:EKKO.*SRM系统发送采购订单的数据定义
DATA: PROXY_SRM  TYPE REF TO ZCO_MI_ERP_PURCHASE_ORDER_OBD,OUTPUT  TYPE  ZMT_ERP_PURCHASE_ORDER_OBD,TAB_PODATA TYPE   ZDT_SRM_PURCHASE_TAB,WA_PODATA TYPE    ZDT_SRM_PURCHASE_ORDER_PO_DATA,TAB_POITEM TYPE   ZDT_SRM_PO_ITEM_TAB,WA_POITEM TYPE   ZDT_SRM_PO_ITEM,POHEADER TYPE ZDT_SRM_PO_HDR.      " 采购订单抬头信息
DATA:DT(30) TYPE C,TM(30) TYPE C.
DATA : BEGIN OF ST_EKKO,
EBELN LIKE EKKO-EBELN,
END OF ST_EKKO.
DATA IT_EKKO LIKE TABLE OF ST_EKKO.
*定义MESSAGE GUID
DATA:E_GUID_16 TYPE GUID_16,E_GUID_22 TYPE GUID_22,E_GUID_32 TYPE GUID_32.
DATA: BUKRS TYPE BUKRS.
DATA: WA_EBELN TYPE EKKO-EBELN.DATA:POKEY    TYPE    EBELN,PODATE    TYPE    ERDAT,VENDER    TYPE    LIFNR,POTYPE    TYPE    ESART,POSTATUS    TYPE    CHAR1,OUTPLANT    TYPE    RESWK,OSUSR1    TYPE    ZSUSR1,OSUSR2    TYPE    ZSUSR2,OSUSR3    TYPE    ZSUSR3,OSUSR4    TYPE    ZSUSR4,OSUSR5    TYPE    ZSUSR5.
DATA: PO_HEADER TYPE ZPO_HEADER.
DATA: IT_PO TYPE ZPURCHASING OCCURS 0 WITH HEADER LINE.
DATA: PO_ITEMS TYPE ZPO_ITEMS OCCURS 0 WITH HEADER LINE.
DATA: STAT TYPE STAT.
DATA: ZMSG TYPE ZMSG.
DATA: POLIST TYPE ZPONO OCCURS 0 WITH HEADER LINE.
*****************  Selection-screen  ***************************
SELECTION-SCREEN: BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.SELECT-OPTIONS:  ZEBELN FOR EKKO-EBELN.SELECTION-SCREEN: END OF BLOCK BLK.START-OF-SELECTION.***************************************************************IF ZEBELN[] IS INITIAL.MESSAGE S015(ZL) WITH '采购订单号不能为空'.STOP.ENDIF.
***********调用函数发送采购订单信息SELECT EBELNINTO TABLE POLISTFROM EKKOWHERE EBELN IN ZEBELN.IF POLIST[] IS INITIAL.MESSAGE S015(ZL) WITH '采购订单号不存在'.STOP.ENDIF.CALL FUNCTION 'ZPO_SEND'EXPORTINGDTYPE  = 8IMPORTINGZFLAG  = STATZMSG   = ZMSGTABLESPOLIST = POLIST.IF  STAT EQ 'E'.
******如果传输出错,则结束程序MESSAGE S015(ZL) WITH ZMSG.STOP.ENDIF.
***************************************************************MESSAGE I066(Z1) WITH '数据已传输完毕!'.

FUNCTION ZPO_SEND.

FUNCTION ZPO_SEND.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(DTYPE) TYPE  I OPTIONAL
*"  EXPORTING
*"     VALUE(ZFLAG) TYPE  STAT
*"     VALUE(ZMSG) TYPE  ZMSG
*"  TABLES
*"      POLIST STRUCTURE  ZPONO OPTIONAL
*"----------------------------------------------------------------------TABLES:EKKO.*SRM系统发送采购订单的数据定义DATA: PROXY_SRM  TYPE REF TO ZCO_MI_ERP_PURCHASE_ORDER_OBD,OUTPUT  TYPE  ZMT_ERP_PURCHASE_ORDER_OBD,TAB_PODATA TYPE   ZDT_SRM_PURCHASE_TAB,WA_PODATA TYPE    ZDT_SRM_PURCHASE_ORDER_PO_DATA,TAB_POITEM TYPE   ZDT_SRM_PO_ITEM_TAB,WA_POITEM TYPE   ZDT_SRM_PO_ITEM,POHEADER TYPE ZDT_SRM_PO_HDR.      " 采购订单抬头信息DATA:DT(30) TYPE C,TM(30) TYPE C.DATA : BEGIN OF ST_EKKO,EBELN LIKE EKKO-EBELN,END OF ST_EKKO.
*定义MESSAGE GUIDDATA:E_GUID_16 TYPE GUID_16,E_GUID_22 TYPE GUID_22,E_GUID_32 TYPE GUID_32.DATA:POKEY  TYPE  EBELN,PODATE  TYPE  ERDAT,VENDER  TYPE  LIFNR,POTYPE  TYPE  ESART,POSTATUS  TYPE  CHAR1,OUTPLANT  TYPE  RESWK,OSUSR1  TYPE  ZSUSR1,OSUSR2  TYPE  ZSUSR2,OSUSR3  TYPE  ZSUSR3,OSUSR4  TYPE  ZSUSR4,OSUSR5  TYPE  ZSUSR5.DATA: PO_HEADER TYPE ZPO_HEADER.DATA: EBELN TYPE EBELN.DATA: BUDAT TYPE BUDAT.DATA: IT_PO TYPE ZPURCHASING OCCURS 0 WITH HEADER LINE.DATA: PO_ITEMS TYPE ZPO_ITEMS OCCURS 0 WITH HEADER LINE.DATA: FLAGN TYPE I.DATA:WA_MSEG TYPE MSEG.DATA: BUDAT101 TYPE BUDAT.DATA: BUDAT103 TYPE BUDAT.DATA: BUDAT105 TYPE BUDAT.DATA:TMP_ITMSUSR1 LIKE EKBES-WAMNG.DATA:TMP_ITMSUSR101 LIKE EKBES-WAMNG.DATA:TMP_ITMSUSR103 LIKE EKBES-WAMNG.DATA:TMP_ITMSUSR105 LIKE EKBES-WAMNG.DATA: BUKRS TYPE BUKRS.  "公司代码DATA: WERKS TYPE WERKS.DATA: LGORT TYPE LGORT_D.DATA: Z_ZSRMLOG LIKE ZSRMLOG OCCURS 0 WITH HEADER LINE.**********************************************************************
* START OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP项目一期>DATA: ZML_POHEADER TYPE ZSMLPO_HDR OCCURS 0 WITH HEADER LINE.DATA: ZML_POITEMS TYPE ZSMLPO_ITEM OCCURS 0 WITH HEADER LINE.DATA: ZML_RET_MSGS TYPE ZSMLPO_MSG1 OCCURS 0 WITH HEADER LINE.
* END OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP项目一期>
***************************************************************IF POLIST[] IS INITIAL.ZFLAG = 'E'.ZMSG = '采购订单号不能为空'.FLAGN = '0'.ELSE.FLAGN = 1.ENDIF.IF FLAGN = 1.
*根据采购订单号查找采购订单的详细信息CLEAR TAB_PODATA[].LOOP AT POLIST INTO EBELN.CALL FUNCTION 'ZGET_PO_INFO'EXPORTINGOBJECT_KEY = EBELNIMPORTINGPOKEY      = POKEYPODATE     = PODATEVENDER     = VENDERPOTYPE     = POTYPEPOSTATUS   = POSTATUSOUTPLANT   = OUTPLANTHEADER     = PO_HEADEROSUSR1     = OSUSR1OSUSR2     = OSUSR2OSUSR3     = OSUSR3  "公司代码OSUSR4     = OSUSR4OSUSR5     = OSUSR5TABLESPURCHASING = IT_POITEMS      = PO_ITEMS.FLAGN = 1.BUKRS  = OSUSR3. "公司代码IF OSUSR5 = 'X'.ZFLAG = 'E'.CONCATENATE '采购订单号' EBELN '不存在' INTO ZMSG.FLAGN = 0.ENDIF.IF  FLAGN = 1.
* START OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下载>IF PO_HEADER-EKORG+0(1) EQ 'I'.clear zml_poheader.move-corresponding po_header to zml_poheader.append zml_poheader.clear zml_poitems.loop at po_items.clear zml_poitems.move-corresponding po_items to zml_poitems.append zml_poitems.clear po_items.endloop.ELSE.
* END OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下载>MOVE-CORRESPONDING PO_HEADER TO POHEADER.CLEAR TAB_POITEM[].LOOP AT PO_ITEMS.MOVE-CORRESPONDING PO_ITEMS TO WA_POITEM.APPEND WA_POITEM TO TAB_POITEM.IF WERKS IS INITIAL.WERKS = WA_POITEM-WERKS.ENDIF.IF LGORT IS INITIAL.LGORT = WA_POITEM-LGORT.ENDIF.CLEAR WA_POITEM.ENDLOOP.WA_PODATA-PO_HDR = POHEADER.WA_PODATA-PO_ITEM = TAB_POITEM[].APPEND WA_PODATA TO TAB_PODATA.IF DTYPE EQ 8.CALL FUNCTION 'GUID_CREATE'IMPORTINGEV_GUID_16 = E_GUID_16EV_GUID_22 = E_GUID_22EV_GUID_32 = E_GUID_32.Z_ZSRMLOG-BUKRS = BUKRS.Z_ZSRMLOG-WERKS = WERKS.Z_ZSRMLOG-LGORT = LGORT.Z_ZSRMLOG-EBELN = EBELN.Z_ZSRMLOG-MSGID = E_GUID_32.Z_ZSRMLOG-BTYPE = 'ZSRMPO'.Z_ZSRMLOG-ZFLAG = 'H'.Z_ZSRMLOG-ZYEAR = SY-DATUM+0(4). "记录年份Z_ZSRMLOG-ORDERNO = EBELN.Z_ZSRMLOG-ZPDATE = SY-DATUM.Z_ZSRMLOG-ZPTIME = SY-UZEIT.Z_ZSRMLOG-RECEIVER = 'SRM'.Z_ZSRMLOG-SENDER = 'ERP'.APPEND Z_ZSRMLOG.INSERT ZSRMLOG FROM TABLE Z_ZSRMLOG ACCEPTING DUPLICATE KEYS.ENDIF.ENDIF."ADD OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下载>ENDIF.ENDLOOP.
**************************************************************CONCATENATE SY-DATUM+0(4) '-' SY-DATUM+4(2) '-' SY-DATUM+6(2) INTO DT.CONCATENATE SY-UZEIT+0(2) ':' SY-UZEIT+2(2) ':' SY-UZEIT+4(2) INTO TM.CONCATENATE DT TM INTOOUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-MSGDTSEPARATED BY SPACE.CALL FUNCTION 'GUID_CREATE'IMPORTINGEV_GUID_16 = E_GUID_16EV_GUID_22 = E_GUID_22EV_GUID_32 = E_GUID_32.
**抬头赋值OUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-GUID = E_GUID_32.OUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-SENDER = 'ERP' ."发送方OUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-SOURCE = 'ERP' ."消息来源OUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-BTYPE ='SRM_IF_PURCHASEORDER'.CONCATENATE SY-DATUM+0(4) '-' SY-DATUM+4(2) '-' SY-DATUM+6(2)INTO DT.CONCATENATE SY-UZEIT+0(2) ':' SY-UZEIT+2(2) ':' SY-UZEIT+4(2)INTO TM.CONCATENATE DT TM INTOOUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-MSGDTSEPARATED BY SPACE.OUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_HDR-BDOCNUM =PO_HEADER-EBELN.  "采购订单号
*
* START OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下传>IF NOT TAB_PODATA[] IS INITIAL.
* END OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下传>
**行项赋值OUTPUT-MT_ERP_PURCHASE_ORDER_OBD-MSG_BODY-PO_DATA = TAB_PODATA[].
*****发送数据TRY.CREATE OBJECT PROXY_SRM.CALL METHOD PROXY_SRM->EXECUTE_ASYNCHRONOUSEXPORTINGOUTPUT = OUTPUT.COMMIT WORK.
****记录日志CATCH CX_AI_SYSTEM_FAULT.SYST-MSGID = 'ZL'.SYST-MSGNO = '015'.SYST-MSGTY = 'E'.SYST-MSGV1 = '向SRM发送数据出错'.ENDTRY.IF DTYPE EQ 1.Z_ZSRMLOG-BUKRS = BUKRS.Z_ZSRMLOG-WERKS = WERKS.Z_ZSRMLOG-LGORT = LGORT.Z_ZSRMLOG-EBELN = EBELN.Z_ZSRMLOG-MSGID = E_GUID_32.Z_ZSRMLOG-BTYPE = 'POAUT'.Z_ZSRMLOG-ZYEAR = DT. "记录年份Z_ZSRMLOG-ORDERNO = EBELN.Z_ZSRMLOG-ZPDATE = SY-DATUM.Z_ZSRMLOG-ZPTIME = SY-UZEIT.Z_ZSRMLOG-RECEIVER = 'SRM'.Z_ZSRMLOG-SENDER = 'ERP'.APPEND Z_ZSRMLOG.INSERT ZSRMLOG FROM TABLE Z_ZSRMLOG ACCEPTING DUPLICATE KEYS.ENDIF.
* START OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下传>if zml_poheader[] is not initial and zml_poitems[] is not initial.
*     send po info to srm via cis (soa)call function 'ZMLSCP1_FR0013'tablespohdear        = zml_poheaderpoitems        = zml_poitemsret_msgs       = zml_ret_msgs.endif.ELSE."if zml_poheader[] is initial or zml_poitems[] is initial.zflag = 'E'.zmsg = '采购订单未发送(抬头或行项为空)'.else.
*     send po info to srm via cis (soa)call function 'ZMLSCP1_FR0013'tablespohdear        = zml_poheaderpoitems        = zml_poitemsret_msgs       = zml_ret_msgs.endif.ENDIF.
* END OF CORRECTION  <2016/12/23> BY <邬清波> <美菱SCP一期PO下传>ENDIF.ZFLAG = 'S'.ZMSG = '采购订单发送成功'.ENDFUNCTION.

SAP采购订单下传SRM相关推荐

  1. SAP 采购订单的批量修改

    前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 现在有一个需求,我们需要冻结一批采购订单,但是由于批量冻结的后果无法预知,我们打算用一个折中的办法. 利用采购订单行项目中 ...

  2. SAP采购订单科目分配类别P与Q解析

    SAP采购订单科目分配类别P与Q解析 在采购单科目分配类别(Account Assignment Category)一栏中有P和Q,都是对项目物资的采购,两者有何区别?我们一起来看一看. 1,首先了解 ...

  3. SAP 采购订单显示含税价制作方案

    SAP 采购订单显示含税价制作方案 轻松解决SAP系统采购信息计量中物料价格不能保存含税价问题 我们在和供应商谈价时,大部分国内供应商的报价都是含税的,然而我们现在在系统中维护采购信息记录时, 只能输 ...

  4. SAP 采购订单税金抓取方法

    SAP 采购订单税金抓取方法: 一.找表字段: 1.在EKKO表里找到采购订单的单据条件号:EKKO-KNUMV 2.在KONV条件(事务数据)表内找到单据条件号:KONV-KNUMV 行项目号:KO ...

  5. SAP采购订单创建预付款并删除

    采购订单预付款的删除@jettai 在SAP采购订单创建预付款 SAP系统支持创建采购订单的时候,选择预付款,并创建预付款请求. 针对行项目的预付款请求可以在如下图 创建预付款请求 在采购订单创建完毕 ...

  6. sap采购订单更改记录_SAP标准采购流程

    在SAP中,一个完整的采购流程包含采购申请.订单处理.货物接收.发票校验.付款清账五大环节.也有企业不通过SAP管理采购申请,采购流程从采购订单开始.本文介绍SAP标准的材料采购流程,以便大家理解采购 ...

  7. SAP 采购订单打印完后不可以取消审批

    通常情况下PO采购订单打印之后不允许通过 ME28 或 ME29N 弃审修改. 这时候可以使用网上推荐的多个方法临时性解决.比如ME9F插入一条采购订单消息,然后让SAP误以为订单没有完成,从而允许M ...

  8. sap采购订单更改记录_SAP系统如何实现减税:增值税16%

    对于税率.税码和税科目的变更,总体方案是尽可能让每一个功能默认,即使是QAD软件功能相对较少的情况下,我们也是如此,更何况SAP强大的定制功能呢. 个人觉得要变更税,必须理解SAP系统税的配置原理.流 ...

  9. SAP 采购订单打印之后不能取消审核问题的解决(修改配置)

    通常情况下PO采购订单打印之后不允许通过 ME28 或 ME29N 弃审修改. 如果强行弃审核会出现   ME175 错误. "Document has already been outpu ...

最新文章

  1. 计算机插座符号,插座图形符号
  2. .net core不能使用httpget_.NET Core 中正确使用 HttpClient 的姿势
  3. 第四篇:new和delete的基本用法
  4. newifi3高恪魔改最新_12.08达达最新球球id账号呆瓜表
  5. WCF - MaxStringContentLength MaxReceivedMessageSize
  6. 微博表情插入mysql数据库,表情都是四字节字符
  7. 为什么有一些PDF转换成Word后是乱码?
  8. 如何优雅的快速下载谷歌云盘的大文件 (二)
  9. logging 详解第三期:Logging 不为人知的二三事
  10. Dubbo+zookeeper
  11. Dreamweaver CS6实战手册
  12. 测试人跳槽~怎么说离职原因新的公司比较能接受?
  13. 双链路热备份(负载分担)实验
  14. 基于机器学习的电影票房分析与预测系统
  15. 前端项目的总结——为什么要组件化?
  16. 微星主板在有RAID的情况下在NVME的SSD上安装Win10
  17. Android设备通过USB共享网络给OpenWrt路由器
  18. Session与Cookie底层原理
  19. JAVA——Java后端技术体系韩顺平框架图_韩顺平Java基础学习路线图
  20. PHP实现获取url地址中一级域名

热门文章

  1. 四、创建第一个springboot项目
  2. 如何提高强化学习效果?内在奖励和辅助任务
  3. 「尖峰对话」问题征集:向张宏江和John Hopcroft 近距离提问
  4. 阿里专家张磊:云原生为什么对云计算生态充满吸引力?
  5. net::ERR_INCOMPLETE_CHUNKED_ENCODING
  6. 如何建设数字中国?人民日报推出四个整版观察
  7. Transformer的潜在竞争对手QRNN论文解读,训练更快的RNN
  8. 经济学人:清华大学或将迅速成为全球科研领军者
  9. 玩转数据、拥抱智能 | 清华大学大数据能力提升项目宣讲会火热来袭
  10. 半世纪全球顶级学者迁移图(附视频、亿级学术信息)| 数据院科技大数据研究中心发布