QM质检增强(QA32)

文章详细描述了如何在SAP系统中使用BADI(BusinessAdd-In)进行CI_QALS数据的获取和更新操作,涉及BADIGET_DATA和PUT_DATA方法,以及与ZSY_FM_QM_BADI_GET_DATA和ZSY_FM_QM_BADI_PUT_DATA函数的交互过程。
摘要由CSDN通过智能技术生成

 SE11:CI_QALS

BADI:QEVA_SUBSCREEN_1101

SE19->QEVA_SUBSCREEN_1101

BADI:GET_DATA

  METHOD if_ex_qeva_subscreen_1101~get_data.
    DATA:lv_string TYPE string VALUE '(SAPMQEVA)QALS' .
    DATA:ls_infos TYPE ci_qals .
    DATA:ls_cust TYPE ci_qals .
    FIELD-SYMBOLS:<fs_info> TYPE qals .

    CALL FUNCTION 'ZSY_FM_QM_BADI_GET_DATA'
      IMPORTING
        e_qals  = e_qals.
*        e_rqeva = e_rqeva..
    MOVE-CORRESPONDING e_qals TO if_ex_qeva_subscreen_1101~g_qals .
    ASSIGN (lv_string) TO <fs_info> .
    IF sy-subrc = 0 .
      MOVE-CORRESPONDING e_qals TO ls_cust .
      MOVE-CORRESPONDING ls_cust TO <fs_info> .
    ENDIF .
  ENDMETHOD.

 BADI:PUT_DATA

  METHOD if_ex_qeva_subscreen_1101~put_data.
    DATA:ls_qals TYPE qals .
    DATA:ls_cust TYPE ci_qals.

    IF if_ex_qeva_subscreen_1101~g_qals IS NOT INITIAL .
      MOVE-CORRESPONDING if_ex_qeva_subscreen_1101~g_qals TO ls_qals .
    ELSE .
      MOVE-CORRESPONDING i_qals TO ls_qals .
    ENDIF .

    MOVE-CORRESPONDING ls_qals TO ls_cust.
    SELECT SINGLE *
      FROM zsy_d_ewmjyplog1
      INTO @DATA(ls_data)
      WHERE prueflos = @ls_qals-prueflos
        AND zgysqr = '3'.

    IF sy-subrc IS INITIAL.
      ls_qals-remark       = ls_data-remark     .
      ls_qals-znc_desc     = ls_data-znc_desc   .
      ls_qals-lifnr_d      = ls_data-lifnr_d    .
      ls_qals-zclaim_rate  = ls_data-zclaim_rate.
      ls_qals-zdeparm      = ls_data-zdeparm    .
    ENDIF.

    CALL FUNCTION 'ZSY_FM_QM_BADI_PUT_DATA'
      EXPORTING
        i_qals  = ls_qals
        i_rqeva = i_rqeva
        i_qherk = flt_val.
  ENDMETHOD.

函数:ZSY_FM_QM_BADI_GET_DATA

FUNCTION zsy_fm_qm_badi_get_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  EXPORTING
*"     VALUE(E_QALS) TYPE  QALS
*"     VALUE(E_REEVA) TYPE  RQEVA
*"----------------------------------------------------------------------

  MOVE-CORRESPONDING gs_qals TO e_qals.

ENDFUNCTION.

函数:ZSY_FM_QM_BADI_PUT_DATA

FUNCTION zsy_fm_qm_badi_put_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_QALS) TYPE  QALS OPTIONAL
*"     VALUE(I_RQEVA) TYPE  RQEVA OPTIONAL
*"     VALUE(I_QHERK) TYPE  QHERK OPTIONAL
*"----------------------------------------------------------------------

  MOVE-CORRESPONDING i_qals TO qals_cust.
  MOVE-CORRESPONDING i_qals TO gs_qals.
  MOVE-CORRESPONDING i_rqeva TO gs_rqeva.
  MOVE i_qherk TO gv_flt_val.



ENDFUNCTION.

 screen:100  子屏幕  qals_cust

PROCESS BEFORE OUTPUT.
 MODULE STATUS_0001.
*
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0001.

*----------------------------------------------------------------------*
***INCLUDE LZSY_FG_UDSCRPBO.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0001 INPUT.
  MOVE-CORRESPONDING qals_cust TO gs_qals .
*触发BADI get_data方法
  IF ref_subscr_1101_qeva IS NOT INITIAL .
    CALL METHOD ref_subscr_1101_qeva->get_data
      EXPORTING
        flt_val = gv_flt_val
      IMPORTING
        e_qals  = gs_qals
        e_rqeva = gs_rqeva.
  ENDIF .
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0001 OUTPUT.
  IF ref_subscr_1101_qeva IS INITIAL.
    CALL METHOD cl_exithandler=>get_instance_for_subscreens
      CHANGING
        instance                      = ref_subscr_1101_qeva
      EXCEPTIONS
        no_reference                  = 1
        no_interface_reference        = 2
        no_exit_interface             = 3
        data_incons_in_exit_managem   = 4
        class_not_implement_interface = 5
        OTHERS                        = 6.

    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.
ENDMODULE.

 函数抬头:LZSY_FG_UDSCRTOP

TABLES qals_cust.
DATA: gs_qals TYPE qals.
DATA: gv_flt_val TYPE qherk,
      gs_rqeva   TYPE  rqeva.
DATA: ref_subscr_1101_qeva  TYPE REF TO if_ex_qeva_subscreen_1101.
DATA: ok_code LIKE sy-ucomm.

 

CMOD:

ZXQPLTOP
ZXQPLU04  EXIT_SAPLQPL1_004
ZXQPLU06  EXIT_SAPLQPL1_006

 ZXQPLTOP:

*&---------------------------------------------------------------------*
*& 包含               ZXQPLTOP
*&---------------------------------------------------------------------*
TABLES: qals_cust.

DATA: gs_cust TYPE qals_cust.
DATA: g_display TYPE c.

ZXQPLU04

*&---------------------------------------------------------------------*
*& 包含               ZXQPLU04
*&---------------------------------------------------------------------*

DATA: l_trtyp    LIKE t160-trtyp,
      l_fs_c(30) TYPE c VALUE '(SAPLQPL1)G_T185F_AKTI'.

FIELD-SYMBOLS: <l_fs>.

ASSIGN (l_fs_c) TO <l_fs>.
IF sy-subrc = 0.
  l_trtyp = <l_fs>.
  CASE l_trtyp.
    WHEN  'A'.
      g_display = 'X'.
    WHEN OTHERS.
      g_display = ''.
  ENDCASE.
ENDIF.

MOVE-CORRESPONDING i_qals TO qals_cust.

SELECT SINGLE *
  FROM zsy_d_ewmjyplog1
  INTO @DATA(ls_data)
  WHERE prueflos = @i_qals-prueflos
    AND zgysqr = '3'.

IF sy-subrc IS INITIAL.
  qals_cust-remark       = ls_data-remark     .
  qals_cust-znc_desc     = ls_data-znc_desc   .
  qals_cust-zclaim_rate  = ls_data-zclaim_rate.
  qals_cust-zdeparm      = ls_data-zdeparm    .
  qals_cust-lifnr_d      = ls_data-lifnr_d    .
ENDIF.

ZXQPLU06

*&---------------------------------------------------------------------*
*& 包含               ZXQPLU06
*&---------------------------------------------------------------------*
MOVE-CORRESPONDING QALS_CUST TO E_QALS_CUST.
e_active = 'X'.

 函数组:XQPL 屏幕100  子屏幕  qals_cust

PROCESS BEFORE OUTPUT.
 MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.

*----------------------------------------------------------------------*
***INCLUDE ZXQPLO01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  LOOP AT SCREEN.
    IF g_display = 'X'.
      screen-input = '0'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值