SAP ALV demo—自用详解编程语言

      留着自己用,很多代码都是可以复用的,每次开发ALV都重新写一遍太浪费时间了。

*&---------------------------------------------------------------------* 
*& Report ZPPU_TEST 
*&---------------------------------------------------------------------* 
*& 
*&---------------------------------------------------------------------* 
REPORT ZALV_TEST. 
TYPE-POOLS:SLIS. 
TABLES:VBAP,SSCRFIELDS. 
*----------------------------------------------------------------------* 
*       ALV定义 
*----------------------------------------------------------------------* 
DATA: GW_FIELDCAT TYPE SLIS_FIELDCAT_ALV, 
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, 
G_LAYOUT    TYPE SLIS_LAYOUT_ALV. 
*----------------------------------------------------------------------* 
* 内表和工作区定义 
*----------------------------------------------------------------------* 
TYPES:BEGIN OF TY_ALV, 
SEL    TYPE CHAR1, 
VBELN  TYPE VBAP-VBELN, 
POSNR  TYPE VBAP-POSNR, 
MATNR  TYPE VBAP-MATNR, 
CHARG  TYPE VBAP-CHARG, 
NETWR  TYPE VBAP-NETWR, 
KWMENG TYPE VBAP-KWMENG, 
END OF TY_ALV. 
DATA:GT_ALV TYPE TABLE OF TY_ALV, 
WA_ALV TYPE TY_ALV. 
*----------------------------------------------------------------------* 
* 选择屏幕 
*----------------------------------------------------------------------* 
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. 
SELECT-OPTIONS: 
S_VBELN FOR VBAP-VBELN.            "订单号 
SELECTION-SCREEN END OF BLOCK B1. 
*----------------------------------------------------------------------* 
* Initialization 
*----------------------------------------------------------------------* 
INITIALIZATION. 
*----------------------------------------------------------------------* 
* at selection screen 
*----------------------------------------------------------------------* 
AT SELECTION-SCREEN OUTPUT. 
AT SELECTION-SCREEN. 
*----------------------------------------------------------------------* 
* Event top of page 
*----------------------------------------------------------------------* 
TOP-OF-PAGE. 
*----------------------------------------------------------------------* 
* event Start of Selection 
*----------------------------------------------------------------------* 
START-OF-SELECTION. 
PERFORM FRM_GET_DATA. 
PERFORM FRM_LAYOUT_BUILD. 
PERFORM FRM_FIELD_BUILD. 
PERFORM FRM_DATA_OUT. 
*----------------------------------------------------------------------* 
*EVENT End-of selection 
*----------------------------------------------------------------------* 
END-OF-SELECTION. 
*----------------------------------------------------------------------* 
*EVENT  End-of page 
*----------------------------------------------------------------------* 
END-OF-PAGE. 
*----------------------------------------------------------------------* 
*----------------------------------------------------------------------* 
** forms 
*----------------------------------------------------------------------* 
*&---------------------------------------------------------------------* 
*&      Form  FRM_CHECK_AUTHORITY 
*&---------------------------------------------------------------------* 
*       "  检查权限 
*----------------------------------------------------------------------* 
FORM FRM_CHECK_AUTHORITY. 
ENDFORM. 
*----------------------------------------------------------------------* 
** forms 
*----------------------------------------------------------------------* 
*&---------------------------------------------------------------------* 
*&      Form  FRM_LAYOUT_BUILD 
*&---------------------------------------------------------------------* 
*       "  设置表格样式 
*----------------------------------------------------------------------* 
FORM FRM_LAYOUT_BUILD . 
G_LAYOUT-BOX_FIELDNAME        = 'SEL'.  " 选择模式,在最左端有选择按钮 
G_LAYOUT-COLWIDTH_OPTIMIZE    = 'X'.    " 自动调整列宽 
G_LAYOUT-ZEBRA                = 'X'.    " 表格斑马线 
"G_LAYOUT-EDIT = 'X'.                     "可编辑 
G_LAYOUT-INFO_FIELDNAME       = 'CLR'. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_FIELD_BUILD 
*&---------------------------------------------------------------------* 
*       "  建立表头数据 
*----------------------------------------------------------------------* 
FORM FRM_FIELD_BUILD . 
CLEAR GT_FIELDCAT. 
PERFORM FIELD_SET: 
USING 'VBELN'  '销售订单号'   '15' 'X' , 
USING 'POSNR'  '行号'   '15' '' , 
USING 'MATNR'  '产品编码'   '15' '' , 
USING 'CHARG'  '批次'   '15' '' , 
USING 'NETWR'  '净值'   '15' '' , 
USING 'KWMENG'  '订单数量'   '15' ''. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_DATA_OUT 
*&---------------------------------------------------------------------* 
*       输出数据 
*----------------------------------------------------------------------* 
FORM FRM_DATA_OUT. 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
EXPORTING 
I_CALLBACK_PROGRAM       = SY-REPID 
IS_LAYOUT                = G_LAYOUT 
IT_FIELDCAT              = GT_FIELDCAT 
I_SAVE                   = 'X' 
I_CALLBACK_PF_STATUS_SET = 'FRM_STATE' 
I_CALLBACK_USER_COMMAND  = 'FRM_USER_COMMAND' 
TABLES 
T_OUTTAB                 = GT_ALV 
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  FRM_SET_PF_STATUS 
*&---------------------------------------------------------------------* 
FORM FRM_STATE USING RT_EXTAB TYPE SLIS_T_EXTAB. 
SET PF-STATUS 'STANDARD'. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_USER_COMMAND 
*&---------------------------------------------------------------------* 
FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM 
RS_SELFIELD TYPE SLIS_SELFIELD. 
READ TABLE GT_ALV INTO WA_ALV INDEX RS_SELFIELD-TABINDEX. 
CHECK SY-SUBRC = 0. 
CASE R_UCOMM. 
WHEN '&IC1'. 
SET PARAMETER ID 'AUN' FIELD WA_ALV-VBELN. 
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN. 
WHEN 'PRT'. 
PERFORM FRM_PRINT. 
ENDCASE. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  FIELD_SET 
*&---------------------------------------------------------------------* 
FORM FIELD_SET USING P_FIELDNAME 
P_SELTEXT_L 
P_OUTPUTLEN 
P_HOTSPOT. 
GW_FIELDCAT-FIELDNAME     = P_FIELDNAME . 
GW_FIELDCAT-SELTEXT_L     = P_SELTEXT_L . 
GW_FIELDCAT-OUTPUTLEN     = P_OUTPUTLEN . 
GW_FIELDCAT-HOTSPOT   = P_HOTSPOT. 
APPEND GW_FIELDCAT TO GT_FIELDCAT. 
CLEAR GW_FIELDCAT. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_GET_DATA 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM FRM_GET_DATA . 
SELECT 
VBAP~VBELN 
VBAP~POSNR 
VBAP~KWMENG 
VBAP~MATNR 
VBAP~NETWR 
VBAP~CHARG 
INTO CORRESPONDING FIELDS OF TABLE GT_ALV 
FROM VBAP 
WHERE VBAP~VBELN IN S_VBELN. 
"整理数据 
SORT: GT_ALV  BY VBELN POSNR. 
ENDFORM. 
FORM FRM_PRINT. 
DATA:FM_NAME  TYPE  RS38L_FNAM. 
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 
EXPORTING 
FORMNAME           = 'ZPPU_TEST' 
IMPORTING 
FM_NAME            = FM_NAME 
EXCEPTIONS 
NO_FORM            = 1 
NO_FUNCTION_MODULE = 2 
OTHERS             = 3. 
CALL FUNCTION FM_NAME 
EXPORTING 
USER_SETTINGS    = 'X' 
TABLES 
IT_DATA          = GT_ALV 
EXCEPTIONS 
FORMATTING_ERROR = 1 
INTERNAL_ERROR   = 2 
SEND_ERROR       = 3 
USER_CANCELED    = 4. 
ENDFORM.

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/19581.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论