屏幕增强实例二(BOM Header)

本文介绍如何在BOM主档中增加自定义字段,并详细解释了通过SAP系统实现这一过程的具体步骤,包括创建自定义屏幕、定义字段及数据交互。

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

我们想在BOM主档中增加一些自定义Field.
增强后的效果如下:
屏幕增强实例二(BOM <wbr>Header)
这部分数据存储在Table STKO中.

Step 1.
找EXIT.
屏幕增强实例二(BOM <wbr>Header)

Step 2.
CMOD, 新建一个ZBOMTET1. 
屏幕增强实例二(BOM <wbr>Header)
EXIT_SAPLCSDI_004 是向我们自定义的屏幕传递数据的, 也就是存放在STKO中的自定义字段数据.
EXIT_SAPLCSDI_005 是将自定义屏幕中的数据传到主程序中来.

Step 3. 先处理 EXIT_SAPLCSDI_004.
定义全局变量.
屏幕增强实例二(BOM <wbr>Header)
屏幕增强实例二(BOM <wbr>Header)
这时我们发现实际上我们是在FunctionPool  SAPLXCSA 中, Fucntion Group为 XCSA.
屏幕增强实例二(BOM <wbr>Header)

回到下图中的画面, 在输入参数USERDATA中可以添加我们自定义的字段.
双击CSCI_STKO, 再双击CI_STKO, 在这里定义我们要的字段.
屏幕增强实例二(BOM <wbr>Header)
屏幕增强实例二(BOM <wbr>Header)

定义好后, 再编辑如下代码, 
意思是把 USERDATA 中的数据付给 HLP_CI_STKO, 实际也就是STKO中的数据.
屏幕增强实例二(BOM <wbr>Header)

Step 4. 再来编辑 EXIT_SAPLCSDI_005.
屏幕增强实例二(BOM <wbr>Header)

屏幕增强实例二(BOM <wbr>Header)
这意思是把HLP_CI_STKO中的数据传给USERDATA,也就是回写到STKO Table中.

Step 5. 定义自定义屏幕的名字.
屏幕增强实例二(BOM <wbr>Header)

Step 6. 定义屏幕格式.
屏幕增强实例二(BOM <wbr>Header)
屏幕增强实例二(BOM <wbr>Header)

屏幕增强实例二(BOM <wbr>Header)
字段名字,  CI_STKO-ZVER,  CI_STKO-MODELNO
屏幕增强实例二(BOM <wbr>Header)

定义逻辑流.
屏幕增强实例二(BOM <wbr>Header)

当为CS03时只显示.
屏幕增强实例二(BOM <wbr>Header)

把数据回写到Table STKO中去.
屏幕增强实例二(BOM <wbr>Header)

有个问题是做语法check时老报hlp_ci_stko没有定义, 但激活又没有问题.
成功.
### 关于SAP BOM递归实现的方法 在SAP系统中,物料清单(Bill of Materials, BOM)是一种用于描述产品结构的数据集合。为了处理复杂的BOM层次关系,通常会涉及递归逻辑来遍历整个BOM树状结构。以下是关于如何通过ABAP编程实现SAP BOM递归的具体方法。 #### 使用内部表和SELECT语句构建递归逻辑 可以通过循环查询数据库中的`STX01`或`MAKT`等表格来获取子项及其父项的关系,并利用内部表存储中间结果。具体实现如下: ```abap DATA: lt_bom TYPE TABLE OF stx01, ls_bom LIKE LINE OF lt_bom. SELECT * FROM stx01 INTO TABLE @lt_bom WHERE stabnr = 'YOUR_BOM_ID'. LOOP AT lt_bom INTO ls_bom. " 处理当前层的BOM条目 PERFORM process_bom USING ls_bom-stposn. ENDLOOP. ``` 上述代码片段展示了如何从`STX01`表读取指定BOM编号下的所有组件[^1]。然而,在实际应用中可能需要进一步深入每一级子装配件直至最低层级部件为止。 #### 非递归方式替代传统递归函数 考虑到性能因素以及堆栈溢出风险等问题,建议改用迭代形式代替直接嵌套调用自身的方式完成同样目的的任务。下面是一个简单的例子说明这种方法的工作原理: ```abap FIELD-SYMBOLS: <fs_node> TYPE any. DATA: lv_current_level TYPE i VALUE 0, it_stack TYPE hashed_table WITH UNIQUE KEY index INITIAL SIZE 10, wa_stack TYPE STANDARD TABLE OF REF TO data OCCURS 0 WITH HEADER LINE. " 初始化根节点入栈操作... APPEND NEW DATA(lv_root)(...). " 假设这里创建了一个指向某个特定对象实例的新变量引用 it_stack[ index = sy-tabix ] ?= wa_stack-sy-tabix. WHILE lines( it_stack ) > 0. READ TABLE it_stack TRANSPORTING NO FIELDS WITH KEY index = lv_top_index DESCENDING. DELETE it_stack INDEX lv_top_index. ASSIGN COMPONENT ... OF STRUCTURE wa_stack-ref TO <fs_node>. " 获取下一个待访问顶点信息 IF <fs_node>-has_children = abap_true THEN LOOP AT children_of(<fs_node>) INTO LOCAL copy_data. " 对应位置处展开其直系后代列表 INCREASE lv_current_level BY 1. APPEND NEW DATA(...)(...) TO wa_stack. " 将新发现的孩子加入等待队列末端 MODIFY it_stack ADDING (wa_stack-line). ENDLOOP. ELSEIF required_condition_met(...) IS TRUE THEN CALL FUNCTION 'PROCESS_LEAF' EXPORTING leaf_details = ... ENDIF. ENDWHILE. ``` 此版本避免了显式的自我重复呼叫动作,而是依靠外部辅助数据结构——即模拟手工维护的一系列临时记录集合作为虚拟工作区—逐步推进探索流程直到完全覆盖目标领域范围内的全部要素为止[^2]。 #### 结合ALV显示最终结果 一旦完成了对整棵BOM树形图谱的整体扫描之后,可以考虑借助ALV控件把所得成果呈现给终端使用者查看。例如,可参照以下模板定制专属报告界面布局样式: ```abap CALL METHOD cl_gui_alv_grid=>create_tree_display( EXPORTING is_layout = gs_layout it_fieldcatalog = gt_fcat[] CHANGING it_outtab = gt_output ). ``` 其中参数`gs_layout`定义视窗外观属性设置;而字段目录数组`gt_fcat[]`则详尽列举出了每栏位名称连同关联特性等内容[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值