AS01 AS02资产屏幕开发实例

解决业务需求:
1、AS01和AS02屏幕新增人员编码和人员姓名;
2、针对不同资产类型,人员编码必输和禁止输入;
3、屏幕输入的成本中心和人员对应的成本中心一致性检查。

开发逻辑整理:
1、需创建一个增强子屏幕,供人员编号输入,具体创建方法,可参照以下网址:
链接: http://www.doc88.com/p-7025484527093.html.

本实例创建屏幕步骤:
1.1、创建CMOD项目,增强分配:
增强点:AIST0002
1.2、点击组件→双击包含表(点击修改,添加您所要增加的字段,这里是新增人员编号和员工姓名):
新增您所要增加的屏幕字段
1.3、回到组件菜单处,随便点击一个功能出口:
随便点击一个
1.4、点击显示对象列表按钮(找其上层结构函数组):
在这里插入图片描述
1.5、右击函数组名(XAIS),创建屏幕:
在这里插入图片描述
1.6、创建的屏幕设为子屏幕
在这里插入图片描述
1.7、回到函数组的主程序或点击1.5图片中的包括,找到子程序(ZXAISTOP):这个子程序里面,是写你要用的变量定义部分,为全局定义。
**注意地方:当点击它进去时,SAP会报警告,这时不要慌,按下ENTER键就可以了
在这里插入图片描述
1.8、本实例定义部分代码(吐槽:为什么没有我们ABAP的代码块):

TABLES:CI_ANLU.
DATA:g_anla TYPE anla.
DATA:g_display TYPE char1.

1.9、双击函数组下面的屏幕号8000:
1.9.1、画屏幕,人员姓名状态默认灰色,不可输入,本实例是根据人员编号自动获取;
1.9.2、写PBO代码:

  LOOP AT SCREEN.
    if g_display = 'X'.
      screen-input = 0.
      MODIFY SCREEN.
    ENDIf.
  ENDLOOP.

1.9.2、写PAI代码(主要功能:前台输入人员编号后,按enter键自动调出员工姓名)

  • 其中g_anla是在函数组主程序的TOP处定义的全局工作区,其取数下文会介绍。
  DATA:lt_pa0000 TYPE TABLE OF PA0000.
  DATA:LT_PA0001 TYPE TABLE OF PA0001.
  DATA:Ls_PA0001 LIKE LINE OF LT_PA0001.
  DATA:l_KOSTL TYPE anlz-kostl.
  if sy-tcode = 'AS01' OR sy-tcode = 'AS02'.
  if g_anla-ANLKL+3(3) = '102' or g_anla-ANLKL+3(3) = '103' or g_anla-ANLKL+3(3) = '104' or g_anla-ANLKL+3(1) = '2'.
    if g_anla-ANLKL <> '00010401'.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_pa0000
    FROM PA0000
    WHERE STAT2 = '3'
    AND PERNR = ci_anlu-zPERNR
    AND BEGDA <= SY-DATUM
    AND ENDDA >= SY-DATUM.
  IF SY-SUBRC = 0.
    IF lt_pa0000 IS NOT INITIAL.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_PA0001
        FROM PA0001
        FOR ALL ENTRIES IN lt_pa0000
        WHERE PERNR = lt_pa0000-PERNR.
      LOOP AT LT_PA0001 INTO Ls_PA0001.
        ci_anlu-ZEMNAM = Ls_PA0001-ENAME.
        l_KOSTL = Ls_PA0001-KOSTL.
        CLEAR:Ls_PA0001.
      ENDLOOP.
    endif.
  ENDIF.
  endif.
  endif.
  ENDIF.

2、出口函数:EXIT_SAPLAIST_002 处输入一下代码:
这里我们将anla的值放入了g_anla中,这里可以将ANLU\ANLV \ANLU的值传给您所定义的全局中

MOVE-CORRESPONDING i_anlu to ci_anlu.
MOVE-CORRESPONDING i_anla to g_anla.
if i_mode = 'A'.
  G_DISPLAY = 'X'.
ELSE.
  G_DISPLAY = ''.
ENDIF.

2.1、出口函数:EXIT_SAPLAISA_001处输入您要做检查控制的代码:

if sy-tcode = 'AS01' OR SY-TCODE = 'AS02'.
   DATA:lt_pa0000 TYPE TABLE OF PA0000.
   DATA:LT_PA0001 TYPE TABLE OF PA0001.
   DATA:Ls_PA0001 LIKE LINE OF LT_PA0001.
   DATA:l_KOSTL TYPE anlz-kostl.
   DATA:w_kostl TYPE anlz-kostl.
   DATA:FIELD1(50).
   DATA:lt_csks TYPE TABLE OF csks.
   DATA:ls_csks TYPE csks.
   FIELD-SYMBOLS:<F5> TYPE ANY.
   FIELD1 = '(SAPLAIST)ANLZ-KOSTL'.
   ASSIGN (FIELD1) TO <F5>.
   w_kostl = <F5>.
   if i_anla-ANLKL+3(3) = '102' or i_anla-ANLKL+3(3) = '103' or i_anla-ANLKL+3(3) = '104' or i_anla-ANLKL+3(1) = '2'.
     if i_anla-ANLKL <> '00010401'.
       SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_pa0000
         FROM PA0000
         WHERE STAT2 = '3'
         AND PERNR = ci_anlu-zPERNR
         AND BEGDA <= SY-DATUM
         AND ENDDA >= SY-DATUM.
       IF SY-SUBRC = 0.
         IF lt_pa0000 IS NOT INITIAL.
           SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_PA0001
             FROM PA0001
             FOR ALL ENTRIES IN lt_pa0000
             WHERE PERNR = lt_pa0000-PERNR.
           LOOP AT LT_PA0001 INTO Ls_PA0001.
             ci_anlu-ZEMNAM = Ls_PA0001-ENAME.
             l_KOSTL = Ls_PA0001-KOSTL.
             CLEAR:Ls_PA0001.
           ENDLOOP.
           SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_csks
             FROM csks
             WHERE KOSTL = w_kostl.
           SORT lt_csks by DATBI DESCENDING.
           READ TABLE lt_csks INTO ls_csks INDEX 1.
           if ls_csks-DATBI+0(4) = '9999'.
             if l_KOSTL <> w_kostl.
               MESSAGE '输入成本中心与员工对应成本中心不匹配,请检查' TYPE 'E'.
             endif.
           endif.

         endif.
       ELSE.
         MESSAGE '您输入的人员编号不正确或已离职' TYPE 'E'.
       ENDIF.
     ELSE.
       if ci_anlu-zPERNR is NOT INITIAL.
         MESSAGE '此类型禁止输入人员编号,请检查' TYPE 'E'.
       endif.
     endif.
   ELSE.
     if ci_anlu-zPERNR is NOT INITIAL.
       MESSAGE '此类型禁止输入人员编号,请检查' TYPE 'E'.
     endif.
   ENDIF.
 ENDIF.

2.2、出口函数:EXIT_SAPLAIST_003处输入代码:将新增字段存表ANLU。

MOVE-CORRESPONDING CI_ANLU TO E_ANLU.

3、将所以代码和屏幕激活,回到CMOD创建界面,并激活CMOD项目:
在这里插入图片描述
4、如何将新增屏幕显示在前台,请看下文:
4.1、进入TCODE:AOLK,选择任一项资产类别的一般分配:

在这里插入图片描述
4.2、可以看到有标签布局为SAP的数据,此处图片已被替换,原始是SAP
在这里插入图片描述
4.3、进入TCODE:AOLA
选择SAP格式,点击复制按钮,复制一个自定义名的格式,本处事ZSAP,选中ZSAP行,双击表页标题,进入下一界面
在这里插入图片描述
4.4、本例是新增一张表页 ,并将新增字段放在新表页上,也可以在旧表页上,旧表页请参照上面的网址,这里就不写了:当点击新条目新增时,系统会报错不准许,这是需要改表数据。
在这里插入图片描述
4.5、进入se16n,输入表名:TAMLAY1;输入如图相关参数
在点击执行按钮前,输入TCODE:&SAP_EDIT
在这里插入图片描述
4.6、新增页面表数据:
注意:这里你开发机、测试机、正式机都要进行此操作,因为它不会随着请求号传输
在这里插入图片描述
4.7、回到TCODE:AOLA:选择新建行,双击标签页上的组位置进入下一界面
在这里插入图片描述
4.8、点击新条目按钮,将你在函数组XAIS中创建的屏幕号8000放入其中:点击保存
在这里插入图片描述

4.9、最后回到TCODE:AOLK
选择您所需要新增屏幕的资产类别,进入一般分配;

4.9.1、将标签布局SAP 改成你所已定义的ZSAP;点击保存
在这里插入图片描述
5、效果如下:
在这里插入图片描述

备注:
看了会做了的,希望动动您的鼠标 点个赞,给新写手一个激励;

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值