SAP QA01/QA02/QA03的屏幕增强

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

2、屏幕增强的效果如下

SAP QA01/QA02/QA03的屏幕增强_第1张图片

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

首先是BADI:QPL1_SUBSCREEN_ADDON

SAP QA01/QA02/QA03的屏幕增强_第2张图片

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

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

SAP QA01/QA02/QA03的屏幕增强_第3张图片

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

SAP QA01/QA02/QA03的屏幕增强_第4张图片

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

SAP QA01/QA02/QA03的屏幕增强_第5张图片

在逻辑流中添加module,如下

SAP QA01/QA02/QA03的屏幕增强_第6张图片

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

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

DATA ls_qals TYPE qals .
  FIELD-SYMBOLS:  TYPE any.

  IF sy-tcode eq 'QA03' or sy-tcode eq 'QA02' or sy-tcode eq 'QA01'.
    ASSIGN ('(SAPLQPL1)QALS') TO .
    MOVE-CORRESPONDING  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:  TYPE any.
  IF sy-tcode eq 'QA01' or sy-tcode eq 'QA02'.
    CASE sy-ucomm.
      WHEN 'BU'.
        ASSIGN ('(SAPLQPL1)QALS') TO .
        ASSIGN COMPONENT 'JSPC' OF STRUCTURE  TO  .
         = qals-JSPC .
        ASSIGN COMPONENT 'BZ' OF STRUCTURE  TO  .
         = qals-BZ .
        ASSIGN COMPONENT 'SCGD' OF STRUCTURE  TO  .
         = qals-SCGD .
      WHEN OTHERS.
    ENDCASE.
  ENDIF.

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

你可能感兴趣的:(编程技术)