ZPPFM006 获取标准BOM数

FUNCTION zppfm006.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_MATNR) TYPE  MATNR
*"  EXPORTING
*"     VALUE(O_MSG) TYPE  TEXT200
*"  TABLES
*"      O_STPOX STRUCTURE  STPOX
*"      O_CSCMAT STRUCTURE  CSCMAT
*"      O_MARA STRUCTURE  MARA
*"      O_MAKT STRUCTURE  MAKT
*"----------------------------------------------------------------------

  TABLES: mara.
  TABLES: makt.

  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE o_mara"主表
  FROM mara
  WHERE mara~matnr = i_matnr.

  IF sy-subrc IS NOT INITIAL.
    o_msg = '物料不存在'.
    EXIT.
  ELSE.
    o_msg = 'OK'.
  ENDIF.

  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE o_makt"主表
  FROM makt
  WHERE makt~matnr = i_matnr.





  CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
    EXPORTING
      capid  = 'PP01'                   "BOM类型,比如生产BOM,研发BOM,销售BOM等等
      datuv  = sy-datum                 "填入日期,函数据此日期筛选出有效的组件
      ehndl  = '1'
      emeng  = 1000                     "设定的用量单位
      mehrs  = 'X'                      "有值表示多层展开,类似事物码CS12
      mtnrv  = i_matnr                  "BOM料号
      stlan  = '1'                      "类似参数CAPID,限定被展开BOM的性质
      werks  = '1001'
    TABLES
      stb    = o_stpox
      matcat = o_cscmat.
ENDFUNCTION.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 获取BOM(浏览器对象模型)树的代码的实现方式有很多种,下面是一种常见的实现方式: ```javascript function getBomTree(node) { let tree = { name: node.nodeName, children: [] }; for (let i = 0; i < node.childNodes.length; i++) { let childNode = node.childNodes[i]; if (childNode.nodeType === 1) { // Element node tree.children.push(getBomTree(childNode)); } else if (childNode.nodeType === 3) { // Text node tree.children.push({ name: "TEXT", value: childNode.nodeValue }); } } return tree; } // 使用方法 let bomTree = getBomTree(document.documentElement); console.log(bomTree); ``` 上述代码中的`getBomTree`函会遍历传入的节点及其子节点,创建一个包含节点信息的树形结构。对于元素节点,会递归调用`getBomTree`函;对于文本节点,会将节点值保存在`value`属性中。最后返回构建好的BOM树。 调用`getBomTree`函时,可以传入任意节点作为参。一般情况下,可以将`document.documentElement`作为参,它表示整个文档的根节点。获取到的`bomTree`对象将包含整个BOM树的信息。 这只是一种实现方式,根据具体需求和使用场景的不同,可能需要对代码进行适当的修改和调整。 ### 回答2: 获取BOM树的代码可以采用递归的方式遍历HTML文档树,逐层获取每个节点的子节点,并将节点信息保存到一个列表中。 以下是一个示例代码: ``` def get_bom_tree(node): bom_tree = [] # 用于保存BOM树的列表 children = node.childNodes # 获取当前节点的子节点列表 for child in children: if child.nodeType == child.ELEMENT_NODE: # 判断节点类型为元素节点 child_data = { 'tag': child.tagName, # 节点标签名 'attrs': dict(child.attributes.items()), # 节点属性 'children': get_bom_tree(child) # 递归获取子节点的BOM树 } bom_tree.append(child_data) return bom_tree # 示例用法 from xml.dom import minidom dom = minidom.parse('path/to/html/file') # 解析HTML文件 bom_tree = get_bom_tree(dom.documentElement) # 获取BOM树 # 打印BOM树 import json print(json.dumps(bom_tree, indent=4)) ``` 请注意,该代码使用了Python的内置库`xml.dom.minidom`来解析HTML文件,并递归获取BOM树。在使用之前,需要安装`xml.dom`库,可以使用`pip install xml.dom`命令进行安装。 ### 回答3: 获取BOM树(Browser Object Model)的代码可以通过JavaScript来实现。BOM树是指代表浏览器窗口和窗口之间关系的树状结构。在Web开发中,可以使用以下代码来获取BOM树: ```javascript function getBomTree() { var currentWindow = window; // 获取当前窗口对象 var bomTree = { window: currentWindow, // 当前窗口对象为根节点 children: [] // 存储子窗口的组 }; // 递归遍历子窗口 function traverseChildren(win, parentNode) { var iframes = win.document.getElementsByTagName('iframe'); // 获取当前窗口中的iframe元素 for (var i = 0; i < iframes.length; i++) { var iframeWindow = iframes[i].contentWindow; // 获取iframe窗口对象 var childNode = { window: iframeWindow, // 子窗口对象 children: [] // 存储子窗口的组 }; parentNode.children.push(childNode); // 将子窗口节点添加到父节点的children组中 traverseChildren(iframeWindow, childNode); // 递归遍历子窗口 } } traverseChildren(currentWindow, bomTree); // 调用递归函遍历子窗口 return bomTree; } // 调用示例 var bomTree = getBomTree(); console.log(bomTree); ``` 以上代码通过递归函`traverseChildren`来遍历子窗口,使用`getElementsByTagName`方法获取当前窗口中的所有`iframe`元素,然后获取其`contentWindow`属性来获取子窗口对象。通过递归调用,将所有子窗口对象存储在BOM树中。最后通过`console.log`将BOM树输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值