ALV报表 - 某单元格可编辑
相关代码内容:
内表中定义STYLE TYPE LVC_T_STYL, "设置编辑状态字段
定义所需表和工作区 DATA:GS_STYLE TYPE LVC_S_STYL,
GT_STYLE TYPE LVC_T_STYL.
GT_STYLE赋值 GS_STYLE-FIELDNAME = 'AUFNR'.
GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED."设置为不可编辑
INSERT GS_STYLE INTO TABLE GT_STYLE.
将GT_STYLE存入定义的字段STYLE
INSERT LINES OF GT_STYLE INTO TABLE GT_TAB-STYLE.
满足某些条件时,将字段STYLE的值在内表中更新
MODIFY GT_TAB TRANSPORTING STYLE WHERE MATNR <> '000000000011000007'.
在LAYOUT组件中的STYLEFNAME也设置为STYLE
GS_LAYOUT-STYLEFNAME = 'STYLE'. "指定保存编辑状态的字段名
FIELDCAT显示样式中对应可编辑字段标记上 'X'
FILL_FIELD:'AUFNR' '生产订单' '' '' 'X' '' '' ''.
ALV完整代码:
REPORT ZMYDEMO010.
TYPE-POOLS:SLIS,ICON.
TABLES:MAKT,MARC,AFPO.
DATA:GS_LAYOUT TYPE LVC_S_LAYO,
GT_FIELDCAT TYPE TABLE OF LVC_S_FCAT,
GS_FIELDCAT TYPE LVC_S_FCAT.
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, "红绿灯
STYLE TYPE LVC_T_STYL, "设置编辑状态字段
END OF TY_TAB.
DATA:GT_TAB TYPE TABLE OF TY_TAB WITH HEADER LINE.
DATA:GT_MAKT TYPE TABLE OF MAKT WITH HEADER LINE.
DATA:GS_STYLE TYPE LVC_S_STYL,
GT_STYLE TYPE LVC_T_STYL.
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-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~MAKTX
INTO CORRESPONDING FIELDS OF TABLE GT_TAB
FROM AFPO INNER JOIN MAKT ON AFPO~MATNR = MAKT~MATNR
INNER JOIN MARC ON AFPO~MATNR = MARC~MATNR UP TO 10 ROWS
WHERE MARC~WERKS = P_WERKS
AND 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.
GS_STYLE-FIELDNAME = 'AUFNR'.
GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED."设置为不可编辑
INSERT GS_STYLE INTO TABLE GT_STYLE.
INSERT LINES OF GT_STYLE INTO TABLE GT_TAB-STYLE.
* 将第五行的之外所有行的AUFNR字段都设置成不能输入
* DO 10 TIMES.
* IF SY-INDEX <> 5.
* MODIFY GT_TAB INDEX SY-INDEX TRANSPORTING STYLE.
* ENDIF.
* ENDDO.
* 将不满足某些条件时的AUFNR字段设置为不能输入
MODIFY GT_TAB TRANSPORTING STYLE WHERE MATNR <> '000000000011000007'.
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'.
* GS_LAYOUT-EDIT = 'X'. "将整个ALV设置成可编辑
GS_LAYOUT-STYLEFNAME = 'STYLE'. "指定保存编辑状态的字段名
REFRESH GT_FIELDCAT.
* FILL_FIELD:'SEL' '选择' '' '' 'X' '' '' 'X'.
FILL_FIELD:'AUFNR' '生产订单' '' '' 'X' '' '' ''.
FILL_FIELD:'MATNR' '物料号' '' '' '' 'AFPO' 'MATNR' ''.
FILL_FIELD:'MAKTX' '物料描述' '' '' '' '' '' ''.
FILL_FIELD:'STATU' '红绿灯' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_GRID_TITLE = '订单和物料信息'
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'FRM_STATUS' "调用GUI状态
* I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "调用屏幕点击事件
IS_LAYOUT_LVC = GS_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_TAB[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM.
"将ALV上手填的数据保存到内表
FORM FRM_SAVE.
DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_VALID TYPE C.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = LR_GRID.
CALL METHOD LR_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID.
ENDFORM.
"GUI状态
FORM FRM_STATUS USING LT_EXTAB.
SET PF-STATUS 'STANDARD'.
ENDFORM.
post SAP-Garson
原文链接:https://blog.csdn.net/qq_42080586/article/details/122142316文章来自于网络,如果侵犯了您的权益,请联系站长删除!