ABAP function module同subroutine的比较

1. function module是全局性的

2.subroutine是局部的

3.function module可封装成RFC,供外部系统调用

4.subroutine一般情况下只能在程序内部调用

5.DEOMO:

  5.1: function module  

FUNCTION ZTEST_0001.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN_CHAR) TYPE  CHAR20 OPTIONAL
*"  EXPORTING
*"     VALUE(OUT_CHAR) TYPE  CHAR20
*"----------------------------------------------------------------------


out_char = '传出:' &&  in_char.





ENDFUNCTION.

5.2:subroutine

FORM p1 ."采购订单
  DATA:gs_poheader           TYPE                   bapimepoheader, "采购订单抬头数据
       gs_poheaderx          TYPE                   bapimepoheaderx, "采购订单抬头数据(更改参数) 针对要增加的内容做一个标记,其实标记过了才可以被修改的
       gt_return             TYPE STANDARD TABLE OF bapiret2,
       gwa_return            TYPE                   bapiret2,
       gt_item               TYPE STANDARD TABLE OF bapimepoitem, "采购订单行项目
       gwa_item              TYPE                   bapimepoitem,
       gt_itemx              TYPE STANDARD TABLE OF bapimepoitemx,
       gwa_itemx             TYPE                   bapimepoitemx,
       gt_poschedule         TYPE STANDARD TABLE OF bapimeposchedule, "采购订单交货计划行的字段
       gwa_poschedule        TYPE                   bapimeposchedule, "采购订单交货计划行的字段
       gt_poschedulex        TYPE STANDARD TABLE OF bapimeposchedulx,
       gwa_poschedulex       TYPE                   bapimeposchedulx,
       gt_pocond             TYPE STANDARD TABLE OF bapimepocond,
       gwa_pocond            TYPE                   bapimepocond, "采购订单中的条件
       gt_pocondx            TYPE STANDARD TABLE OF bapimepocondx,
       gwa_pocondx           TYPE                   bapimepocondx,
       gt_pocomponents       TYPE STANDARD TABLE OF bapimepocomponent,
       gwa_pocomponents      TYPE                   bapimepocomponent,
       gwa_pocomponents_temp TYPE                   bapimepocomponent,
       gt_pocomponentsx      TYPE STANDARD TABLE OF bapimepocomponentx,
       gwa_pocomponentsx     TYPE                   bapimepocomponentx.
  DATA:lv_num TYPE bapimepoheader-po_number.

  """"采购订单单据头赋值""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  gs_poheader-doc_type = 'ZPO2'."采购订单类型:自营订单
  gs_poheader-vendor = '0010000208'."供应商
  gs_poheader-purch_org = '1100'."采购组织
  gs_poheader-pur_group = 'A07'."采购组
  gs_poheader-comp_code = '1100'."公司的,
  gs_poheader-currency = 'CNY'."货币
  gs_poheader-doc_date = sy-datum."单据日期
  gs_poheader-langu = sy-langu."当前语言
  gs_poheader-status = 'I'." 采购单状态,在域中可以查到所有装   I:来自 BAPI 的采购订单
*      GS_POHEADER-INFO_UPD = 'I'.
*      GS_POHEADER-ITEM_INTVL = ''.
*      GS_POHEADER-ITEM_INTVL = ''.



  "采购订单抬头数据(更改参数) 针对要增加的内容做一个标记,其实标记过了才可以被修改的""""""""""""""""""""""""""""""""""""""""
  gs_poheaderx-doc_type = 'X'.
  gs_poheaderx-vendor = 'X'.
  gs_poheaderx-purch_org = 'X'.
  gs_poheaderx-pur_group = 'X'.
  gs_poheaderx-comp_code = 'X'.
  gs_poheaderx-doc_date = 'X'.
  gs_poheaderx-langu = 'X'.
  gs_poheaderx-currency = 'X'."货币
  gs_poheaderx-status = 'X'."货币
*      GS_POHEADERX-ITEM_INTVL = 'X'.


  "采购订单行项目""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  gwa_item-po_item = '1'. "采购凭证的项目编号
  gwa_item-material = '01.01.01.0060'."物料编号
  gwa_item-item_cat = ''."采购凭证中的项目类别  800 I=空
  "gwa_item-short_text = 'SHORT'."短文本,这个一般情况下不用,应该自动带出来,
  gwa_item-quantity = 1."采购订单数量
  gwa_item-po_unit = 'KG' ."采购订单的计量单位
  gwa_item-plant = '1120'. "工厂
  gwa_item-stge_loc = '1101'."库存地点
  gwa_item-tax_code = 'J2'."税码
  APPEND gwa_item TO gt_item.


  "采购订单行项目允许修改""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  gwa_itemx-po_item = '1'. "采购凭证的项目编号
  gwa_itemx-material = 'X'.
  "gwa_itemx-short_text = 'X'."短文本 "短文本,这个一般情况下不用,应该自动带出来,
  gwa_itemx-quantity = 'X'."采购订单数量
  gwa_itemx-po_unit = 'X' ."采购订单的计量单位
  gwa_itemx-plant = 'X'."工厂
  gwa_itemx-stge_loc = 'X'. "库存地点
  gwa_itemx-item_cat = 'X'.
  gwa_itemx-tax_code = 'X'.
  " GWA_ITEMX-DATE_QTY_FIXED = 'X'."报错,可能是版本问题
  APPEND gwa_itemx TO gt_itemx.


  "采购订单[交货计划行]的字段"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  gwa_poschedule-po_item = '1'. "采购凭证的项目编号
  gwa_poschedule-sched_line = 0001. "采购凭证的项目编号
  gwa_poschedule-del_datcat_ext = 'D'."交货日期的类别
  gwa_poschedule-delivery_date = sy-datum."交货日期
  gwa_poschedule-quantity = 1."采购订单数量
  APPEND gwa_poschedule TO gt_poschedule.


  ""采购订单中的条件"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  gwa_pocond-itm_number = '1'.
  gwa_pocond-cond_type = 'PBXX'.
  gwa_pocond-cond_value = 11.   "价格
  gwa_pocond-cond_unit  = 'KG'.   "条件单位
  gwa_pocond-cond_p_unt = 1."GS_EXCEL_RAW0-PEINH.   "价格单位
  gwa_pocond-currency = 'CNY'."货币
  gwa_pocond-change_id    = 'U'.
*  U  更新
*I  插入
*E  删除 (单字段文档)
*D  删除
*J  插入 (单字段文档)
  APPEND gwa_pocond TO gt_pocond.


  "采购订单中的条件不允许修,"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  gwa_pocondx-itm_number = '1'.
  gwa_pocondx-cond_type = 'X'.
  gwa_pocondx-cond_value = 'X'.
  gwa_pocondx-cond_unit = 'X'.    "条件单位
  gwa_pocondx-cond_p_unt = 'X'.   "价格单位
  gwa_pocondx-currency = 'X'.
  gwa_pocondx-change_id    = 'X'.
  APPEND gwa_pocondx TO gt_pocondx.




  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      poheader         = gs_poheader
      poheaderx        = gs_poheaderx
*     POADDRVENDOR     =
*     TESTRUN          =
*     MEMORY_UNCOMPLETE            =
*     MEMORY_COMPLETE  =
*     POEXPIMPHEADER   =
*     POEXPIMPHEADERX  =
*     VERSIONS         =
*     NO_MESSAGING     =
*     NO_MESSAGE_REQ   =
*     NO_AUTHORITY     =
      no_price_from_po = 'X'
*     PARK_COMPLETE    =
*     PARK_UNCOMPLETE  =
    IMPORTING
      exppurchaseorder = lv_num "单据号
*     EXPHEADER        =
*     EXPPOEXPIMPHEADER            =
    TABLES
      return           = gt_return
      poitem           = gt_item
      poitemx          = gt_itemx
*     POADDRDELIVERY   =
      poschedule       = gt_poschedule
      poschedulex      = gt_poschedulex
*     POACCOUNT        =
*     POACCOUNTPROFITSEGMENT       =
*     POACCOUNTX       =
*     POCONDHEADER     =
*     POCONDHEADERX    =
      pocond           = gt_pocond
      pocondx          = gt_pocondx
*     POLIMITS         =
*     POCONTRACTLIMITS =
*     POSERVICES       =
*     POSRVACCESSVALUES            =
*     POSERVICESTEXT   =
*     EXTENSIONIN      =
*     EXTENSIONOUT     =
*     POEXPIMPITEM     =
*     POEXPIMPITEMX    =
*     POTEXTHEADER     =
*     POTEXTITEM       =
*     ALLVERSIONS      =
*     POPARTNER        =
      pocomponents     = gt_pocomponents
      pocomponentsx    = gt_pocomponentsx.
  IF sy-subrc = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    WRITE:/  '单据号=',lv_num. "单据号,奇怪,报了错,依然sy-subrc = 0,在实战中考虑用lv_num单据号做为是否成功的判断,
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    WRITE:/  '采购订单BAPI生成失败'.
  ENDIF.

  CLEAR dd.
  CLEAR gt_return.



ENDFORM. " P1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值