SAP屠夫作品汇总3

更新时间:2023-05-22 04:37:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

sap

月折旧额公式: 10.46 = (1311.00 -55.55即1255.45)/ (10*12) = APC原值/ (资产使用年限*12). 结论: -55.55元是做Tcode:ABAW资产负债表重估时产生的, 产生重置价值是”APC业务”资

产原值-“重新评估”值=”购置价值”. 按中国的会计,固定资产的计价方式: 1.按原始价值计价(购买和建造时)

2.按重置价值计价(资产评估增值时,可以按重置成本计算资产价值,即原值和累计折旧都 要重新计量,

什么条件下这样整呢?那么又抠字眼,也可以不这样做).

3.按帐面净值计价(按准则,资产增值和减值的新月折旧额=帐面净值/剩余年限)

场景3:基本方法0007,多层次方法005,只是将基值改成24(见图3-4,帐面净值),每12,选择剩

余使用期,如图6(实际上这就是SAP默认的多层次方法001).

sap

月折旧额公式: 26.51 = 2915.83/ (9*12+2) = 帐面净值/剩余年限

结论: 严格地讲,折旧还是也资产业务类型无关,只不过是想计划外折旧,资产增值等交易改

变了帐面净值从而间接影响月折旧额的计算.

在基本方法中还有不同配置,不配置可能到的结果不一,你说按理说写AM的程序员也是娘 生的,怎么就能整出这么复杂的东西?

常见的固定资产计提折旧的方法有平均年限法(直线法),工作量法,双倍余额递减法和年数总和法,后两者被称为加速折旧法. 1.平均年限法(直线法)

是将固定资产的折旧额均衡地分摊到各期的一种方式,各期计提的折旧额是相同的。 月折旧额=(固定资产账面价值-预计净残值)/(折旧年限*12) 2.工作量法(产量法)

根据实际工作量计提折旧额的一种方法。计算时先计算出每单位工作量的折旧额,再根据每单位工作量的折旧额计算出某项固定资产月折旧额。 3.双倍余额递减法

以固定资产使用年数倒数的2倍作为它的年折旧率,以每年年初的固定资产帐面余额作为每年折旧的计算基数,但由于在固定资产折旧的初期和中期时不考虑净残值对折旧的影响,为了防止净残值被提前一起折旧,因此现行会计制度规定,在固定资产使用的最后两年中,折旧计算方法改为平均年限法. 双倍余额折旧法公式:

年折旧率=2/预计使用年限*100% 月折旧率=年折旧率/12

月折旧额=期初固定资产账面净值*月折旧率

sap

生搬双倍余额递减法的弊端 引用他人的一个折旧例子:

固定资产原值 1000000 1000000 1000000 1000000 1000000 1000000(原值一样) 使用年限 10 10 10 10 10 10(折旧年限都是10年) 净残值率 30% 20% 11% 9% 7% 5%(残值率不同)

第1年折旧额 200000 200000 200000 200000 200000 200000 第2年折旧额 160000 160000 160000 160000 160000 160000 第3年折旧额 128000 128000 128000 128000 128000 128000 第4年折旧额 102400 102400 102400 102400 102400 102400 第5年折旧额 81920 81920 81920 81920 81920 81920 第6年折旧额 65536 65536 65536 65536 65536 65536 第7年折旧额 52429 52429 52429 52429 52429 52429 第8年折旧额 41943 41943 41943 41943 41943 41943 第9年折旧额 -66114 -16114 28886 38886 48886 58886 第10年折旧额 -66114 -16114 28886 38886 48886 58886 合计折旧金额 700000 800000 890000 910000 930000 950000

我们看到在净残值率为30%和20%的,如果生搬此折旧法会造成最后两年折旧为负的情况,显然如何切换折旧方式非常关键,那么SAP的双倍余额折旧码DG20的折旧逻辑如何呢? 4.年数总和法

年数总和法是以固定资产净值(原值-净残值)为基数,乘以按年次递减的折旧率计算折旧额的一种方法。

年折旧率=(预计使用年限-已使用年限)/预计使用年限的年数总和 月折旧率=年折旧率/12

月折旧额=(固定资产原值-预计净残值)*月折旧率

新会计准则关于科研费用资本化的规定,

对于30万元以下的一次性提足折旧的资产使用折旧码:S005->当期一次折旧,无残值

对于30万元以上的采用双倍余额递减法新增折旧,双倍余额递减法是否会有刚才由于残值百分比大出现最后两年折旧额为负数的情况呢?

现在来设计一个特殊的折旧码,允许用户自定义资产的月折旧额,思路如下:

首先自定义一个表格,表格中有公司代码|资产编号|次编号|折旧有效基值|资产使用年限|剩余年限|折旧有效年限|月折旧额(=折旧基值/折旧有效年限),在计算折旧额时直接读取月折旧额的数据折旧,就可解决任何折旧难题,步骤如下:

一位人士说他那SAP贼复杂,哎,SAP不就一破程序吗?咱们不过是用别人的东西而已,每当此时,俺总很谦虚地说,复杂个球,就一个SAP小屁孩俺还不信治不了它?有的人又说,哎,BW难呀,难个鸟?俺虽没空宰它,可俺看到一般40多的女同事都玩的贼转你说它还能难到哪里去?又有人说PP难,难不难大家都很清楚,俺有个同事情开发一个类MD01的破程序,改了数十次,user折腾呀,你说还会不熟吗...哎,俺的一个鸟死党,他说PS难搞,俺说两天搞定一流程,他不服,结果输的很惨,MD,对着online help走一遍..哎不说了,SAP AG那些鸟人晃了几十年也就整出这些特TMD难用的玩意儿…

sap

Online help很重要,要是你真正做SAP一定要装一个,不装你傻瓜

使用Substitution退还固定资产折旧某资产折旧的费用科目和折旧金额

Case 3: 同一个资产类别如何在计提折旧自动按资产主记录中的成本中心记帐其折旧科目,目前我们是通过制造费用--折旧费过渡,然后再手工做一笔: > 借:管理费用--折旧费(成本中心) > 营业费用——折旧费 (成本中心) > 生产成本——折旧费 (成本中心) > 贷:制造费用——折旧费

> 现在需要手工去分摊,据说系统可以实现自动记帐到各折旧科目。固定资产的折旧是通过设定某个资产属于某个资产类别

asset(belong to) asset class,每个asset class对应不同的事务(如,折旧,和获得原值)对应不同的科目,所以你在创建某个资产的时候,因为你要选定你的资产类别,所以当你创建资产成功后(成本中心在固定资产主数据中输入),这个资产折旧时的科目也就确定下来了,正常折旧对应的科目是一个过渡科目,我们一般把它命名为“折旧费用”,当运行完这就以后,产生的凭证如下:

Dr. 折旧费用 (okb9中的默认成本中心) Cr. 累计折旧

这时候2个问题出现了,1.我的折旧费用可能是管理费用,也有可能是制造费用,等等,这个情况下,sap并不知道你最终的科目去向是哪里,所以你需要手工调整.

Amount退代太危险了,不教坏弟兄们,就上面这破问题弄个科目退代,太TMD简单了,实际上什么OBXT诸如此类的特别总标识不就是科目退代吗? 科目退带的case太多了就不多说啦.

科目退代可用于任何你需要你自己科目但是SAP又没提供这功能的地方. 步骤.

(1) OBBH(GGB1)

sap

如要loop 整个会计凭证(还是内表,就是还在内存缓冲区要check完毕才到DB的)最好使用

CallPnt 3.

(2) 检查一定要看到BSEG-HKONT能被退代,如不能就modify 表GB01加上

BSEG-HKONT 这个请看

(3) 写几行破代码而已. GCX2换成ZFIGL0002

sap

ZFIGL0002代码如下,请注意红色的字体.

PROGRAM ZFIGL0002.

INCLUDE FGBBGD00. "Standard data types

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

*& TYPE-POOLS *

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

"wms092357

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

*& TABLES *

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

"wms092357

BSEG, " HAS 'FI' INSTALLED "wms092357

COBL, "wms092357

CSKS, "wms092357

ANLZ, "wms092357

GLU1. "wms092357

sap

*>>>> START OF INSERTION <<<<

*" >>>>>>>>>>>> BEGIN INSERT 105024

TABLES: CSKBV, COBK.

*" <<<<<<<<<<<< END INSERT 105024

*>>>> END OF INSERTION <<<<<<

FORM GET_EXIT_TITLES TABLES ETAB. "#EC CALLED

DATA: BEGIN OF EXITS OCCURS 50, NAME(5) TYPE C,

PARAM LIKE C_EXIT_PARAM_NONE, TITLE(60) TYPE C, END OF EXITS.

EXITS-NAME = 'U100'.

EXITS-PARAM = C_EXIT_PARAM_NONE.

EXITS-TITLE = TEXT-100. "Cost center from CSKS APPEND EXITS.

EXITS-NAME = 'U101'.

EXITS-PARAM = C_EXIT_PARAM_FIELD.

EXITS-TITLE = TEXT-101. "Cost center from CSKS APPEND EXITS.

* begin of insertion "wms092357

EXITS-NAME = 'U200'.

EXITS-PARAM = C_EXIT_PARAM_FIELD.

EXITS-TITLE = TEXT-200. "Cons. transaction type APPEND EXITS. "from xref1/2

* end of insertion "wms092357

*--> For outsourcing PO by Stone Fu * In order to distinguish the FI doc . EXITS-NAME = 'U909' .

**EXITS-PARAM要是C_EXIT_PARAM_CLASS表示可带参数.

sap

EXITS-PARAM = C_EXIT_PARAM_CLASS.

EXITS-TITLE = TEXT-902 . "Profit Seqment subtitution APPEND EXITS.

***********************************************************************

** EXIT EXAMPLES FROM PUBLIC SECTOR INDUSTRY SOLUTION ** ** PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINE

** TO ENABLE PUBLIC SECTOR EXAMPLE SUBSTITUTION EXITS

***********************************************************************

* INCLUDE rggbs_ps_titles.

REFRESH ETAB. LOOP AT EXITS. ETAB = EXITS. APPEND ETAB. ENDLOOP.

ENDFORM. "GET_EXIT_TITLES

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

* FORM U100 *

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

* Reads the cost-center from the CSKS table . *

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

CALLED

*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *

* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM:

sap

*

* SELECT * FROM CSKS

* WHERE KOSTL EQ COBL-KOSTL * AND KOKRS EQ COBL-KOKRS. * IF CSKS-DATBI >= SY-DATUM AND * CSKS-DATAB <= SY-DATUM. *

* MOVE CSKS-ABTEI TO COBL-KOSTL. *

* ENDIF. * ENDSELECT

DATA I_MAKTX LIKE MAKT-MAKTX.

IF ( BKPF-BLART = 'WA' OR BKPF-BLART = 'WE' OR BKPF-BLART = 'WL' OR

BKPF-BLART = 'RE' ) AND ( BSEG-HKONT = '14050050' OR BSEG-HKONT = '14050060' OR BSEG-HKONT = '14050010' ) AND BSEG-BUKRS = '5100' OR BSEG-BUKRS = '5200'.

IF BSEG-MATNR IS NOT INITIAL AND BSEG-SGTXT EQ ''. SELECT SINGLE MAKTX INTO I_MAKTX FROM MAKT WHERE SPRAS = SY-LANGU

AND MATNR = BSEG-MATNR . BSEG-SGTXT = I_MAKTX . ENDIF . ENDIF .

*append 12-29-2005

*end of appendition

ENDFORM. "U100

* eject

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

* FORM U101 *

*---------------------------------------------------------------------* * Reads the cost-center from the CSKS table for accounting *

* area '0001'. *

* This exit uses a parameter for the cost_center so it can *

sap

* be used irrespective of the table used in the callup point. *

*---------------------------------------------------------------------* FORM U101 USING COST_CENTER LIKE CSKS-KOSTL. "#EC CALLED

*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *

* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM: *

* SELECT * FROM CSKS

* WHERE KOSTL EQ COST_CENTER * AND KOKRS EQ '0001'. * IF CSKS-DATBI >= SY-DATUM AND * CSKS-DATAB <= SY-DATUM. *

* MOVE CSKS-ABTEI TO COST_CENTER . *

* ENDIF. * ENDSELECT.

ENDFORM. "U101

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

* FORM U102 *

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

* Inserts the sum of the posting into the reference field. *

* This exit can be used in FI for the complete document. *

* The complete data is passed in one parameter. *

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

*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

sap

* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *

* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM: *

*FORM u102 USING bool_data TYPE gb002_015. *DATA: SUM(10) TYPE C. *

* LOOP AT BOOL_DATA-BSEG INTO BSEG * WHERE SHKZG = 'S'. * BSEG-ZUONR = 'Test'.

* MODIFY BOOL_DATA-BSEG FROM BSEG. * ADD BSEG-DMBTR TO SUM. * ENDLOOP. *

* BKPF-XBLNR = TEXT-001.

* REPLACE '&' WITH SUM INTO BKPF-XBLNR. *

*ENDFORM.

***********************************************************************

** EXIT EXAMPLES FROM PUBLIC SECTOR INDUSTRY SOLUTION ** ** PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINE

** TO ENABLE PUBLIC SECTOR EXAMPLE SUBSTITUTION EXITS

***********************************************************************

*INCLUDE rggbs_ps_forms.

*eject

* begin of insertion "wms092357

*&---------------------------------------------------------------------* *& Form u200

*&---------------------------------------------------------------------* * text

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

FORM U200 USING E_RMVCT TYPE BSEG-BEWAR. "#EC CALLED

sap

PERFORM XREF_TO_RMVCT USING BKPF BSEG 1 CHANGING E_RMVCT.ENDFORM. "u200

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

*& Form xref_to_rmvct

*&---------------------------------------------------------------------* * text

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

FORM XREF_TO_RMVCT

USING IS_BKPF TYPE BKPF IS_BSEG TYPE BSEG I_XREF_FIELD TYPE I

CHANGING C_RMVCT TYPE RMVCT.

DATA L_MSGV TYPE SYMSGV. DEFAULT KEY.

* either bseg-xref1 or bseg-xref2 must be used as source... IF I_XREF_FIELD <> 1 AND I_XREF_FIELD <> 2.

MESSAGE X000(GK) WITH 'UNEXPECTED VALUE I_XREF_FIELD =' I_XREF_FIELD '(MUST BE = 1 OR = 2)' ''. ENDIF.

IF ST_RMVCT IS INITIAL.

SELECT TRTYP FROM T856 INTO TABLE ST_RMVCT. ENDIF.

IF I_XREF_FIELD = 1.

C_RMVCT = IS_BSEG-XREF1. ELSE.

C_RMVCT = IS_BSEG-XREF2. ENDIF.

IF C_RMVCT IS INITIAL.

WRITE I_XREF_FIELD TO L_MSGV LEFT-JUSTIFIED. CONCATENATE TEXT-M00 L_MSGV INTO L_MSGV SEPARATED BY SPACE.* cons. transaction type is not specified => send an error message...

MESSAGE E123(G3) WITH L_MSGV. * Bitte geben Sie im Feld &1 eine Konsolidierungsbewegungsart an

ENDIF.

* c_rmvct <> initial...

sap

READ TABLE ST_RMVCT TRANSPORTING NO FIELDS FROM C_RMVCT. CHECK NOT SY-SUBRC IS INITIAL. * cons. transaction type does not exist => send error message... WRITE I_XREF_FIELD TO L_MSGV LEFT-JUSTIFIED.

CONCATENATE TEXT-M00 L_MSGV INTO L_MSGV SEPARATED BY SPACE. MESSAGE E124(G3) WITH C_RMVCT L_MSGV.

* KonsBewegungsart &1 ist ungültig (bitte Eingabe im Feld &2 korrigieren

ENDFORM. "xref_to_rmvct

* end of insertion "wms092357

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

*& Form U909

*&--------------------------------------------------------------------* * text

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

* -->P_WA_BOOL_Dtext

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

FORM U909 USING P_WA_BOOL_DATA TYPE GB002_015. FIELD-SYMBOLS:

<LFS_BSEG> LIKE BSEG. DATA :I_BUKRS LIKE BSEG-BUKRS, I_BELNR LIKE BSEG-BELNR, I_GJAHR LIKE BSEG-GJAHR, I_HKONT LIKE BSEG-HKONT, I_EBELN LIKE BSEG-EBELN, I_EBELP LIKE BSEG-EBELP, I_MATNR LIKE BSEG-MATNR, I_MENGE LIKE BSEG-MENGE, I_MATKL LIKE MARA-MATKL, I_WERKS LIKE EKPO-WERKS, I_BSART LIKE EKKO-BSART, I_PSTYP LIKE EKPO-PSTYP, I_KTOSL like bseg-kTOSL. DATA :I_BWKEY LIKE BSEG-BWKEY, I_SHKZG LIKE BSEG-SHKZG, I_WRBTR LIKE BSEG-WRBTR, I_DMBTR LIKE BSEG-DMBTR,

sap

I_PSWBT LIKE BSEG-PSWBT, I_PSWSL LIKE BSEG-PSWSL, I_DMBE2 LIKE BSEG-DMBE2.

DATA: W_BSEG LIKE LINE OF P_WA_BOOL_DATA-BSEG . * DATA: BEGIN OF W_TEMP.

* INCLUDE STRUCTURE ZOHACCT. * DATA: MATNR LIKE MBEW-MATNR. * DATA: END OF W_TEMP.

* Loop一下会计凭证内表.

LOOP AT P_WA_BOOL_DATA-BSEG ASSIGNING <LFS_BSEG> . * MOVE-CORRESPONDING <LFS_BSEG> TO W_BSEG. I_BUKRS = <LFS_BSEG>-BUKRS. I_BELNR = <LFS_BSEG>-BELNR. I_GJAHR = <LFS_BSEG>-GJAHR. I_HKONT = <LFS_BSEG>-HKONT. I_EBELN = <LFS_BSEG>-EBELN. I_EBELP = <LFS_BSEG>-EBELP. I_MATNR = <LFS_BSEG>-MATNR. I_WERKS = <LFS_BSEG>-WERKS. I_SHKZG = <LFS_BSEG>-SHKZG. I_MENGE = <LFS_BSEG>-MENGE. I_KTOSL = <LFS_BSEG>-KTOSL . I_BWKEY = <LFS_BSEG>-BWKEY.

I_WRBTR = <LFS_BSEG>-WRBTR. "amount doc. cur.

I_DMBTR = <LFS_BSEG>-DMBTR. "amount in local cur.

I_PSWBT = <LFS_BSEG>-PSWBT. "amount in general ledger I_PSWSL = <LFS_BSEG>-PSWSL. "general ledger cur

I_DMBE2 = <LFS_BSEG>-DMBE2. "amount in 2nd. local cur. ****check doc type = 'AF'加足条件能反应这是折旧产生的FI Doc SHIFT I_HKONT LEFT DELETING LEADING '0' . if I_HKONT = '70060010' . "折旧科目

***做一个表,如要简单表内容就两个字原折旧科目,cost center,要换的折旧***科目,太TMD的简单吧,只要copy这个FORM就行.

W_BSEG-HKONT = '0062000090'. "退换的折旧科目

MODIFY HKONT.

endif . endloop. ENDFORM.

最后一步.

SE38:运行一下RGUGBR00| RGUGBR01.不要ask why?

sap

11.编写用户增强

用户增强通常包括下面3类,顾名思义,就是增强SAP的可能没有提供的功能(通过后台配置也不能实现).

1.E Enhancement exits :就是常说User_exit (用户出口)

使用SE37搜索EXIT*的函数大都是做exit用的,通常里面预包含了一个Z开头

的程序. SE16查询TFDIR(函数表)输入EXIT*也可. 2.C GUI codes( GUI接口增强) 3. S Subscreens (屏幕增强)

Enhancement在表MODSAP可看到,而TFDIR字段 MAND(值为C表示此出口函数被激活).使用SMOD(CMOD)当然可激活exit function,有时候一时难以查询到相关Enhancement时可使用下面程序将出口函数激活.

REPORT Zactexitfun .

data ztfdir like tfdir .

* select single * from tfdir into ztfdir * where FUNCNAME =

* 'EXIT_SAPMM06E_013'. * ztfdir-MAND = 'C' .

* update tfdir from ztfdir.

* 将EXIT_SAPMM06E_013换成实际所需exit函数名 update tfdir set MAND = 'C'.

where FUNcname = 'EXIT_SAPMM06E_013'.

***当然也可SE16:MODSAP表enhancement输入EXIT_SAPMM06E_013然后得到enhancement name MM06E005后使用SMOD测试激活exit函数. 为什么不使用SMOD直接激活?

增强相关函数和表格

Function:

sap

[1].DYNP_VALUES_READ

[2]. MODX_ALL_ACTIVE_MENUENTRIES(菜单增强) [3].MODX_FUNCTION_ACTIVE_CHECK(出口函数增强)

由于读者可能接触user exit最多,除了附录光盘有个查找ZFINDEXIT的程序外(有些exit使用它并不能找到),另一个直接有效的方法就是使用这个函数,SE37设好断点后执行tcode如其有exit就会调用此函数.

如图2-11-1是运行MIGO时的一个截图,表示相关exit被激活.

[4].MODX_MENUENTRY_ACTIVE_CHECK(菜单增强) [5].MODX_SUBSCREEN_ACTIVE_CHECK(屏幕增强) Table:

[1]. TFDIR->function module table

[2]. MODSAP->sap enhancement table

[3]. TSDIR->Dynpro Areas CALL CUSTOMER SUBSCREEN(屏幕增强) [4]. CUATEXTS-> GUI Interface: Menu Texts Changed(GUI 菜单文本增强)

***注意,为了确保一个出口被真正应用,必须同时激活相关程序(SE38)和出口函数(SMOD|CMOD,反正就是要保证tfdir-mandt=’C’,用程序也可.) 关于增强中的user exit,在实战篇中会有更多详细的例子.

sap

找屏幕增强有很多方法,读者可从SE16:TSDIR中找寻,或者CMOD菜但utilities(M)->SAP Enhancements搜寻出所有的exit name,然后在搜寻结构中再输入’screen’ 关键字(通常在short text描述)一般能找到一些SAP预留的屏幕增强. 下面以建立PO举个实例介绍什么是屏幕增强. 如图2-11-2,很简单,SE38输入

SAPMM06E.

SAPMM06E可看成专为PO增强的一个module pool,可以增强的subscreen no一般还有0101,0111,0201,0211,0301,0311(增强的子屏作用读者可从描述中就知).

SAPLXM06实际上包含四个include,INCLUDE LXM06TOP(Global Data在此为增强定义global data), INCLUDE LXM06UXX.(Function Modules实际上包含所有可用的user exit),INCLUDE LXM06F00. (SAP-Formpool for Customer-Use可在此建立Form pool),INCLUDE ZXM06ZZZ. (Subprograms and Modules,在此建立增强子屏)

在include程序ZXM06ZZZ中加入如下代码.

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

sap

*& Include ZXM06ZZZ *

*&----------------------------------------------------------module modpohead.

call screen 0101. "PO header增强子屏 endmodule.

module modpoitem.

call screen 0111. "PO item增强子屏 endmodule.

注意上面的screen 0101和0111在attribute screen type必须选subscreen.再ME22N(ME23N)进去后能发现在PO header和line item都多出了一customer data tab页,不妨这样设想,假设用户希望在操作PO时写些额外的东西进自定义的表格,而且这些数据通过一般的user exit还做不到,因为这些字段在PO相关数据表中不存在,必须有用户在屏幕上输入(否则没必要使用增强屏幕直接使用合适的user exit将数据写到自定义表就可),就得使用增强屏幕. 屏幕上文本框和table control都可用,想输入怎样的额外数据到自定义表都行.

如图2-11-3,读者可看到header和item都多出一Customer data的增强屏幕.

1有时实际需求会需要更改屏幕上某些字段的显示,比如用户希望物料主数据basic data 2视图other data 下的Prod./Insp. Memo(子段显示)保存其它信息,同时为了避免不必要的误会需要更改此字段显示,严格地讲,这并非屏幕增强.这是屏幕”强改”(强行更改).

2.所谓屏幕增强就是多出个子屏幕来,在此你可显示一些数据或插入一些数据(到自定义表格中),global data(可理解为定义的全局变量内表什么的)对ME21N是SAPLMEGUI(main程序)-> SAPLMEGUI(Global data include),就是PO的增强屏幕不能使用SAPLMEGUI中定义的东西.

3.一种新的enhancement技术BADI(Business Add-Ins, 字面翻译业务附加->应用程序接口)正被使用,详情请看本章第19节使用BADI.

FB08如何reverse多余的折旧凭证.

让SAP神经错乱它就会什么都招了. ----SAP屠夫题

(1) check document type

sap

(2)设置断点.

FB08,都FB08了和资产年度就没有任何关系,你想reverse到当年去年都行,只要选好rerversal reason就可以

.

sy-subrc = 0 .

OK reverse .

sap

ANLA:Asset Master Record Segment 资产主数据 资产主要数据有日期和ANLZ的不同

ANLB:Depreciation terms 固定资产折旧主数据

ANLC:Asset Value Fields 固定资产每一年的价值(报废了就没有了) NAFAP-Plnd. ord. dep. 固定资产累计折旧 ANSWL-Ast.val.trans. 固定资产现值

ANLZ:Time-Dependent Asset Allocations (但不是资产主数据的有效期) BDATU ADATU 是cost center的有效期

ANEA:Asset Line Items for Proportional Values(其他取得价值)

ANEK:Document Header Asset Posting ( 只包含一条取得报废呀什么记录,不知道折旧有否???)

ANEP:Asset Line Items 所有历史记录 (所有的10,20,30,31,32的)(类似BKPF, BSEG,)

sap

ANLH:Main asset number (LANEP line item LANEP应该是最后记录item no) ANLE:Asset Origin by Line Item (no usage) ANLK:Asset Origin by Cost Element (no usage) ANLV:no usage ANLU:no uage

ANLP:Asset Periodic Values (每个月的折旧历史)

ANLQ:Period values from dep. posting run per posting level

系统表

D020T:Screen Short Description是哦

CALL FUNCTION 'AREAS_OPEN_IN_YEAR' EXPORTING

I_CCODE = P_BUKRS I_YEAR = P_GJAHR TABLES

T_AREAS = R_OAFABE

T084:Incorrect assets ?????

T093B:Company code-related depreciation area specifications GWGWRT:那个2000元才算资产

ABGJA:shows the last closed fiscal year,this year is the starting point for current depreciation planning. DATUM和ABGJA都是控制这年不能在做的。 ???

T093C:Company codes in Asset Accounting (比如ABZON时就靠此表检查期间) DATUM:The system uses this date to determine the last closed fiscal year. 如下就是说此俩玩意是控制posting date的。 data zt093C like t093c.

select single * into zt093c from t093C where BUKRS = '1000'.

zt093C-LGJAHR = '2019' . (19下面是8表示8-19你可记到任何一年) update t093C from zt093C .

data zt093b like t093B.

select * into zt093B from t093B where BUKRS = '1000'. zt093B-ABGJA = '2008' . update t093B from zt093B . endselect.

就是说你可随便玩,但是以后会有错误提示的,比如你开到2009 post 一个东西, TA1TVT :Asset Transfer Variant

TABWD_FTC :Fields Used for Table Controls on Asset Postings

本文来源:https://www.bwwdw.com/article/ltj4.html

Top