【ABAP】取F-02屏幕编号的方法

在录屏时每一种不同的凭证类型屏幕不同,一个个列出比较麻烦,所以借鉴了函数FI_ITEMS_MASS_CHANGE的form screen_detail。。
修改了下。。

FORM searchdynpro  USING   p_bukrs
                            p_belnr
                            p_gjahr
                            p_buzei
                   CHANGING dynnr_save LIKE bdcdata-dynpro.

  DATA: ld_bschl   LIKE bseg-bschl,
        ld_buzid   LIKE bseg-buzid,
        ld_ktosl   LIKE bseg-ktosl,
        ld_mwart   LIKE bseg-mwart,
        ld_mwskz   LIKE bseg-mwskz,
        ld_umskz   LIKE bseg-umskz,
        ld_bstat   LIKE bkpf-bstat.

  SELECT SINGLE bschl mwart umskz buzid ktosl mwskz FROM bseg
          INTO (ld_bschl, ld_mwart, ld_umskz, ld_buzid, ld_ktosl, ld_mwskz)
                       WHERE bukrs = p_bukrs
                       AND   belnr = p_belnr
                       AND   gjahr = p_gjahr
                       AND   buzei = p_buzei.

  SELECT SINGLE bstat INTO ld_bstat FROM bkpf
    WHERE bukrs = p_bukrs
                     AND   belnr = p_belnr
                     AND   gjahr = p_gjahr.

*... determine screen number:
  CALL FUNCTION 'NEXT_DYNPRO_SEARCH'
    EXPORTING
      i_bschl  = ld_bschl
      i_bukrs  = p_bukrs
      i_mwart  = ld_mwart
      i_bstat  = ld_bstat
      i_mwskzs = ld_mwskz
      i_tcode  = 'FB02'
      i_umskz  = ld_umskz
      i_buzid  = ld_buzid
      i_winfk  = space
      i_ktosl  = ld_ktosl                            "Note 0430101
    IMPORTING
      e_dynnra = dynnr_save.

ENDFORM.               

这是一个凭证文本修改的程序,写了个递归

FORM subtxt USING p_bukrs p_belnr p_gjahr p_sgtxt.
  DATA:dynnr_save LIKE bdcdata-dynpro.
  num = num + 1.
  numc = num.
  PERFORM searchdynpro USING p_bukrs p_belnr p_gjahr numc CHANGING dynnr_save.
  PERFORM fill_bdc_table USING '1' 'SAPMF05L' dynnr_save.

  IF num < maxnum.
    PERFORM fill_bdc_table USING '' 'BDC_OKCODE' '=Z+'.
  ELSEIF num = maxnum.
    PERFORM fill_bdc_table USING '' 'BDC_OKCODE' '=AE'.
  ENDIF.
  PERFORM fill_bdc_table USING '' 'BSEG-SGTXT' p_sgtxt.

*屏幕SAPMF05L 301 302 312 没有SUBSCREEM 目前只看到3002020.04.22
  IF dynnr_save = '0300'.
    PERFORM fill_bdc_table USING '1' 'SAPLKACB' '0002'.
    PERFORM fill_bdc_table USING '' 'BDC_OKCODE' '=ENTE'.
  ENDIF.

  IF num < maxnum.
    PERFORM subtxt USING p_bukrs p_belnr p_gjahr p_sgtxt.
  ENDIF.
ENDFORM.               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值