SAP OO ALV 一个屏幕上使用2个ALV
终于完成了 OO ALV的学习,第一个作品。 一个屏幕上放了2个ALV控件,上面用来显示表头,下面用来显示详细的行项目。
业务背景:
在汽车的售后服务环节,汽车零件在质保期内损坏,维修产生的费用,整车厂会追溯到零件供应商索取。
数据模型简介:
三包索赔单数据从销售系统中传入ERP系统。
对三包索赔原始数据我们设计了2张表来存放,
一张是表头表,存放三包索赔单号及相关信息,另一张是详细项目表,存放详细使用的零件项目。
表头表和详细项目表的关系是一对多,即一条表头表(三包索赔单)对应多条详细项目(结算单)。
ERP系统功能设计:
物流部门需要对三包索赔单数据管理并打印出来发给供应商协商。
1. ABAP程序需要在ERP系统中用2个ALV展示三包索赔数据和行项目,一条三包索赔数据对应多条详细项目。
2. 选中ALV1中的一条三包索赔数据,ALV2中列出相关的详细项目。
3.点击自定义按钮,完成对一个三包索赔单数据的审批和打印单据。
ABAP代码说明:
这次我们要实现一个屏幕放入2个ALV列表控件,点击第一个ALV控件(只能单选),带出数据放入第二个ALV控件中。
使用FUNCTION ALV目前看来已经不能满足要求,需要用OO方式来控制ALV,这样就可以在一个屏幕上画上2个ALV。
所以创建屏幕在所难免,我们创建一个屏幕0100,放2个自定义控件,取名CON1,CON2.
屏幕会带出3个模块,所有这些模块代码,我选择全部放到一个源程序中,这样使用比较方便:
PROCESS BEFORE OUTPUT.MODULE STATUS_0100.MODULE INIT_CON.
PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
STATUS_0100 模块中,我们设置程序主画面的STAUTS,STAUTS是自己准备的,也可以用标准的。
USER_COMMAND_0100 模块,就是对STAUTS上的绿,黄,红工具条按钮按下的效果。
INIT_CON 模块中,是初始化屏幕和ALV控件,第一个ALV控件,我们会把数据也填充到内表,然后交有ALV显示出来。
该模块中,我们可以看到OO ALV的使用方法,即CREATE OBJECT CON1_REF连接到CON1屏幕控件上,CREATE OBJECT G_GRID1再创建ALV对象,然后我们给ALV对象注册几个事件,
1. HANDLE_TOOLBAR这个事件用于给ALV加自定义的工具条按钮。
2. HANDLE_CLICK用于给ALV点击其中一行后的处理代码段。
3. HANDLE_COMMAND事件用于接收用户按了自定义按钮后,触发的代码段。
ABAP中对于事件的使用我分为4步:
1. 定义事件方法
2. 指定事件的执行方法代码
3. 事件变量实例化
4. 把事件指定到ALV控件中(注册事件)
*&---------------------------------------------------------------------*
*& Module INIT_CON OUTPUT
*&---------------------------------------------------------------------*
* text 控件初始化模块
*----------------------------------------------------------------------*
MODULE INIT_CON OUTPUT.
"---------第一个ALV控件-----------------IF CON1_REF IS INITIAL.DATA GS_LAYOUT1 TYPE LVC_S_LAYO.GS_LAYOUT1-CWIDTH_OPT = 'X'.GS_LAYOUT1-GRID_TITLE = '三包索赔单'.GS_LAYOUT1-SEL_MODE = 'B'.GS_LAYOUT1-ZEBRA = 'X'.DATA GT_FIELDCAT TYPE LVC_T_FCAT.DATA GS_FIELDCAT TYPE LVC_S_FCAT.GS_FIELDCAT-COL_POS = 1. GS_FIELDCAT-FIELDNAME = 'BOX'. GS_FIELDCAT-CHECKBOX = 'X'. GS_FIELDCAT-HOTSPOT = 'X'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 2. GS_FIELDCAT-FIELDNAME = 'TZNUM'. GS_FIELDCAT-COLTEXT = '三包索赔单号'. APPEND GS_FIELDCAT TO GT_FIELDCAT. CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 3. GS_FIELDCAT-FIELDNAME = 'LIFNR'. GS_FIELDCAT-COLTEXT = '供应商代码'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 4. GS_FIELDCAT-FIELDNAME = 'NAME1'. GS_FIELDCAT-COLTEXT = '供应商名称'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 5. GS_FIELDCAT-FIELDNAME = 'ERDAT'. GS_FIELDCAT-COLTEXT = '日期'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 6. GS_FIELDCAT-FIELDNAME = 'EINFR'. GS_FIELDCAT-COLTEXT = '运费'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.
* GS_FIELDCAT-COL_POS = 7. GS_FIELDCAT-FIELDNAME = 'SUMME'. GS_FIELDCAT-COLTEXT = '总计'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 8. GS_FIELDCAT-FIELDNAME = 'CHUKU'. GS_FIELDCAT-COLTEXT = '出库'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 9. GS_FIELDCAT-FIELDNAME = 'ISSHEN'. GS_FIELDCAT-COLTEXT = '审批'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 10. GS_FIELDCAT-FIELDNAME = 'ISDEL'. GS_FIELDCAT-COLTEXT = '删除'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.CREATE OBJECT CON1_REFEXPORTINGCONTAINER_NAME = 'CON1'.CREATE OBJECT G_GRID1EXPORTINGI_PARENT = CON1_REF."4 注册事件句柄,图标的还必须加在这里,不然不行CREATE OBJECT EVENT_RECEIVER2.SET HANDLER EVENT_RECEIVER2->HANDLE_TOOLBAR FOR G_GRID1."4 注册事件句柄CREATE OBJECT EVENT_RECEIVER.SET HANDLER EVENT_RECEIVER->HANDLE_CLICK FOR G_GRID1."4 注册事件句柄CREATE OBJECT EVENT_RECEIVER3.SET HANDLER EVENT_RECEIVER3->HANDLE_COMMAND FOR G_GRID1.CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAYEXPORTINGIS_LAYOUT = GS_LAYOUT1CHANGINGIT_OUTTAB = GT_ITAB_HEAD[]IT_FIELDCATALOG = GT_FIELDCAT.ENDIF.
ALV1在非编辑模式单选控制的实现:
用户单击ALV1中的CKECKBOX时,
1. 程序首选清空ALV中的全部CKECKBOX
2. 打上当前用户选的一个CKECKBOX
3. 刷新ALV
全部代码:
*&---------------------------------------------------------------------*
*& Report ZMMR0093
*& 三包索赔单审批及打印程序 潍柴(重庆)汽车
*&---------------------------------------------------------------------*
*& james_lx
*& 2015.12.10
*&---------------------------------------------------------------------*REPORT ZMMR0093.TYPE-POOLS: ICON.TABLES: ZSDT029,ZSDT030.
DATA GS_ZSDT_LOG029 LIKE ZSDT_LOG029.DATA GT_ZSDT029 LIKE TABLE OF ZSDT029 WITH HEADER LINE.
DATA GT_ZSDT030 LIKE TABLE OF ZSDT030 WITH HEADER LINE.DATA GT_ITAB LIKE TABLE OF ZSDS045 WITH HEADER LINE.
DATA GT_ITAB_HEAD LIKE TABLE OF ZSDS045 WITH HEADER LINE.
DATA GS_ITAB_HEAD LIKE ZSDS045 .
DATA GT_PRINT LIKE TABLE OF ZSDS045 WITH HEADER LINE.DATA GV_KNUMH LIKE A017-KNUMH.DATA GV_KPEIN LIKE KONP-KPEIN.
DATA GV_KBETR LIKE KONP-KBETR.DATA CON1_REF TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA CON2_REF TYPE REF TO CL_GUI_CUSTOM_CONTAINER.DATA G_GRID1 TYPE REF TO CL_GUI_ALV_GRID.
DATA G_GRID2 TYPE REF TO CL_GUI_ALV_GRID."-------------------------------------
"-----------ALV1的HOTSPOT单击事件------------
"-------------------------------------
"1 定义ALV1的事件CLASS LCL_EVENT_RECEIVER DEFINITION.PUBLIC SECTION.METHODS HANDLE_CLICKFOR EVENT HOTSPOT_CLICKOF CL_GUI_ALV_GRIDIMPORTINGE_ROW_IDE_COLUMN_IDES_ROW_NO.ENDCLASS."2 事件的执行方法
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.METHOD HANDLE_CLICK.MESSAGE E_ROW_ID TYPE 'S'."清空原来的XLOOP AT GT_ITAB_HEAD INTO GS_ITAB_HEAD.GS_ITAB_HEAD-BOX = ''.MODIFY GT_ITAB_HEAD FROM GS_ITAB_HEAD.ENDLOOP."补上当前行的XREAD TABLE GT_ITAB_HEAD INTO GS_ITAB_HEAD INDEX E_ROW_ID. "读取当前行GS_ITAB_HEAD-BOX = 'X'.MODIFY GT_ITAB_HEAD FROM GS_ITAB_HEAD INDEX E_ROW_ID."刷新XDATA: LS_STABLE TYPE LVC_S_STBL.LS_STABLE-ROW = 'X'.LS_STABLE-COL = 'X'.CALL METHOD G_GRID1->REFRESH_TABLE_DISPLAYEXPORTINGIS_STABLE = LS_STABLEI_SOFT_REFRESH = 'X'."准备和显示第二个ALV的数据DATA GV_TZNUM LIKE GT_ZSDT030-TZNUM."得到用户选的一个数据LOOP AT GT_ITAB_HEAD INTO GS_ITAB_HEAD.IF GS_ITAB_HEAD-BOX = 'X'.GV_TZNUM = GS_ITAB_HEAD-TZNUM.ENDIF.ENDLOOP.IF GV_TZNUM IS NOT INITIAL.SELECT *INTO CORRESPONDING FIELDS OF TABLE GT_PRINTFROM ZSDT029 AS AINNER JOIN ZSDT030 AS BON A~TZNUM = B~TZNUMWHERE A~TZNUM = GV_TZNUM."填充价格数据LOOP AT GT_PRINT INTO GT_PRINT."物料号补零CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGINPUT = GT_PRINT-MATNRIMPORTINGOUTPUT = GT_PRINT-MATNR."供应商补0CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT = GT_PRINT-LIFNRIMPORTINGOUTPUT = GT_PRINT-LIFNR.SELECT SINGLE KNUMH INTO GV_KNUMH FROM A017 WHERE LIFNR = GT_PRINT-LIFNR AND MATNR = GT_PRINT-MATNR AND WERKS = '1001' AND DATBI > GT_PRINT-ERDAT AND DATAB < GT_PRINT-ERDAT.IF SY-SUBRC = 0.SELECT SINGLE KBETR KPEIN INTO (GV_KBETR , GV_KPEIN) FROM KONP WHERE KNUMH = GV_KNUMH.GT_PRINT-CURR1 = GV_KBETR / GV_KPEIN."物料号去零CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'EXPORTINGINPUT = GT_PRINT-MATNRIMPORTINGOUTPUT = GT_PRINT-MATNR."供应商去0CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGINPUT = GT_PRINT-LIFNRIMPORTINGOUTPUT = GT_PRINT-LIFNR.MODIFY GT_PRINT FROM GT_PRINT.ENDIF.ENDLOOP.LOOP AT GT_PRINT INTO GT_PRINT."求单价(材料单价*1.4 系数)"供应商补0CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT = GT_PRINT-LIFNRIMPORTINGOUTPUT = GT_PRINT-LIFNR.SELECT SINGLE NAME4 INTO GT_PRINT-NAME4 FROM LFA1 WHERE LIFNR = GT_PRINT-LIFNR."供应商去0CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGINPUT = GT_PRINT-LIFNRIMPORTINGOUTPUT = GT_PRINT-LIFNR.IF SY-SUBRC = 0.GT_PRINT-CURR2 = GT_PRINT-CURR1 * GT_PRINT-NAME4 .ENDIF."材料费(单价*数量)GT_PRINT-CURRC = GT_PRINT-CURR2 * GT_PRINT-ZMENG."合计GT_PRINT-SUMME = GT_PRINT-CURRC + GT_PRINT-CURRG + GT_PRINT-CURRJ + GT_PRINT-CURRQ.MODIFY GT_PRINT FROM GT_PRINT.ENDLOOP.DATA GS_LAYOUT2 TYPE LVC_S_LAYO.GS_LAYOUT2-CWIDTH_OPT = 'X'.GS_LAYOUT2-GRID_TITLE = '详细项目'.GS_LAYOUT2-SEL_MODE = 'B'.GS_LAYOUT2-ZEBRA = 'X'.CALL METHOD G_GRID2->SET_FRONTEND_LAYOUTEXPORTINGIS_LAYOUT = GS_LAYOUT2.CALL METHOD G_GRID2->REFRESH_TABLE_DISPLAYEXPORTINGIS_STABLE = LS_STABLEI_SOFT_REFRESH = 'X'.ENDIF.ENDMETHOD.
ENDCLASS."3 事件引用变量DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER."-------------------------------------
"-----------ALV1的加图标事件----------
"-------------------------------------
"1 定义ALV1的事件CLASS LCL_EVENT_RECEIVER2 DEFINITION.PUBLIC SECTION.METHODS HANDLE_TOOLBARFOR EVENT TOOLBAROF CL_GUI_ALV_GRIDIMPORTING E_OBJECT E_INTERACTIVE.ENDCLASS."2 事件的执行方法
CLASS LCL_EVENT_RECEIVER2 IMPLEMENTATION.METHOD HANDLE_TOOLBAR.DATA LS_TOOLBAR TYPE STB_BUTTON.CLEAR LS_TOOLBAR.LS_TOOLBAR-BUTN_TYPE = 3.APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.CLEAR LS_TOOLBAR.LS_TOOLBAR-FUNCTION = 'MYSHEN'.LS_TOOLBAR-ICON = ICON_SET_STATE.LS_TOOLBAR-QUICKINFO = '审批确认'.LS_TOOLBAR-TEXT = '审批确认'.LS_TOOLBAR-DISABLED = ''.APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.CLEAR LS_TOOLBAR.LS_TOOLBAR-FUNCTION = 'MYSCAN'.LS_TOOLBAR-ICON = ICON_STORNO.LS_TOOLBAR-QUICKINFO = '取消审批'.LS_TOOLBAR-TEXT = '取消审批'.LS_TOOLBAR-DISABLED = ''.APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.CLEAR LS_TOOLBAR.LS_TOOLBAR-FUNCTION = 'MYPRINT'.LS_TOOLBAR-ICON = ICON_PRINT.LS_TOOLBAR-QUICKINFO = '单据打印'.LS_TOOLBAR-TEXT = '单据打印'.LS_TOOLBAR-DISABLED = ''.APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.ENDMETHOD.
ENDCLASS."3 事件引用变量DATA EVENT_RECEIVER2 TYPE REF TO LCL_EVENT_RECEIVER2."-------------------------------------
"-----------ALV1的加按钮响应事件------
"-------------------------------------
"1 定义ALV1的事件CLASS LCL_EVENT_RECEIVER3 DEFINITION.PUBLIC SECTION.METHODS HANDLE_COMMANDFOR EVENT USER_COMMANDOF CL_GUI_ALV_GRIDIMPORTING E_UCOMM.ENDCLASS."2 事件的执行方法
CLASS LCL_EVENT_RECEIVER3 IMPLEMENTATION.METHOD HANDLE_COMMAND.CASE E_UCOMM.WHEN 'MYSHEN'.PERFORM SHENFORM.WHEN 'MYSCAN'.PERFORM SCANCELFORM .WHEN 'MYPRINT'.PERFORM PPPFORM .ENDCASE.ENDMETHOD.
ENDCLASS."3 事件引用变量DATA EVENT_RECEIVER3 TYPE REF TO LCL_EVENT_RECEIVER3."选择屏幕
SELECT-OPTIONS GS_TZNUM FOR ZSDT029-TZNUM. "三包索赔单号
SELECT-OPTIONS GS_JZNUM FOR ZSDT030-JZNUM. "结算单号
SELECT-OPTIONS GS_LIFNR FOR ZSDT029-LIFNR. "供应商
SELECT-OPTIONS GS_ERDAT FOR ZSDT029-ERDAT. "日期
SELECT-OPTIONS GS_MATNR FOR ZSDT030-MATNR. "配件代码START-OF-SELECTION.SELECT *INTO CORRESPONDING FIELDS OF TABLE GT_ITABFROM ZSDT029 AS AINNER JOIN ZSDT030 AS BON A~TZNUM = B~TZNUMWHERE A~TZNUM IN GS_TZNUMAND A~LIFNR IN GS_LIFNRAND A~ERDAT IN GS_ERDATAND B~JZNUM IN GS_JZNUMAND B~MATNR IN GS_MATNR."为第一个控件准备数据LOOP AT GT_ITAB.MOVE GT_ITAB-TZNUM TO GT_ITAB_HEAD-TZNUM.MOVE GT_ITAB-LIFNR TO GT_ITAB_HEAD-LIFNR.MOVE GT_ITAB-NAME1 TO GT_ITAB_HEAD-NAME1.MOVE GT_ITAB-ERDAT TO GT_ITAB_HEAD-ERDAT.MOVE GT_ITAB-EINFR TO GT_ITAB_HEAD-EINFR.MOVE GT_ITAB-SUMME TO GT_ITAB_HEAD-SUMME.MOVE GT_ITAB-CHUKU TO GT_ITAB_HEAD-CHUKU.MOVE GT_ITAB-ISSHEN TO GT_ITAB_HEAD-ISSHEN.MOVE GT_ITAB-ISDEL TO GT_ITAB_HEAD-ISDEL.APPEND GT_ITAB_HEAD.CLEAR GT_ITAB_HEAD.ENDLOOP.SORT GT_ITAB_HEAD.
DELETE ADJACENT DUPLICATES FROM GT_ITAB_HEAD.CALL SCREEN 100.*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.SET PF-STATUS 'TOPS'.
* SET TITLEBAR 'xxx'.ENDMODULE. " STATUS_0100 OUTPUT*&---------------------------------------------------------------------*
*& Module INIT_CON OUTPUT
*&---------------------------------------------------------------------*
* text 控件初始化模块
*----------------------------------------------------------------------*
MODULE INIT_CON OUTPUT."---------第一个ALV控件-----------------IF CON1_REF IS INITIAL.DATA GS_LAYOUT1 TYPE LVC_S_LAYO.GS_LAYOUT1-CWIDTH_OPT = 'X'.GS_LAYOUT1-GRID_TITLE = '三包索赔单'.GS_LAYOUT1-SEL_MODE = 'B'.GS_LAYOUT1-ZEBRA = 'X'.DATA GT_FIELDCAT TYPE LVC_T_FCAT.DATA GS_FIELDCAT TYPE LVC_S_FCAT.GS_FIELDCAT-COL_POS = 1. GS_FIELDCAT-FIELDNAME = 'BOX'. GS_FIELDCAT-CHECKBOX = 'X'. GS_FIELDCAT-HOTSPOT = 'X'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 2. GS_FIELDCAT-FIELDNAME = 'TZNUM'. GS_FIELDCAT-COLTEXT = '三包索赔单号'. APPEND GS_FIELDCAT TO GT_FIELDCAT. CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 3. GS_FIELDCAT-FIELDNAME = 'LIFNR'. GS_FIELDCAT-COLTEXT = '供应商代码'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 4. GS_FIELDCAT-FIELDNAME = 'NAME1'. GS_FIELDCAT-COLTEXT = '供应商名称'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 5. GS_FIELDCAT-FIELDNAME = 'ERDAT'. GS_FIELDCAT-COLTEXT = '日期'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 6. GS_FIELDCAT-FIELDNAME = 'EINFR'. GS_FIELDCAT-COLTEXT = '运费'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.
* GS_FIELDCAT-COL_POS = 7. GS_FIELDCAT-FIELDNAME = 'SUMME'. GS_FIELDCAT-COLTEXT = '总计'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 8. GS_FIELDCAT-FIELDNAME = 'CHUKU'. GS_FIELDCAT-COLTEXT = '出库'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 9. GS_FIELDCAT-FIELDNAME = 'ISSHEN'. GS_FIELDCAT-COLTEXT = '审批'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.GS_FIELDCAT-COL_POS = 10. GS_FIELDCAT-FIELDNAME = 'ISDEL'. GS_FIELDCAT-COLTEXT = '删除'. APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.CREATE OBJECT CON1_REFEXPORTINGCONTAINER_NAME = 'CON1'.CREATE OBJECT G_GRID1EXPORTINGI_PARENT = CON1_REF."4 注册事件句柄,图标的还必须加在这里,不然不行CREATE OBJECT EVENT_RECEIVER2.SET HANDLER EVENT_RECEIVER2->HANDLE_TOOLBAR FOR G_GRID1."4 注册事件句柄CREATE OBJECT EVENT_RECEIVER.SET HANDLER EVENT_RECEIVER->HANDLE_CLICK FOR G_GRID1."4 注册事件句柄CREATE OBJECT EVENT_RECEIVER3.SET HANDLER EVENT_RECEIVER3->HANDLE_COMMAND FOR G_GRID1.CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAYEXPORTINGIS_LAYOUT = GS_LAYOUT1CHANGINGIT_OUTTAB = GT_ITAB_HEAD[]IT_FIELDCATALOG = GT_FIELDCAT.ENDIF."---------第二个ALV控件-----------------IF CON2_REF IS INITIAL.DATA GS_LAYOUT2 TYPE LVC_S_LAYO.GS_LAYOUT2-CWIDTH_OPT = 'X'.GS_LAYOUT2-GRID_TITLE = '详细项目'.GS_LAYOUT2-SEL_MODE = 'B'.GS_LAYOUT2-ZEBRA = 'X'.DATA GT_FIELDCAT2 TYPE LVC_T_FCAT.DATA GS_FIELDCAT2 TYPE LVC_S_FCAT.GS_FIELDCAT2-COL_POS = 2. GS_FIELDCAT2-FIELDNAME = 'JZNUM'. GS_FIELDCAT2-COLTEXT = '结算单号'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2. CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 3. GS_FIELDCAT2-FIELDNAME = 'MAKTX'. GS_FIELDCAT2-COLTEXT = '配件名称'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 4. GS_FIELDCAT2-FIELDNAME = 'MATNR'. GS_FIELDCAT2-COLTEXT = '配件代码'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 5. GS_FIELDCAT2-FIELDNAME = 'MEINS'. GS_FIELDCAT2-COLTEXT = '单位'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 6. GS_FIELDCAT2-FIELDNAME = 'ZMENG'. GS_FIELDCAT2-COLTEXT = '数量'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 7. GS_FIELDCAT2-FIELDNAME = 'CURR1'. GS_FIELDCAT2-COLTEXT = '材料单价'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 7. GS_FIELDCAT2-FIELDNAME = 'NAME4'. GS_FIELDCAT2-COLTEXT = '系数'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 8. GS_FIELDCAT2-FIELDNAME = 'CURR2'. GS_FIELDCAT2-COLTEXT = '单价(材料单价*1.4) '. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 9. GS_FIELDCAT2-FIELDNAME = 'CURRC'. GS_FIELDCAT2-COLTEXT = '材料费(单价*数量)'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'CURRG'. GS_FIELDCAT2-COLTEXT = '工时费'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'CURRJ'. GS_FIELDCAT2-COLTEXT = '救援费'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'CURRQ'. GS_FIELDCAT2-COLTEXT = '其它费用'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'SUMME'. GS_FIELDCAT2-COLTEXT = '合计'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'OTHER'. GS_FIELDCAT2-COLTEXT = '备注'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'TZNUM'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'LIFNR'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'NAME1'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'ERDAT'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'EINFR'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'CHUKU'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'ISSHEN'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'ISDEL'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.GS_FIELDCAT2-COL_POS = 10. GS_FIELDCAT2-FIELDNAME = 'BOX'. GS_FIELDCAT2-NO_OUT = 'X'. APPEND GS_FIELDCAT2 TO GT_FIELDCAT2.CLEAR GS_FIELDCAT2.CREATE OBJECT CON2_REFEXPORTINGCONTAINER_NAME = 'CON2'.CREATE OBJECT G_GRID2EXPORTINGI_PARENT = CON2_REF.CALL METHOD G_GRID2->SET_TABLE_FOR_FIRST_DISPLAYEXPORTINGI_STRUCTURE_NAME = 'ZSDS045'IS_LAYOUT = GS_LAYOUT2CHANGINGIT_OUTTAB = GT_PRINT[]IT_FIELDCATALOG = GT_FIELDCAT2.ENDIF.ENDMODULE. " INIT_CON OUTPUT*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text 这个用户命令,是最上面的 【标准工具条】上的按钮
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.WHEN 'EXIT'.LEAVE PROGRAM.WHEN 'SCAN'.LEAVE TO SCREEN 0.WHEN OTHERS.ENDCASE.ENDMODULE. " USER_COMMAND_0100 INPUT"------------取消审批的FORM--------------------
FORM SCANCELFORM .DATA GV_ANSWER TYPE C.
CALL FUNCTION 'POPUP_TO_CONFIRM'EXPORTINGTEXT_QUESTION = '取消审批?'DEFAULT_BUTTON = '2'DISPLAY_CANCEL_BUTTON = ''IMPORTINGANSWER = GV_ANSWER.IF GV_ANSWER <> 1.RETURN.ENDIF."处理保存到LOG表
LOOP AT GT_ITAB_HEAD.IF GT_ITAB_HEAD-BOX = 'X'.GS_ITAB_HEAD = GT_ITAB_HEAD.IF GS_ITAB_HEAD-BOX = 'X' AND GS_ITAB_HEAD-ISSHEN = 'X' AND GS_ITAB_HEAD-ISDEL <> 'X' AND GS_ITAB_HEAD-CHUKU <> 'X'.GS_ZSDT_LOG029-USRID = SY-UNAME. "用户名GS_ZSDT_LOG029-CRDAT = SY-DATUM. "日期GS_ZSDT_LOG029-ANUZT = SY-UZEIT. "时间CALL FUNCTION 'NUMBER_GET_NEXT'EXPORTINGNR_RANGE_NR = 'A1'OBJECT = 'ZSDFM020'IMPORTINGNUMBER = GS_ZSDT_LOG029-AUTONUMBER.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' "去掉前导零EXPORTINGINPUT = GS_ZSDT_LOG029-AUTONUMBERIMPORTINGOUTPUT = GS_ZSDT_LOG029-AUTONUMBER.MOVE-CORRESPONDING GS_ITAB_HEAD TO GS_ZSDT_LOG029."写业务数据表UPDATE ZSDT029SET ISSHEN = ''WHERE TZNUM = GS_ITAB_HEAD-TZNUM.COMMIT WORK .IF SY-SUBRC = 0.DATA GV_TABIX LIKE SY-TABIX."改一下控件的内表X数据LOOP AT GT_ITAB_HEAD.IF GT_ITAB_HEAD-BOX = 'X'.GV_TABIX = SY-TABIX.ENDIF.ENDLOOP."补上当前行的XREAD TABLE GT_ITAB_HEAD INTO GS_ITAB_HEAD INDEX GV_TABIX. "读取当前行GS_ITAB_HEAD-ISSHEN = ''.MODIFY GT_ITAB_HEAD FROM GS_ITAB_HEAD INDEX GV_TABIX."刷新XDATA: LS_STABLE TYPE LVC_S_STBL.LS_STABLE-ROW = 'X'.LS_STABLE-COL = 'X'.CALL METHOD G_GRID1->REFRESH_TABLE_DISPLAYEXPORTINGIS_STABLE = LS_STABLEI_SOFT_REFRESH = 'X'."传给EAIDATA GT_HEADER LIKE TABLE OF ZSDS043 WITH HEADER LINE.DATA GT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE.DATA RESULT LIKE TREXS_CONNECTION_CHECK_RESULT.GT_HEADER-TZNUM = GT_ITAB_HEAD-TZNUM.GT_HEADER-USRID = SY-UNAME.GT_HEADER-CRDAT = SY-DATUM.GT_HEADER-ISSHEN = ''.APPEND GT_HEADER.CALL FUNCTION 'TREX_RFC_CONNECT_CHECK_LOCAL'EXPORTINGTREX_DESTINATION = 'SAPEAI'IMPORTINGLOCAL_RESULT = RESULTEXCEPTIONSSYSTEM_FAILURE = 1COMMUNICATION_FAILURE = 2AUTHORITY_NOT_AVAILABLE = 3SEND_ERROR = 4OTHERS = 5.IF RESULT-ERROR_CODE <> 0."无响应MESSAGE '连接错误,请检查EAI服务是否注册成功' TYPE 'E'.ELSE.CALL FUNCTION 'ZSD_IF_FM023' DESTINATION 'SAPJCO'TABLESHEADER = GT_HEADERRETURN = GT_RETURN.IF GT_RETURN[] IS NOT INITIAL.READ TABLE GT_RETURN INDEX 1.IF GT_RETURN-TYPE <> 'S'.GS_ZSDT_LOG029-MESSAGE = ' [EAI接收失败] '.ELSEIF GT_RETURN-TYPE = 'S'.GS_ZSDT_LOG029-MESSAGE = ' [EAI接收成功] '.ENDIF.ENDIF.CLEAR:GT_HEADER,GT_RETURN,GT_HEADER[],GT_RETURN[].ENDIF.GS_ZSDT_LOG029-ISSHEN = ''. "GS_ZSDT_LOG029-ERPDO = 'X'. "ERP处理标志GS_ZSDT_LOG029-EDATS = SY-DATUM. "ERP处理日期GS_ZSDT_LOG029-ETIMS = SY-UZEIT. "ERP处理时间GS_ZSDT_LOG029-MESSAGE = GS_ZSDT_LOG029-MESSAGE && '取消审批'."写日志表INSERT ZSDT_LOG029 FROM GS_ZSDT_LOG029.COMMIT WORK .CLEAR GS_ZSDT_LOG029.ENDIF.ELSE.MESSAGE '操作失败,不满足条件!' TYPE 'E'.ENDIF.ENDIF.ENDLOOP.ENDFORM ."------------SHENFORM的FORM--------------------
FORM SHENFORM .DATA GV_ANSWER TYPE C.
CALL FUNCTION 'POPUP_TO_CONFIRM'EXPORTINGTEXT_QUESTION = '确认审批?'DEFAULT_BUTTON = '2'DISPLAY_CANCEL_BUTTON = ''IMPORTINGANSWER = GV_ANSWER.IF GV_ANSWER <> 1.RETURN.ENDIF."处理保存到LOG表
LOOP AT GT_ITAB_HEAD.IF GT_ITAB_HEAD-BOX = 'X'.GS_ITAB_HEAD = GT_ITAB_HEAD.IF GS_ITAB_HEAD-BOX = 'X' AND GS_ITAB_HEAD-ISSHEN <> 'X' AND GS_ITAB_HEAD-ISDEL <> 'X' AND GS_ITAB_HEAD-CHUKU <> 'X'.GS_ZSDT_LOG029-USRID = SY-UNAME. "用户名GS_ZSDT_LOG029-CRDAT = SY-DATUM. "日期GS_ZSDT_LOG029-ANUZT = SY-UZEIT. "时间CALL FUNCTION 'NUMBER_GET_NEXT'EXPORTINGNR_RANGE_NR = 'A1'OBJECT = 'ZSDFM020'IMPORTINGNUMBER = GS_ZSDT_LOG029-AUTONUMBER.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' "去掉前导零EXPORTINGINPUT = GS_ZSDT_LOG029-AUTONUMBERIMPORTINGOUTPUT = GS_ZSDT_LOG029-AUTONUMBER.MOVE-CORRESPONDING GS_ITAB_HEAD TO GS_ZSDT_LOG029."写业务数据表UPDATE ZSDT029SET ISSHEN = 'X'WHERE TZNUM = GS_ITAB_HEAD-TZNUM.COMMIT WORK .IF SY-SUBRC = 0.DATA GV_TABIX LIKE SY-TABIX."改一下控件的内表X数据LOOP AT GT_ITAB_HEAD.IF GT_ITAB_HEAD-BOX = 'X'.GV_TABIX = SY-TABIX.ENDIF.ENDLOOP."补上当前行的XREAD TABLE GT_ITAB_HEAD INTO GS_ITAB_HEAD INDEX GV_TABIX. "读取当前行GS_ITAB_HEAD-ISSHEN = 'X'.MODIFY GT_ITAB_HEAD FROM GS_ITAB_HEAD INDEX GV_TABIX."刷新XDATA: LS_STABLE TYPE LVC_S_STBL.LS_STABLE-ROW = 'X'.LS_STABLE-COL = 'X'.CALL METHOD G_GRID1->REFRESH_TABLE_DISPLAYEXPORTINGIS_STABLE = LS_STABLEI_SOFT_REFRESH = 'X'."传给EAIDATA GT_HEADER LIKE TABLE OF ZSDS043 WITH HEADER LINE.DATA GT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE.DATA RESULT LIKE TREXS_CONNECTION_CHECK_RESULT.GT_HEADER-TZNUM = GT_ITAB_HEAD-TZNUM.GT_HEADER-USRID = SY-UNAME.GT_HEADER-CRDAT = SY-DATUM.GT_HEADER-ISSHEN = 'X'.APPEND GT_HEADER.CALL FUNCTION 'TREX_RFC_CONNECT_CHECK_LOCAL'EXPORTINGTREX_DESTINATION = 'SAPEAI'IMPORTINGLOCAL_RESULT = RESULTEXCEPTIONSSYSTEM_FAILURE = 1COMMUNICATION_FAILURE = 2AUTHORITY_NOT_AVAILABLE = 3SEND_ERROR = 4OTHERS = 5.IF RESULT-ERROR_CODE <> 0."无响应MESSAGE '连接错误,请检查EAI服务是否注册成功' TYPE 'E'.ELSE.CALL FUNCTION 'ZSD_IF_FM023' DESTINATION 'SAPJCO'TABLESHEADER = GT_HEADERRETURN = GT_RETURN.IF GT_RETURN[] IS NOT INITIAL.READ TABLE GT_RETURN INDEX 1.IF GT_RETURN-TYPE <> 'S'.GS_ZSDT_LOG029-MESSAGE = ' [EAI接收失败] '.ELSEIF GT_RETURN-TYPE = 'S'.GS_ZSDT_LOG029-MESSAGE = ' [EAI接收成功] '.ENDIF.ENDIF.CLEAR:GT_HEADER,GT_RETURN,GT_HEADER[],GT_RETURN[].ENDIF.GS_ZSDT_LOG029-ISSHEN = 'X'. "GS_ZSDT_LOG029-ERPDO = 'X'. "ERP处理标志GS_ZSDT_LOG029-EDATS = SY-DATUM. "ERP处理日期GS_ZSDT_LOG029-ETIMS = SY-UZEIT. "ERP处理时间GS_ZSDT_LOG029-MESSAGE = GS_ZSDT_LOG029-MESSAGE && '确认审批'."写日志表INSERT ZSDT_LOG029 FROM GS_ZSDT_LOG029.COMMIT WORK .CLEAR GS_ZSDT_LOG029.ENDIF.ELSE.MESSAGE '操作失败,不满足条件!' TYPE 'E'.ENDIF.ENDIF.ENDLOOP.ENDFORM ."-------------打印FORM-----------------
FORM PPPFORM .DATA GV_FORMNAME TYPE RS38L_FNAM .DATA GS_CONTROL_PARAMS TYPE SSFCTRLOP.GS_CONTROL_PARAMS-NO_DIALOG = 'X'.GS_CONTROL_PARAMS-PREVIEW = 'X'.CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGFORMNAME = 'ZMMR0092'IMPORTINGFM_NAME = GV_FORMNAME.CALL FUNCTION GV_FORMNAMEEXPORTINGCONTROL_PARAMETERS = GS_CONTROL_PARAMSUSER_SETTINGS = SPACETABLESGT_TAB = GT_PRINT[]EXCEPTIONSFORMATTING_ERROR = 1INTERNAL_ERROR = 2SEND_ERROR = 3USER_CANCELED = 4OTHERS = 5.ENDFORM.
SAP OO ALV 一个屏幕上使用2个ALV相关推荐
- 【转载】SAP OO ALV 在自定义屏幕上添加ALV控件 一个屏幕上使用2个ALV
终于完成了 OO ALV的学习,第一个作品. 一个屏幕上放了2个ALV控件,上面用来显示表头,下面用来显示详细的行项目. 业务背景: 在汽车的售后服务环节,汽车零件在质保期内损坏,维修产生的费用,整车 ...
- 如何在python中显示电脑中的图片-python如何实现多个图片显示在屏幕上?
pygame的三个方法(屏幕上显示需要的图片) yuhu102319582018-12-16 python将多幅图片显示在一张图片上 wugui1111116282018-06-15 iOS 图片显示 ...
- 如何在Android主屏幕上添加热点快捷方式
Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn't, but togg ...
- 多屏幕切换到但屏幕,有软件无法在当前屏幕上无法显示
长春子问: 多屏幕切换到但屏幕,有软件无法在当前屏幕上无法显示,重启也不好用.咋办? 释然答: 参看 双屏切换单屏,之前在另一显示器显示的软件窗口现无法显示解决最简单的方法_Yum_Lon ...
- iphone屏幕上的圆圈怎么设置_iphone桌面上的圆圈怎么设置
一.苹果手机设置"屏幕小圆点"方法:1.设置-通用-辅助功能-AssistiveTouch-打开"AssistiveTouch".2.更改图标:设置-通用-辅助 ...
- ABAP--如何在选择屏幕上输出ALV GRID报表
有些客户希望某些功能性的报表在输出报表内容时,能同时看到选择屏幕上的输入参数,并 希望能反复地输入选择条件进行查询.实现这个功能的办法就是在选择屏幕上输出报表内容. 一般情况下,大家都是直接从SAP的 ...
- 如何在 SAP 轻松访问屏幕上以不同的布局创建不同的启动板
目的 您将了解如何在 SAP 轻松访问屏幕上以不同的布局创建不同的启动板. 在脚本文件夹中创建此文件,用于自定义 SAP 轻松访问屏幕:SAPLSMTR_NAVIGATION.E0100.sjs // ...
- 授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储
在进行 SAP 项目实施时,经常遇到这种需求:用户给定一个 SAP 应用的屏幕上的某个字段,比如下图高亮的库存 1567. 我们需要开发一些围绕这个字段进行的 ABAP 报表,因此首要目标,就是搞清楚 ...
- 编写程序创建一个通讯录文件,在其中存入10位同学的姓名、年龄、电话号码,并在屏幕上输出第2、4、6、8、10位同学的信息
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 8.编写程序创建一个通讯录文件,在其中存入10位同学的姓名.年龄.电话号码,并在屏幕上 ...
最新文章
- Python Open Source Project List
- zabbix服务器没有.pid文件,PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start. 报错解决...
- [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)
- 扫盲:php session缓存至memcached中的方法
- terminated 线程_深入并发,线程相关知识全解析
- Go入门之——GOROOT、GOPATH、GOBIN 、Project目录
- 鲨鱼 抓包 oracle,抓包工具wireshark的操作使用
- html绝对定位怎么页面居中,html – 如何将绝对定位的元素居中?
- JAVA面试题(2018)
- 法庭智能语音系统_法庭智能语音识别系统_法庭智能语音系统解决方案_深圳市亚讯威视数字技术有限公司...
- mysql 并行操作_将MySQL去重操作优化到极致之三弹连发(二):多线程并行执行...
- python中引用javascript代码块
- 论文笔记:PaintsTorch: a User-Guided Anime Line Art Colorization Tool
- 前端初学者的痛,没学历没工作经验如何找工作?
- 推荐一款十分强大的富文本编辑器
- Keithley 2400和Keithley 2450 FET(场效应管)的输出特性测量 软件
- Vue中为对象添加字段
- 2022-2028年中国应急管理行业市场调查研究及发展前景展望报告
- 计算机系统结构(计算机系统结构的分类)
- 公司分立原公司账务要怎么处理