Chinaunix首页 | 论坛 | 博客
  • 博客访问: 720990
  • 博文数量: 158
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1643
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-11 14:37
个人简介

人法地,地法天,天法道,道法自然

文章分类

全部博文(158)

文章存档

2022年(1)

2020年(3)

2016年(1)

2014年(7)

2013年(4)

2010年(5)

2009年(86)

2008年(25)

2007年(26)

我的朋友

分类:

2009-04-30 15:36:44

使用动态内表——ALV输出

 

最近开发在执海关合同维护系统时,对进口料件的汇总,由于栏位显示与出口成品的品种多少相关,所以显示的栏位是不确定的,为此研究了一番。

同样,在报关时,不管是对出口成品还是进口料件报关,栏位显示都与出口成品品种或进口料件品种相关。在同一行上显示所有的出口成品或进口料件,对于操作人员来说都是一件易操作的表现。

 

程序设计要注意事项:

第一、   每一张合同中出口成品品种数量的多少确定;

第二、   每一种或每类出口成品共同属性是否具有相同性,比如在进口料件汇总表中对于每一类出口成品都有单耗、损耗,数量,耗边料数特性。

第三、   进口料件汇总表固定列位确定。

第四、   动态创建内表区域。

 

动态创建报关数量登记表:

 perform container_free_2.
 
perform create_structure_1 USING len '进口料件'.
 
perform create_table_display_2.
 
perform ctable_for_atci.

 

form container_free_2.
   
if not g_custom_container_2 is initial .
     
call method  g_custom_container_2->free.
     
clear g_custom_container_2.
   
endif.
endform.

 

form create_structure_1 USING II mtart.  "报关出口成品相关处理

  
DATA : ERTXT TYPE string,
         ERTTX 
TYPE string,
         ERNUM 
TYPE string,
         ERIND 
TYPE I.

  
clear it_structure[].

  wa_structure-fieldname = 
'BGDHA'.  第一列列名      报关单号
  wa_structure-col_pos   = 
1.       表示第一列
  wa_structure-inttype = 
'C'.       数据类型
  wa_structure-intlen = 
18.          长度
  wa_structure-
decimals = 0 .
  wa_structure-ref_table = 
'' .
  wa_structure-ref_field = 
'' .
  wa_structure-coltext = 
'报关单号' .
  wa_structure-seltext = 
'报关单号' .
  wa_structure-just = 
'C' .
  wa_structure-
edit = 'X' .
  wa_structure-outputlen = 
18 .
  wa_structure-fix_column = 
'X' .
  
APPEND wa_structure TO it_structure.

  wa_structure-fieldname = 
'BUDAT'.             "报关日期
  wa_structure-col_pos   = 
2.
  wa_structure-inttype = 
'D'.
  wa_structure-intlen = 
18.
  wa_structure-
decimals = 0 .
  wa_structure-ref_table = 
'ZSD19ATCI' .
  wa_structure-ref_field = 
'BUDAT' .
  wa_structure-coltext = 
'日期' .
  wa_structure-seltext = 
'日期' .
  wa_structure-just = 
'C' .
  wa_structure-
edit = 'X' .
  wa_structure-outputlen = 
12 .
  wa_structure-fix_column = 
'X' .
  
APPEND wa_structure TO it_structure.

  erind = 
2 .
  
DO II TIMES.
    ernum = ernum + 
1 .
    erind = erind + 
1.
    
CONCATENATE 'ERFMG' ernum into ERTXT.
    
CONCATENATE mtart ernum into ERTTX.
    
CONDENSE ERTXT NO-GAPS.
    
CONDENSE ERTTX NO-GAPS.
    wa_structure-fieldname = ERTXT.             
"报关数量,对应每一个出口成品
    wa_structure-col_pos   = erind.
    wa_structure-inttype = 
'P'.
    wa_structure-intlen = 
13.
    wa_structure-
decimals = 3 .
    wa_structure-ref_table = 
'ZSD19ATCI' .
    wa_structure-ref_field = 
'ERFMG' .
    wa_structure-coltext = ERTTX .
    wa_structure-seltext = ERTTX .
    wa_structure-just = 
'R' .
    wa_structure-
edit = 'X' .
*    wa_structure-do_sum = 'X'.
    wa_structure-outputlen = 
13 .
    wa_structure-fix_column = 
'' .
    
APPEND wa_structure TO it_structure.
  
ENDDO.
endform.

 

 

form create_table_display_2.
  
create object g_custom_container_2
         
exporting container_name = g_container_2.
  
create object g_grid
         
exporting i_parent = g_custom_container_2.
endform.

 

form ctable_for_atci.
   
data: gs_layout type lvc_s_layo.

   
data: lt_exclude type ui_functions.
   
data: retxt type string,
         renum 
type string.

   
clear gt_fieldcat[] .
   
clear it_fieldcat[].

   
perform exclude_tb_functions changing lt_exclude.
   
perform cfield_atci using '' changing gt_fieldcat it_fieldcat.
   
perform f4_alv_field.

   
assign new_table->* to .
   
create data new_line like line of .
   
assign new_line->* to .
   
clear [].
   
create data old_table like .
   
assign old_table->* to .

*   [] = t_sunh[] .

   
loop at r_atci.

      
ASSIGN COMPONENT 'BGDHA' OF STRUCTURE  TO .
       = r_atci-bgdha.

      
ASSIGN COMPONENT 'BUDAT' OF STRUCTURE  TO .
       = r_atci-budat.

      
loop at t_atci where hname = r_atci-hname and bgdha = r_atci-bgdha and budat = r_atci-budat.
          
clear s_atci.
          
read table s_atci with key hname = t_atci-hname extwg = t_atci-extwg.
          renum = sy-tabix.
          
concatenate 'ERFMG' renum into retxt.

          
ASSIGN COMPONENT retxt OF STRUCTURE  TO .
           = t_atci-erfmg.
      
endloop.
      
INSERT  INTO TABLE .
   
endloop.


   
set handler z_receiver->handle_before_user_command for g_grid.
   
set handler z_event_double->handle_onf4 for g_grid.

   
call method g_grid->register_edit_event
           
exporting
               i_event_id = cl_gui_alv_grid=>mc_evt_enter.

   
call method g_grid->register_f4_for_fields
      
exporting
        it_f4 = lt_f4.

   
call method g_grid->set_table_for_first_display
      
exporting
       is_layout            = gs_layout
       it_toolbar_excluding = lt_exclude
       i_save                        = 
'A'
*       i_buffer_active               = 'X'
      
changing
*      IT_SORT          = GB_SORTFLD
       it_outtab            = []
       it_fieldcatalog      = gt_fieldcat[]
       it_sort              = gt_sort .

  
call method g_grid->set_ready_for_input "处于非编辑状态
          
exporting
            i_ready_for_input = 
1.
     
call method cl_gui_control=>set_focus    "设置焦点在go_grid 
         
exporting
           
control = g_grid .
          [] = [].

  
CALL METHOD cl_gui_cfw=>flush
    
EXCEPTIONS
      cntl_system_error = 
1
      cntl_error        = 
2.


endform.         "ctable_for_atci

 

form cfield_atci using dab changing pt_fieldcat type lvc_t_fcat ft_fieldcat type lvc_t_fcat.

 
data : stnum type i.

 
clear lf_fieldcat[].

 
loop at it_structure into wa_structure.
 

   m_fieldcat wa_structure-fieldname wa_structure-ref_table  wa_structure-ref_field wa_structure-coltext wa_structure-just wa_structure-
edit wa_structure-outputlen wa_structure-fix_column.

 
endloop.

 
loop at lf_fieldcat.
   
if lf_fieldcat-fieldname = 'BGDHA' OR lf_fieldcat-fieldname = 'BUDAT' . "设置关键字段
       lf_fieldcat-
key = 'X' .
       lf_fieldcat-F4AVAILABL = 
'X'.
       
modify lf_fieldcat index sy-tabix.
   
endif.
   
if lf_fieldcat-ref_field = 'ERFMG'.
       lf_fieldcat-do_sum = 
'X' .           "汇总求和
       lf_fieldcat-no_zero = 
'X' .          "隐藏零
       
modify lf_fieldcat index sy-tabix.
   
endif.
   
if lf_fieldcat-fieldname = 'ERFMO'.
        lf_fieldcat-coltext = dab.
        lf_fieldcat-emphasize = 
'C601' .     "红色
       
modify lf_fieldcat index sy-tabix.
   
endif.
   
if lf_fieldcat-fieldname = 'ZJLYL'.
        lf_fieldcat-emphasize = 
'C601' .     "红色
       
modify lf_fieldcat index sy-tabix.
   
endif.
   
if lf_fieldcat-fieldname+0(4) = 'FLAG'.
        lf_fieldcat-emphasize = 
'C61' .     "深红色
       
modify lf_fieldcat index sy-tabix.
   
endif.
 
endloop.

 
append lines of lf_fieldcat to pt_fieldcat.

 
clear lf_fieldcat[].
 
loop at it_structure into wa_structure.
   st_fieldcat wa_structure-fieldname wa_structure-col_pos wa_structure-inttype wa_structure-intlen  wa_structure-
decimals.
 
endloop.

 
append lines of lf_fieldcat to ft_fieldcat .

 
clear new_table .
 
call method cl_alv_table_create=>create_dynamic_table
      
exporting
        it_fieldcatalog = it_fieldcat
      
importing
        ep_table        = new_table.
endform.                  "cfield_atci

阅读(1635) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-05-04 09:48:43

看来向马兄学习的路更长了。呵呵!

chinaunix网友2009-04-30 16:10:37

牛人