学习目标:
继续ALV选择屏幕之后开始根据选择屏幕数据进行查询数据,并展示出来
学习内容:
数据展示步骤
1、 取数
2、 处理
3、 ALV展示
(3.1)填充fieldcat
(3.2)填充布局
(3.3)alv展示
操作代码:
START-OF-SELECTION."开始
PERFORM frm_get_data."取数
PERFORM frm_get_deal."处理
PERFORM frm_alv_output."ALV展示
"1.取数
FORM frm_get_data .
SELECT a~ebeln
a~bukrs
a~bsart
b~ebelp
b~matnr
b~werks
b~matkl
b~menge
b~meins
FROM ekko AS a
INNER JOIN ekpo AS b ON a~ebeln = b~ebeln "表关联
INTO CORRESPONDING FIELDS OF TABLE gt_alv
WHERE a~ebeln IN s_ebeln
AND a~bukrs = p_bukrs."选择屏幕作为where条件
ENDFORM.
"2.处理
FORM frm_get_deal .
ENDFORM.
"3.ALV展示
FORM frm_alv_output .
PERFORM frm_fill_fieldcat."填充fieldcat
PERFORM frm_fill_lauout."填充布局
PERFORM frm_alv_display."alv展示
ENDFORM.
"3.1填充fieldcat
FORM frm_fill_fieldcat .
DEFINE add_fieldcat."宏名称
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-reptext = &2.
gs_fieldcat-edit = &3.
gs_fieldcat-col_pos = &4.
gs_fieldcat-just = &5.
gs_fieldcat-outputlen = &6.
gs_fieldcat-fix_column = &7.
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
CLEAR gt_fieldcat.
REFRESH gt_fieldcat.
add_fieldcat 'EBELN' '采购订单编号' '' '' '' '100' ''.
add_fieldcat 'BUKRS' '公司代码' '' '' '' '' ''.
add_fieldcat 'BSART' '单据类型' '' '' '' '' ''.
add_fieldcat 'EBELP' '行号' '' '' '' '' ''.
add_fieldcat 'MATNR' '物料编号' '' '' '' '' ''.
add_fieldcat 'WERKS' '工厂' '' '' '' '' ''.
add_fieldcat 'MATKL' '物料组' '' '' '' '' ''.
add_fieldcat 'MENGE' '数量' '' '' '' '' ''.
add_fieldcat 'MEINS' '单位' '' '' '' '' ''.
ENDFORM.
"3.2填充布局
FORM frm_fill_lauout .
"定义列自动宽度优化
gs_layout-cwidth_opt = 'X'.
"布局
gs_layout-sel_mode = 'A'.
"定义条纹显示
gs_layout-zebra = 'X'.
ENDFORM.
"3.3ALV展示
FORM frm_alv_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.
ENDIF.
ENDFORM.