SAP动态生成内表结构及其内容

来源:互联网 发布:ip代理软件免费 编辑:程序博客网 时间:2024/06/05 10:03

Code listing for: ZTEST
Description: test


*&---------------------------------------------------------------------**& Report  ZTEST*&*&---------------------------------------------------------------------**& 动态ALV输出 DEMO*& 作者:侯志宇*& 日期:2009-4-9*&---------------------------------------------------------------------*report  ZTEST.*--------alv专用变量定义区-----------data:       G_REPID like SY-REPID,*----打印的参数控制      GS_PRINT    type LVC_S_PRNT,*---布局结构      GS_LAYOUT   type LVC_S_LAYO,*-----BCALVC_EVENT1_CONT1是ALV GRID CONTROL (ALV网格控制器)的名字      MYCONTAINER type SCRFNAME value 'BCALVC_EVENT1_CONT1',* reference to custom container: neccessary to bind ALV Control      CUSTOM_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER,*-----ALV List Viewer      GRID1  type ref to CL_GUI_ALV_GRID,*--- 存放字段目录的内表    GT_FIELDCAT type LVC_T_FCAT .data  SAVE_OK like SY-UCOMM.data  OK_CODE like SY-UCOMM.*---------动态变量定义区------------------------------data: GT_FCAT type LVC_T_FCAT,      GH_FCAT like line of GT_FCAT.data: GT_DYN type ref to DATA.data: GH_LINE type ref to DATA.field-symbols: <FS_TABLE> type any table,               <FS_LINE> type any,               <FS_FIELD> type any.*-------生成动态表结构-----------------------------*--ALV字段样式*------如果是多个字段可以用LOOP循环来填充结构GH_FCAT-FIELDNAME = 'FLAG'.GH_FCAT-COLTEXT = '标识'.GH_FCAT-CHECKBOX = 'X'."复选框GH_FCAT-EDIT = 'X'."编辑状态append GH_FCAT to GT_FCAT.clear GH_FCAT.GH_FCAT-FIELDNAME = 'EBELN'.GH_FCAT-COLTEXT = '采购订单'.GH_FCAT-DO_SUM = 'X'.append GH_FCAT to GT_FCAT.clear GH_FCAT.GH_FCAT-FIELDNAME = 'EBELP'.GH_FCAT-COLTEXT = '采购订单行项目'.GH_FCAT-DO_SUM = 'X'.append GH_FCAT to GT_FCAT.clear GH_FCAT.call method CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE  exporting    IT_FIELDCATALOG = GT_FCAT  importing    EP_TABLE        = GT_DYN.* Create a new Line with the same structure of the table*---生成表头信息assign GT_DYN->* to <FS_TABLE>.*---填充数据create data GH_LINE like line of <FS_TABLE>.*---生成表头信息assign GH_LINE->* to <FS_LINE>.*-------填充表数据--------------------*---如果变量中有多个字段,可以将component后面的值改成变量*--累加来实现多值填充"在用此句是component 2是指第二个字段assign component 2 of structure <FS_LINE> to <FS_FIELD>.<FS_FIELD> = '45000123'."在用此句是component 2是指第二个字段assign component 3 of structure <FS_LINE> to <FS_FIELD>.<FS_FIELD> = '0010'.insert <FS_LINE> into table <FS_TABLE>.assign component 2 of structure <FS_LINE> to <FS_FIELD>.<FS_FIELD> = '45000123'.assign component 3 of structure <FS_LINE> to <FS_FIELD>.<FS_FIELD> = '0020'.insert <FS_LINE> into table <FS_TABLE>.*--调用屏幕call screen 2000.*&---------------------------------------------------------------------**&      Module  CREATE_OBJECTS  OUTPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*module CREATE_OBJECTS output.  if CUSTOM_CONTAINER is initial.    create object CUSTOM_CONTAINER      exporting        CONTAINER_NAME = 'ZALV'."指定控制面板名字    create object GRID1      exporting        I_PARENT = CUSTOM_CONTAINER.  endif.endmodule.                 " CREATE_OBJECTS  OUTPUT*&---------------------------------------------------------------------**&      Module  TRANSFER_DATA  OUTPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*module TRANSFER_DATA output.  call method GRID1->SET_TABLE_FOR_FIRST_DISPLAY*    exporting*        I_STRUCTURE_NAME = 'SFLIGHT'"输出数据参考的数据字典的结构名,*        IS_PRINT         = GS_PRINT"表头*      IS_LAYOUT        = GS_LAYOUT "样式    changing      IT_OUTTAB        = <FS_TABLE> "输出内表值      IT_FIELDCATALOG = GT_FCAT."输出字段结构endmodule.                 " TRANSFER_DATA  OUTPUT*&---------------------------------------------------------------------**&      Module  USER_COMMAND_2000  INPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*module USER_COMMAND_2000 input.  data: L_VALID type C.*----取得动态值专用变量  field-symbols:<FS_LINE3> type any,                <FS_LINE4> type any.*--->取得复选框信息  call method GRID1->CHECK_CHANGED_DATA    importing      E_VALID = L_VALID.  OK_CODE = SY-UCOMM.  case OK_CODE.    when 'TC'.      loop at <FS_TABLE>  into <FS_LINE>.        "取得FLAG的值        assign component 'FLAG' of structure <FS_LINE> to <FS_LINE3>.        "取得EBELP的值        assign component 'EBELP' of structure <FS_LINE> to <FS_LINE4>.        if <FS_LINE3> =  'X'."判断选中的当前行          message <FS_LINE4> type 'I'.        endif.      endloop.      leave to screen 0.  endcase.endmodule.                 " USER_COMMAND_2000  INPUT*Messages*----------------------------------------------------------*YPE

Extracted by Direct Download Enterprise version 1.3 - E.G.Mellodew. 1998-2004 UK. Sap Release 700

 

 

屏幕:

****************************************************************                                
*   This file was generated by Direct Download Enterprise.     *                                
*   Please do not change it manually.                          *                                
****************************************************************                                
%_DYNPRO                                
ZTEST                                
2000                                
700                                
                40                                
%_HEADER                                
ZTEST                                   2000 2000     26120192 37  0  0 27120  0G 1                              20090409140725                                
%_DESCRIPTION                                
动态输出ALV测试                                
%_FIELDS                                
TC  CHAR   4 00 00 00 30 00   2  13    0   0   0    0 P      0   0 101       退出                                                                                                                                                                         TC 
ZALV   120 00 00 00 30 00   5   2    0   0   0   22 U      1   1 102         
OK_CODE  CHAR  20 80 10 00 00 00 255   1 O   0   0   0    0       0   0        ____________________  
%_FLOWLOGIC                                
PROCESS BEFORE OUTPUT.                                
*---创建ALV OBJECT                                
  module CREATE_OBJECTS.                                
*---输出ALV                                
  module TRANSFER_DATA.                                
PROCESS AFTER INPUT.                                
 MODULE USER_COMMAND_2000.                                

 

 

原创粉丝点击