设为首页 收藏本站
查看: 1199|回复: 0

[经验分享] sap abap 报表初学

[复制链接]

尚未签到

发表于 2015-9-19 08:59:32 | 显示全部楼层 |阅读模式
  新进入一家公司,是搞erp的,用的sap,我是一点不懂啊,本来就是初级程序员,这下郁闷了,每人带,自己学……
  开始的任务就是实现个报表和单据打印,中途出现了很多问题,现在把简单报表实现步骤写出来,希望大鸟指正错误和不足
  *&---------------------------------------------------------------------* *& Report  ZMM_TEST01 *& Author: 杨路 *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------*
  REPORT  ZMM_TEST01.
  TABLES:EKKO,EKPO,EKET,MAKT.  "引入tables TYPE-POOLS: SLIS.                        "类似.net引入命名空间 *-----------------------------------------------------------------------* *           Define types *-----------------------------------------------------------------------* TYPES: BEGIN OF TYP_LIST,        BUKRS TYPE EKKO-BUKRS,        EKORG TYPE EKKO-EKORG,        EKGRP TYPE EKKO-EKGRP,        EBELN TYPE EKKO-EBELN,        EBELP TYPE EKPO-EBELP,        MATNR TYPE MAKT-MATNR,        MAKTX TYPE MAKT-MAKTX,        MENGE TYPE EKPO-MENGE,        MEINS TYPE EKPO-MEINS,        NETPR TYPE EKPO-NETPR,        WAERS TYPE EKKO-WAERS,        EINDT TYPE EKET-EINDT,        END OF TYP_LIST.              "定义结构
  *-----------------------------------------------------------------------* *                             Define data *-----------------------------------------------------------------------*
  DATA: GTD_DATA TYPE STANDARD TABLE OF TYP_LIST,       GTH_DATA TYPE TYP_LIST.
  DATA: GTD_TITLE TYPE SLIS_T_LISTHEADER,       GTH_TITLE TYPE SLIS_LISTHEADER.
  DATA: GTD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,       GTH_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  DATA: GTH_LAYOUT TYPE SLIS_LAYOUT_ALV. DATA: GD_SPRAS TYPE SPRAS. data P_DATUM type d.            "定义时间变量,后面设置默认时间 *--------------------------------------------------------------------------* *                      selection-screen *--------------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.  "双击text-001,给屏幕字段写汉语 SELECT-OPTIONS:               S_LLIEF FOR EKKO-LLIEF,               S_EBELN FOR EKKO-EBELN,               S_MATNR FOR EKPO-MATNR ,               S_AEDAT for EKKO-AEDAT OBLIGATORY.            "时间必输项 SELECTION-SCREEN END OF BLOCK B1.                    
  INITIALIZATION.                              "设置默认时间为本月初到当前时间    P_DATUM = sy-datum.    P_DATUM+6(2) = '01'.    P_DATUM = P_DATUM .    S_AEDAT-low = P_DATUM.    S_AEDAT-high = sy-datum .    APPEND S_AEDAT. *----------------------------------------------------------------------* *       START-OF-SELECTION *----------------------------------------------------------------------* START-OF-SELECTION.                              "执行各个函数调用   PERFORM SUB_GET_DATA.   PERFORM SUB_DISPLAY.   PERFORM SUB_CLEAR. *&---------------------------------------------------------------------* *&      Form  SUB_GET_DATA *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* FORM SUB_GET_DATA . SELECT   EKKO~BUKRS   EKKO~EKORG   EKKO~EKGRP   EKKO~EBELN   EKPO~EBELP   MAKT~MATNR   MAKT~MAKTX   EKPO~MENGE   EKPO~MEINS   EKPO~NETPR   EKKO~WAERS   EKET~EINDT   INTO CORRESPONDING FIELDS OF TABLE GTD_DATA   FROM EKKO   INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN   LEFT JOIN EKET ON EKPO~EBELN = EKET~EBELN   AND EKPO~EBELP = EKET~EBELP   LEFT JOIN MAKT ON EKPO~MATNR = MAKT~MATNR   WHERE EKKO~AEDAT in S_AEDAT                "屏幕的选择条件   AND  EKKO~LLIEF IN S_LLIEF   AND  EKKO~EBELN IN S_EBELN   AND EKPO~MATNR IN S_MATNR. ENDFORM.
  *&---------------------------------------------------------------------* *&      Form  SUB_TITLE *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------*
  FORM SUB_TITLE.                        "表头显示信息 REFRESH GTD_TITLE. CLEAR GTH_TITLE. PERFORM SUB_SET_TITLE USING  'H'  ''  '采购订单报表'. PERFORM SUB_SET_TITLE USING  'S'  '日期 :' SY-DATUM. PERFORM SUB_SET_TITLE USING  'S'  '作者 :' SY-UNAME. ENDFORM.        "SET_TITLE
  *&---------------------------------------------------------------------* *&      Form  sub_field *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM SUB_FIELD .
  *  PERFORM SUB_SET_FIELD USING  1  'CHECK_BOX' 'GTD_DATA' '' '1' *                               '选取' 'X' 'X' '' .   PERFORM SUB_SET_FIELD USING  1   'BUKRS'  'GTD_DATA' ''  '10'                                '公司代码' '' '' 'X' .   PERFORM SUB_SET_FIELD USING  2   'EKORG' 'GTD_DATA' ''  '4'                                '采购组织' '' '' 'X' .   PERFORM SUB_SET_FIELD USING  3   'EKGRP'  'GTD_DATA' ''  '3'                                '采购组' '' '' '' .   PERFORM SUB_SET_FIELD USING  4   'EBELN'  'GTD_DATA' ''  '4'                                '采购凭证号' '' '' '' .   PERFORM SUB_SET_FIELD USING  5   'EBELP' 'GTD_DATA' ''  '3'                                '项目编号' '' '' '' .   PERFORM SUB_SET_FIELD USING  6   'MATNR'   'GTD_DATA' ''  '10'                                '物料号' '' '' '' .   PERFORM SUB_SET_FIELD USING  7   'MAKTX'   'GTD_DATA' ''  '5'                                '物料描述' '' '' 'X' .   PERFORM SUB_SET_FIELD USING  8   'MENGE'   'GTD_DATA' '' '18'                                '数量' '' '' 'X' .   PERFORM SUB_SET_FIELD USING  9   'MEINS'  'GTD_DATA' ''  '40'                                '单位' '' '' '' .   PERFORM SUB_SET_FIELD USING  10  'NETPR' 'GTD_DATA' ''  '9'                                '价格' '' '' '' .   PERFORM SUB_SET_FIELD USING  11   'WAERS'  'GTD_DATA' ''  '4'                                '货币' '' '' '' .   PERFORM SUB_SET_FIELD USING  12   'EINDT'  'GTD_DATA' ''  '17'                                '交货日期' '' '' '' . ENDFORM.                    " sub_field *&---------------------------------------------------------------------* *&      Form  sub_set_layout *&---------------------------------------------------------------------* *      设置ALV列表显示的布局 *&---------------------------------------------------------------------* FORM SUB_SET_LAYOUT.   CLEAR GTH_LAYOUT.   GTH_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.       "设置为最适合的布局   GTH_LAYOUT-ZEBRA = 'X'. ENDFORM.                    " sub_set_layout *&---------------------------------------------------------------------* *&      Form  set_pf_status *&---------------------------------------------------------------------* *      AVL STATUS *&---------------------------------------------------------------------* FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.   SET TITLEBAR 'PO2'.                      "设置报表标题   SET PF-STATUS 'ZSTATUS2' .                "设置工具栏等 ENDFORM.                    "set_pf_status *&---------------------------------------------------------------------* *&      Form  sub_display *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* FORM SUB_DISPLAY .
  PERFORM SUB_TITLE.   PERFORM SUB_FIELD.   PERFORM SUB_SET_LAYOUT.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING       I_CALLBACK_PROGRAM       = SY-CPROG       I_CALLBACK_TOP_OF_PAGE   = 'ALV_TOP_OF_PAGE'       I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'       I_CALLBACK_USER_COMMAND  = 'USER_COMMAND_ALV'       IT_FIELDCAT              = GTD_FIELDCAT       IS_LAYOUT                = GTH_LAYOUT     TABLES       T_OUTTAB                 = GTD_DATA        "内表     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.                    "SUB_DISPLAY
  *&---------------------------------------------------------------------* *&      Form  alv_top_of_page *&---------------------------------------------------------------------* *       ALV列表抬头的设定 *&---------------------------------------------------------------------* FORM ALV_TOP_OF_PAGE.   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'     EXPORTING       IT_LIST_COMMENTARY = GTD_TITLE.
  ENDFORM.   "alv_top_of_page *&---------------------------------------------------------------------* *&      Form  user_command_alv *&---------------------------------------------------------------------* *      ALV 用户事件 *&---------------------------------------------------------------------*
  *&---------------------------------------------------------------------* *&      Form  sub_clear *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* FORM SUB_CLEAR .   FREE: GTD_DATA,         GTH_DATA.
  ENDFORM.                    " sub_clear *&---------------------------------------------------------------------* *&      Form  sub_set_title *&---------------------------------------------------------------------* *       ALV列表抬头信息的属性设置 *&---------------------------------------------------------------------* *  -->  i_typ        "输出的类型 *  -->  i_key        "文本 *  -->  i_info       "数值 *&---------------------------------------------------------------------* FORM SUB_SET_TITLE USING I_TYP TYPE ANY                          I_KEY TYPE ANY                          I_INFO TYPE ANY.
  CLEAR GTH_TITLE.   GTH_TITLE-TYP  = I_TYP.             "输出的类型   GTH_TITLE-KEY  = I_KEY.             "文本   GTH_TITLE-INFO = I_INFO.            "数值   APPEND GTH_TITLE TO GTD_TITLE.
  ENDFORM.     "sub_set_title *&---------------------------------------------------------------------* *&       Form sub_set_field *&---------------------------------------------------------------------* *        设置ALV字段的属性 *&---------------------------------------------------------------------* * -->i_pos               "显示列的位置 * -->i_fieldname         "内表的字段名 * -->i_tabname           "内表名 * -->i_box             "显示复选框 * -->i_edit              "是否为可输入 * -->i_key               "设置主键 * -->i_hotspot           "单击控制 * -->i_outputlen         "控制输出列的宽度 * -->i_seltext           "设置列的名称 * -->i_edit              "可编辑 *&---------------------------------------------------------------------* FORM SUB_SET_FIELD USING I_POS TYPE ANY                          I_FIELDNAME TYPE ANY                          I_TABNAME TYPE ANY                          I_KEY TYPE ANY                          I_OUTPUTLEN TYPE ANY                          I_SELTEXT TYPE ANY                          I_EDIT TYPE ANY                          I_BOX TYPE ANY                          I_NO_ZERO TYPE ANY.   GTH_FIELDCAT-COL_POS = I_POS.                "显示列的位置   GTH_FIELDCAT-FIELDNAME = I_FIELDNAME.        "内表的字段名   GTH_FIELDCAT-TABNAME = I_TABNAME.            "内表名   GTH_FIELDCAT-KEY = I_KEY.                    "设置主键   GTH_FIELDCAT-OUTPUTLEN = I_OUTPUTLEN.        "控制输出列的宽度   GTH_FIELDCAT-SELTEXT_M = I_SELTEXT.          "设置列的名称   GTH_FIELDCAT-EDIT      = I_EDIT.   GTH_FIELDCAT-CHECKBOX  = I_BOX.   GTH_FIELDCAT-NO_ZERO    = I_NO_ZERO.   APPEND GTH_FIELDCAT TO GTD_FIELDCAT.   CLEAR GTH_FIELDCAT.
  ENDFORM.              "sub_set_field

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115636-1-1.html 上篇帖子: 如何DEBUG更改SAP系统中的表 下篇帖子: SAP SubContract Processing
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表