前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP随笔-入门简单ALV-(附单元格颜色控制)

ABAP随笔-入门简单ALV-(附单元格颜色控制)

作者头像
Tab Zhu
发布2022-06-27 16:53:10
9320
发布2022-06-27 16:53:10
举报
文章被收录于专栏:TAB的coding生活TAB的coding生活

01

入门简单那ALV

今天写一个简单的ALV报表吧,仅显示的那种,这是前两天刚入门的ABAP小伙伴的小考题,

需求是这样的:

需求描述:

1.选择屏幕为:

勾选时,才显示销售凭证的选项

2.展示订单,行项目,订单类型,物料号等信息的ALV展示

3.单击销售订单跳转到VA03查询页面

4.当订单数目小于10时,用红色标注

ALV效果如下

代码如下所示:

代码语言:javascript
复制
*&------------------------------------------------ ---------------------*

*& 报告 ZALV_SIMPLE

*&------------------------------------------------ ---------------------*

*&

*&------------------------------------------------ ---------------------*

报告 zalv_simple。

表:vbak。类型:开始gty_data  , vbeln 类型 vbak - vbeln ,         posnr  类型 vbap - posnr ,         auart  类型 vbak - auart ,         matnr  类型 vbap - matnr ,         maktx  类型 makt - maktx ,         kwmeng 类型 vbap - kwmeng ,         scol            _  








TYPE  lvc_t_scol ,  "使用 单元 控制格颜色
      END  OF  gty_data .

DATA  gs_fieldcat  TYPE  lvc_s_fcat .
DATA  gt_fieldcat  TYPE  lvc_t_fcat .
DATA  gs_layout  TYPE  lvc_s_layo .

DATA  gs_data  TYPE  gty_data .
DATA  gt_data  TYPE  TABLE  OF  gty_data .

PARAMETERS  p_auart  TYPE  vbak - PARAMETERS 类型 
vbak - vkorg  。
选择选项:用于 vbak  - erdat的s_erdat 。
参数 p_cbox 作为 CHECKBOX  USER-COMMAND  uc1 。
选择选项: s_vbeln  FOR  vbak - vbeln MODIF  ID  md1 。
初始化。
在 选择屏幕 输出。在屏幕上 
  循环 。IF 屏幕-名称 =  'P_AUART'  OR 屏幕
    -名称 =  'P_VKORG' 。
      屏幕-必需 =  '2' 。
      修改 屏幕。
    结束语。
    IF 屏幕- group1  =  'MD1' 。
      如果 p_cbox  EQ  'X' 。
        屏幕-活动 =  '1' 。
      否则。
        屏幕-活动 =  '0' 。
      结束语。
      修改 屏幕。
    结束语。
  结束循环。
开始选择。
  如果 p_auart 是 初始 的或 p_vkorg 是 初始的。
    MESSAGE  '请输入必填项'  TYPE  'S'  DISPLAY  LIKE  'E' .
    返回。
  结束语。执行
  frm_get_data  。
*&------------------------------------------------ -----------------*
*& 表格 FRM_GET_DATA
*&---------------------------------------- ---------------------------------------*
*& 文字
*&----- -------------------------------------------------- ----------*
*& --> p1 文本
*& <-- p2 文本
*&------------------------------------------------ -----------------*形成 
frm_get_data  。
  数据 ls_scol 类型 lvc_s_scol 。“控制颜色的结构
  IF  p_cbox  IS  IN . CLEAR  s_vbeln [] . . . . ” 抓取订单,订单数量,行,销售,物料,物料描述SELECT  a ~ vbeln , b ~ posnr , a ~ auart , b ~ matnr , c ~ maktx , b ~ kwmeng  INTO 
    
  
  
  TABLE  @ DATA ( lt_data )
    从 vbak 作为 
    内部 连接​​vbap在 b  ~ vbeln  =  a ~ vbeln 内部 连接​​makt 作为 c 在 c ~ matnr  =  b ~ matnr 哪里 a ~ auart =  @p_auart AND  a ~ vkorg  =  @p_vkorg  _ _ _和 一个~ erdat  
     
  
    
    在 @s_erdat
    和 a ~ vbeln 在 @s_vbeln
    和 c ~ spras  =  @sy - langu中。
  如果 sy - subrc  EQ  0 。
    将 lt_data  [] 移动到 gt_data[] 。
    在gt_data 循环 分配 字段 -符号( < fs> )  ,其中 kwmeng  <  10 。清除 ls_scol 。      ls_scol - fname 
      
=  'KWMENG' .
      ls_scol -颜色- col  =  '6' 。"6:为红色 1:强化 0:颜色为背景
      ls_scol - color - int  =  '1' 。" 6:为红色 1:强化 0:颜色为背景
      ls_scol - color - inv  =  '0' . "6:为红色 1:强化 0:颜色为背景
      APPEND  ls_scol  TO  <fs> - scol .
    ENDLOOP .

    gs_layout - sel_mode     =  'D'  。"
-斑马 =  'X' 。 “ALV表格
斑马线显示    gs_layout - cwidth_opt  =  'X' 。  ”将ALV字段设置为最优化
    gs_layout - ctab_fname  =  'SCOL' 。"ALV:复杂单元格颜色控制字段的名称
    PERFORM  frm_build_cat .
    PERFORM  frm_display .
  ENDIF .
ENDFORM .
*&------------------------ -----------------------------------------*
*& 表格 FRM_BUILD_CAT
*&-- -------------------------------------------------- -------------*
*& 文字
*&------------------------------------------------ -----------------*
*& --> p1 文本
*& <-- p2 文本
*&---------------- --------------------------------------------------*形成 
frm_build_cat  。

  数据 lv_pos 类型 i 。数据 ls_fieldcat 像 gt_fieldcat 的行 。定义 %%append_fieldcat 。    lv_pos  =  lv_pos +  1 。    ls_fieldcat - col_pos  =  lv_pos 。    ls_fieldcat -字段 名=  &1 。" 字段名文本    ls_fieldcat - coltext  =  &2 . "     ls_fieldcat - key  =  &3 . "关键字
  
  





    ls_fieldcat - ref_table  =  &4 。“参考的表
    ls_fieldcat - ref_field  =  &5 。”参考的字段APPEND  ls_fieldcat  TO  gt_fieldcat 。清除 ls_fieldcat 。定义结束。  %%append_fieldcat :'VBELN'  ''  '  X''VBAK''VBELN  ' ,'POSNR'  ''  '  X''VBAP''POSNR  ' ,'AUART'  ''  ''  ' 
  
  
  

  
  
  
  ''  ''  '  VBAP''MATNR ' ,'MAKTX'  ''  '  '  'MAKT''MAKTX' ,'KWMENG'  ''  '  '  'VBAP''KWMENG' 。读取 表 gt_fieldcat 分配 字段-符号( <fs> ) 索引 1 。如果 sy - subrc  EQ  0 。    <fs> -热点 =  'X' 。" 激活热点,单机跳转功能ENDIF . 结束形式。
  
  

  
  

  


*&------------------------------------------------ ----------------*
*& 表格 FRM_DISPLAY
*&--------------------------- -------------------------------------*
*& 文字
*&-------- -------------------------------------------------- -------*
*& --> p1 文本
*& <-- p2 文本
*&-------------------------- --------------------------------------*形成 
frm_display  。"调用FM显示报表CALL  FUNCTION  'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING * I_INTERFACE_CHECK = ' '

  
  
    



repid
      i_callback_pf_status_set  =  'FRM_SET_STATUS'  "状态栏form
      i_callback_user_command   =  'FRM_ALV_USER_COMMAND'  "用户命令form
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* IB_ID =
* I_GRID_TITLE =
* I_GRID_SETTINGS =
      is_layout_lvc             =  gs_layout
      it_fieldcat_lvc           =  gt_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN
= 0
* I_SCREEN_ENSTART_COMN =
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER = TABLES       t_outtab                  =  gt_data * EXCEPTIONS * PROGRAM_ERROR = 1 * OTHERS = 2 。如果 sy - subrc <>  0 。* 在此处实施适当的错误处理ENDIF 。结束形式。
    




    
  

  

“
FORM  frm_set_status  USING  p_extab  TYPE  slis_t_extab . SET  PF-STATUS  'ZSTANDARD_FULLSCREEN'  。  ”se41 状态程序从saplkkbl 状态STANDARD_FULLSCREEN 复制即可ENDFORM .                    “frm_set_status ”命令形式 frm_alv_user_command 使用 p_ucomm        类型 sy - ucomm                                 p_rs_selfield  类型 slis_selfield 。案例 p_ucomm 。当 '&IC1' 。“点击阅读 表 
  




  
    
      gt_data  INTO  DATA ( ls_data ) 索引 p_rs_selfield - tabindex 。如果 sy - subrc  EQ  0  AND  p_rs_selfield - fieldname  =  'VBELN' 。"跳转画面SET  PARAMETER  ID :  'AUN'  FIELD  ls_data -vbeln . CALL  TRANSACTION  'VA03  ' AND  SKIP  FIRST  SCREEN . ENDIF . WHEN  OTHERS .
      
        
        
        
      
    
  结束语。
结束形式。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAP TAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档