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状态、程序,执行