ABAP报表调用标准事务代码-双击物料调转至MM03 等跳转功能

*  &---------------------------------------------------------------------*
*  & 3 ALV 三个双击事件。
*  &---------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                         RS_SELFIELD TYPE SLIS_SELFIELD.

  DATA:LS_OPT     TYPE CTU_PARAMS.
  DATA LT_MESSAGE TYPE TABLE OF BDCMSGCOLL.
  DATA ZCX_SY_AUTHORIZATION_ERROR TYPE REF TO CX_SY_AUTHORIZATION_ERROR.
  DATA:LR_GRID TYPE REF TO CL_GUI_ALV_GRID.

  DATA: LT_OUT LIKE LINE OF GT_OUT.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = LR_GRID.
  CALL METHOD LR_GRID->CHECK_CHANGED_DATA.


  READ TABLE GT_OUT INTO LT_OUT INDEX RS_SELFIELD-TABINDEX.
  CASE R_UCOMM.
    WHEN '&IC1'."双击事件   此处通过设断点调试寻找r_ucomm值,填写到此处
      CASE RS_SELFIELD-FIELDNAME.
        WHEN 'MATNR'.
          IF SY-SUBRC 0.
            SET PARAMETER ID 'MAT' FIELD LT_OUT-MATNR.
            CALL TRANSACTION 'MM03' ."AND SKIP FIRST SCREEN.
          ENDIF.

        WHEN 'PRUEFLOSS'.
          IF SY-SUBRC 0.
            SET PARAMETER ID 'QLS' FIELD LT_OUT-PRUEFLOSS.
            CALL TRANSACTION 'QA03' AND SKIP FIRST SCREEN.
          ENDIF.

        WHEN 'PRUEFLOS'.
          IF SY-SUBRC 0.
            SET PARAMETER ID 'QLS' FIELD LT_OUT-PRUEFLOS.
            CALL TRANSACTION 'QA03' AND SKIP FIRST SCREEN.
          ENDIF.

        WHEN 'CHARG'.
          IF SY-SUBRC 0.
            SET PARAMETER ID 'CHA' FIELD LT_OUT-CHARG.
            SET PARAMETER ID 'MAT' FIELD LT_OUT-MATNR.
            SET PARAMETER ID 'WRK' FIELD LT_OUT-WERKS.
            CALL TRANSACTION 'MSC3N'." AND SKIP FIRST SCREEN.

          ENDIF.
        WHEN 'EBELN'.
          IF SY-SUBRC 0.

            LS_OPT-DISMODE 'E'.
            LS_OPT-DEFSIZE 'X'.

            PERFORM FRM_DBC_DYNPRO USING 'SAPLMEGUI' '0014'.
            PERFORM FRM_BDC_FIELD  USING 'BDC_OKCODE' '=MECHOB'.
            PERFORM FRM_DBC_DYNPRO USING 'SAPLMEGUI' '0002'.
            PERFORM FRM_BDC_FIELD  USING 'BDC_OKCODE' '=MEOK'.
            PERFORM FRM_BDC_FIELD  USING 'MEPO_SELECT-EBELN' LT_OUT-EBELN.
            PERFORM FRM_BDC_FIELD  USING 'MEPO_SELECT-BSTYP_F' 'X'.

            TRY .
                CALL TRANSACTION 'ME23N' WITH AUTHORITY-CHECK
                   USING GT_BDCDATA
                   OPTIONS FROM LS_OPT
                   MESSAGES INTO LT_MESSAGE.
              CATCH CX_SY_AUTHORIZATION_ERROR INTO ZCX_SY_AUTHORIZATION_ERROR.

                CALL METHOD ZCX_SY_AUTHORIZATION_ERROR->IF_MESSAGE~GET_TEXT
                  RECEIVING
                    RESULT DATA(LV_TEXT).

                MESSAGE LV_TEXT TYPE 'E'.

            ENDTRY.
          ENDIF.

        WHEN 'AUFNR'.
          CHECK NOT LT_OUT-AUFNR IS INITIAL.
          SET PARAMETER ID 'ANR' FIELD LT_OUT-AUFNR.
          CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.

        WHEN 'MBLNR'.

          CHECK NOT LT_OUT-MBLNR IS INITIAL.

          CALL FUNCTION 'MIGO_DIALOG'
            EXPORTING
              I_ACTION            'A04'
              I_REFDOC            'R02'
              I_MBLNR             = LT_OUT-MBLNR
            EXCEPTIONS
              ILLEGAL_COMBINATION 1
              OTHERS              2.

      ENDCASE.
  ENDCASE.

  CALL METHOD LR_GRID->REFRESH_TABLE_DISPLAY.
ENDFORM.

 

*&---------------------------------------------------------------------*
*& Form FRM_DBC_DYNPRO
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM FRM_DBC_DYNPRO USING U_PROGRAM
                          U_DYNPRO.

  APPEND INITIAL LINE TO GT_BDCDATA ASSIGNING FIELD-SYMBOL(<LFS_BDCDATA>).
  <LFS_BDCDATA>-PROGRAM  = U_PROGRAM.
  <LFS_BDCDATA>-DYNPRO   = U_DYNPRO.
  <LFS_BDCDATA>-DYNBEGIN = ABAP_TRUE.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BDC_FIELD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM FRM_BDC_FIELD USING U_FNAM
                          U_FVAL.

  APPEND INITIAL LINE TO GT_BDCDATA ASSIGNING FIELD-SYMBOL(<LFS_BDCDATA>).
  <LFS_BDCDATA>-FNAM  = U_FNAM.
  <LFS_BDCDATA>-FVAL   = U_FVAL.
  CONDENSE <LFS_BDCDATA>-FVAL.

ENDFORM.

 

posted @ 2022-04-27 16:16  别忘了带红领巾  阅读(1559)  评论(2)    收藏  举报