Smart如何访问自定义内表?
来源:互联网 发布:传奇续章挂机软件 编辑:程序博客网 时间:2024/04/28 21:42
SAP Smartform程序中,smartform访问程序中自定义内表的值一般通过se11定义structure来实现的,很不方便。
看了几篇文章的解决之道,转引如下:
===========================================================
在smartforms里动态取得程序里内表的值
http://blog.chinaunix.net/u2/68743/showart_724902.html
一般我们在做smartforms的时候都要自己建一个结构,以方便适用,但是有时候多建个结构很麻烦,我们在程序里都建了内表的结构了,其实我们可以不建这个结构的。
在smartforms的 global settings->global definitions 里有个 types 我们可以在这里定义一个和程序里内表一样的结构
但是,在form interface 里定义参数的时候不能刚才定义的结构,激活的时候会报错。所以我们不要再这里一定参数。我们在smartforms里直接读程序里的内表。
global settings->global definitions 里有个 initialization 可以在定义一个指针
DATA: field(50).FIELD-SYMBOLS: <dbcnt> type any.
field = '(ZCHINA_TEST3)ITAB[]'.ASSIGN (field) TO <dbcnt>.
GT_LABEL[] = <dbcnt>.
这样就可以把程序里的内表的值取出来了,并赋给了smartforms里的内表,然后就当GT_LABEL 就是你通过参数传进来的一样用就行了。
通过这个方法 就不用再在se11里定义结构了,调用smartforms的时候也不用传参数了。
============================================================
关于smartforms如何调用自定义内表
http://www.itpub.net/viewthread.php?tid=993316
看了moziyou的帖子:http://www.itpub.net/thread-990949-1-2.html 原文中:2、用memory id或簇数据库。优点,不用SE11,可分别运行取数和打印过程,缺点两边都要定义相同的内表。方法1的方法大家都清楚,对于方法二,不知道能不能给个简单的实例?最好abap的代码和smartforms的设置一起配合起来。用方法2自己编了一个小例子,写得不好老鸟不要嘲笑。 1.程序方面:*&---------------------------------------------------------------------**& Report ZTEST001_ABAP08*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ztest001_abap08.INCLUDE zinc_sf_helper .DATA: BEGIN OF it_itab OCCURS 0, num1 TYPE i, num2 TYPE i, num3 TYPE i, END OF it_itab.START-OF-SELECTION. PERFORM frm_get_data. PERFORM frm_print_data.*&---------------------------------------------------------------------**& Form frm_get_data*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM frm_get_data. DO 20 TIMES. it_itab-num1 = it_itab-num1 + 1. it_itab-num2 = it_itab-num2 + 2. it_itab-num3 = it_itab-num3 + 3. APPEND it_itab. ENDDO.ENDFORM. "frm_get_data*&---------------------------------------------------------------------**& Form frm_print_data*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM frm_print_data. DATA: m_fm TYPE rs38l_fnam. DATA: headername(22) TYPE c. DATA: itemsname(22) TYPE c. DATA: c_tst(22) TYPE c. DATA: l_tst TYPE timestampl. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST001_ABAP08' IMPORTING fm_name = m_fm EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. GET TIME STAMP FIELD l_tst. "long form MOVE l_tst TO c_tst. CONCATENATE 'ZTEST001_ABAP08' c_tst+8(14) INTO itemsname . savebuffer it_itab[] itemsname . 如果要传入多个表的数据就接着savebuffer* savebuffer xxxxxxxxxxxxxxxxxx. CALL FUNCTION m_fm EXPORTING ptr_items = itemsname "这里可以传入多个表,和方法1中的接口使用是一样* xxxxxxxx = xxxxxxxxxx EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. clearbuffer itemsname .ENDFORM. "frm_print_data2.INCLUDE部分*&---------------------------------------------------------------------**& 包括 ZINC_SF_HELPER*&---------------------------------------------------------------------*TYPES buffer_id(80) TYPE c.DATA wa_indx TYPE indx.DEFINE savebuffer. perform save_to_buffer using &1 &2.END-OF-DEFINITION.DEFINE clearbuffer. perform clear_buffer using &1.END-OF-DEFINITION.*&--------------------------------------------------------------------**& Form Get_Unique_Id*&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->ID text*---------------------------------------------------------------------**FORM get_unique_id USING typeid TYPE c CHANGING id TYPE c.* DATA: m_buff(32) TYPE c.* CALL FUNCTION 'TH_GET_SESSION_ID'* IMPORTING* session_id = m_buff** ID_LEN =* .* CONCATENATE sy-repid '_' m_buff typeid INTO id.*ENDFORM. "Get_Unique_Id*&--------------------------------------------------------------------**& Form Save_To_Buffer*&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->T text* -->BUFF_ID text*---------------------------------------------------------------------*FORM save_to_buffer USING t TYPE table typeid TYPE c .wa_indx-aedat = sy-datum.wa_indx-usera = sy-uname.wa_indx-pgmid = sy-repid.* PERFORM get_unique_id USING buff_id CHANGING buff_id. EXPORT t TO DATABASE indx(hk) ID typeid from wa_indx.ENDFORM. "Save_To_Buffer*&--------------------------------------------------------------------**& Form Clear_Buffer*&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->BUFF_ID text*---------------------------------------------------------------------*FORM clear_buffer USING buffid TYPE c. DELETE FROM DATABASE indx(hk) ID buffid.ENDFORM. "Clear_Bufferform Restor_buffer using typeid type c changing t type table.import t from database indx(hk) id typeid.endform.3.smart form 方面我就截图了全局设置->表格接口全局定义->类型 全局定义->全局数据全局定义->初始化全局定义->格式化程序[ 本帖最后由 pzqstc 于 2008-5-23 09:34 编辑 ]
- Smart如何访问自定义内表?
- smartforms如何调用自定义内表
- Smart Client 程序中如何实现数据访问
- Abap调用Smart form 并通过interface 内表数据
- Smart & Simple Testimony 自定义
- 如何访问内网的TCP服务端
- 外网如何访问内网
- 如何在局域网内访问虚拟机
- 外网如何访问内网机器
- 如何从外网访问内网
- 如何从外网访问内网
- 如何从外网访问内网
- wampserver如何设置局域网内可访问
- 外网如何访问内网数据库
- 如何访问内网的摄像头
- 如何访问UITextField内的值
- 如何让外网访问局域网内的项目
- day09内部类,内部类的访问规则。匿名内部类,异常,自定义异常,RuntimeException
- j2ee jboss lomboz
- cdm 与pdm
- 曾国藩经典人生哲理语录——大师级别啊
- Div+CSS布局入门教程
- maven 简单用法
- Smart如何访问自定义内表?
- 数据块分析
- Sybase 远程访问的配置(补充中........)
- 公司于我有恩,辞职让我怎么说出口???
- Flex 实践——在 Datagrid中及时显示Array的数据变化
- 云计算,网格计算 革命性的时代
- clistctrl 常用使用技巧
- MPEG文件格式
- 在程序或DLL中调用自定义资源