创建生产订单,创建订单长文本,订单下达

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,
        gt_return       TYPE bssp_t_message,
        gw_return       TYPE bssp_s_message,
        gv_order_number TYPE bapi_order_key-order_number.
   DATA:gt_tline TYPE TABLE OF tline,
        gw_tline TYPE          tline.
   CLEAR:gt_return[],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.
   LOOP AT gt_zstybcp INTO gw_zstybcp WHERE sel = 'X' AND aufnr = ''.
     lv_int = lv_int + 1.
     "add by ly 20151124
     SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_keko
       FROM keko WHERE matnr = gw_zstybcp-matnr
       AND werks = gw_zstybcp-werks
       AND bwkey = gw_zstybcp-werks
       AND kadat LE sy-datum
       AND bidat GE sy-datum
       AND freig = 'X'.
     IF sy-subrc <> 0.
       gv_message = gv_message && ' ' && gw_zstybcp-matnr.
*       MESSAGE '物料' && gw_zstybcp-matnr && '请先下达标准成本估算!' TYPE 'S' DISPLAY LIKE 'E'.
       EXIT.
     ENDIF.
     "add by ly 20151124
   ENDLOOP.
   "仅限选择一行,且选择行中的办成品油已生成生产订单,直接调用T-code 到修改界面

   IF gv_message IS INITIAL.
   ELSE.
     MESSAGE '物料' && gv_message && '未下达标准成本估算!' TYPE 'S' DISPLAY LIKE 'E'.
     EXIT.
   ENDIF.

   IF lv_int <> 0.

   ELSE.
     MESSAGE '请选择调油半成品生产订单为空的行项目!' TYPE 'S' DISPLAY LIKE 'E'.
     EXIT.
   ENDIF.
* PERFORM PRM_DATA_CHECK.
   LOOP AT gt_zstybcp INTO gw_zstybcp WHERE sel = 'X' AND aufnr = ''."ADD BY 20150716 LY FOR 批量创建
     CLEAR:gs_return,gw_return,gt_order_return[],gt_bapi_order_key[],gs_bapi_order_key.
     gs_bapi_pp_order_create-material = gw_zstybcp-matnr."订单物料号
     gs_bapi_pp_order_create-plant = gw_zstybcp-werks."订单工厂
     gs_bapi_pp_order_create-planning_plant = gw_zstybcp-werks."计划工厂
     gs_bapi_pp_order_create-basic_start_date = gw_zstybcp-gstrp."基础开始日期
     gs_bapi_pp_order_create-basic_end_date = gw_zstybcp-gstrp."基准解释日期
     gs_bapi_pp_order_create-quantity = gw_zstybcp-bdmng."订单数量
     CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' "单位
       EXPORTING
         input          = gw_zstybcp-meins
*        LANGUAGE       = SY-LANGU
       IMPORTING
         output         = gs_bapi_pp_order_create-quantity_uom
       EXCEPTIONS
         unit_not_found = 1
         OTHERS         = 2.
     IF sy-subrc <> 0.
     ENDIF.


*   GS_BAPI_PP_ORDER_CREATE-QUANTITY_UOM = GW_ZSTYBCP-MEINS."单位
     gs_bapi_pp_order_create-goods_recipient = gw_zstybcp-wempf."收货方
*   GS_BAPI_PP_ORDER_CREATE-GOODS_RECIPIENT = GW_ZSTYBCP-MEINS.
     gs_bapi_pp_order_create-order_type = 'DL02'.
     "调用订单创建函数创建调油半成品生产订单
     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 IS NOT INITIAL."消息填表
       gw_return-msgid = gs_return-id.
       gw_return-msgty = gs_return-type.
       gw_return-msgno = gs_return-number.
       gw_return-msgv1 = gs_return-message_v1.
       gw_return-msgv2 = gs_return-message_v2.
       gw_return-msgv3 = gs_return-message_v3.
       gw_return-msgv4 = gs_return-message_v4.
       APPEND gw_return TO gt_return.
     ENDIF.
*    APPEND GS_RETURN TO GT_RETURN."消息填表

     IF gs_return-type = 'E' OR gs_return = 'A'.
*       CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
       gw_zstybcp-icon = '@OA@'.
       gw_zstybcp-message = gs_return-message.
     ELSE.
*       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*         EXPORTING
*           wait = 'X'.
       gw_zstybcp-icon = '@08@'.
       gw_zstybcp-message = '成功创建调油半成品生产订单'.
       gw_zstybcp-aufnr = gv_order_number.
       gw_zstybcp-psmng = gw_zstybcp-bdmng.
       gw_zstybcp-amein = gw_zstybcp-meins.

       CONCATENATE sy-mandt gv_order_number INTO g_fname.
       gw_tline-tdformat = 1.
       gw_tline-tdline = gw_zstybcp-ztiay.
       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.
       ENDIF.
       IF sy-subrc = 0.
         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
             wait = 'X'.
       ELSE.
         CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

       ENDIF.

       WAIT UP TO 1 SECONDS.
       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.

       "ADD BY LY 20150610订单下达
       CALL FUNCTION 'BAPI_PRODORD_RELEASE'
*         EXPORTING
*           RELEASE_CONTROL          = '1'
*           WORK_PROCESS_GROUP       = 'COWORK_BAPI'
*           WORK_PROCESS_MAX         = 99
*         IMPORTING
*           RETURN                   =
         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.
*         CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

         CONCATENATE '订单' gv_order_number '下达失败,请手动下达!' INTO gw_return-msgv1.
         MESSAGE gw_return-msgv1  TYPE 'S' DISPLAY LIKE 'E'.
       ENDIF.

     ENDIF.
     MODIFY gt_zstybcp FROM gw_zstybcp.
   ENDLOOP.

* IF GT_RETURN[] IS NOT INITIAL."消息显示
*   CALL FUNCTION 'BSSP2_MESSAGE_POPUP'
*     EXPORTING
*       IT_MESSAGE              = GT_RETURN
*       IF_SAVE_NECESSARY       = ''.
* ENDIF.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ABAP(Advanced Business Application Programming)是一种用于SAP系统开发的高级商务应用编程语言。在ABAP中,我们可以使用BDC(Batch Data Communication)技术来批量创建销售订单。 批量创建销售订单可以大大提高工作效率,为复杂的销售业务场景提供了便利。下面是一种基本的批量创建销售订单的方法: 1. 准备数据:首先,我们需要准备好销售订单的相关数据,包括客户号、物料号、数量、价格等信息。可以将这些数据存储在一个Excel表格或者文本文件中。 2. 编写ABAP程序:使用ABAP程序来读取准备好的数据文件,并通过BDC技术将数据批量导入到SAP系统中。ABAP程序可以根据具体的业务需求来编写,包括读取数据文件、验证数据的有效性、填写订单的各个字段、保存订单等操作。 3. 运行ABAP程序:将编写好的ABAP程序运行起来,程序将自动读取准备的数据文件,对数据进行处理,并批量创建销售订单。 4. 验证结果:创建完成后,我们可以通过SAP系统中的相应事务码(如VA03)来验证订单的正确性和完整性。可以逐个查看订单的详细信息,并确保数据导入的准确性。 需要注意的是,批量创建销售订单需要谨慎操作,确保准备的数据准确无误,并对ABAP程序进行充分的测试。批量导入数据时,可以设置一些验证规则和控制机制,以避免错误数据的导入。 总结来说,使用ABAP编程语言,我们可以编写程序实现批量创建销售订单的功能。这样可以提高工作效率,还可以适应复杂的销售业务需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值