SAP SD VT01N 创建运输单 BAPI_SHIPMENT_CREATE

本文详细介绍使用ABAP编程语言创建运输单的过程。通过实例演示如何设置运输单的基本信息、物品清单及时间戳等关键数据,并调用BAPI_SHIPMENT_CREATE函数完成创建。适用于希望了解或掌握ABAP运输管理模块的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系。 

VT01N创建运输单BAPI:BAPI_SHIPMENT_CREATE

  DATA:
    LS_HEADERDATA TYPE BAPISHIPMENTHEADER,
    LT_ITEMDATA   TYPE STANDARD TABLE OF  BAPISHIPMENTITEM,
    LS_ITEMDATA   TYPE BAPISHIPMENTITEM,
    LT_RETURN     TYPE STANDARD TABLE OF BAPIRET2,
    LS_RETURN     TYPE BAPIRET2,
    LV_TKNUM      TYPE VTTK-TKNUM,
    LS_LIPS       TYPE LIPS,
    LS_TIME       TYPE BAPISHIPMENTSTAGEDEADLINE,
    LT_TIME       TYPE STANDARD TABLE OF BAPISHIPMENTSTAGEDEADLINE,
    LT_HEADLINE   TYPE STANDARD TABLE OF BAPISHIPMENTHEADERDEADLINE,
    LS_HEADLINE   TYPE BAPISHIPMENTHEADERDEADLINE.

  IF IT_LIPS[] IS NOT INITIAL .
    READ TABLE IT_LIPS INTO LS_LIPS INDEX 1.

    SELECT SINGLE ROUTE INTO LS_HEADERDATA-SHIPMENT_ROUTE
      FROM LIKP
      WHERE VBELN = LS_LIPS-VBELN.        "从交货单获取route

    LS_HEADERDATA-SHIPMENT_TYPE = 'ZSTU'.
    LS_HEADERDATA-TRANS_PLAN_PT = '6500'.
    LS_HEADERDATA-SERVICE_AGENT_ID  =     'FRT123'.
    "TRVAB 表中根据 route去找服务代理

    LOOP AT IT_LIPS INTO LS_LIPS.
      LS_ITEMDATA-DELIVERY = LS_LIPS-VBELN.
      APPEND LS_ITEMDATA TO  LT_ITEMDATA.
    ENDLOOP .


*以下是确定时间,如果不确定时间的话,后续的运输成本单无法创建
    LS_HEADLINE-TIME_TYPE      = 'HDRSTPLDT'.   "Date of end of planning
    CALL FUNCTION 'IB_CONVERT_INTO_TIMESTAMP'
      EXPORTING
        I_DATLO           = SY-DATUM
        I_TIMLO           = SY-TIMLO
*             I_TZONE           = SY-ZONLO
           IMPORTING
       E_TIMESTAMP       =  LS_HEADLINE-TIME_STAMP_UTC  .
    LS_HEADLINE-TIME_ZONE      = 'UTC'.
    APPEND LS_HEADLINE TO LT_HEADLINE.
    LS_HEADLINE-TIME_TYPE      = 'HDRSTCIADT'.   "Actual date of check-in
    APPEND LS_HEADLINE TO LT_HEADLINE.
    LS_HEADLINE-TIME_TYPE      = 'HDRSTLSADT'.   "Current date for start of loading
    APPEND LS_HEADLINE TO LT_HEADLINE.
    LS_HEADLINE-TIME_TYPE      = 'HDRSTLEADT'.   "Actual date for end of loading
    APPEND LS_HEADLINE TO LT_HEADLINE.



    CALL FUNCTION 'BAPI_SHIPMENT_CREATE'
      EXPORTING
        HEADERDATA        = LS_HEADERDATA
      IMPORTING
       TRANSPORT          =  LV_TKNUM
*   SHIPMENTGUID         =
      TABLES
       HEADERDEADLINE    =   LT_HEADLINE
       ITEMDATA          =   LT_ITEMDATA
*   STAGEDATA            =
*  STAGEDEADLINE        = LT_TIME
*   ITEMONSTAGE          =
*   ADDRESS              =
*   HDUNHEADER           =
*   HDUNITEM             =
     RETURN               = LT_RETURN.
    READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.
    IF SY-SUBRC = 0.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    ENDIF.

### 使用 `BAPI_OUTB_DELIVERY_CREATE_STO` 创建出库交货 #### 函数模块描述 函数模块 `BAPI_OUTB_DELIVERY_CREATE_STO` 用于基于存储订创建外向交货。此功能允许通过编程方式处理物流流程中的这一重要环节,从而实现自动化和集成化管理。 #### 参数列表 该函数模块接受多个输入参数来定义新创建的交货文档的具体属性: - **I_STORAGE_ORDER** (结构体): 存储订数据集合,包含要转换成交货的关键信息。 - **I_PARTNER** (表): 定义参与方角色及其对应的客户编号或供应商编号等信息。 - **I_SCHEDULE_LINES** (表): 订计划行项目详情,指定数量和其他调度细节。 - **I_PICKING_CONTROL** (结构体): 控制拣选过程的行为设置。 - **IMPORTING** 和 **EXPORTING**: 这些部分通常用来传递额外的信息给调用者或者接收返回的结果集。 #### 示例代码 下面是一个简的ABAP程序片段展示如何调用这个BAPI并传入必要的参数: ```abap DATA: lv_return TYPE bapi2018, lt_storage_order LIKE TABLE OF likp, ls_partner LIKE bapisdelpa, lt_schedule_lines LIKE TABLE OF resb. " 填充 I_STORAGE_ORDER 表格... APPEND INITIAL LINE TO lt_storage_order ASSIGNING FIELD-SYMBOL(<fs_storage>). <fs_storage>-vbeln = 'STORAGE_ORDER_NUMBER'. " 替换为实际存储订号 " 设置合作伙伴信息... ls_partner-partnertype = 'SP'. ls_partner-partnernumbe = 'PARTNER_ID'. " 添加到伙伴表格中... APPEND ls_partner TO it_partner. " 配置时间安排线路... CREATE DATA gt_resb. FIELD-SYMBOLS <fs_resb> TYPE RESB. ASSIGN gt_resb->* TO <fs_resb>. <fs_resb>-resbk = 'RESBK_VALUE'. " 资源预订键值 APPEND <fs_resb>. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO' EXPORTING i_picking_control = wa_picking_control IMPORTING et_return = lt_return TABLES t_storage_order = lt_storage_order t_partner = it_partner t_schedule_lines = lt_schedule_lines. IF NOT lt_return IS INITIAL. LOOP AT lt_return INTO DATA(ls_return). WRITE:/ ls_return-message, ls_return-type. ENDLOOP. ENDIF. ``` 上述代码展示了基本框架以及一些关键点的操作方法[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值