SAP中通过BAPI创建生产订单CO01,生产订单长文本,订单下达

DATA:gs_bapi_pp_order_create TYPE bapi_pp_order_create.
 DATA:gt_bapi_order_key TYPE TABLE OF bapi_order_key,
      gs_bapi_order_key TYPE          bapi_order_key,
      gt_order_return   TYPE TABLE OF bapi_order_return WITH HEADER LINE.
 DATA:gs_return       TYPE bapiret2,
      gv_order_number TYPE bapi_order_key-order_number.
 DATA:gt_tline TYPE TABLE OF tline,
      gw_tline TYPE          tline.
 CLEAR:gs_return.
 DATA:gs_keko TYPE keko.
 DATA:gv_message TYPE string.
 DATA:lv_int TYPE i.
 DATA:g_fname TYPE thead-tdname.
 CLEAR:lv_int.
 "检查物料下达标准成本估算
 SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_keko
   FROM keko WHERE matnr = '000001131818181101'"物料号
   AND werks = '2101'"工厂
   AND bwkey = '2101'"工厂
   AND kadat LE sy-datum
   AND bidat GE sy-datum
   AND freig = 'X'.
 IF sy-subrc <> 0.
   MESSAGE '物料 1131818181101 未下达标准成本估算!' TYPE 'E' .
   EXIT.
 ENDIF.
 CLEAR:gs_return,gt_order_return[],gt_bapi_order_key[],gs_bapi_order_key.
 gs_bapi_pp_order_create-material ='000001131818181101'."物料号
 gs_bapi_pp_order_create-plant =  '2101'."订单工厂
 gs_bapi_pp_order_create-planning_plant = '2101'."计划工厂
 gs_bapi_pp_order_create-basic_start_date =  sy-datum."基础开始日期
 gs_bapi_pp_order_create-basic_end_date =  sy-datum."基准解释日期
 gs_bapi_pp_order_create-quantity = '10'."订单数量
 "单位外内部转换bapi
 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' "单位
   EXPORTING
     input          = 'TO'
   IMPORTING
     output         = gs_bapi_pp_order_create-quantity_uom
   EXCEPTIONS
     unit_not_found = 1
     OTHERS         = 2.
 IF sy-subrc <> 0.
   MESSAGE '单位转换有误!' TYPE 'E' .
   EXIT.
 ENDIF.
 gs_bapi_pp_order_create-order_type = 'PP01'."订单类型
 gs_bapi_pp_order_create-prod_version = 'X101'."生产版本
 gs_bapi_pp_order_create-storage_location = '2103'."库存地点
 gs_bapi_pp_order_create-gr_proc_time = ''."以天计的收货处理时间

 "调用订单创建函数生产订单bapi
 CALL FUNCTION 'BAPI_PRODORD_CREATE'
   EXPORTING
     orderdata    = gs_bapi_pp_order_create
   IMPORTING
     return       = gs_return
     order_number = gv_order_number.
 IF gs_return-type = 'E' OR gs_return = 'A'.
   MESSAGE gs_return-message TYPE 'E' .
   EXIT.
 ELSE.
   CONCATENATE sy-mandt gv_order_number INTO g_fname.
   gw_tline-tdformat = 1.
   gw_tline-tdline = '生产订单长文本内容测试'.
   APPEND gw_tline TO gt_tline.
   CALL FUNCTION 'CREATE_TEXT'
     EXPORTING
       fid       = 'KOPF'
       flanguage = sy-langu
       fname     = g_fname
       fobject   = 'AUFK'
     TABLES
       flines    = gt_tline
     EXCEPTIONS
       no_init   = 1
       no_save   = 2
       OTHERS    = 3.
   IF sy-subrc <> 0.
     MESSAGE '生产订单长文本保存失败!' TYPE 'E' .
     EXIT.
   ENDIF.
   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
     EXPORTING
       wait = 'X'.
   WAIT UP TO 1 SECONDS.
   " ltext设置为1 长文本才显示
   UPDATE aufk
   SET ltext = '1'
   WHERE aufnr = gv_order_number.
   COMMIT WORK.
   gs_bapi_order_key-order_number = gv_order_number.
   APPEND gs_bapi_order_key TO gt_bapi_order_key.
   "订单下达bapi
   CALL FUNCTION 'BAPI_PRODORD_RELEASE'
     TABLES
       orders        = gt_bapi_order_key
       detail_return = gt_order_return.
   READ TABLE gt_order_return WITH KEY type = 'E'.
   IF sy-subrc <> 0.
     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait = 'X'.
   ELSE.
     MESSAGE '生产订单下达失败!' TYPE 'E' .
   ENDIF.
 ENDIF.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值