SAP ABAP se16n 双击跳转实现
参考老白 SAP小技巧 改造SE16N(九 双击跳转及字段描述优化) (qq.com)
se16n 双击跳转实现 我的实现
se38 lse16nlcl 287行
call method cl_gui_control=>set_focusexporting control = alv_grid.
*.....at the moment do detail view on double clickCALL METHOD cl_gui_cfw=>flush.check: es_row_no-row_id > 0.CALL METHOD alv_grid->GET_CURRENT_CELLIMPORTINGE_ROW = ld_rowE_col = ld_colEs_row_no = es_row_noE_value = ld_value.*.....check which action the user wants to do with double click
*{ INSERT DEVK907773 3DATA:LV_FNAME TYPE FIELDNAME.data:lv_tabname TYPE tabname.DATA: LV_ID TYPE ZTEXIT-ID, "增强序列号LV_STATUS TYPE CHAR1.LV_ID = 'ZFI103'.CALL FUNCTION 'ZABAP_CHECK_EXIT'EXPORTINGID = LV_IDIMPORTINGE_STATUS = LV_STATUS.if LV_STATUS = 'S'.FIELD-SYMBOLS <LT_ALV> TYPE STANDARD TABLE.FIELD-SYMBOLS <FS_TABNAM> TYPE ANY.IF <ALL_TABLE_CELL> IS ASSIGNED.IF LINES( <ALL_TABLE_CELL> ) = 0.ASSIGN GD_DREF->* TO <LT_ALV>.READ TABLE <LT_ALV> ASSIGNING FIELD-SYMBOL(<LS_ALV>) INDEX ES_ROW_NO-ROW_ID.ELSE.READ TABLE <ALL_TABLE_CELL> ASSIGNING <LS_ALV> INDEX ES_ROW_NO-ROW_ID.ENDIF.ELSE.ASSIGN GD_DREF->* TO <LT_ALV>.READ TABLE <LT_ALV> ASSIGNING <LS_ALV> INDEX ES_ROW_NO-ROW_ID.ENDIF.IF SY-SUBRC = 0.LV_FNAME = E_COLUMN.ASSIGN ('(SAPLSE16N)GD-TAB') TO <FS_TABNAM>.DATA:LV_LINKED(1).CALL FUNCTION 'Z_BC_REP_CALL_TRANSACTION'EXPORTINGiv_TABNAME = <FS_TABNAM>IV_FILEDNAME = LV_FNAMELS_DATA = <LS_ALV>IMPORTINGEV_LINKED = LV_LINKED.IF LV_LINKED = 'X'.RETURN.ENDIF.ENDIF.endif.
*} INSERT
se37
FUNCTION Z_BC_REP_CALL_TRANSACTION.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IV_FILEDNAME) TYPE FIELDNAME
*" VALUE(LS_DATA)
*" VALUE(IV_TABNAME) TYPE TABNAME
*" EXPORTING
*" VALUE(EV_LINKED) TYPE C
*"----------------------------------------------------------------------FIELD-SYMBOLS <FS> TYPE ANY.IF IV_TABNAME EQ 'VBFA'.FIELD-SYMBOLS <FSTYPE> TYPE ANY.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.CASE IV_FILEDNAME.WHEN 'VBELV'.ASSIGN COMPONENT 'VBTYP_V' OF STRUCTURE LS_DATA TO <FSTYPE>.WHEN 'VBELN'.ASSIGN COMPONENT 'VBTYP_N' OF STRUCTURE LS_DATA TO <FSTYPE>.ENDCASE.CASE <FSTYPE>.WHEN 'J'.SET PARAMETER ID 'VL' FIELD <FS>.CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.WHEN 'C'.SET PARAMETER ID 'AUN' FIELD <FS>.CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.WHEN 'R' OR 'i' OR 'h'.FIELD-SYMBOLS <FSMJR> TYPE ANY.ASSIGN COMPONENT 'ERDAT' OF STRUCTURE LS_DATA TO <FSMJR>.CALL FUNCTION 'MIGO_DIALOG'EXPORTINGI_ACTION = 'A04'I_REFDOC = 'R02'I_MBLNR = <FS>I_MJAHR = <FSMJR>+4EXCEPTIONSILLEGAL_COMBINATION = 1OTHERS = 2.EV_LINKED = 'X'.WHEN 'N' OR 'M'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'VF' FIELD <FS>.CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ENDCASE.ELSE.CASE IV_FILEDNAME.WHEN 'MATNR' OR 'IDNRK'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'MAT' FIELD <FS>.CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.WHEN 'VBELN'.IF IV_TABNAME = 'VBAK' OR IV_TABNAME = 'VBAP'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'AUN' FIELD <FS>.CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ELSEIF IV_TABNAME = 'LIKP' OR IV_TABNAME = 'LIPS'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'VL' FIELD <FS>.CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ELSEIF IV_TABNAME = 'VBKR' OR IV_TABNAME = 'VBRP'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'VF' FIELD <FS>.CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ENDIF.WHEN 'EBELN'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'BES' FIELD <FS>.CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.WHEN 'BELNR'.IF IV_TABNAME = 'BKPF' OR IV_TABNAME = 'BSEG' OR IV_TABNAME = 'ACDOCA'.FIELD-SYMBOLS <FSBUK> TYPE ANY.FIELD-SYMBOLS <FSGAJ> TYPE ANY.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.IF IV_TABNAME = 'ACDOCA'.ASSIGN COMPONENT 'RBUKRS' OF STRUCTURE LS_DATA TO <FSBUK>.ASSIGN COMPONENT 'GJAHR' OF STRUCTURE LS_DATA TO <FSGAJ>.ELSE.ASSIGN COMPONENT 'BUKRS' OF STRUCTURE LS_DATA TO <FSBUK>.ASSIGN COMPONENT 'GJAHR' OF STRUCTURE LS_DATA TO <FSGAJ>.ENDIF.SET PARAMETER ID 'GJR' FIELD <FSGAJ>.SET PARAMETER ID 'BUK' FIELD <FSBUK>.SET PARAMETER ID 'BLN' FIELD <FS>.CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ELSEIF IV_TABNAME = 'RBKP' OR IV_TABNAME = 'RSEG'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.ASSIGN COMPONENT 'GJAHR' OF STRUCTURE LS_DATA TO <FSGAJ>.SET PARAMETER ID 'GJR' FIELD <FSGAJ>.SET PARAMETER ID 'RBN' FIELD <FS>.CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ENDIF.WHEN 'AUFNR'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'ANR' FIELD <FS>.CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.WHEN 'KUNNR' OR 'LIFNR' OR 'PARTNER'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.DATA(REQUEST) = NEW CL_BUPA_NAVIGATION_REQUEST( ).REQUEST->SET_PARTNER_NUMBER( <FS> ).DATA(OPTIONS) = NEW CL_BUPA_DIALOG_JOEL_OPTIONS( ).OPTIONS->SET_NAVIGATION_DISABLED( ABAP_TRUE ).CL_BUPA_DIALOG_JOEL=>START_WITH_NAVIGATION( IV_REQUEST = REQUEST IV_OPTIONS = OPTIONS ).EV_LINKED = 'X'.WHEN 'MBLNR'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.ASSIGN COMPONENT 'MJAHR' OF STRUCTURE LS_DATA TO <FSMJR>.CALL FUNCTION 'MIGO_DIALOG'EXPORTINGI_ACTION = 'A04'I_REFDOC = 'R02'I_MBLNR = <FS>I_MJAHR = <FSMJR>EXCEPTIONSILLEGAL_COMBINATION = 1OTHERS = 2.EV_LINKED = 'X'.WHEN 'HKONT'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.ASSIGN COMPONENT 'BUKRS' OF STRUCTURE LS_DATA TO <FSBUK>.IF IV_TABNAME = 'ACDOCA'.ASSIGN COMPONENT 'RBUKRS' OF STRUCTURE LS_DATA TO <FSBUK>.ENDIF.SET PARAMETER ID 'SAK' FIELD <FS>.SET PARAMETER ID 'BUK' FIELD <FSBUK>.CALL TRANSACTION 'FS00' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.WHEN 'KOSTL'.ASSIGN COMPONENT IV_FILEDNAME OF STRUCTURE LS_DATA TO <FS>.SET PARAMETER ID 'KOS' FIELD <FS>.SET PARAMETER ID 'CAC' FIELD '1000'.CALL TRANSACTION 'KS03' AND SKIP FIRST SCREEN.EV_LINKED = 'X'.ENDCASE.ENDIF.
ENDFUNCTION.