ABAP
相关代码:1、内表增加字段定义
HANDLE1 TYPE INT4
2、下拉框内表定义
DATA:GT_DDVAL TYPE LVC_T_DROP, GW_DDVAL TYPE LVC_S_DROP, GT_EVENTS TYPE SLIS_T_EVENT, GW_EVENTS TYPE SLIS_ALV_EVENT.
3、FIELDCAT组件定义
FIELDCAT-EDIT
FIELDCAT-DRDN_FIELD
4、ALV显示FIELDCAT设置
FILL_FIELD:'BS' '合格标识' '' '' 'X' '' '' '' 'HANDLE1'.
5、下拉框内表赋值等相关(在ALV函数之前执行)
①、
FORM CREAT_DROPDOWN_VALUES. CLEAR GW_DDVAL. GW_DDVAL-HANDLE = '1'. GW_DDVAL-VALUE = '合格'. APPEND GW_DDVAL TO GT_DDVAL. CLEAR GW_DDVAL. GW_DDVAL-HANDLE = '1'. GW_DDVAL-VALUE = '不合格'. APPEND GW_DDVAL TO GT_DDVAL. GT_TAB-HANDLE1 = 1. MODIFY GT_TAB TRANSPORTING HANDLE1 WHERE HANDLE1 IS INITIAL. ENDFORM.
②、
FORM CREAT_EVENT_EXITS . GW_EVENTS-NAME = 'CALLER_EXIT'. GW_EVENTS-FORM = 'CALLER_EXIT'. APPEND GW_EVENTS TO GT_EVENTS. 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. * CALL METHOD L_REF_ALV->CHECK_CHANGED_DATA. * CALL METHOD L_REF_ALV->REFRESH_TABLE_DISPLAY. ENDFORM.
至此,关于实现下拉框的所有步骤都已完成,下面贴出完整demo代码:
REPORT ZMYDEMO013.TYPE-POOLS: SLIS.TABLES:AFPO.TYPES:BEGIN OF TY_TAB,AUFNR TYPE AFPO-AUFNR, "生产订单号WERKS TYPE MARC-WERKS, "工厂MATNR TYPE AFPO-MATNR, "物料号MAKTX TYPE MAKT-MAKTX, "物料描述SEL TYPE C, "选择STATU TYPE CHAR10, "红绿灯HANDLE1 TYPE INT4,BS TYPE CHAR10,END OF TY_TAB.DATA:GT_TAB TYPE TABLE OF TY_TAB WITH HEADER LINE.DATA:GS_LAYOUT TYPE LVC_S_LAYO,GT_FIELDCAT TYPE TABLE OF LVC_S_FCAT,GS_FIELDCAT TYPE LVC_S_FCAT,*定义存储下拉列表的数据GT_DDVAL TYPE LVC_T_DROP,GW_DDVAL TYPE LVC_S_DROP,GT_EVENTS TYPE SLIS_T_EVENT,GW_EVENTS TYPE SLIS_ALV_EVENT.DEFINE FILL_FIELD.CLEAR GS_FIELDCAT.GS_FIELDCAT-FIELDNAME = &1. "字段的名字(内表中定义的字段名)GS_FIELDCAT-SCRTEXT_L = &2. "字段的文本描述,输出时候显示。长描述GS_FIELDCAT-QFIELDNAME = &3. "计量单位字段名,例如如值EA对应的字段名GS_FIELDCAT-NO_ZERO = &4. "如果取值为零,则为空,既不输出零。GS_FIELDCAT-EDIT = &5. "当前列可编辑GS_FIELDCAT-REF_TABLE = &6. "该字段的参考表GS_FIELDCAT-REF_FIELD = &7. "该字段的参考字段GS_FIELDCAT-CHECKBOX = &8. "选择框GS_FIELDCAT-DRDN_FIELD = &9.* GS_FIELDCAT-ICON = 'X'. "图标功能APPEND GS_FIELDCAT TO GT_FIELDCAT.END-OF-DEFINITION.SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.PARAMETERS:P_WERKS TYPE MARC-WERKS OBLIGATORY DEFAULT '1101'. "工厂SELECT-OPTIONS:S_ERDAT FOR SY-DATUM DEFAULT SY-DATUM,S_MATNR FOR AFPO-MATNR. "物料号SELECTION-SCREEN:END OF BLOCK B1.INITIALIZATION.START-OF-SELECTION.PERFORM FRM_GET_DATA.PERFORM FRM_DIS_DATA.END-OF-SELECTION.FORM FRM_GET_DATA.SELECT AFPO~AUFNR AFPO~MATNR MARC~WERKS MAKT~MAKTXINTO CORRESPONDING FIELDS OF TABLE GT_TABFROM AFPO INNER JOIN MAKT ON AFPO~MATNR = MAKT~MATNRINNER JOIN MARC ON AFPO~MATNR = MARC~MATNR UP TO 10 ROWSWHERE MARC~WERKS = P_WERKSAND AFPO~MATNR IN S_MATNR.LOOP AT GT_TAB."红绿灯判断赋值IF SY-SUBRC = 0.GT_TAB-STATU = ICON_LED_GREEN.ELSE.GT_TAB-STATU = ICON_LED_RED.ENDIF.MODIFY GT_TAB.ENDLOOP.ENDFORM.FORM FRM_DIS_DATA.CLEAR:GS_LAYOUT.GS_LAYOUT-CWIDTH_OPT = 'X'. "自动优化列宽GS_FIELDCAT-EDIT = 'X'.*默认选择框 不需要在FILL_FIELD中添加SEL* GS_LAYOUT-BOX_FNAME = 'SEL'.*勾选型选择框GS_FIELDCAT-FIELDNAME = 'SEL'.GS_FIELDCAT-CHECKBOX = 'X'.REFRESH GT_FIELDCAT.FILL_FIELD:'SEL' '选择' '' '' 'X' '' '' 'X' ''.FILL_FIELD:'AUFNR' '生产订单' '' '' '' '' '' '' ''.FILL_FIELD:'MATNR' '物料号' '' '' '' 'AFPO' 'MATNR' '' ''.FILL_FIELD:'MAKTX' '物料描述' '' '' 'X' '' '' '' ''.FILL_FIELD:'STATU' '红绿灯' '' '' '' '' '' '' ''.FILL_FIELD:'BS' '合格标识' '' '' 'X' '' '' '' 'HANDLE1'.PERFORM CREAT_DROPDOWN_VALUES.PERFORM CREAT_EVENT_EXITS.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGI_CALLBACK_PROGRAM = SY-REPIDIT_FIELDCAT_LVC = GT_FIELDCAT[]IT_EVENTS = GT_EVENTSTABLEST_OUTTAB = GT_TAB.ENDFORM.*---------------------------------------------------------------------**根据物料的所有的语言生成不同的生成下拉列表*---------------------------------------------------------------------*FORM CREAT_DROPDOWN_VALUES.CLEAR GW_DDVAL.GW_DDVAL-HANDLE = '1'.GW_DDVAL-VALUE = '合格'.APPEND GW_DDVAL TO GT_DDVAL.CLEAR GW_DDVAL.GW_DDVAL-HANDLE = '1'.GW_DDVAL-VALUE = '不合格'.APPEND GW_DDVAL TO GT_DDVAL.GT_TAB-HANDLE1 = 1.MODIFY GT_TAB TRANSPORTING HANDLE1 WHERE HANDLE1 IS INITIAL.ENDFORM. " creat_dropdown_values*---------------------------------------------------------------------** Form creat_event_exits*---------------------------------------------------------------------*FORM CREAT_EVENT_EXITS .GW_EVENTS-NAME = 'CALLER_EXIT'.GW_EVENTS-FORM = 'CALLER_EXIT'.APPEND GW_EVENTS TO GT_EVENTS.ENDFORM. " creat_event_exits*---------------------------------------------------------------------**设置下拉列表,使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'IMPORTINGE_GRID = L_REF_ALV.CALL METHOD L_REF_ALV->SET_DROP_DOWN_TABLEEXPORTINGIT_DROP_DOWN = GT_DDVAL.* CALL METHOD L_REF_ALV->CHECK_CHANGED_DATA.* CALL METHOD L_REF_ALV->REFRESH_TABLE_DISPLAY.ENDFORM.ABAP