通过TEXT MODULE传递内表至标准SAPScript

标准的SAPScript由于程序已经写死且只有通过复制出Form然后定制,这样就会有很多限制,如果用户想要输出的行项目并不是标准程序中循环的TABLE,或者每一行还有明细,系统标准只输出行而用户需要的是明细(AR INVOICEF.61输出的是客户行项目,而用户需要的G/L行项目),该怎么办?一般情况是通过ACCESSKEY修改标准程序多加一个LOOP 这样就得要分析源程序。

 

还有一种比较特殊的方式就 是通过 SAPScript TextModule.

 

  • 原理:

 

看下Text Module结构(T-CODE: RECATM )

 


 

其实就是动态创建一个与SAPScript Form中同样的文本,然后再动态的导入,并且可以通过定制格式来定位

 

 

  • 实现方法:

 

  1. FORM中调用程序

 


 

 

 

  1. 程序中动态创建需要的文本,并分配相应的段落格式

 

FORM entry_neu   TABLES in_tab STRUCTURE itcsy

                       out_tab STRUCTURE itcsy.

 

  DATAit_bseg    TYPE TABLE OF bseg WITH HEADER LINE.

 

  DATAwa_header  TYPE thead," header for standard text

        it_line    TYPE TABLE OF tline WITH HEADER LINE.

 

  CONSTANTSc_format  TYPE c LENGTH 2  VALUE 'TI',   "FORM中定义好的段落格式

             c_tab     TYPE c LENGTH 2  VALUE ',,'.

 

  select from bseg

  into corresponding fields of  table it_bseg

     where bukrs '0001'

       and belnr '0100000570'.

 

"--collect the data into text table

  LOOP AT it_bseg.

    CONCATENATE   c_tab  it_bseg-belnr

                  c_tab  it_bseg-buzei

                  INTO it_line-tdline.

 

    it_line-tdformat c_format .      " text format    ”可以根据需求不同行设置不同的格式

 

    APPEND it_line .

  ENDLOOP.

 

 

 

  CLEAR wa_header.

  wa_header-tdobject 'TEXT'.   "SAPScript Form Standard Text

  wa_header-tdname   'ZMAIN'.  "Text Module Name Named as you like begin with 'Z'

  wa_header-tdid     'ST'.     "Standard Text

  wa_header-tdspras  'E'.      "Language

 

*     Call function 'SAVE TEXT' to save the value of internal table

*      in a standard text.

  PERFORM save_text TABLES it_line

                     USING wa_header.

 

ENDFORM.                    "ENTRY_NEU

*&---------------------------------------------------------------------*

*&      Form  save_text

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_IT_LINE    text

*      -->P_WA_HEADER  text

*----------------------------------------------------------------------*

FORM save_text  TABLES   pt_line    STRUCTURE tline

                USING    ps_header  TYPE thead.

 

* To Save the value of internal table in a standard text

  CALL FUNCTION 'SAVE_TEXT'

  EXPORTING

*     CLIENT                = SY-MANDT

    header                 ps_header

*    INSERT                 = ' '

    savemode_direct        =  'X'

  TABLES

    lines                   pt_line

  EXCEPTIONS

    id                     1

    language               2

    name                   3

    object                 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.

ENDFORM.                    " save_text

 

 

 

  1. Form 中添加该Text Module

 


 

  1. 查看运行结果

 


 

 

 查看Text Module

 


 

 

更改段落格式TABS,控制间隔


 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值