程序调用SM30 - 海边星
【原创】 程序调用SM30
栏目:ABAP  作者:在海边看星星  阅读:(1439)

代码如下

TABLES: sscrfields.

DATA: functxt TYPE smp_dyntxt.  "选择界面功能按钮

SELECT-OPTIONS: s_vkorg FOR vbak-vkorg,  "销售组织
         s_kunnr FOR vbak-kunnr.  "客户


SELECTION-SCREEN: FUNCTION KEY 1.

INITIALIZATION.
  PERFORM frm_initialization.
  
AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'FC01'.         "下载模板
      PERFORM sm30 USING 'ZFIT_009'.
    WHEN OTHERS.
  ENDCASE.  
  
  
  
*&---------------------------------------------------------------------*
*& Form frm_initialization
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_initialization .
  functxt-icon_id  = icon_view_table.
  functxt-quickinfo = 'RFQ科目配置表'.
  functxt-icon_text = 'RFQ科目配置表'.
  sscrfields-functxt_01 = functxt.
ENDFORM.  
*&---------------------------------------------------------------------*
*& Form SM30
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&---------------------------------------------------------------------*
FORM sm30  USING    VALUE(p_name).
  DATA: lt_dba TYPE STANDARD TABLE OF vimsellist WITH HEADER LINE,
         lt_funct TYPE STANDARD TABLE OF vimexclfun WITH HEADER LINE.
  
  DATA: l_name TYPE dd02v-tabname.

  CLEAR: lt_dba[],lt_dba.
  IF s_vkorg[] IS NOT INITIAL.
    SELECT vkorg INTO TABLE @DATA(lt_tvko)
      FROM tvko
      WHERE vkorg IN @s_vkorg.
    LOOP AT lt_tvko INTO DATA(ls_tvko).
      lt_dba-viewfield = 'VKORG'.
      lt_dba-operator = 'EQ'.
      lt_dba-value = ls_tvko-vkorg.
      lt_dba-and_or = 'OR'.

      AT LAST.
        lt_dba-and_or = 'AND'.
      ENDAT.

      APPEND lt_dba.
      CLEAR lt_dba.
    ENDLOOP.
  ENDIF.

  IF s_kunnr[] IS NOT INITIAL.
    SELECT kunnr INTO TABLE @DATA(lt_kna1)
      FROM kna1
      WHERE kunnr IN @s_kunnr.
    LOOP AT lt_kna1 INTO DATA(ls_kna1).
      lt_dba-viewfield = 'KUNNR'.
      lt_dba-operator = 'EQ'.
      lt_dba-value = ls_kna1-kunnr.
      lt_dba-and_or = 'OR'.

      AT LAST.
        lt_dba-and_or = 'AND'.
      ENDAT.

      APPEND lt_dba.
      CLEAR lt_dba.
    ENDLOOP.
  ENDIF.

    lt_funct-function = 'AEND'.
    APPEND lt_funct.
    CLEAR lt_funct.  
  
  l_name = p_table.

  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                       = 'U'
      view_name                    = l_name
      no_warning_for_clientindep   = 'X'
    TABLES
      dba_sellist                  = lt_dba[]
      excl_cua_funct                                 =  lt_funct
    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
      maintenance_prohibited       = 14
      OTHERS                       = 15.

ENDFORM.



下一篇: 用户参数...


我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章