SAP ABAP BAPI 报错 MESSAGE E M7126 有关订单种类20的手工预定不允许

业务背景:前台CN22网络作业下面创建预留没问题,MB21创建预留报“MESSAGE E M7126 有关订单种类20的手工预定不允许”错误。

错误:网络、作业下面创建预留使用BAPI_RESERVATION_CREATE1报错“MESSAGE E M7126 有关订单种类20的手工预定不允许”

正确:BAPI_NETWORK_COMP_ADD 网络作业创建预留 代码如下

DATA:wa_i_components_add TYPE bapi_network_comp_add,
       it_i_components_add TYPE TABLE OF bapi_network_comp_add,
       it_bapiret2         TYPE STANDARD TABLE OF bapiret2,
       i_number            TYPE bapi_network_list-network,
       wa_bapiret2         TYPE bapiret2.
  DATA: it_e_message_table TYPE TABLE OF bapi_meth_message.

  READ TABLE gt_alv INTO DATA(ls_alv) WITH KEY sel = 'X'.
  IF sy-subrc NE 0.
    p_msg = '创建失败'.
    EXIT.
  ENDIF.


  CLEAR: wa_bapiret2,it_bapiret2,i_number,it_i_components_add[],it_e_message_table[].
  i_number = p_aufnr.
  "物料组件
  LOOP AT gt_alv INTO DATA(wa_alv) WHERE sel EQ 'X'.
    wa_i_components_add-activity        = p_vornr. "活动编号
    "必填,需传输或者找
    wa_i_components_add-mrp_relevant     = '3'.   "事件立即执行
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input  = wa_alv-matnr
      IMPORTING
        output = wa_i_components_add-material.

    wa_i_components_add-entry_quantity  = wa_alv-bdmng.  "数量
    wa_i_components_add-base_uom        = wa_alv-meins. "'KG'. "基本计量单位
*  wa_i_components_add-pur_group        = ls_alv-ekgrp."采购组
*  wa_i_components_add-WBS_ELEMENT        = 'XA-23511H400F03-2-3'.

    wa_i_components_add-type_of_pur_resv = '8'. "采购类型

    wa_i_components_add-stge_loc = wa_alv-lgort.
    wa_i_components_add-gr_rcpt      = p_zzbzbp.  "收货方/运达方
    wa_i_components_add-unload_pt    = p_zzwork.  "卸货点
    wa_i_components_add-plant        = wa_alv-werks. "工厂
    wa_i_components_add-req_date       = p_BDTER."需求日
*    wa_i_components_add-item_text       = '测试QJ'.  "项目文本行

    wa_i_components_add-item_cat        = 'L'.   "综合项目
    APPEND wa_i_components_add TO it_i_components_add.
    CLEAR: wa_i_components_add.
  ENDLOOP.

  "第三步:调用函数

  CALL FUNCTION 'BAPI_PS_INITIALIZATION'.

  CALL FUNCTION 'BAPI_NETWORK_COMP_ADD'
    EXPORTING
      number           = i_number
    IMPORTING
      return           = wa_bapiret2
    TABLES
      i_components_add = it_i_components_add
      e_message_table  = it_e_message_table.

  APPEND wa_bapiret2 TO it_bapiret2.

  "第四步:判断是否有错误消息

  LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'.
    CONCATENATE p_msg  wa_bapiret2-message wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4 INTO p_msg.
  ENDLOOP.

  "第四步:如果有错误消息则退出

  IF sy-subrc EQ 0.

    CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS '.

    CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS '
      EXPORTING
        i_precommit_ok = 'Y'.
  ENDIF.

  CHECK sy-subrc NE 0.

  "第四步:没有错误消息则执行预提交

  CALL FUNCTION 'BAPI_PS_PRECOMMIT'
    TABLES
      et_return = it_bapiret2.
  LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'.
    CONCATENATE p_msg  wa_bapiret2-message wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4 INTO p_msg.
  ENDLOOP.

  "第五步:预提交有错误消息则执行回滚

  IF sy-subrc EQ 0.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.

    CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
      EXPORTING
        i_precommit_ok = 'Y'.
    COMMIT WORK.

  ELSE.
    "第五步:预提交无错误消息则执行正式提交

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

  ENDIF.

好的,我可以为您提供一些常见的SAP ABAP面试题,但并不会提供答案,因为这些问题需要您自己思考和回答。以下是一些可能会被问到的SAP ABAP面试题: 1. SAP ABAP是什么? 2. 如何在SAP ABAP中定义变量? 3. 什么是函数模块? 4. 如何在SAP ABAP中处理异常? 5. 如何在SAP ABAP中进行调试? 6. 什么是内表?如何定义内表? 7. 如何在SAP ABAP中处理日期和时间? 8. 如何在SAP ABAP中处理字符串? 9. 如何在SAP ABAP中使用SELECT语句? 10. 如何在SAP ABAP中使用LOOP语句? 11. 如何在SAP ABAP中使用IF语句? 12. 如何在SAP ABAP中使用CASE语句? 13. 如何在SAP ABAP中使用BREAK-POINT语句? 14. 如何在SAP ABAP中使用MESSAGE语句? 15. 如何在SAP ABAP中使用CATCH语句? 16. 什么是数据字典?如何定义数据字典对象? 17. 如何在SAP ABAP中使用ABAP OO? 18. 如何在SAP ABAP中使用ALV报表? 19. 如何在SAP ABAP中使用BAPI20. 如何在SAP ABAP中使用RFC? 21. 如何在SAP ABAP中使用IDoc? 22. 如何在SAP ABAP中使用ALE? 23. 如何在SAP ABAP中使用EDI? 24. 如何在SAP ABAP中使用BDC? 25. 如何在SAP ABAP中使用LSMW? 26. 如何在SAP ABAP中使用用户退出? 27. 如何在SAP ABAP中使用BADI? 28. 如何在SAP ABAP中使用Enhancement Spot? 29. 如何在SAP ABAP中使用Enhancement Section? 30. 如何在SAP ABAP中使用Function Exit? 31. 如何在SAP ABAP中使用事件? 32. 如何在SAP ABAP中使用ABAP List Viewer(ALV)? 33. 如何在SAP ABAP中使用SAP Query? 34. 如何在SAP ABAP中使用Smart Forms? 35. 如何在SAP ABAP中使用Adobe Forms? 36. 如何在SAP ABAP中使用BSP? 37. 如何在SAP ABAP中使用Web Dynpro? 38. 如何在SAP ABAP中使用SAPUI5? 39. 如何在SAP ABAP中使用Fiori Launchpad? 40. 如何在SAP ABAP中使用SAP HANA?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值