An excellent usage of FIELD-SYMBOL

原创 2007年10月04日 19:49:00

Simply,we can use field symbol  to identify a specify memory area. Below is the example.

There is a requirement about the enhancement of account document that generated after saving MIRO.The user want to write invice party(Vendor) to the account document item text. Which item-buzid equal 'T' which indicate taxing.

I found the BADI:AC_DOCUMENT to implement this requirement.The method is CHANGE_INITIAL.The exporting parameter of this method is EX_DOCUMENT ,data type is ACC_DOCUMENT_SUBST.So i must use importing parameter IM_DOCUMENT to construct EX_DOCUMENT.But very unluckily,the field PRZNR of ex_document-item-prznr is RAW. And the value will always be '0000'. After executing this BADI ,the field value of prznr of internal table t_accit[]  of calling program is also set to '0000'.The MIRO throw an error message about the definition of BUSSINESS PROCESS.After several hours study i found that the field symbol can achieve my requirement by pass the exporting parameter EX_DOCUMENT.

The method CHANGE_INITIAL OF BADI AC_DOCUMENT is called in FM:AC_DOCMENT_CREATE.
The FM: AC_DOCUMENT_CREATE is called in FM:MRM_INVOICE_POST.
AND the FM:  MRM_INVOICE_POST is called in MIRO when SAVING.

The TABLES parameter T_ACCIT of FM:AC_DOCUMENT_CREATE contain the line items of account document. And this table is transfered from MRM_INVOICE_POST. The correspond global data is XACCIT in program SAPLMRMP.So we can use field symbol to access data XACCIT in program SAPLMRMP.Below is the code.

method IF_EX_AC_DOCUMENT~CHANGE_INITIAL.
  DATA: l_v_lifnr  TYPE LIFNR.
  CHECK SY
-TCODE EQ 'MIRO'.
  FIELD
-SYMBOLS <ft> TYPE ACCIT_T.
  FIELD
-SYMBOLS <fs> TYPE ACCIT.
  DATA: field TYPE CHAR18 VALUE 
'(SAPLMRMP)xaccit[]'.
  ASSIGN (field) TO 
<ft>.
  CHECK SY
-SUBRC EQ 0.
  LOOP AT 
<fT> ASSIGNING <fs>.
    IF SY
-TABIX EQ 1.
      l_v_lifnr 
= <fs>-lifnr.
    ENDIF.
    CHECK 
<fs>-buzid EQ 'T'.
    
<fs>-sgtxt = l_v_lifnr.
  ENDLOOP.
endmethod.

I think this usage of field-symbol is very useful in enhancement.But before using this way to change data , we must check the consistency of the data.

MIRO中文本如何传入FI凭证的

原文地址:MIRO中文本如何传入FI凭证的作者:假如明天来临对此SAP note 837859 有明确的说明   The header text on the "Details" tab is cop...
  • senlinmu110
  • senlinmu110
  • 2015年10月20日 10:36
  • 715

SAP增强总结-第三代增强(BADI实例详解)

以生产订单收货为例: 1、BADI的查找方法: SE38在程序中搜索关键字CL_EXITHANDLER 或SE24(CL_EXITHANDLER)在方法GET_INSTANCE中打断点,然后...
  • wbin9752
  • wbin9752
  • 2012年09月06日 16:30
  • 23613

using bapi:BAPI_ACC_DOCUMENT_POST park document

项目中,在利用bapi:BAPI_ACC_DOCUMENT_POST去park document时,抬头文本字段赋值了,但总是写不进凭证抬头上,可以在badi增强(AC_DOCUMENT的方法CHAN...
  • champaignwolf
  • champaignwolf
  • 2016年11月17日 09:28
  • 605

SD--RV_accounting_document_create函数的代码解读

 FUNCTION rv_accounting_document_create.  DATA : da_anzah_netwr  LIKE vbrp-netwr.  DATA : da_anzah_m...
  • compassbutton
  • compassbutton
  • 2008年12月11日 10:14
  • 5435

Field Symbol使用总结

Field-Symbols(以下简称FS)大致类似于C语言里的指针,主要作用是程序更加灵活,有时可以实现一般无法实现的功能(比如之前那篇关于动态内表的),合理使用FS还可以提高程序效率,但是FS也有缺...
  • Raffin
  • Raffin
  • 2013年11月09日 00:42
  • 3696

findbugs清理总结

findbugs警告26个。主要有以下9类问题。   1、Bug: Hard coded reference to an absolute pathname BUG描述:This c...
  • wuchengzhi82
  • wuchengzhi82
  • 2014年03月25日 16:21
  • 7634

volatile型变量自增操作的隐患

用FindBugs跑自己的项目,爆出两处An increment to a volatile field isn’t atomic。相应报错的代码如下:volatile int num = 0; nu...
  • bruce128
  • bruce128
  • 2016年11月23日 11:44
  • 2950

This is an excellent example of how to highlight HTML code i

  • 2006年02月23日 09:05
  • 60KB
  • 下载

This is an excellent example of image processing. There are

  • 2006年02月23日 09:05
  • 161KB
  • 下载

Quota Project: An effective way to manage the usage of your Swift-based storage cloud

Quota Project: An effective way to manage the usage of your Swift-based storage cloud During the ...
  • anhuidelinger
  • anhuidelinger
  • 2013年08月13日 20:24
  • 696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:An excellent usage of FIELD-SYMBOL
举报原因:
原因补充:

(最多只允许输入30个字)