ABAP alv和smartforms的基础使用

GUI状态从程序SAPLSLVC_FULLSCREEN状态STANDARD_FULLSCREEN复制到本程序下101

*&---------------------------------------------------------------------*
*& Report ZYC_ALV_01
*&---------------------------------------------------------------------*
*& alv和smartforms的基础使用
*&---------------------------------------------------------------------*
REPORT ZYC_ALV_01.

TYPE-POOLS: slis.

DATA: wa_fieldcat TYPE slis_fieldcat_alv,
      i_fieldcat  TYPE slis_t_fieldcat_alv,  " 存放列名的内表
      i_layout    TYPE slis_layout_alv.      " 负责整个ALV的全局属性

DATA: smartform(30) TYPE c,
      fm_name TYPE  rs38l_fnam.

TABLES:faglflext,skat.

DATA: BEGIN OF ty_data ,
       Clint    TYPE faglflext-rclnt,
       Comp     TYPE faglflext-rbukrs,
       Year     TYPE faglflext-ryear,
       Ledger   TYPE faglflext-rldnr,
       AcctCode TYPE faglflext-racct,
       AcctName TYPE skat-txt50,
       FuncArea TYPE faglflext-rfarea,
       m00 TYPE faglflext-hslvt,
       m01 TYPE faglflext-hsl01,
       m02 TYPE faglflext-hsl02,
       m03 TYPE faglflext-hsl03,
       m04 TYPE faglflext-hsl04,
       m05 TYPE faglflext-hsl05,
       m06 TYPE faglflext-hsl06,
       m07 TYPE faglflext-hsl07,
       m08 TYPE faglflext-hsl08,
       m09 TYPE faglflext-hsl09,
       m010 TYPE faglflext-hsl10,
       m011 TYPE faglflext-hsl11,
       m012 TYPE faglflext-hsl12,
       m013 TYPE faglflext-hsl13,
       m014 TYPE faglflext-hsl14,
       m015 TYPE faglflext-hsl15,
       m016 TYPE faglflext-hsl16,
     END OF ty_data.

DATA :gt_data LIKE TABLE OF ty_data WITH HEADER LINE,
      gs_data LIKE ty_data.

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE t0.
SELECT-OPTIONS:s_ryear FOR faglflext-ryear OBLIGATORY DEFAULT '2021' TO '2022',
               s_rbukrs FOR faglflext-rbukrs OBLIGATORY DEFAULT '1001' TO '1010'.
SELECTION-SCREEN END OF BLOCK blk.

START-OF-SELECTION.
  PERFORM getdata.
  PERFORM catalog.
  PERFORM alvshow.

FORM getdata.
  SELECT
       faglflext~rclnt AS Clint,
       faglflext~rbukrs AS Comp,
       faglflext~ryear AS Year,
       faglflext~rldnr AS Ledger,
       faglflext~racct AS AcctCode,
       skat~txt50 AS AcctName,
       faglflext~rfarea AS FuncArea,
       SUM( faglflext~hslvt ) AS m00,
       SUM( faglflext~hsl01 ) AS m01,
       SUM( faglflext~hsl02 ) AS m02,
       SUM( faglflext~hsl03 ) AS m03,
       SUM( faglflext~hsl04 ) AS m04,
       SUM( faglflext~hsl05 ) AS m05,
       SUM( faglflext~hsl06 ) AS m06,
       SUM( faglflext~hsl07 ) AS m07,
       SUM( faglflext~hsl08 ) AS m08,
       SUM( faglflext~hsl09 ) AS m09,
       SUM( faglflext~hsl10 ) AS m10,
       SUM( faglflext~hsl11 ) AS m11,
       SUM( faglflext~hsl12 ) AS m12,
       SUM( faglflext~hsl13 ) AS m13,
       SUM( faglflext~hsl14 ) AS m14,
       SUM( faglflext~hsl15 ) AS m15,
       SUM( faglflext~hsl16 ) AS m16
    INTO CORRESPONDING FIELDS OF TABLE @gt_data
  FROM  faglflext  AS faglflext  LEFT JOIN skat AS skat ON skat~saknr = faglflext~racct AND skat~ktopl = 'BJCA'
   AND skat~spras = 1
 WHERE faglflext~rbukrs IN @s_rbukrs
      AND faglflext~rldnr = '0L'
   	  AND faglflext~ryear IN @s_ryear
 GROUP BY faglflext~rclnt,
          faglflext~rbukrs,
          faglflext~ryear,
          faglflext~rldnr,
          faglflext~racct,
          skat~txt50,
          faglflext~rfarea
 ORDER BY faglflext~rbukrs,
          faglflext~racct.
ENDFORM.

FORM catalog.
  DEFINE fieldcatset.
    CLEAR:wa_fieldcat.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-seltext_l = &2.
    wa_fieldcat-col_pos = &3.
    APPEND wa_fieldcat TO i_fieldcat.
   END-OF-DEFINITION.

   fieldcatset 'Clint   ' 'Comp' sy-tabix." 集团
   fieldcatset 'Comp    ' 'Comp' sy-tabix." 公司代码
   fieldcatset 'Year    ' 'Year' sy-tabix." 会计年度
   fieldcatset 'Ledger  ' 'Ledger' sy-tabix." 总账会计中的分类账
   fieldcatset 'AcctCode' 'AcctCode' sy-tabix."科目号
   fieldcatset 'AcctName' 'AcctName' sy-tabix."总账科目长文本
   fieldcatset 'FuncArea' 'FuncArea' sy-tabix."功能范围
   fieldcatset 'M00' 'M00' sy-tabix.
   fieldcatset 'M01' 'M01' sy-tabix.
   fieldcatset 'M02' 'M02' sy-tabix.
   fieldcatset 'M03' 'M03' sy-tabix.
   fieldcatset 'M04' 'M04' sy-tabix.
   fieldcatset 'M05' 'M05' sy-tabix.
   fieldcatset 'M06' 'M06' sy-tabix.
   fieldcatset 'M07' 'M07' sy-tabix.
   fieldcatset 'M08' 'M08' sy-tabix.
   fieldcatset 'M09' 'M09' sy-tabix.
   fieldcatset 'M10' 'M10' sy-tabix.
   fieldcatset 'M11' 'M11' sy-tabix.
   fieldcatset 'M12' 'M12' sy-tabix.
   fieldcatset 'M13' 'M13' sy-tabix.
   fieldcatset 'M14' 'M14' sy-tabix.
   fieldcatset 'M15' 'M15' sy-tabix.
   fieldcatset 'M16' 'M16' sy-tabix.
ENDFORM.

FORM alvshow.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      is_layout = i_layout
      it_fieldcat = i_fieldcat
      i_callback_pf_status_set = 'SET_PF_STATUS'
      i_callback_user_command = 'USER_COMMAND'
     TABLES
       t_outtab = gt_data
     EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.

FORM user_command USING p_ucomm LIKE sy-ucomm
      rs_selfield TYPE slis_selfield.

  CASE p_ucomm.
    WHEN '&IC1'.
      READ TABLE gt_data INDEX rs_selfield-tabindex.
      rs_selfield-fieldname = gt_data-AcctCode.
      DATA:lv_yn TYPE string.
   CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    EXPORTING
      titel = '科目号'
      textline1      = rs_selfield-fieldname
      cancel_display = 'space'.  "space 不显示cancel按钮,'X'是显示取消按钮

    WHEN '&PR'.
        smartform = 'ZYC_ALV_01_SMARTFORMS'.
        CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
          EXPORTING
            formname           = smartform
          IMPORTING
            fm_name            = fm_name
            EXCEPTIONS
              no_form            = 1
              no_function_module = 2
              OTHERS             = 3.
  WAIT UP TO 1 SECONDS.
  CALL FUNCTION fm_name
    EXCEPTIONS
      formatting_error = 1
      internal_error   = 2
      send_error       = 3
      user_canceled    = 4
      OTHERS           = 5.

   ENDCASE.
ENDFORM.

FORM set_pf_status USING i_extab TYPE slis_t_extab.
  DATA:It_exfcode TYPE TABLE OF sy-ucomm.
  SET PF-STATUS '101' EXCLUDING It_exfcode.
ENDFORM.

创建smartforms程序ZYC_ALV_01_SMARTFORMS

全局定义->全局数据
在这里插入图片描述
类型

TYPES:BEGIN OF MY_TYPE,
  Clint    TYPE faglflext-rclnt,
       Comp     TYPE faglflext-rbukrs,
       Year     TYPE faglflext-ryear,
       Ledger   TYPE faglflext-rldnr,
       AcctCode TYPE faglflext-racct,
       AcctName TYPE skat-txt50,
       FuncArea TYPE faglflext-rfarea,
       M00 TYPE faglflext-hslvt,
       M01 TYPE faglflext-hsl01,
       M02 TYPE faglflext-hsl02,
       M03 TYPE faglflext-hsl03,
       M04 TYPE faglflext-hsl04,
       M05 TYPE faglflext-hsl05,
       M06 TYPE faglflext-hsl06,
       M07 TYPE faglflext-hsl07,
       M08 TYPE faglflext-hsl08,
       M09 TYPE faglflext-hsl09,
       M010 TYPE faglflext-hsl10,
       M011 TYPE faglflext-hsl11,
       M012 TYPE faglflext-hsl12,
       M013 TYPE faglflext-hsl13,
       M014 TYPE faglflext-hsl14,
       M015 TYPE faglflext-hsl15,
       M016 TYPE faglflext-hsl16,
  END OF MY_TYPE.

在这里插入图片描述
初始化

DATA: FIELD(50).
FIELD-SYMBOLS: <f> TYPE ANY.
FIELD = '(ZYC_ALV_01)gt_data[]'.
ASSIGN (FIELD) TO <f>.
GT_TABLE[] = <f>.

在这里插入图片描述
MAIN窗口创建表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开字段列表,根据需要拉入对应字段
在这里插入图片描述

在这里插入图片描述
最后激活smartforms、gui状态、程序,执行

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值