FB03屏幕增强实现显示/修改的转换
背景
因为 FICO 模块增强了 CodingBlock 字段,这个 9999 子屏幕的自定义字段在 FB01
是支持修改的,但是在 FB02/FB03
事务码都是没法直接修改的,因此应财务用户要求,对屏幕增强修改功能。
类似会计分配和文本一样,是空白区域,而不是灰色区域:
实现方式
最直观的方法就是通过增强屏幕,然后写代码去控制 PBO。以往的做法,可能在代码中用 sy-tcode
去控制是显示和修改,但是标准程序是有个 显示/修改 的切换,即使是 FB03 先进行查看,也能通过如下图的按钮切换到修改模式:
因此在这种场景下,如果只通过 Tcode 去控制,会不符合用户的常用使用习惯,达不到要求。
因此需要 Debug 研究标准代码,看点击这个按钮的时候做了哪些变化。
很快就定位到这段:
然后发现这个显示/修改状态是通过 t020-aktyp
来转换的。然后去看了这个表的内容,确实是 FI/AM 业务控制逻辑,可以看一下关于 FB0X 事务码的内容:
从中可以看出,AKTYP
分别的值对应:
- H:creation 创建
- V:modification 修改
- A:display 显示
因此,我们很好理解,获取当前屏幕的 aktyp
的值,如果不是 ‘A’,就需要将屏幕更改为可以输入的类型。将屏幕的 screen-input
设置为 1,然后 MODIFY SCREEN
在自定义屏幕 9999 中,中插入这样一段代码:
PROCESS BEFORE OUTPUT.
MODULE INIT_9999.
*{ INSERT
MODULE FRM_MODIFY_SCREEN. " 支持显示/修改的切换
*} INSERT
*
PROCESS AFTER INPUT.
CHAIN.
FIELD COBL-ZZTEST01.
FIELD COBL-ZZSCTG
FIELD COBL-ZZSCTG2.
MODULE CHECK_FLAG ON CHAIN-REQUEST.
ENDCHAIN.
然后在 FRM_MODIFY_SCREEN
中写下如下代码:
MODULE frm_modify_screen OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'
* IF sy-tcode = 'FB02'. " 因FB03也能进入修改状态,因此不能仅仅用事务码判断
FIELD-SYMBOLS: <lfs_t020> LIKE t020,
<fs_aktyp> TYPE t020-aktyp.
ASSIGN ('(SAPMF05L)T020') TO <lfs_t020>.
CHECK <lfs_t020> IS ASSIGNED.
ASSIGN COMPONENT 'AKTYP' OF STRUCTURE <lfs_t020> TO <fs_aktyp>.
IF <fs_aktyp> IS ASSIGNED.
DATA(lv_aktyp) = <fs_aktyp>.
ENDIF.
IF lv_aktyp IS INITIAL.
ASSIGN ('(SAPMF05A)T020') TO <lfs_t020>.
CHECK <lfs_t020> IS ASSIGNED.
ASSIGN COMPONENT 'AKTYP' OF STRUCTURE <lfs_t020> TO <fs_aktyp>.
IF <fs_aktyp> IS ASSIGNED.
lv_aktyp = <fs_aktyp>.
ENDIF.
ENDIF.
IF lv_aktyp IS INITIAL.
ASSIGN ('(SAPLF040)T020') TO <lfs_t020>.
CHECK <lfs_t020> IS ASSIGNED.
ASSIGN COMPONENT 'AKTYP' OF STRUCTURE <lfs_t020> TO <fs_aktyp>.
IF <fs_aktyp> IS ASSIGNED.
lv_aktyp = <fs_aktyp>.
ENDIF.
ENDIF.
IF lv_aktyp IS NOT INITIAL AND lv_aktyp <> 'A'.
LOOP AT SCREEN.
IF screen-name+0(7) = 'COBL-ZZ'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
增强成功的效果图如下:
自定义字段全部支持修改,也能在 FB02/03 中自由切换,到此,完美实现用户要求!
鼓掌👏撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。
其他使用到 AKTYP 的表
同理,销售订单/采购订单/物料 对应的屏幕也能这样操作,下面是使用到 AKTYP
字段的表格,找到你需要的表格,试试吧~
List of Tables using AKTYP Field | |
---|---|
Table | Note |
AT185 | Treasury: Starting Values for Subsequent Screen Control |
OIGSH | TD Shipment History |
T020 | FI/AM Transaction Control |
T063 | Screen Control: Inventory Management |
T066 | Screen Selection, Invoice Verification |
T078S | Action Type Screen Selection for G/L Acct Master Data |
T130M | Transaction control parameters: material master maintenance |
T138B | Material master screen sequence control |
T148M | Transaction control parameters: special stocks |
T168 | Screen Control, Purchasing |
T180 | Screen Sequence Control: Transaction Default Values |
T185F | Screen Control: Function Codes |
T342 | Control of Screen Sequence in WM |
T342T | Assignment of Title Bar to PF Status |
T370A | Activity Category for PM Lists |
T401M | Transaction control paramters: MRP profiles |
T440B | Control table for creating MRP record |
T441M | Forecast transaction control |
T450P | Transaction control for maintaining ind. requirements |
TC62 | Sequence of detail screens when processing header externally |
TJ180 | Initial Values of Transaction in IS-M |
TK180 | Default Values per Transaction (Screen Sequence Control) |
TKSB0 | Transaction control CO |
TTABS | Tables with Special Maintenance |
/BEV3/CH180 | Screen Sequence Control: Transaction Default Values |
原文地址:https://blog.csdn.net/SAP_yu/article/details/143744658
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!