• RFC 在OA中创建PR


    创建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.

  • 相关阅读:
    深入理解jvm分享培训pdf(转载) 老李
    innobackupex自动备份脚本(增量备份,自动压缩)
    多线程调用生成主键流水号存储过程产生主键冲突问题解决方案
    mysql 5.7新数据库sys解析(一)
    根据日期累加金额的mysql
    mysql字符串分割函数(行转列)
    使用innobackupex备份mysql数据库
    css学习inlineblock详解及dispaly:inline inlineblock block 三者区别精要概括
    html良好结构之豆瓣风格
    HTML5学习笔记html5与传统html区别
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6404114.html
Copyright © 2020-2023  润新知