SAP BOM批量展开ABAP代码

SAP BOM批量展开ABAP代码

REPORT z_generate_bom.

DATA: lt_bom TYPE STANDARD TABLE OF bapi_mara,
      lt_bom_ex TYPE STANDARD TABLE OF bapi_maraex.

TYPES: BEGIN OF ty_bom_line,
         id       TYPE stlnr,       " 项号
         matnr    TYPE matnr,       " 物料号
         stlty    TYPE stlty,       " 物料清单类型
         stlal    TYPE stlal,       " 物料清单组
         stkoz    TYPE stkoz,       " BOM 使用状态
         stlkn    TYPE stlkn,       " 物料清单号
         stpos    TYPE stpos,       " BOM 项号
         idnrk    TYPE idnrk,       " 零件号
         menge    TYPE menge,       " 数量
         meins    TYPE meins,       " 基本单位
         status   TYPE ststl,       " 删除标志
         algstp   TYPE algstp,      " 用途
         datuv    TYPE datuv,       " 最近变更日期
         andat    TYPE andat,       " 最近变更时间
         apmng    TYPE apmng,       " 安全库存
         sanka    TYPE sanka,       " 替换标识
         saled    TYPE saled,       " 销售和分发标识
         gldat    TYPE gldat,       " 出货日期
         vgwts    TYPE vgwts,       " 总重量
         gewei    TYPE gewei,       " 总重量单位
         stpoz    TYPE stpoz,       " 物料清单项
         stlan    TYPE stlan,       " 语言代码
         sttxt    TYPE sttxt,       " 物料清单文本
         stkza    TYPE stkza,       " 算法组
         stalz    TYPE stalz,       " BOM 使用状态
         sanka    TYPE sanka,       " 替换标识
         algstl   TYPE algstl,      " 用途
       END OF ty_bom_line.

DATA: lt_bom_lines TYPE TABLE OF ty_bom_line.

DATA: lv_matnr TYPE matnr VALUE 'YOUR_MATERIAL_NUMBER',  " 要生成BOM的物料号
      lv_stlal TYPE stlal VALUE 'YOUR_BOM_USAGE',         " 物料清单组
      lv_stlty TYPE stlty VALUE '1',                     " 物料清单类型
      lv_menge TYPE menge VALUE '1'.                     " BOM数量

START-OF-SELECTION.
  PERFORM generate_bom_hierarchy USING lv_matnr lv_stlal lv_stlty lv_menge CHANGING lt_bom_lines.
  LOOP AT lt_bom_lines INTO DATA(ls_bom_line).
    WRITE: / ls_bom_line-matnr, ls_bom_line-menge, ls_bom_line-meins.
  ENDLOOP.

FORM generate_bom_hierarchy
  USING
    iv_matnr TYPE matnr
    iv_stlal TYPE stlal
    iv_stlty TYPE stlty
    iv_menge TYPE menge
  CHANGING
    ct_bom_lines TYPE TABLE OF ty_bom_line.

  DATA: lt_stpo TYPE STANDARD TABLE OF stpo,
        ls_stpo TYPE stpo,
        lt_stko TYPE STANDARD TABLE OF stko,
        ls_stko TYPE stko,
        lv_posnr TYPE posnr.

  CLEAR: ct_bom_lines.

  " 通过 BAPI读取BOM层次结构数据
  CALL FUNCTION 'BAPI_MATERIAL_BOM_READ'
    EXPORTING
      material         = iv_matnr
      plant            = 'YOUR_PLANT'
      bom_usage        = iv_stlal
      bom_application  = iv_stlty
      valid_from_date  = sy-datum
      valid_to_date    = '99991231'
    TABLES
      return           = lt_bom_ex
      bom_items        = lt_bom.

  " 遍历BOM项并生成层次结构
  LOOP AT lt_bom INTO ls_bom.
    CLEAR: ls_stpo.
    ls_stpo-item = ls_bom-stlkn.
    APPEND ls_stpo TO lt_stpo.
  ENDLOOP.

  LOOP AT lt_stpo INTO ls_stpo.
    " 读取物料清单头数据
    CALL FUNCTION 'BAPI_MATERIAL_BOM_READ'
      EXPORTING
        material         = iv_matnr
        plant            = 'YOUR_PLANT'
        bom_usage        = iv_stlal
        bom_application  = iv_stlty
        valid_from_date  = sy-datum
        valid_to_date    = '99991231'
      TABLES
        return           = lt_bom_ex
        bom_items        = lt_bom.

    " 读取BOM头数据
    CALL FUNCTION 'BAPI_MATERIAL_BOM_READ'
      EXPORTING
        material         = iv_matnr
        plant            = 'YOUR_PLANT'
        bom_usage        = iv_stlal
        bom_application  = iv_stlty
        valid_from_date  = sy-datum
        valid_to_date    = '99991231'
      TABLES
        return           = lt_bom_ex
        bom_items        = lt_bom.

    " 显示BOM
    CALL FUNCTION 'BAPI_MATERIAL_BOM_DISPLAY'
      EXPORTING
        material         = iv_matnr
        plant            = 'YOUR_PLANT'
        bom_usage        = iv_stlal
        bom_application  = iv_stlty
        valid_from_date  = sy-datum
        valid_to_date    = '99991231'
      TABLES
        return           = lt_bom_ex
        bom_items        = lt_bom.

    " 生成BOM
    IF sy-subrc = 0.
    ENDIF.

  ENDLOOP.

ENDFORM.

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无灵魂SAPer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值