abap 双击alv调用事务码

来源:互联网 发布:java零基础招聘骗局 编辑:程序博客网 时间:2024/06/06 05:31

 SELECT-OPTIONS:
  MBLNR  FOR mkpf-MBLNR   , "物料编号

SELECTION-SCREEN END OF BLOCK abgrenzung.
INITIALIZATION.
budat-low = SY-DATUM.
budat-high = SY-DATUM .
append budat.
START-OF-SELECTION.

  DATA : BEGIN OF i_tab OCCURS 0 ,
    MBLNR like mkpf-mblnr,
  END OF i_tab .

  DATA : BEGIN OF i_show OCCURS 0 ,
    MBLNR like mkpf-mblnr,
  END OF i_show .





START-OF-SELECTION.

  SELECT
    mkpf~mblnr

    INTO CORRESPONDING FIELDS OF TABLE i_tab
    FROM mkpf join mseg
    on mkpf~mblnr = mseg~mblnr join mara on mseg~matnr = mara~matnr
    join makt on mara~matnr = makt~matnr and mara~MANDT = makt~MANDT and makt~SPRAS = '1'
    join USER_ADDR on mkpf~usnam = user_addr~BNAME
     where mkpf~mblnr in mblnr and mkpf~budat in budat and mkpf~usnam in usnam and mseg~bwart ='102'
    and mara~MTART in ('ROH','ROH1','ROH2','HAWA','Z001','Z002','Z003','Z004','Z005','Z006','Z007')
    and mseg~matnr in matnr and mseg~werks in werks and mseg~lgort in lgort .

loop at i_tab.
  case i_tab-bwart .
    when '102' .
      if i_tab-tcode2 <> 'MBST'.
        i_show-mblnr = i_tab-mblnr .
        append  i_show.
      endif.
*    when '202'.
*      if i_tab-tcode2 <> 'MBST' .
*        i_show-mblnr = i_tab-mblnr .
*        i_show-ZEILE = i_tab-ZEILE .
*        i_show-budat = i_tab-budat.
*        i_show-usnam = i_tab-usnam .
*        i_show-bwart = i_tab-bwart .
*        i_show-matnr = i_tab-matnr .
*        i_show-werks = i_tab-werks .
*        i_show-lgort = i_tab-lgort.
*        i_show-tcode2 = i_tab-tcode2 .
*        i_show-maktx = i_tab-maktx .
*
*        i_show-NAME_LAST = i_tab-NAME_LAST.
*        append  i_show.
*      endif.
    when others .

  endcase.

endloop.

ADD  1  TO  COL_POS.
FIELDCAT_LN-REF_TABNAME  =  'MKPF'.
FIELDCAT_LN-FIELDNAME     =  'MBLNR'.
FIELDCAT_LN-KEY             = SPACE.
FIELDCAT_LN-DO_SUM         = SPACE.
FIELDCAT_LN-COL_POS        = COL_POS.
FIELDCAT_LN-NO_OUT        = SPACE.
FIELDCAT_LN-QFIELDNAME   = SPACE.
FIELDCAT_LN-HOTSPOT       = SPACE.
APPEND  FIELDCAT_LN  TO FIELDCAT.



* DEFINE AN SORT TABLE
* ADD SORT INTO SORT INTERNAL TABLE.
SORTCAT_LN-SPOS         =  '1'.
* DEFINE AN SORT FIELD
SORTCAT_LN-FIELDNAME  =  'MBLNR'.
SORTCAT_LN-UP           =  'X'.
SORTCAT_LN-DOWN       =  SPACE.
SORTCAT_LN-SUBTOT      =  'X'.
APPEND  SORTCAT_LN  TO  SORTCAT.

*  DEFINE EVENT LIST(Event Catalogs)
EVENTCAT_LN-NAME  =  'TOP_OF_PAGE'.
EVENTCAT_LN-form  =  'PAGE_HEADER'.
APPEND  EVENTCAT_LN  TO  EVENTCAT.

*  DEFINE ALV CALL Function Module
DATA:  PGM  LIKE  SY-REPID.
PGM = SY-REPID.

CALL  FUNCTION  'REUSE_ALV_LIST_DISPLAY'
EXPORTING
  I_CALLBACK_PROGRAM             =  PGM
  I_CALLBACK_USER_COMMAND        =  'USER_COMMAND'
  IT_FIELDCAT                    =  FIELDCAT
  IT_SORT                        =  SORTCAT
  I_SAVE                         =  'A'
  IT_EVENTS                       = EVENTCAT
  TABLES
  T_OUTTAB  =  I_show
EXCEPTIONS
  PROGRAM_ERROR  =  1
  OTHERS            =  2.


* DEFINE EVENT OF THE USER CLICKED KEYBOARD.

form USER_COMMAND USING UCOMM LIKE SY-UCOMM
  SELFIELD TYPE SLIS_SELFIELD.
  READ TABLE I_SHOW INDEX SELFIELD-TABINDEX.
  CHECK SY-SUBRC = 0.
    CASE UCOMM.
      WHEN '&IC1'.
        CASE SELFIELD-SEL_TAB_FIELD.
          WHEN  'I_SHOW-MBLNR'.
            SET  PARAMETER  ID  'MBN'  FIELD  I_SHOW-MBLNR.
            "CALL  TRANSACTION  'MIGO'  AND  SKIP FIRST  SCREEN.
            CALL FUNCTION 'MIGO_DIALOG'
             EXPORTING
                  i_action            = 'A04'
                  i_refdoc            = 'R02'
                  i_notree            = 'X'
                  i_skip_first_screen = 'X'
                  i_okcode            = 'OK_GO'
                  i_mblnr             = i_show-mblnr
             EXCEPTIONS
                  illegal_combination = 1
                  OTHERS              = 2.
    ENDCASE.
  ENDCASE.


ENDform.

原创粉丝点击