1、订单介绍
服务类采购订单:是用于采购“服务”的单据,比如软件费、维修费、物流费等无形的商品。
作用:
流程标准化与规范化: 为服务的采购提供了一个从申请、审批、执行到付款的标准化流程,确保合规性。
成本控制与预算管理: 在创建订单时即可指定成本中心、内部订单、WBS元素等成本对象,便于事前预算控制和事中成本归集。
服务执行的监控: 通过服务确认流程,业务部门可以监控服务的进度、检查服务质量,确保供应商履行合同。
精确的发票校验: 供应商发票必须与采购订单及已确认的服务数量/金额匹配,财务部门才能进行付款,避免了超额支付。
服务主数据管理: 建立可重复使用的服务主数据(如“高级SAP开发-人天”),提高采购效率和数据一致性。
2、订单创建
ME21N

代码实现
"--------------------@斌将军--------------------
DATA: ls_poheader TYPE bapimepoheader,
ls_poheaderx TYPE bapimepoheaderx,
lt_poitem TYPE TABLE OF bapimepoitem,
ls_poitem TYPE bapimepoitem,
lt_poitemx TYPE TABLE OF bapimepoitemx,
ls_poitemx TYPE bapimepoitemx,
lt_polimits TYPE TABLE OF bapiesuhc,
ls_polimits TYPE bapiesuhc,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
DATA: lv_ebeln LIKE bapimepoheader-po_number,
lv_check TYPE char1,
lv_message TYPE char255. "行项目
ls_poheader-doc_type = 'NB'."采购凭证类型
ls_poheader-vendor = '0002012980'.
ls_poheader-purch_org = '8030'."采购组织
ls_poheader-pur_group = 'P22'."采购组
ls_poheader-comp_code = '8030'."公司代码
ls_poheader-currency = 'CNY'."货币
ls_poheader-doc_date = sy-datum."采购凭证日期
ls_poheader-langu = sy-langu."语言代码
ls_poheaderx-doc_type = abap_true.
ls_poheaderx-vendor = abap_true.
ls_poheaderx-purch_org = abap_true.
ls_poheaderx-pur_group = abap_true.
ls_poheaderx-comp_code = abap_true.
ls_poheaderx-currency = abap_true.
ls_poheaderx-doc_date = abap_true.
ls_poheaderx-langu = abap_true.
ls_poitem-po_item = 1."采购凭证的项目编号
ls_poitem-acctasscat = 'U'."科目分配类别
ls_poitem-item_cat = 'D'."采购凭证项目类别 服务
ls_poitem-short_text = '自动生成 - 运费服务'."短文本
ls_poitem-quantity = 1."采购订单数量
ls_poitem-po_unit = 'LE'." 采购订单的计量单位 AU
ls_poitem-gr_ind = 'X'." 货物收据标识
ls_poitem-ir_ind = 'X'." 发票收据标识
ls_poitem-gr_basediv = 'X'." 标识:基于收货的发票验证
ls_poitem-plant = '8030'." 工厂
ls_poitem-matl_group = '809'." 物料组 在建工程-设备
ls_poitem-pckg_no = '0000000010'." 包编号
APPEND ls_poitem TO lt_poitem.
ls_poitemx-po_item = 1.
ls_poitemx-item_cat = abap_true.
ls_poitemx-acctasscat = abap_true.
ls_poitemx-short_text = abap_true.
ls_poitemx-quantity = abap_true.
ls_poitemx-po_unit = abap_true .
ls_poitemx-gr_ind = abap_true .
ls_poitemx-ir_ind = abap_true .
ls_poitemx-gr_basediv = abap_true .
ls_poitemx-plant = abap_true .
ls_poitemx-matl_group = abap_true .
ls_poitemx-pckg_no = abap_true .
APPEND ls_poitemx TO lt_poitemx.
ls_polimits-pckg_no = '0000000010'." 包编号 与行项目的包编号对应
ls_polimits-no_limit = 'X'."不限制
ls_polimits-exp_value = '5'."期望值
APPEND ls_polimits TO lt_polimits.
CLEAR:lv_ebeln.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = ls_poheader
poheaderx = ls_poheaderx
IMPORTING
exppurchaseorder = lv_ebeln
TABLES
poitem = lt_poitem
poitemx = lt_poitemx
polimits = lt_polimits
return = lt_return.
CLEAR:lv_check,lv_message.
LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
lv_message = lv_message && ls_return-message.
lv_check = 'E'.
CLEAR:ls_return.
ENDLOOP.
IF lv_check = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
REFRESH:lt_poitem,lt_poitemx,lt_polimits,lt_return.
"--------------------@斌将军--------------------
3、服务确认
ML81N
输入对应的采购订单进行确认

在采购订单历史中可以看到产生的物料凭证

同时也产生了对应的会计凭证(暂估)和成本控制凭证。

直接产生会计凭证是未勾选“收获,未评估”

会计凭证分录为,借:在建工程,贷:设备工程暂估
因为采购订单选择的是设备物料组,所以此处进设备工程暂估科目

使用MIRO进行发票校验

将产生新的会计凭证,借:设备工程暂估,贷:应付国内供应商

ML81N服务确认创建代码参考
"--------------------@斌将军--------------------
DATA: ls_heetheader LIKE bapiessrc,
lt_esll LIKE TABLE OF bapiesllc,
ls_esll LIKE bapiesllc,
lt_eskn LIKE TABLE OF bapiesknc,
ls_eskn LIKE bapiesknc,
lt_eskl LIKE TABLE OF bapiesklc,
ls_eskl LIKE bapiesklc,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2,
lv_pckg_no LIKE bapiesllc-pckg_no VALUE 1,
lv_line_no LIKE bapiesllc-line_no VALUE 1,
lv_entrysheet LIKE bapiessr-sheet_no,
lv_tknum TYPE vttk-tknum.
DATA:lv_check TYPE char1,
lv_message TYPE char255.
"抬头
CLEAR:ls_heetheader.
ls_heetheader-pckg_no = lv_pckg_no."包编号
ls_heetheader-po_number = '4501000304'."PO编号
ls_heetheader-po_item = 10."PO项目编号
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = '900003111E'
IMPORTING
output = lv_tknum.
ls_heetheader-short_text = lv_tknum."短文本
ls_heetheader-ref_doc_no = lv_tknum."短文本
ls_heetheader-acceptance = 'K'."承诺标识
ls_heetheader-accasscat = 'K'."科目分配类别
ls_heetheader-post_date = sy-datum."凭证中的凭证日期
ls_heetheader-doc_date = sy-datum."凭证中的过帐日期
"行项目 相当于总行项目
CLEAR:ls_esll.
ls_esll-pckg_no = lv_pckg_no."包编号
ls_esll-line_no = lv_line_no.
*ls_esll-ext_line = 0.
*ls_esll-outl_level = '0'.
ls_esll-outl_ind = 'X'.
ls_esll-subpckg_no = 2. "子包编号 等于第二个行项目的包编号
APPEND ls_esll TO lt_esll.
"科目分配
CLEAR:ls_eskn.
ls_eskn-pckg_no = lv_pckg_no."包编号
ls_eskn-serial_no = 1."科目分配的序号
ls_eskn-gl_account = '0066013306'."总账科目
ls_eskn-costcenter = '0080301712'."成本中心
APPEND ls_eskn TO lt_eskn.
"行项目
CLEAR:ls_esll.
ls_esll-pckg_no = 2."等于 上述子包编号
ls_esll-line_no = 10."内部行编号
ls_esll-quantity = 1."数量
ls_esll-base_uom = 'LE'."单位 AU
ls_esll-gr_price = '5'."总价
ls_esll-short_text = lv_tknum."短文本
APPEND ls_esll TO lt_esll.
CLEAR:ls_eskl.
ls_eskl-pckg_no = 2."等于 上述子包编号
ls_eskl-line_no = 10."行号
ls_eskl-serno_line = 1."帐户分配规范序号:服务行
ls_eskl-serial_no = 1."科目分配的序号
ls_eskl-quantity = 1."数量
APPEND ls_eskl TO lt_eskl.
CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
EXPORTING
entrysheetheader = ls_heetheader
IMPORTING
entrysheet = lv_entrysheet
TABLES
entrysheetaccountassignment = lt_eskn
entrysheetservices = lt_esll
entrysheetsrvaccassvalues = lt_eskl
return = lt_return.
CLEAR:lv_check,lv_message.
LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
lv_message = lv_message && ls_return-message.
lv_check = 'E'.
ENDLOOP.
IF lv_check = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
REFRESH:lt_eskn,lt_esll,lt_eskl,lt_return.
"--------------------@斌将军--------------------
以上就是关于服务类采购订单的介绍,希望对你有所帮助
1912

被折叠的 条评论
为什么被折叠?



