ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SAP ALV demo---自用

2019-07-15 14:00:25  阅读:370  来源: 互联网

标签:SY LAYOUT FIELDCAT demo FRM ALV SAP TYPE


 

      留着自己用,很多代码都是可以复用的,每次开发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.

 

标签:SY,LAYOUT,FIELDCAT,demo,FRM,ALV,SAP,TYPE
来源: https://blog.csdn.net/anji0207/article/details/95960668

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有