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.
相关推荐
miyikj198115 小时前
2026乐清系统全屋木作主体怎么选?乐清高定全屋木作避坑与评测
其他
上海广测检测科技有限公司18 小时前
蓝牙音响TISI认证详解:泰国强制安全路径与多形态产品的合规分层判定
经验分享
我命由我1234518 小时前
金融租赁极简理解
经验分享·学习·职场和发展·金融·求职招聘·职场发展·学习方法
小HANN19 小时前
华为云企业网站上云实战|从零搭建高可用WordPress(ECS+RDS+ELB+弹性伸缩+云监控全流程落地)
linux·运维·服务器·经验分享
FLJwu19 小时前
运动相机按键与连接器硬件选型实战02:USB‑C接口选型|防水失效、虚接断连、腐蚀烧口量产大坑
c语言·开发语言·经验分享·数码相机·相机·运动相机·oem 量产
fj800j19 小时前
首助记账本新增「标签管理」功能:跨分类归集项目账目,一个账本管完所有事
数据结构·经验分享·笔记·学习·分布式账本
huashihua202320 小时前
5.制造企业要不要找外部成本咨询?5 类适配企业自查
其他
老吴的商业笔记20 小时前
GEO优化系统多平台分发架构:Python源码部署的调度与容错设计
其他
爱吃奥利奥_wen21 小时前
排序算法通关手册:从 O(n²) 到 O(n log n),用一篇文章打通算法内功心法
开发语言·经验分享
我命由我123451 天前
单利计息与复利计息
经验分享·学习·职场和发展·产品运营·求职招聘·职场发展·产品经理