BAPI_REQUISITION_CREATE创建服务类的采购申请service

本文详细介绍了如何创建包含服务项的采购请求,包括配置服务项、账户分配、服务规格等关键步骤。通过实例展示了从创建服务项目到完成采购请求的全过程,旨在帮助用户高效地进行采购服务管理。
部署运行你感兴趣的模型镜像
 

DATA number LIKE bapieban-preq_no.

DATA: requisition_items   LIKE bapiebanc OCCURS 0 WITH HEADER LINE,
      requisition_account_assignment LIKE bapiebkn OCCURS 0 WITH HEADER LINE,
      requisition_text LIKE bapiebantx OCCURS 0 WITH HEADER LINE,
      requisition_limits LIKE bapiesuhc OCCURS 0 WITH HEADER LINE,
      requisition_contract_limits LIKE bapiesucc OCCURS 0 WITH HEADER LINE,
      requisition_services LIKE bapiesllc OCCURS 0 WITH HEADER LINE,
      requisition_services_texts LIKE bapieslltx OCCURS 0 WITH HEADER LINE,
      requisition_srv_accass_values LIKE bapiesklc OCCURS 0 WITH HEADER LINE,
      return LIKE bapireturn OCCURS 0 WITH HEADER LINE.

requisition_items-preq_item = '00010'.
requisition_items-doc_type = 'NB'.
requisition_items-pur_group = 'F3C'.
requisition_items-created_by = ''.
requisition_items-preq_name = ''.
requisition_items-preq_date = ''.
requisition_items-short_text = 'TESTING SERVICE ITEM'.
...

requisition_items-plant = '7600'.
...
requisition_items-mat_grp = '097'.
...
requisition_items-del_datcat = '1'.
requisition_items-deliv_date = '20110930'.
requisition_items-preq_date  = sy-datum.
...
requisition_items-item_cat = '9'.
requisition_items-po_unit = 'CS'.
requisition_items-acctasscat = 'K'.
requisition_items-quantity = '12.000'.
requisition_items-unit = 'CS'.
...
requisition_items-purch_org = '103C'.
...
requisition_items-pckg_no = '0000000001'.
APPEND requisition_items.

 

*REQUISITION_ACCOUNT_ASSIGNMENT-PREQ_NO = ''.
requisition_account_assignment-preq_item = '00010'.
requisition_account_assignment-serial_no = '01'.
...
requisition_account_assignment-preq_qty  = '0.000'.
requisition_account_assignment-preq_unit = 'CS'.
requisition_account_assignment-distr_perc = '0.0'.
requisition_account_assignment-g_l_acct = '0006240005'.
requisition_account_assignment-bus_area = ''.
requisition_account_assignment-co_area = '8008'.
requisition_account_assignment-cost_ctr = '8088001777'.
requisition_account_assignment-funds_ctr = '0000000099999999'.
...
APPEND requisition_account_assignment.
*1.3.1. First line: Header line for service specifications
requisition_services-pckg_no = '0000000001'.
requisition_services-line_no = '0000000001'.
requisition_services-ext_line = '0000000000'.
...
requisition_services-subpckg_no = '0000000002'.
requisition_services-service = ''.
...
requisition_services-quantity = '0.000'.
requisition_services-base_uom = ''.
...
requisition_services-short_text = 'REQ_SERVICES SHORT_TEXT'.
...
APPEND requisition_services.
CLEAR requisition_services.
*1.3.2. Second line: Service with master
requisition_services-pckg_no = '0000000002'.
requisition_services-line_no = '0000000002'.
requisition_services-ext_line = '0000000010'.
...
requisition_services-subpckg_no = '0000000000'.
*requisition_services-service = '100290'.
...
requisition_services-quantity  = '220.000'.
requisition_services-base_uom = 'CS'.
requisition_services-gr_price = '1'.
...
requisition_services-short_text = 'DDDDDDDDD'.
...
APPEND requisition_services.
CLEAR requisition_services.
*1.3.3. Third line: Service without master
*requisition_services-pckg_no = '0000000002'.
*requisition_services-line_no = '0000000003'.
*requisition_services-ext_line = '0000000020'.
*...
*requisition_services-subpckg_no = '0000000000'.
*requisition_services-service = ''.
*...
*requisition_services-quantity = '8.000'.
*requisition_services-base_uom = 'CS'.
*requisition_services-gr_price = '12.0000'.
*...
*requisition_services-short_text = 'SERVICE WITHOUT MASTER'.
*...
*APPEND requisition_services.
*CLEAR requisition_services.
*1.4.
*1.4.1. Account assignment for the first service (with master)
requisition_srv_accass_values-pckg_no = '0000000002'.
requisition_srv_accass_values-line_no = '0000000002'.
requisition_srv_accass_values-serno_line = '01'.
requisition_srv_accass_values-percentage = '100.0'.
requisition_srv_accass_values-serial_no = '01'.
APPEND requisition_srv_accass_values.
CLEAR requisition_srv_accass_values.
*1.4.2. Account assignment for the second service (without master)
requisition_srv_accass_values-pckg_no = '0000000002'.
requisition_srv_accass_values-line_no = '0000000003'.
requisition_srv_accass_values-serno_line = '01'.
requisition_srv_accass_values-percentage = ' 100.0'.
requisition_srv_accass_values-serial_no = '01'.
APPEND requisition_srv_accass_values.
CLEAR requisition_srv_accass_values.

BREAK-POINT.

*2. Purchase requisition for services with limit -
*   - single account assignment
*
*2.1. REQUISITION_ITEMS as 1.1. (see above)
*In the place of ITEM_CAT = 9, for a pure limit purchase requisition, you can also use ITEM_CAT = 1. Select DOC_TYPE = FO (framework purchase requisition) as document type in this case.
*
*2.2. REQUISITION_ACCOUNT_ASSIGNMENT as 1.2. (see above)
*
*2.3. REQUISITION_LIMITS
*            PCKG_NO                        0000000001
*            LIMIT                          1000
*            NO_LIMIT
*            EXP_VALUE                      1000
*            ...
*            NO_FRLIMIT                    X
*            ...
*
*2.4. REQUISITION_SRV_ACCASS_VALUES
*            PCKG_NO                        0000000001
*            LINE_NO                        0000000000
*            SERNO_LINE                    01
*            PERCENTAGE                    100,0
*            SERIAL_NO                      01
*
*
*BREAK-POINT.
*REFRESH return.
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
* EXPORTING
*   SKIP_ITEMS_WITH_ERROR                =
*   AUTOMATIC_SOURCE                     = 'X'
 IMPORTING
   number                               = number
  TABLES
    requisition_items                    = requisition_items
   requisition_account_assignment       = requisition_account_assignment
   requisition_item_text                = requisition_text
   requisition_limits                   = requisition_limits
   requisition_contract_limits          = requisition_contract_limits
   requisition_services                 = requisition_services
   requisition_srv_accass_values        = requisition_srv_accass_values
   return                               = return
*   requisition_services_text            = requisition_services_text
*   requisition_addrdelivery             = requisition_addrdelivery
*   extensionin                          = extensionin
          .

COMMIT WORK.

您可能感兴趣的与本文相关的镜像

LobeChat

LobeChat

AI应用

LobeChat 是一个开源、高性能的聊天机器人框架。支持语音合成、多模态和可扩展插件系统。支持一键式免费部署私人ChatGPT/LLM 网络应用程序。

<think>好的,我需要帮助用户解决在使用BAPI_REQUISITION_CREATE创建委外采购申请时如何给组件赋值的问题。首先,我需要回忆相关的BAPI参数和结构。根据用户提供的引用内容,特别是引用[3]和引用[4],BAPI_REQUISITION_CREATE使用requisition_items和requisition_account_assignment等表参数。 接下来,我需要确认组件赋值对应的字段。在SAP中,委外采购申请的组件通常与生产订单或项目相关,可能涉及销售订单、生产订单号等。引用[2]提到ls_praccount-orderid是订单编号,而引用[4]指出ME51N会处理销售订单的自动过账科目,这可能涉及到KZBWS字段的修改。 然后,我应该检查BAPI_REQUISITION_CREATE的参数结构。组件赋值可能需要在requisition_items或requisition_account_assignment中设置特定字段,比如ORDERID、KZBWS或相关增强字段。需要确保这些字段在传入结构中被正确赋值,并且标记位设置为X以指示更新。 另外,用户可能需要处理多个组件,因此要注意行项目号和序列号的唯一性,如引用[1]中提到的ZEBKN的序列号问题。每个组件的行项目号必须唯一,且账户分配中的序列号也需正确设置,避免报错。 最后,总结步骤:确定组件对应的字段,填充到相应的表结构中,设置标记位,处理可能的增强或自定义需求,并测试BAPI调用是否成功。同时,提醒用户注意必填字段和错误处理,参考相关引用中的实例来确保正确性。</think>在使用BAPI_REQUISITION_CREATE创建委外采购申请时,给组件赋值需要重点关注以下几个步骤: ### 1. **组件赋值字段的确定** 委外采购申请的组件信息通常通过以下字段传递: - **`ORDERID`**:关联的销售订单或生产订单号,用于标识组件来源[^2][^4] - **`KZBWS`**:科目分配的特殊标识(例如自动过账标识),可能需通过增强修改逻辑[^4] - **`ACCTASSCAT`**:科目分配类别,需设置为特定值(如委外场景可能需要设为'F')[^2] ### 2. **参数结构赋值** 在调用BAPI时,需填充以下表结构: ```abap TABLES: requisition_items = lt_item, "采购申请行项目 requisition_account_assignment = lt_acc, "科目分配 requisition_item_text = lt_text, "文本 return = lt_return. "返回消息 ``` #### 关键字段示例: - **行项目表(`requisition_items`)**: ```abap lt_item-material = 'MAT-001'. "组件物料号 lt_item-plant = '1000'. "工厂 lt_item-quantity = '10'. "数量 lt_item-purch_group = '001'. "采购组 lt_item-deliv_date = sy-datum + 30. "交货日期 ``` - **科目分配表(`requisition_account_assignment`)**: ```abap lt_acc-preq_item = '0001'. "行项目号(必须唯一) lt_acc-orderid = 'SO-20240001'. "关联的销售订单/生产订单[^2] lt_acc-serial_no = '01'. "序列号(必填且唯一)[^1] lt_acc-kzbws = 'A'. "特殊标识(可能需通过增强设置)[^4] ``` ### 3. **标记位设置** 对于需要更新的字段,需在对应的`xxxX`结构中标记`X`: ```abap lt_accx-preq_item = '0001'. lt_accx-orderid = 'X'. "表示更新ORDERID字段 lt_accx-serial_no = 'X'. "表示更新SERIAL_NO字段 ``` ### 4. **增强处理** 若涉及自动过账科目或特殊业务逻辑,需通过**SD_DOCUMENT_ACCOUNT_ASSIGNMENT**等函数增强实现。 ### 5. **调用BAPI示例** ```abap CALL FUNCTION 'BAPI_REQUISITION_CREATE' EXPORTING skip_items_with_error = '' IMPORTING number = lv_pr_number "生成的采购申请号 TABLES requisition_items = lt_item requisition_account_assignment = lt_acc requisition_item_text = lt_text return = lt_return. ``` ### 6. **错误处理与提交** - 检查`lt_return`中的消息,确认无错误后调用`BAPI_TRANSACTION_COMMIT`提交事务[^3]。 - 若需要删除或修改,可调用`BAPI_REQUISITION_CHANGE`并设置删除标识`X`[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值