SAP ABAP se16n 双击跳转实现

参考老白 SAP小技巧 改造SE16N(九 双击跳转及字段描述优化) (qq.com)

se16n 双击跳转实现 我的实现

se38 lse16nlcl 287行

复制代码
  call method cl_gui_control=>set_focus
                                      exporting control = alv_grid.
*.....at the moment do detail view on double click
      CALL METHOD cl_gui_cfw=>flush.
      check: es_row_no-row_id > 0.
      CALL METHOD alv_grid->GET_CURRENT_CELL
           IMPORTING
             E_ROW     = ld_row
             E_col     = ld_col
             Es_row_no = es_row_no
             E_value   = ld_value.

*.....check which action the user wants to do with double click
*{   INSERT         DEVK907773                                        3
      DATA: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'
    EXPORTING
      ID       = LV_ID
    IMPORTING
      E_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'
         EXPORTING
           iv_TABNAME  = <FS_TABNAM>
           IV_FILEDNAME = LV_FNAME
           LS_DATA = <LS_ALV>
         IMPORTING
            EV_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'
          EXPORTING
            I_ACTION            = 'A04'
            I_REFDOC            = 'R02'
            I_MBLNR             = <FS>
            I_MJAHR             = <FSMJR>+4
          EXCEPTIONS
            ILLEGAL_COMBINATION = 1
            OTHERS              = 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'
          EXPORTING
            I_ACTION            = 'A04'
            I_REFDOC            = 'R02'
            I_MBLNR             = <FS>
            I_MJAHR             = <FSMJR>
          EXCEPTIONS
            ILLEGAL_COMBINATION = 1
            OTHERS              = 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.
相关推荐
2501_943205053 分钟前
【366期】Campfire:跨启动器的我的世界联机工具箱
经验分享
echoarts41 分钟前
服务器连不上?FileZilla 改被动模式就好了
运维·服务器·其他
QVeris Friends1 小时前
QVeris MCP 连接到 ChatGPT:让 AI 调用专业数据
经验分享
pixelpilot2 小时前
Deta Surf:把笔记、文件和网页塞进同一个 AI 工作台
笔记·其他
瑞通软件源头厂家3 小时前
全栈国产化技术方案的五个关键层级与落地逻辑
经验分享
上海广测检测科技有限公司3 小时前
手机充电器 CCC 认证:2024 年 8 月后的目录口径、技术要点与单元划分
经验分享
debugdynamo4 小时前
Netcatty:把 SSH 客户端做回工作台
运维·其他·ssh
GJGCY7 小时前
券商舆情智能体如何设计?事件聚类去重、主体消歧与风险事件抽取技术解析
经验分享·ai·金融·自动化·证券·智能体
kk_net88997 小时前
微软常用运行库合集免费下载安装教程(附运行库安装包)微软运行库安装图文教程
其他·microsoft
AAwangzong8 小时前
金融AI Agent技术解析:知识检索、RPA执行与多智能体协同如何实现?
经验分享