1业务说明

此文档使用BAPI:BAPI_MATERIAL_BOM_GROUP_CREATE创建BOM

2前台实现

事务代码:CS01

输入行项目信息

保存即可

3代码实现

3.1调用BAPI

抬头

行项目

导入BAPI

3.2问题解决

3.2.1 成本核算标识置空

成本核算标识置空失败,因为业务配置默认打钩,传空置之后,系统默认使用默认配置打上勾。

后来查了资料,是因为当以下字段为空时,就默认使用T416V,也就是业务配置的默认值予以覆盖,

因此需要给其中一个字段传值,这样可以不适用默认值覆盖,这里我们选择的是生产相关字段。

之后就可以顺利置空了。

3.3源代码

WITH HEADER LINE.
  gw_subitemas TYPE bapi1080_rel_sui_itm_c,
  gt_subitemas TYPE TABLE OF bapi1080_rel_sui_itm_c.

DATA:item_no TYPE i,
  lv_check TYPE char1,
  lv_message type char200,
  lv_text     TYPE char120 VALUE 'texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext'.
"以父物料汇总
CLEAR gt_bomgroup.
gt_bomgroup-bom_group_identification = 'BAPI_SMP_COL1'.  "可以为空
gt_bomgroup-object_type = 'BGR'.
gt_bomgroup-object_id = 'SIMPLE1'.
gt_bomgroup-bom_usage = '1'"用途
gt_bomgroup-ltxt_lang = sy-langu.
gt_bomgroup-technical_type = ''.
gt_bomgroup-bom_group = ''.  "可以为空
gt_bomgroup-created_in_plant = '2010'."工厂
"    gt_bomgroup-bom_text = lt_data-bom_text."BOM文本
APPEND gt_bomgroup.

"         HEADER DETAILS OF THE DIFFERENT gt_variants
CLEAR gt_variants.
gt_variants-bom_group_identification = 'BAPI_SMP_COL1'.
gt_variants-object_type = 'BOM'.
gt_variants-object_id = 'SIMPLE1'.
gt_variants-alternative_bom = '09'."备选物料清单 此处要填两位数字,不够补零
gt_variants-bom_status = '01'.  "BOM状态
gt_variants-base_qty = '10'."基本数量
"    gt_variants-base_unit = lt_data-bmein."计量单位
gt_variants-valid_from_date = sy-datum."生效日期
"    gt_variants-alt_text = lt_data-stktx."可选文本
gt_variants-ltxt_lang = sy-langu.
gt_variants-langu_iso = sy-langu.
gt_variants-function 'NEW'.  "NEW表示新建.
APPEND gt_variants.

CLEAR gt_materialrelations.
gt_materialrelations-bom_group_identification = 'BAPI_SMP_COL1'.  "可以为空
gt_materialrelations-material_long = '000000000005000021'.  "物料号
gt_materialrelations-plant = '2010'."工厂
gt_materialrelations-bom_usage = '1'."BOM用途
gt_materialrelations-alternative_bom = '09'."可选的BOM 此处要填两位数字,不够补零
APPEND gt_materialrelations.
"
"    CLEAR gt_itemassignments.
"    gt_itemassignments-bom_group_identification = ''. " 可以为空
"    gt_itemassignments-sub_object_type = 'ITM'.
"    gt_itemassignments-sub_object_id = object_id.
"    gt_itemassignments-super_object_type = 'BOM'.
"    gt_itemassignments-super_object_id = 'BOM1'.
"    gt_itemassignments-valid_from_date = sy-datum.
"    gt_itemassignments-function = 'NEW'.
"    APPEND gt_itemassignments.

"    CLEAR gw_subitemas.
"    gw_subitemas-bom_group_identification = bom_group_identification.
"    gw_subitemas-sub_object_type = 'SUI'.
"    gw_subitemas-sub_object_id = 'SIM1'.
"    gw_subitemas-super_object_type = 'ITM'.
"    gw_subitemas-super_object_id = object_id.
"    APPEND gw_subitemas TO gt_subitemas.

"取父物料的子件信息
item_no = item_no + 1.
CLEAR gt_items.
gt_items-bom_group_identification = 'BAPI_SMP_COL1'.  "可以为空
gt_items-object_type = 'ITM'.
gt_items-object_id = item_no.
gt_items-item_no = '0010'."项目
gt_items-item_cat = 'L'."项目类别
gt_items-component_long = '000000000004000012'."组件编码
gt_items-comp_qty = '10'."组件数量
*gt_items-alt_item_group gs_data-alpgr."项目替代组
gt_items-prod_rel = 'X'."标识:与生产相关项目
gt_items-cost_rel = ''."成本核算相关项的标识符

*IF gs_data-alpgr IS NOT INITIAL .
*  gt_items-alt_item_strategy = '2'."替代项目:策略
*ENDIF.
*gt_items-alt_item_prio = gs_data-alprf."优先级

*gt_items-usage_prob = 100."以百分比表示的使用概率(备选项目)

"gt_items-comp_unit = gs_data-meins."组件计量单位
gt_items-item_text1 = lv_text+0(40)."项目长文本
gt_items-item_text2 = lv_text+40(80).
gt_items-ltxt_lang = sy-langu.  "这个参数一定要填
APPEND gt_items.

CLEAR gt_itemassignments.
gt_itemassignments-bom_group_identification = 'BAPI_SMP_COL1'可以为空
gt_itemassignments-sub_object_type = 'ITM'.
gt_itemassignments-sub_object_id = item_no.
gt_itemassignments-super_object_type = 'BOM'.
gt_itemassignments-super_object_id = 'SIMPLE1'.
gt_itemassignments-valid_from_date = sy-datum.
gt_itemassignments-function 'NEW'.
APPEND gt_itemassignments.

"BOM操作
CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
  EXPORTING
*   TESTRUN           = 'X'
    all_error         = 'X'
  TABLES
    bomgroup          = gt_bomgroup
    variants          = gt_variants
    items             = gt_items
    materialrelations = gt_materialrelations
    itemassignments   = gt_itemassignments
*   subitemassignments = gt_subitemas
    return            = gt_return.

lv_check = 'S'.
LOOP AT gt_return INTO gs_return WHERE type 'A' OR type 'E'.
  lv_message = lv_message && gs_return-message.
  lv_check = 'E'.
ENDLOOP.

IF lv_check = 'S'.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait 'X'.
*  WRITE:GV_NUMBER.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

SAP CSO1创建BOM的更多相关文章

  1. PP 创建BOM

    转自 http://blog.csdn.net/u012369651/article/details/19190939 一.最终结果预览. 二.创建过程. 使用到的事务码 CS01 创建BOM CS0 ...

  2. SAP HANA 创建属性视图

    [Step By Step]SAP HANA创建属性视图(Attribute View) Demo Instruction: 从一张用户信息表中组合出相信地址. 1. 在modeler窗口中,找到相应 ...

  3. SAP Query创建

    一.SAP Query创建步骤 1.创建User Group User Group即用户组,可以将所创建的列表使用权限分配给具体用户,Tcode:SQ03 在使用者群組初始界面里输入自定义名称,单击[ ...

  4. 【MM系列】SAP MM模块-BOM展开函数

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-BOM展开函数   ...

  5. 【EWM系列】SAP EWM创建warehouse task的函数

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP EWM创建warehouse ...

  6. BAPI_MATERIAL_BOM_GROUP_CREATE创建BOM

    天使用BAPI函数:BAPI_MATERIAL_BOM_GROUP_CREATE创建BOM组数据,过程中发现很多问题啊.总结如下: BOMGROUP        VARIANTS 这两个参数必须要传 ...

  7. SAP MM01 创建物料主数据 [关注公众号后回复MM01获取更多资料]

    操作内容 物料主数据,适用于所有有物料编码物料相关信息的系统维护 业务流程 新项目设计冻结后—M公司 PD用-物料编码申请表D-BOM Material Number  Application部门内部 ...

  8. 二、在SAP中创建一个程序

    一.我们来到SE38 二.添加一个程序的名字,需要以Y或者Z开头,点击创建就可以了 三.我们输入hello Sap,然后选择可执行程序,然后保存 四.创建对象目录时,可以选择把这个加入到包中,或者选择 ...

  9. SAP BAPI创建批次 为保存内部对象号

    使用BAPI:BAPI_BATCH_CREATE 创建批次时,能够保存成功,但是MCH1表和KSSK表中没有内部对象号. 无奈,查找源码. 最后在BAPI中调用的这个函数这里找到了问题.此处kzcla ...

随机推荐

  1. Jmeter发送jdbc请求进行大批量造数

    创建批量造数脚本,一个简单的结构如下图所示, 1.线程组(10个线程重复运行2次,相当于造20个数) 2.用户定义变量(这是全局变量,用于后面随机筛选用) 3.数据库连接配置 4.计数器(用于主键递增 ...

  2. Mac os Pycharm 中使用Stanza进行实体识别(自然语言处理nlp)

    stanza 是斯坦福开源Python版nlp库,对自然语言处理有好大的提升,具体好在哪里,官网里面都有介绍,这里就不翻译了.下面放上对应的官网和仓库地址. stanza 官网地址:点击我进入 sta ...

  3. vue路由中 Navigating to current location ("/router") is not allowed

    报错原因:多次点击同一路由,导致路由被多次添加 解决方法: router/index中添加以下代码: //router/index.js Vue.use(VueRouter) //导入vue路由 co ...

  4. API加密框架monkey-api-encrypt发布1.2版本

    框架介绍 monkey-api-encrypt 是我之前写的一个API加密的框架,主要是将加密/解密的逻辑交给框架实现,等数据到达Controller后自动解密了,让开发人员不需要关注数据的加解密操作 ...

  5. 常问的MySQL面试题整理

    char.varchar 的区别是什么? varchar是变长而char的长度是固定的.如果创建的列是固定大小的,你会得到更好的性能 truncate 和 delete 的区别是什么? delete ...

  6. 最新VMware虚拟机安装Linux系统-CentOS(详细教程)

    一.前言 最近有网友反应初学Linx不会安装,找了许多教程不是太全面,总会遇到一些要不是启动不了,要不是连不上网,各种问题,为了让大家能够顺利的安装,小乐写了一个非常详细的教程,让大家少入坑. 二.背 ...

  7. Flair:一款简单但技术先进的NLP库

    过去的几年里,在NLP(自然语言处理)领域,我们已经见证了多项令人难以置信的突破,如ULMFiT.ELMo.Facebook的PyText以及谷歌的BERT等等. 这些技术大大推进了NLP的前沿性研究 ...

  8. 尝试用Vue.js开发网页小游戏的过程

    准备 首先去官方下载并安装VSCODE,下载地址 https://code.visualstudio.com/.安装后打开会发现是英文版的,需要去安装插件来汉化.具体是在扩展插件搜索chinese,选 ...

  9. 理解java容器底层原理--手动实现HashMap

    HashMap结构 HashMap的底层是数组+链表,百度百科找了张图: 先写个链表节点的类 package com.xzlf.collection2; public class Node { int ...

  10. 数字签名---RSA算法

    保证信息在传输过程中的安全性:             保密通信.密钥交换.数字签名.   RSA算法 Diffie-Hellman算法 DSA算法 保密通信 √ × × 密钥交换 √ √ × 数字签 ...