输出ALV完整流程

1.定义一个SAP标准类型库
TYPE-POOLS: SLIS.
2.定义一个LAYOUT式样,和一个FIELDCAT字段格式,

DATA: G_F TYPE SLIS_T_FIELDCAT_ALV , "字段目录内表
       W_L TYPE SLIS_LAYOUT_ALV. "用于定义ALV表单的相关格式、属性

3.如果选择屏幕复选框参考了表
TABLES : EKKO, EKPO.
4.定义一个结构

TYPES: BEGIN OF G_TY,
   BOX TYPE C,
   EKORG TYPE EKKO-EKORG,
   BSART TYPE EKKO-BSART,
   LIFNR TYPE EKKO-LIFNR,
   EBELN TYPE EKKO-EBELN,
 END OF G_TY.

5.定义表和工作区

DATA: G_TAB TYPE TABLE OF G_TY,
       W_TAB LIKE LINE OF G_TAB.   或者 
       W_TAB TYPEG_TY.

6.定义屏幕

SELECTION-SCREEN BEGIN OF BLOCK XYY WITH FRAME TITLE TEXT-001.
PARAMETERS P_VKORG TYPE VBAK-VKORG OBLIGATORY.
  SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN,
                  S_AUART FOR  VBAK-AUART.
SELECTION-SCREEN END OF BLOCK XYY.

这里只定义了单选框(PARAMETERS)和复选框(SELECT-OPTIONS)。一个用TYPE,一个用FOR。表查询会依照屏幕条件筛选数据。

7.初始化屏幕
INITIALIZATION.
加这个条件是告诉系统在这屏幕展示完,要查数据,展示报表了。

8.按顺序执行

START-OF-SELECTION.
  PERFORM FRM_SELDATA.
  PERFORM FRM_WRITE .
END-OF-SELECTION.  

9.数据查询实现PERFORM 方法

FORM FRM_SELDATA .
SELECT:
  EKKO~EKORG
  EKKO~BSART
  EKKO~LIFNR
  INTO CORRESPONDING FIELDS OF TABLE G_TAB
  FROM EKKO INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN
  WHERE EKKO~EKORG IN P_EKORG
  AND EKKO~BSART IN P_BSART
  AND EKKO~LIFNR IN P_LIFNR
  AND EKKO~EBELN IN P_EBELN.
ENDFORM. "FRM_SELDATA

查询的时候三个表以下可以用 INNER JOIN,否则就用内表传递,一个表一个表的查,再传递。

10.实现ALV输出

FORM FRM_WRITE .
   PERFORM LAYOUT.              "输出样式
   PERFORM INIT_FIELDCA.       "输出属性
   PERFORM LISTADO.                "展示
ENDFORM. " FRM_WRITE

(1)实现ALV输出具体的方法:定义ALV样式

FORM LAYOUT .
   W_L-BOX_FIELDNAME = 'BOX'.
   W_L-ZEBRA = 'X'.         "颜色间隔
  W_L-COLWIDTH_OPTIMIZE = 'X'.       "自适应宽度
ENDFORM. " LAYOUT_19

(2)

FORM INIT_FIELDCA .
   CLEAR G_F.
  G_F-FIELDNAME = 'EKORG'. "必须为大写
  G_F-SELTEXT_S  = '采购组织'.
  G_F-SELTEXT_M  = G_F-SELTEXT_S.
  G_F-SELTEXT_L  = G_F-SELTEXT_S.
   APPEND G_F.
CLEAR G_F.
G_F-FIELDNAME = 'TXZ01'.
G_F-SELTEXT_S  = '行文本'.
G_F-SELTEXT_M  = G_F-SELTEXT_S.
G_F-SELTEXT_L  = G_F-SELTEXT_S.
G_F-EDIT  = 'X' .
G_F-REF_FIELDNAME  = 'TXZ01'.  "参考字段名
G_F-REF_TABNAME    = 'EKPO'.   "参考表名
APPEND G_F.
ENDFORM. " INIT_FIELDCAT_19  

(3)输出

FORM LISTADO .
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID   "当前程序名
     I_CALLBACK_USER_COMMAND    = 'USER_COMMAND' "自定义按钮响应事件
     I_CALLBACK_PF_STATUS_SET   = 'SET_PF_STATUS' "设置ALV的自定义按钮
     IS_LAYOUT          = W_L "输出样式
     IT_FIELDCAT        = G_F[]  "字段定义描述表
"     I_CALLBACK_TOP_OF_PAGE = 'F_TOP_OF_PAGE'
     I_SAVE             = 'A'
       " I_SAVE有4个可选值: I_SAVE= '' --- 不能保存格式;
      " I_SAVE = 'X' --- 保存标准格式;
      " I_SAVE = 'U' --- 保存特定用户格式;
      " I_SAVE = 'A' --- 保存标准格式和特定用户格式。
   TABLES
      T_OUTTAB           = G_TAB   "内表输出名称
   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. " LISTADO
 FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
   SET PF-STATUS 'STATUS' .
 ENDFORM.

11.写USER_COMMAND的一个事件(这个作业要求实现更改数据,点击按钮且保存成功)

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                         RS_SELFIELD TYPE SLIS_SELFIELD.
   DATA: GV_GRID TYPE REF TO CL_GUI_ALV_GRID.
   "刷新
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
     IMPORTING
       E_GRID = GV_GRID.
   CALL METHOD GV_GRID->CHECK_CHANGED_DATA.
    CASE R_UCOMM.
       WHEN 'SKIP'.
         IF SY-SUBRC = 0.
         ENDIF.
     ENDCASE.
 ENDFORM. "LISTADO
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • 一、ALV是什么? ALV(SAP LIST VIEW)是一种比较美观的报表显示工具,具有网格显示方式,有排序、筛...
    hitammy阅读 8,470评论 0 5
  • 2017.11.11,在女儿过的第三个光棍节的日子,带她去拍了三周岁纪念照。猛生想法,过几年带你和爸爸拍套婚纱照,...
    芯芯妈阅读 266评论 0 0
  • “最怕一生碌碌无为,却说平凡难能可贵。”很矛盾吧, 凌晨一点钟,楼道的公厕里只有我一个人。不是失眠,是拉肚子…… ...
    韩可爱的李过儿阅读 351评论 1 1
  • 爱吃,是一种态度,能吃,是一种乐趣,懂吃,是一种享受,会吃是一种学问,真正的生活者,源于对食物的无比热爱。 同样,...
    独立行走的鱼阅读 2,340评论 23 40
  • 刘邦,一个流氓出身。却成为中国历史上第一个贫民皇帝,他的成功出乎很多人的意料,为何一个流氓能得道天下呢。 ...
    泪已干心已碎阅读 424评论 0 2