*数据声明:
TYPES:
BEGIN OF t_data,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
spras TYPE makt-spras,
END OF t_data,
BEGIN OF t_alv,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
spras TYPE makt-spras,
dd_handle TYPE int4,
END OF t_alv.
DATA:
gt_fieldcatalog TYPE lvc_t_fcat, "清单观察器控制的字段目录
gw_fieldcatalog TYPE lvc_s_fcat, "ALV 控制: 字段目录
gt_events TYPE slis_t_event,
gw_events TYPE slis_alv_event,
gt_data TYPE TABLE OF t_data,
gw_data TYPE t_data,
gt_alv TYPE TABLE OF t_alv,
gw_alv TYPE t_alv,
g_repid TYPE sy-repid VALUE sy-repid.
*定义存储下拉列表的数据:
Data gt_ddval type lvc_t_drop. "下拉列表框 Table Type
Data gw_ddval type lvc_s_drop. "下拉列表框 是lvc_s_drop是lvc_t_drop的结构
*在定义输出字段格式时,定义要生成下拉列表的字段
CLEAR gw_fieldcatalog.
gw_fieldcatalog-fieldname = 'SPRAS'. "在语言代码字段
gw_fieldcatalog-OUTPUTLEN = '8'. "ALV 控制: 列的字符宽度
gw_fieldcatalog-dd_outlen = '7'. "ALV 控制: 输出字符长度
gw_fieldcatalog-intlen = '2'. "以字节计的内部长度
gw_fieldcatalog-inttype = 'C'. "ABAP 数据类型(C,D,N,...)
gw_fieldcatalog-coltext = 'Language'. "ALV 控制: 列标题
gw_fieldcatalog-tooltip = 'Language'. "ALV 控制: 列抬头的工具提示
gw_fieldcatalog-seltext = 'Language'. "ALV 控制: 对话功能的列标识符
gw_fieldcatalog-drdn_field = 'DD_HANDLE'. "ALV 控制: 内部表字段的字段名称
gw_fieldcatalog-EDIT = 'X'. "ALV 控制: 准备输入
APPEND gw_fieldcatalog TO gt_fieldcatalog.
*---------------------------------------------------------------------*
*根据物料的所有的语言生成不同的生成下拉列表
*---------------------------------------------------------------------*
FORM creat_dropdown_values.
DATA: l_spras TYPE makt-spras,
l_count TYPE i.
LOOP AT gt_alv INTO gw_alv.
ADD 1 TO l_count.
SELECT spras INTO l_spras FROM makt WHERE matnr = gw_alv-matnr.
CLEAR gw_ddval.
gw_ddval-handle = l_count.
gw_ddval-value = l_spras.
APPEND gw_ddval TO gt_ddval.
ENDSELECT.
CLEAR gw_ddval.
gw_ddval-handle = l_count.
gw_ddval-value = ' '.
APPEND gw_ddval TO gt_ddval.
*设置对应
gw_alv-dd_handle = l_count.
MODIFY gt_alv FROM gw_alv.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*设置下拉列表,使Grid和内表能链接上
*---------------------------------------------------------------------*
FORM caller_exit USING ls_data TYPE slis_data_caller_exit.
DATA: l_ref_alv TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_ref_alv.
CALL METHOD l_ref_alv->set_drop_down_table
EXPORTING
it_drop_down = gt_ddval.
ENDFORM.