ABAP 选择屏幕调用SM30

导语:在做功能性开发的时候,时常会有对应的配置表,配置表通过SM30,或者分配事务码给配置表进行维护,还是比较麻烦,下面说一下如何在选择屏幕直接进入配置表进行维护,文末有效果图。

前提:给数据库表通过表维护生成器创建一个可以用SM30使用的视图。

一、新增一个屏幕按钮

在选择屏幕定义好后,在后面增加语句,这里最多可以增加5个,这里用三个进行举例

TABLES : sscrfields.
*--SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK blc_001 WITH FRAME TITLE TEXT-001.
  PARAMETERS : p_bukrs LIKE bseg-bukrs .
  PARAMETERS : p_gjahr LIKE bseg-gjahr .
  PARAMETERS : p_monat LIKE ztfi001-monat .
  PARAMETERS : p_file  LIKE rlgrap-filename MODIF ID r1.
SELECTION-SCREEN END OF BLOCK blc_001.

"增加按钮
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN: FUNCTION KEY 2.
SELECTION-SCREEN: FUNCTION KEY 3.

二、在INITIALIZATION事件下定义按钮图标及描述

INITIALIZATION.

  PERFORM frm_sub_button.  "模板按钮
  
*&---------------------------------------------------------------------*
*& Form frm_sub_button
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_sub_button .

  DATA:functxt TYPE smp_dyntxt.

  CLEAR functxt.
  functxt-icon_id   = icon_export."icon_view_form
  functxt-icon_text = '下载批导模板'.
  sscrfields-functxt_01 = functxt.

  CLEAR functxt.
  functxt-icon_id   = icon_table_settings."icon_view_form
  functxt-icon_text = '维护【过账科目映射表】'.
  sscrfields-functxt_02 = functxt.

  CLEAR functxt.
  functxt-icon_id   = icon_table_settings."icon_view_form
  functxt-icon_text = '维护【工资过账科目汇总维度配置表】'.
  sscrfields-functxt_03 = functxt.

ENDFORM.

效果图
在这里插入图片描述

三、在AT SELECTION-SCREEN事件下实现按钮点击事件

AT SELECTION-SCREEN.

  PERFORM frm_download_mod."选择屏幕按钮

*&---------------------------------------------------------------------*
*& Form frm_download_mod
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_download_mod .

  DATA:l_temp TYPE c,
       l_str  TYPE string.


  CASE sscrfields-ucomm.

    WHEN 'FC01'.

    WHEN 'FC02'.
      PERFORM frm_call_sm30 USING 'ZTFI013'.
    WHEN 'FC03'.
      PERFORM frm_call_sm30 USING 'ZTFI015'.

  ENDCASE.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form frm_call_sm30
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&      --> WHEN
*&      --> P_
*&---------------------------------------------------------------------*
FORM frm_call_sm30  USING p_name TYPE dd02v-tabname.

  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                       = 'U'
      view_name                    = p_name
      no_warning_for_clientindep   = 'X'
    EXCEPTIONS
      client_reference             = 1
      foreign_lock                 = 2
      invalid_action               = 3
      no_clientindependent_auth    = 4
      no_database_function         = 5
      no_editor_function           = 6
      no_show_auth                 = 7
      no_tvdir_entry               = 8
      no_upd_auth                  = 9
      only_show_allowed            = 10
      system_failure               = 11
      unknown_field_in_dba_sellist = 12
      view_not_found               = 13
      OTHERS                       = 14.


ENDFORM.

四、效果演示

在这里插入图片描述

作者:小飞猪猪猪猪猪猪猪–CSDN

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ABAP可以通过RFC函数调用外部DLL。RFC函数可以通过远程函数调用(RFC)协议在SAP系统和外部系统之间进行通信。以下是使用RFC函数调用DLL的一般步骤: 1. 在SAP系统中创建RFC函数模块,该函数模块将调用DLL中的函数。 2. 将DLL文件复制到SAP系统中,并在SAP系统中注册该DLL。 3. 在SAP系统中创建一个外部定义(EXTDEF),该定义指向DLL中的函数。 4. 在RFC函数模块中调用外部定义。 下面是一个简单的例子: 1. 在SAP系统中创建RFC函数模块 ```ABAP FUNCTION ZRFC_CALL_DLL. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(DLL_PATH) TYPE STRING *" VALUE(FUNCTION_NAME) TYPE STRING *" EXPORTING *" VALUE(RETURN_CODE) TYPE I *"---------------------------------------------------------------------- DATA: l_return_code TYPE i. CALL 'ZRFC_CALL_DLL' ID 'DLL_PATH' FIELD DLL_PATH ID 'FUNCTION_NAME' FIELD FUNCTION_NAME DESTINATION 'NONE' EXCEPTIONS OTHERS = 1. RETURN_CODE = l_return_code. ENDFUNCTION. ``` 2. 将DLL文件复制到SAP系统中,并在SAP系统中注册该DLL。 使用tcode SM59在SAP系统中创建RFC目标,使用tcode SMGW在SAP系统中配置RFC目标。 3. 在SAP系统中创建一个外部定义(EXTDEF),该定义指向DLL中的函数。 ```ABAP FUNCTION Z_MY_EXTERNAL_DEF. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(P1) TYPE I *" EXPORTING *" VALUE(P2) TYPE I *"---------------------------------------------------------------------- EXTERNAL DLL 'MY_DLL' NAME 'MY_FUNCTION' LANGUAGE C PARAMETER STYLE C USING p1 TYPE i CHANGING p2 TYPE i. ENDFUNCTION. ``` 4. 在RFC函数模块中调用外部定义。 ```ABAP FUNCTION ZRFC_CALL_DLL. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(DLL_PATH) TYPE STRING *" VALUE(FUNCTION_NAME) TYPE STRING *" EXPORTING *" VALUE(RETURN_CODE) TYPE I *"---------------------------------------------------------------------- DATA: l_return_code TYPE i. CALL FUNCTION 'Z_MY_EXTERNAL_DEF' DESTINATION 'NONE' EXPORTING p1 = 1 IMPORTING p2 = l_return_code. RETURN_CODE = l_return_code. ENDFUNCTION. ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值