SAP_ABAP学习实例讲解part3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第八章ALV控件的使用ALV(SAPListViewer)控件是SAP业务中最常用的控件之一,本章先用一个简单的例子介绍用ALV控件显示数据,再以实例方式介绍ALV的强大功能,示例程序可以直接使用。本章主要内容有:()简单的ALV控件实例;()自定义输出字段的ALV控件实例;()在屏幕上建立ALV控件;()自定义ALV控件的工具条按钮;()处理ALV控件双击事件;()通过ALV控件编辑内表和数据库更新;()ALVTree的使用。8.1简单的ALV控件实例以航班表(SPFLI)为例,使用数据字典定义结构,通过ALV控件显示数据。【例8.1】REPORTYTEST26.*定义内表DATAWA_SPFLILIKETABLEOFSPFLIWITHHEADERLINE.*内表赋值SELECT*INTOTABLEWA_SPFLIFROMSPFLI.*通过数据字典结构显示ALVCALLFUNCTION'REUSE_ALV_LIST_DISPLAY'EXPORTINGI_STRUCTURE_NAME='SPFLI'TABLEST_OUTTAB=WA_SPFLIEXCEPTIONSPROGRAM_ERROR=1OTHERS=2.IFSY-SUBRC0.*MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO*WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.ENDIF.输出结果如图8-1所示。图8-18.2自定义输出字段的ALV控件实例【例8.2】REPORTYTEST27.*ALV使用到的类库TYPE-POOLS:SLIS.*一列描述DATAWA_ALV_FIELDTYPESLIS_FIELDCAT_ALV.*列描述内表,列清单DATAWA_ALV_FIELDCATTYPESLIS_T_FIELDCAT_ALV.*定义内表DATAWA_SPFLILIKETABLEOFSPFLIWITHHEADERLINE.*内表赋值SELECT*INTOTABLEWA_SPFLIFROMSPFLI.*定义第一到第四个字段WA_ALV_FIELD-COL_POS=1.WA_ALV_FIELD-FIELDNAME='CARRID'.WA_ALV_FIELD-SELTEXT_M='航线承运人'.APPENDWA_ALV_FIELDTOWA_ALV_FIELDCAT.WA_ALV_FIELD-COL_POS=2.WA_ALV_FIELD-FIELDNAME='CONNID'.WA_ALV_FIELD-SELTEXT_M='航班连接'.APPENDWA_ALV_FIELDTOWA_ALV_FIELDCAT.WA_ALV_FIELD-COL_POS=3.WA_ALV_FIELD-FIELDNAME='CITYFROM'.WA_ALV_FIELD-SELTEXT_M='起飞城市'.APPENDWA_ALV_FIELDTOWA_ALV_FIELDCAT.WA_ALV_FIELD-COL_POS=4.WA_ALV_FIELD-FIELDNAME='CITYTO'.WA_ALV_FIELD-SELTEXT_M='目标城市'.APPENDWA_ALV_FIELDTOWA_ALV_FIELDCAT.*调用ALV显示表单数据CALLFUNCTION'REUSE_ALV_LIST_DISPLAY'EXPORTING*I_INTERFACE_CHECK=''*I_BYPASSING_BUFFER=*I_BUFFER_ACTIVE=''*I_CALLBACK_PROGRAM=''*I_CALLBACK_PF_STATUS_SET=''*I_CALLBACK_USER_COMMAND=''*I_STRUCTURE_NAME=*IS_LAYOUT=IT_FIELDCAT=WA_ALV_FIELDCAT*IT_EXCLUDING=*IT_SPECIAL_GROUPS=*IT_SORT=*IT_FILTER=*IS_SEL_HIDE=*I_DEFAULT='X'*I_SAVE=''*IS_VARIANT=*IT_EVENTS=*IT_EVENT_EXIT=*IS_PRINT=*IS_REPREP_ID=*I_SCREEN_START_COLUMN=0*I_SCREEN_START_LINE=0*I_SCREEN_END_COLUMN=0*I_SCREEN_END_LINE=0*IMPORTING*E_EXIT_CAUSED_BY_CALLER=*ES_EXIT_CAUSED_BY_USER=TABLEST_OUTTAB=WA_SPFLI*EXCEPTIONS*PROGRAM_ERROR=1*OTHERS=2.IFSY-SUBRC0.*MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO*WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.ENDIF.输出结果如图8-2所示。图8-28.3在屏幕上建立ALV控件8.3.1定义SCREEN窗口如图8-3所示,在屏幕上创建两个文本元素控件、一个退出按钮控件、一个定制控制控件。图8-38.3.2定义逻辑流逻辑流程序:*逻辑流*PBO显示屏幕前的处理PROCESSBEFOREOUTPUT.MODULESTATUS_0100.*PAI用户输入后的处理PROCESSAFTERINPUT.MODULEUSER_COMMAND_0100.主程序:REPORTYTEST28.*功能码返回值DATA:OK_CODETYPESY-UCOMM,SAVE_OKTYPESY-UCOMM.*定义内表,变量需要传递,不加HEADERLINEDATAWA_SPFLITYPETABLEOFSPFLI.*内表赋值SELECT*INTOTABLEWA_SPFLIFROMSPFLI.*ALVDATA是屏幕100中定义控制控件的名称DATA:WA_CONTAINERTYPESCRFNAMEVALUE'ALVDATA',ALV_GRIDTYPEREFTOCL_GUI_ALV_GRID,WA_CUSTOM_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER.*直接调用窗口CALLSCREEN100.*&---------------------------------------------------------------------**&ModuleSTATUS_0100OUTPUT*&---------------------------------------------------------------------**text*----------------------------------------------------------------------*MODULESTATUS_0100OUTPUT.SETPF-STATUS'STATUS1'.*如果窗口还没有创建ALV对象则创建它IFWA_CUSTOM_CONTAINERISINITIAL.CREATEOBJECTWA_CUSTOM_CONTAINEREXPORTINGCONTAINER_NAME=WA_CONTAINER.CREATEOBJECTALV_GRIDEXPORTINGI_PARENT=WA_CUSTOM_CONTAINER.CALLMETHODALV_GRID-SET_TABLE_FOR_FIRST_DISPLAYEXPORTINGI_STRUCTURE_NAME='SPFLI'CHANGINGIT_OUTTAB=WA_SPFLI.ENDIF.ENDMODULE.STATUS_0100OUTPUT*&---------------------------------------------------------------------**&ModuleUSER_COMMAND_0100INPUT*&---------------------------------------------------------------------**text*----------------------------------------------------------------------*MODULEUSER_COMMAND_0100INPUT.SAVE_OK=OK_CODE.CLEAROK_CODE.CASESAVE_OK.WHEN'EXIT'.LEAVEPROGRAM.ENDCASE.ENDMODULE.USER_COMMAND_0100INPUT输出结果如图8-4所示。图8-48.4自定义ALV控件的工具条按钮在ALV的工具条上增加一个自定义的按钮,单击它弹出窗口提示选择行数据内容。执行结果如图8-5所示。图8-5单击自定义按钮后输出如图8-6所示。图8-6程序处理流程的说明:定义ALV控件相关事件、接口和实现方法等,主要定义以下事件。(1)ALV控件的工具条处理事件,定义了新按钮和功能码;(2)ALV控件的功能码处理事件,定义用户单击按钮产生的功能码事件。主程序:REPORTYTEST29.INCLUDEICON.CLASSLCL_EVENT_RECEIVERDEFINITIONDEFERRED.DATA:OK_CODETYPESY-UCOMM,SAVE_OKTYPESY-UCOMM.DATAEVENT_RECEIVERTYPEREFTOLCL_EVENT_RECEIVER.DATA:WA_SPFLITYPETABLEOFSPFLI,A_SPFLILIKESPFLI.SELECT*INTOTABLEWA_SPFLIFROMSPFLI.DATA:WA_CONTAINERTYPESCRFNAMEVALUE'ALVDATA',ALV_GRIDTYPEREFTOCL_GUI_ALV_GRID,WA_CUSTOM_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER.CALLSCREEN100.*---------------------------------------------------------------------**CLASSlcl_event_receiverDEFINITION*---------------------------------------------------------------------***---------------------------------------------------------------------*CLASSLCL_EVENT_RECEIVERDEFINITION.PUBLICSECTION.METHODS:HANDLE_TOOLBARFOREVENTTOOLBAROFCL_GUI_ALV_GRIDIMPORTINGE_OBJECTE_INTERACTIVE,HANDLE_USER_COMMANDFOREVENTUSER_COMMANDOFCL_GUI_ALV_GRIDIMPORTINGE_UCOMM.ENDCLASS.lcl_event_receiverDEFINITION*---------------------------------------------------------------------**CLASSlcl_event_receiverIMPLEMENTATION*---------------------------------------------------------------------***---------------------------------------------------------------------*CLASSLCL_EVENT_RECEIVERIMPL

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功