JOB cancel和dump的ST22分析(ST22里面的十六进制的转换方法和程序)

来源:互联网 发布:淘宝女装简介范文 编辑:程序博客网 时间:2024/04/29 10:28

1、job cancel一般是程序跑着出现dump了,或者是网络中断、用户权限问题等原因,最常见的就是dump了。

       常见的dump的有很多例如:内存溢出,字段溢出,codepage问题,字符乱码问题,RFC问题,还有很多系统标准的dump(待累积)。

       1)CONVT_NO_NUMBER    字符不能转换为数值。。经常会写出字符赋值给数值,但是当字符里面出现字母的时候,这样的赋值语句就会dump掉。

       2)RFC调用错误 

       3)  内存不足,数据量太大大致内表过大,内存不足:杜绝定义一个内表的字段过多,例如直接定义内表参照标准表BKPF。

       4)codepage错误,这种错误一般要检查数据是否有错误非法字符。有些时候是加一句跳过乱码处理,但是这样会导致跑出来的数据会有乱码存在。最好还是检查非法字符。



2、ST22分析方法:dump的分析大家都很清楚,这里只分享其中一些点

      1)前台运行,然后进入debug状态,查看当前出错的数据:直接前台跑,当出现dump的时候,点击进入debug

            

             

              2)通过st22里面的变量分析,定位到具体的数据,有时可以通过sy-tabix定位,但是更多是通过定义的变量定位:

                    

我通过前台debug发现的变量和st22里面的变量定位,发现其实都是一样的,但是st22里面的是十六进制,而且不是字符变量的还不能通过简单的十六进制去转换。所以最好还是使用第一个前台debug去定位变量。但很多时候没法跑前台,只能通过st22去定位变量(通常情况下st22,虽然有十六进制,但是在变量的下面通常就是变量的内容,看下图)单很多时候转换的时候,会出现乱码,就想上面的图片里的WA_OUT-WRBTR。。。。具体分析看第三点。


    


     3)关于ST22里面的十六进制的转换还有一般十六进制的转换。

          首先介绍一个关于十六进制和text文本相互转换的工具,一个很好用的网站工具:http://www.string-functions.com/hex-string.aspx

          其次sap本身自带有很多实用的function module:(实用方法都很简单,不作一一介绍)

           HR_PSD_CONV_XSTRING_TO_STRING

          HR_RU_CONVERT_HEX_TO_STRING

          HR_RU_CONVERT_HEX_TO_CP

          AIN_EPC_HEX_TO_CHAR

          当然还可以通过变量定义,然后赋值强制转换也可以实现。(hex 的类型为X,而已一般X为2位,hex(5)也就是10位)

          但是在利用ST22里面的十六进制数去定位的时候要注意,最好选择是字符串类型的,不要是金额。金额类型的会和char类型的转换成hex的时候有所不一样,所以最好做char类型的hex转换成string去定位那条数据。就像上面提到的BSEG-WRBTR的字段一眼,变量的值是2737186833.03-    对应的hex的值是:0273718683303D    但是实际上用上面的方法去转换的时候2737186833.03- 对应的十六进制是323733373138363833332e30332d20    而hex 0273718683303D对应的字符串是:sq†ƒ0=

           所以根据目前的经验得知,在通过ST22去定位的时候,最好使用字符串字段,通过上面的方法翻译成字符串,然后去定位。而金额类型的目前不好定位,但是也发现有一般规律:
2737186833.03-
0273718683303D


            后续会继续补充,寻找最佳的转换方法!