采购订单查询练习

  • 程序名称: YTST_PPJLI001
  • 主程序
*&---------------------------------------------------------------------*
*& Program   Name    :ZTST_PPJLI001
*& Title          :采购订单查询
*& Module    Name      :MM模块
*& Author           :PPJLI
*& Create    Date     :11.07.2019 08:56:45
*& Program   Type     :Report Program
*& Requested by     :开发项编号
*& Description     :
*&------------------- -------------------------------------------------*
*& Modification LOG
*&
*& 日期       修改人       修改描述
*& ----     ----       ------       -----------
*&---------------------------------------------------------------------*
REPORT YTST_PPJLI001.

*&---------------------------------------------------------------------*
*&  数据定义及屏幕定义部分
*&---------------------------------------------------------------------*
INCLUDE YMMR1001_TOP.

*&---------------------------------------------------------------------*
*&  子程序定义部分
*&---------------------------------------------------------------------*
INCLUDE YMMR1001_FORM.

*START-OF-SELECTION 下面是获取数据   END-OF-DEFINITION  下面是显示数据
START-OF-SELECTION .
  PERFORM FRM_MAIN.


END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  FRM_MAIN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_MAIN.

*数据定义
  DATA: LT_ORDER TYPE TY_TAB_EKKO_EKPO.
  PERFORM FRM_GET_DATA     CHANGING  LT_ORDER.           "获取数据
  PERFORM FRM_DISPLAY_DATA USING     LT_ORDER.          " 展示数据
ENDFORM.
  • top程序
*&---------------------------------------------------------------------*
*&  包含                ZMMR1001_TOP
*&---------------------------------------------------------------------*

TABLES: EKKO,EKPO.
TYPE-POOLS: SLIS.

*&---------------------------------------------------------------------*
*&  类型定义
*&---------------------------------------------------------------------*
TYPES: BEGIN OF TY_EKKO_EKPO,
         BUKRS TYPE EKKO-BUKRS,  "公司代码
         LIFNR TYPE EKKO-LIFNR,  "供应商
         EKORG TYPE EKKO-EKORG,  "采购组织
         BSART TYPE EKKO-BSART,  "采购凭证
         WERKS TYPE EKPO-WERKS,  "工厂
         MATNR TYPE EKPO-MATNR,  "物料号
         LGORT TYPE EKPO-LGORT,  "库存地点
      END OF TY_EKKO_EKPO.

TYPES: TY_TAB_EKKO_EKPO TYPE STANDARD TABLE OF TY_EKKO_EKPO.


*&---------------------------------------------------------------------*
*&  屏幕定义
*&---------------------------------------------------------------------*
SELECTION-SCREEN:BEGIN OF BLOCK BL WITH FRAME TITLE TEXT-001.

     PARAMETERS:     P_WERKS  TYPE EKPO-WERKS.          "工厂
     SELECT-OPTIONS: S_LIFNR  FOR  EKKO-LIFNR,          "供应商
                     S_MATNR  FOR  EKPO-MATNR,          "物料
                     S_EKORG  FOR  EKKO-EKORG.          "采购组织
SELECTION-SCREEN:END OF BLOCK BL.
  • form程序
*&---------------------------------------------------------------------*
*&  Include           ZMMR1001_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text 从数据库表中获取需要查询的字段
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*

*数据查询
FORM FRM_GET_DATA  CHANGING PT_ORDER TYPE TY_TAB_EKKO_EKPO.
    SELECT
      EKKO~BUKRS    "公司代码
      EKKO~LIFNR    "供应商
      EKKO~EKORG    "采购组织
      EKKO~BSART    "采购凭证
      EKPO~WERKS    "工厂
      EKPO~MATNR    "物料号
      EKPO~LGORT    "库存地点
FROM EKKO
   INNER JOIN EKPO
   ON EKKO~EBELN = EKPO~EBELN
INTO CORRESPONDING FIELDS OF TABLE PT_ORDER
   WHERE EKPO~WERKS  = P_WERKS     "工厂
     AND EKKO~LIFNR IN S_LIFNR     "供应商
     AND EKPO~MATNR IN S_MATNR     "物料号
     AND EKKO~EKORG IN S_EKORG.    "采购组织
ENDFORM.
**&---------------------------------------------------------------------*
**&      Form  DISPLAY_DATA
**&---------------------------------------------------------------------*
**       text 对报表展示进行设计
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*

FORM FRM_DISPLAY_DATA USING PT_ORDER TYPE TY_TAB_EKKO_EKPO.

DATA: LWA_FIELDCAT  TYPE SLIS_FIELDCAT_ALV,
      LWA_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      LT_FIELDCAT   TYPE SLIS_T_FIELDCAT_ALV.

"获取表头字LT_FIELDCAT段信息
  PERFORM  FRM_BUILD1_FIELDCAT  CHANGING LT_FIELDCAT.
  PERFORM  FRM_PRINT_ALV        TABLES   PT_ORDER
                                CHANGING LWA_LAYOUT
                                         LWA_FIELDCAT
                                         LT_FIELDCAT.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*       text :  定义ALV表头
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*

FORM FRM_BUILD1_FIELDCAT  USING LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
  PERFORM FRM_GS_FIELDCAT TABLES  LT_FIELDCAT USING:   'BUKRS'  '公司代码',
                                                       'LIFNR' '供应商',
                                                       'EKORG' '采购组织',
                                                       'LGORT' '库存地点',
                                                       'BSART' '采购凭证',
                                                       'WERKS' '工厂',
                                                       'MATNR' '物料号'.
ENDFORM.                    " BUILD_FIELDCAT

*&---------------------------------------------------------------------*
*&      Form  ALV_GS_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0103   text
*      -->P_0104   text
*----------------------------------------------------------------------*

FORM FRM_GS_FIELDCAT  TABLES   P_LT_FIELDCAT
                       USING    VALUE(P_0089)
                                VALUE(P_0090).
  DATA: LWA_FIELDCAT   TYPE SLIS_FIELDCAT_ALV.

  LWA_FIELDCAT-FIELDNAME = P_0089.  "字段名
  LWA_FIELDCAT-SELTEXT_L = P_0090.  "字段描述
  APPEND LWA_FIELDCAT TO P_LT_FIELDCAT.
  CLEAR  LWA_FIELDCAT.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  FRM_PRINT_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_LT_ORDER  text
*----------------------------------------------------------------------*
FORM FRM_PRINT_ALV  TABLES   PT_ORDER       TYPE TY_TAB_EKKO_EKPO
                    USING    P_LWA_LAYOUT   TYPE SLIS_LAYOUT_ALV
                             P_LWA_FIELDCAT TYPE SLIS_FIELDCAT_ALV
                             P_LT_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV.
*   定义样式子例程框
   P_LWA_LAYOUT-ZEBRA = 'X' .                   "zebra表示隔行显示不同颜色
   P_LWA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.        "自动调整列宽

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
    I_CALLBACK_PROGRAM                = SY-REPID    "当前程序
    IS_LAYOUT                         = P_LWA_LAYOUT  "表头样式
    IT_FIELDCAT                       = p_LT_FIELDCAT "表头字段
   TABLES
     T_OUTTAB                          = PT_ORDER
  EXCEPTIONS
    PROGRAM_ERROR                     = 1
    OTHERS                            = 2
           .
 IF SY-SUBRC <> 0.
* Implement suitable error handling here
 ENDIF.

ENDFORM.


* 在PERFORM调用的地方定义, 用传参数的形式 传到form 里使用
* 调用  changing...  实现 USING
* changing 要在USING 后面,,  所以用TABLES,
  • 在PERFORM调用的地方定义, 用传参数的形式 传到form 里使用
  • 调用 changing... 实现 USING
  • changing 要在USING 后面,, 所以用TABLES,
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容