SAP QA01/QA02/QA03的屏幕增强

1、透明表QALS中的字段增强,不赘述了

2、屏幕增强的效果如下

3、关键是增强点的寻找。

首先是BADI:QPL1_SUBSCREEN_ADDON

添加了自己的屏幕,测试没有任何改变。

然后在QA01中程序SAPLQPL1中200屏幕的程序中的红框部分打断点,跟踪G_SUB_TAB_STRIP的值

追踪到屏幕201,再在如下红框附件打断点,跟踪G_BADI_PROG、G_BADI_DYNNR的值

追踪到程序SAPLSEXM 中的屏幕200,然后修改该屏幕

在逻辑流中添加module,如下

4、在pbo添加module STATUS_0200中实现屏幕的显示和取值。使用ASSIGN ('(SAPLQPL1)QALS') TO <fs>. 取主表中的数据,

限制sy-tcode是因为如果不限制,会影响到F-02 的使用

DATA ls_qals TYPE qals .
  FIELD-SYMBOLS: <fs> TYPE any.

  IF sy-tcode eq 'QA03' or sy-tcode eq 'QA02' or sy-tcode eq 'QA01'.
    ASSIGN ('(SAPLQPL1)QALS') TO <fs>.
    MOVE-CORRESPONDING <fs> to ls_qals .
    SELECt SINGLE GROES INTO MARA-GROES FROM mara Where matnr = ls_qals-matnr .

    IF qals-JSPC is INITIAL.
      qals-JSPC = ls_qals-JSPC .
    ENDIF.
    IF qals-BZ is INITIAL.
      qals-BZ = ls_qals-BZ .
    ENDIF.
    IF qals-SCGD is INITIAL.
      qals-SCGD = ls_qals-SCGD .
    ENDIF.

    IF sy-tcode eq 'QA03'.
      LOOP AT SCREEN.
        IF SCREEN-name eq 'QALS-JSPC'
          or SCREEN-name eq 'QALS-BZ'
          or SCREEN-name eq 'QALS-SCGD'  .
          SCREEN-input = 0 .
        ENDIF.
        MODIFY SCREEN .
      ENDLOOP.
    ENDIF.
  else.
    LOOP AT SCREEN.
        IF SCREEN-name eq 'QALS-JSPC'
          or SCREEN-name eq 'QALS-BZ'
          or SCREEN-name eq 'QALS-SCGD'
          or SCREEN-name eq 'MARA-GROES'  .
          SCREEN-ACTIVE = 0 .
        ENDIF.
        MODIFY SCREEN .
      ENDLOOP.
  endif.

5、 在pai添加MODULE USER_COMMAND_0200..实现保存的事件响应,将屏幕上的值写到内存里

FIELD-SYMBOLS: <fvalue> TYPE any.
  IF sy-tcode eq 'QA01' or sy-tcode eq 'QA02'.
    CASE sy-ucomm.
      WHEN 'BU'.
        ASSIGN ('(SAPLQPL1)QALS') TO <fs>.
        ASSIGN COMPONENT 'JSPC' OF STRUCTURE <fs> TO <fvalue> .
        <fvalue> = qals-JSPC .
        ASSIGN COMPONENT 'BZ' OF STRUCTURE <fs> TO <fvalue> .
        <fvalue> = qals-BZ .
        ASSIGN COMPONENT 'SCGD' OF STRUCTURE <fs> TO <fvalue> .
        <fvalue> = qals-SCGD .
      WHEN OTHERS.
    ENDCASE.
  ENDIF.

6、需求功能虽然实现,但我不知道这样做是否没有风险,如果有朋友看到这篇文章,知道更好的方法,请给我回复,不胜感激

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值