submit应用实例全面实现一段代码多次使用(ALV显示然后打印)
来源:互联网 发布:豪华装修知乎 编辑:程序博客网 时间:2024/06/06 01:46
调用程序(该程序只是负责取数)
REPORT ztest_pillar.
*----------------------------------------------------------------------*
* define internal tables
* 定义内表
*
*----------------------------------------------------------------------*
DATA : BEGIN OF W_DATA,
sel_box type c,
FID1 TYPE STRING,
NUM1 TYPE I ,
NUM2 TYPE I ,
END OF W_DATA.
DATA : T_OUT LIKE W_DATA OCCURS 0 WITH HEADER LINE .
*----------------------------------------------------------------------*
* assign value to internal tables
* 给内表赋值
*
*----------------------------------------------------------------------*
DO 10 TIMES .
IF SY-INDEX < 4 .
T_OUT-FID1 = 'A' .
T_OUT-NUM1 = SY-INDEX .
T_OUT-NUM2 = SY-INDEX + 1 .
ELSEIF SY-INDEX < 7 .
T_OUT-FID1 = 'B' .
T_OUT-NUM1 = SY-INDEX + 1 .
T_OUT-NUM2 = SY-INDEX + 2 .
ELSE .
T_OUT-FID1 = 'C' .
T_OUT-NUM1 = SY-INDEX .
T_OUT-NUM2 = SY-INDEX - 1 .
ENDIF .
APPEND T_OUT.
ENDDO .
*-----------------------------------------------------------------------*
* call extenral program
* 调用外部程序
*
*-----------------------------------------------------------------------*
*** 使用ABAP内存进行数据传递
EXPORT T_OUT TO MEMORY ID 'T_OUT' .
*** 以下两种情况是调用程序被结束,被调用程序开始执行
* SUBMIT ZWRITE_DATA.
*** 如果使用这种情况程序之间的数据访问就不能ABAP内存访问了
* LEAVE TO TRANSACTION 'ZGET_DATA'.
*** 以下两种情况是调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行
* 插入一个新的INTERNAL SESSION,被调用程序运行完删除SESSION,继续执行调用程序
SUBMIT Zwrite_data AND RETURN .
被调用程序(负责显示和打印)
REPORT zwrite_data.
TYPE-POOLS: slis.
tables sflight.
*----------------------------------------------------------------------*
* define internal tables
* 定义内表
*
*----------------------------------------------------------------------*
DATA : BEGIN OF w_data, "这里定义一个跟调用程序一样的内表结构
sel_box TYPE c,
fid1 TYPE string,
num1 TYPE i ,
num2 TYPE i ,
END OF w_data.
DATA : t_out LIKE w_data OCCURS 0 WITH HEADER LINE .
*alv parameters
DATA gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA layout TYPE slis_layout_alv.
*parameters text type sflight-connid.
*----------------------------------------------------------------------*
* get data from sap memory and write out
* 从SAP内存读取数据然后打印输出
*
*----------------------------------------------------------------------*
START-OF-SELECTION.
REFRESH t_out.
IMPORT t_out FROM MEMORY ID 'T_OUT' .
*t_out-fid1 = 'a'.
*t_out-num1 = '1'.
*t_out-num2 = '2'.
*APPEND t_out.
IF t_out[] IS INITIAL.
MESSAGE '内表数据为空' TYPE 'I'.
stop.
ENDIF.
FREE MEMORY ID 'T_OUT'.
PERFORM f_build_catlog.
PERFORM f_display.
END-OF-SELECTION.
*write 'love'.
FORM f_build_catlog .
DATA l_count TYPE i VALUE 0.
DEFINE build_catlog.
add 1 to l_count.
gt_fieldcat-col_pos = l_count.
gt_fieldcat-fieldname = &1.
gt_fieldcat-seltext_m = &2.
append gt_fieldcat.
END-OF-DEFINITION.
build_catlog 'FID1' '变量1'.
build_catlog 'NUM1' '变量2'.
build_catlog 'NUM2' '变量3'.
layout-box_fieldname = 'SEL_BOX'.
ENDFORM. " F_BUILD_CATLOG
FORM f_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'F_STATUS_SET'
i_callback_user_command = 'F_USER_COMMAND'
is_layout = layout
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = t_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " F_DISPLAY
FORM f_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS001' EXCLUDING rt_extab.
ENDFORM. "SET_PF_STATUS
FORM f_user_command USING r_comm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_comm.
WHEN 'BACK'.
LEAVE TO LIST-PROCESSING.
WHEN 'CANCEL'.
LEAVE TO TRANSACTION 'SE80'.
WHEN 'PRINT'.
PERFORM f_print.
WHEN OTHERS.
ENDCASE.
ENDFORM. "USER_COMMAND
FORM f_print .
CALL FUNCTION '/1BCDWB/SF00000413'.
ENDFORM. " F_PRINT
- submit应用实例全面实现一段代码多次使用(ALV显示然后打印)
- ALV tree应用实例
- ALV显示OO实现
- REUSE_ALV_LIST_DISPLAY 实现ALV显示
- REUSE_ALV_GRID_DISPLAY 实现ALV显示
- 一段打印代码
- 使用BufferedReader在本地硬盘创建文件,写入内容,然后读出打印的一段小程序!
- 使用一段ASP代码实现同一空间绑定多个域名的实例
- 一段使用 FreeType 在控制台打印字符的 C++ 代码
- 使用xheditor+SyntaxHighligher实现代码高亮显示实例
- 一段代码实现天气预报在自己页面显示
- listview列表显示系统应用实例代码
- J2ME从服务器端下载图片,在RMS中存储,然后在读取显示(非原创代码,整合应用而已)
- OO ALV 不显示应用工具条行
- OO实现ALV TABLE 一:最简单的ALV显示
- OO实现ALV TABLE 四:ALV的显示样式
- Function实现ALV Table一:最简单的ALV显示
- Function实现ALV Table一:最简单的ALV显示
- 一个对话框程序dlg1
- sss
- 深入理解信号槽(一)
- 在vs2005中使用SkinMagic[转]
- 你会问问题吗
- submit应用实例全面实现一段代码多次使用(ALV显示然后打印)
- struts2 参数传递
- 用mciSendString()实现音乐播放
- memory
- oracle的归档模式
- dansguardian过滤
- 用MySQL创建数据库和数据库表
- 深入理解信号槽(二)
- 学点工具 -- Visual Studio