获取report程序的执行结果

如下示例代码:

FUNCTION z_pbms_outbound_budget.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  EXPORTING
*"     VALUE(ZRETURN) TYPE  CHAR1
*"     VALUE(ZMESSAGE) TYPE  CHAR255
*"  TABLES
*"      ZBUDGET STRUCTURE  ZBUDGET
*"----------------------------------------------------------------------
*PBMS调用该接口,传入订单号,SAP查询并返回该订单的预算余额。


  TABLES: zmmlog06.


  TYPES: BEGIN OF ty_line,
           line(500),
         END OF ty_line,
         BEGIN OF ty_ktext,
           ktext(40),
         END OF ty_ktext.


  DATA: rspar_tab  TYPE TABLE OF rsparams,
        rspar_line LIKE LINE OF rspar_tab,
        range_tab  LIKE RANGE OF aufk-aufnr,
        range_line LIKE LINE OF range_tab.


  DATA: lt_list TYPE TABLE OF abaplist,
        lw_list TYPE abaplist,
        lt_conl TYPE STANDARD TABLE OF ty_line,
        lw_conl TYPE ty_line.
  DATA: lt_out  TYPE STANDARD TABLE OF ty_ktext,
        lw_out  TYPE ty_ktext,
        lv_ktext(40),
        lv_tabix TYPE sy-tabix.
* upd by sherry at 20180212 start *
  DATA:lw_usr01 TYPE usr01.
  DATA:lv_ysje TYPE string,    "预算金额(数值)
       lv_sjsh TYPE string,    "实际收货(数值)
       lv_int1 TYPE sy-tabix,  "预算金额(列数)
       lv_int2 TYPE sy-tabix.  "实际收货(列数)


  "获取用户数值显示格式
  SELECT SINGLE * FROM usr01 INTO lw_usr01 WHERE bname = sy-uname.
* upd by sherry at 20180212 end *
*-----------------------------------------------------------
*输入检查
  IF zbudget[] IS INITIAL.
    zreturn  = 'E'.
    zmessage  ='订单号必须传入.'.
    EXIT.
  ELSE.
    LOOP AT zbudget.
*      IF zbudget-kokrs IS INITIAL OR zbudget-aufnr IS INITIAL.
      IF zbudget-aufnr IS INITIAL.
        zreturn  = 'E'.
        zmessage  ='订单号必须传入.'.
        EXIT.
      ENDIF.
    ENDLOOP.
  ENDIF.


  LOOP AT zbudget.
    IF sy-tabix > 1.
      zreturn  = 'E'.
      zmessage  ='单次调用仅支持传入1个订单号.'.
      EXIT.
    ENDIF.
*如果输入的查询日期=空,自动填入当前日期到查询日期。
    IF zbudget-erdat IS INITIAL.
      zbudget-erdat = sy-datum.
      MODIFY zbudget INDEX sy-tabix.
    ENDIF.
*  Jiang Yu
    SELECT SINGLE kokrs INTO zbudget-kokrs FROM coas WHERE aufnr = zbudget-aufnr.
    IF sy-subrc = 0.
      MODIFY zbudget INDEX sy-tabix.
    ELSE.
      zreturn  = 'E'.
      zmessage  ='订单号错误.'.
      "EXIT.
*      Jiang Yu End
    ENDIF.
  ENDLOOP.


  CHECK sy-subrc = 0.


  READ TABLE zbudget INDEX 1.
  range_line-sign    = 'I'.
  range_line-option  = 'EQ'.
  range_line-low     = zbudget-aufnr.
  APPEND range_line TO range_tab.






  SUBMIT zfir20 WITH p_kokrs = zbudget-kokrs       "成本控制范围
                WITH p_gjahr = zbudget-erdat+0(4)  "年份
                WITH s_aufnr IN range_tab            "订单号
                EXPORTING LIST TO MEMORY
                AND RETURN.


  CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
      listobject = lt_list
    EXCEPTIONS
      not_found  = 1
      OTHERS     = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


  CALL FUNCTION 'LIST_TO_ASCI'
*   EXPORTING
*     LIST_INDEX               = -1
*     WITH_LINE_BREAK          = ' '
*   IMPORTING
*     LIST_STRING_ASCII        =
*     LIST_DYN_ASCII           =
    TABLES
      listasci                 = lt_conl
      listobject               = lt_list
    EXCEPTIONS
      empty_list               = 1
      list_index_invalid       = 2
      OTHERS                   = 3 .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


  LOOP AT lt_conl INTO lw_conl.
*    IF sy-tabix <> 4.
*      CONTINUE.
*    ENDIF.
    IF lw_conl-line CS '|'.
      SPLIT lw_conl-line AT '|' INTO TABLE lt_out IN CHARACTER MODE.
      CLEAR lw_out.
      LOOP AT lt_out INTO lw_out.
        CONDENSE lw_out-ktext NO-GAPS.
        IF lw_out-ktext = zbudget-aufnr.
          EXIT.
        ENDIF.
      ENDLOOP.
      IF lw_out-ktext <> zbudget-aufnr..
        CONTINUE.
      ENDIF.
      IF zbudget-erdat+4(2) <= 06.
        lv_ktext = '预算差(上期)'.
      ELSE.
        lv_ktext = '预算差(下期)'.
      ENDIF.
*      LOOP AT lt_out INTO lw_out WHERE ktext CS lv_ktext.
*        lv_tabix = sy-tabix.
*        EXIT.
*      ENDLOOP.
*      IF sy-subrc NE 0.


* upd by sherry at 20180212 start *
      CASE lv_ktext.
        WHEN '预算差(上期)'.
          lv_int1 = 4.  "预算金额上期行数
          lv_int2 = 7.  "实际收货上期行数
        WHEN '预算差(下期)'.
          lv_int1 = 9.  "预算金额下期行数
          lv_int2 = 12. "实际收货下期行数
      ENDCASE.
      "预算金额
      CLEAR:lw_out.
      READ TABLE lt_out INTO lw_out INDEX lv_int1.
      IF sy-subrc = 0.
        lv_ysje = lw_out-ktext.
      ENDIF.
      "实际收货
      CLEAR:lw_out.
      READ TABLE lt_out INTO lw_out INDEX lv_int2.
      IF sy-subrc = 0.
        lv_sjsh = lw_out-ktext.
      ENDIF.
      "根据用户数值显示格式编辑数值
      CASE lw_usr01-dcpfm.
        WHEN 'X'.  "小数点是句号
          REPLACE ALL OCCURRENCES OF ',' IN lv_ysje WITH space IN CHARACTER MODE.
          CONDENSE lv_ysje NO-GAPS.
          REPLACE ALL OCCURRENCES OF ',' IN lv_sjsh WITH space IN CHARACTER MODE.
          CONDENSE lv_sjsh NO-GAPS.
        WHEN 'Y'.
        WHEN OTHERS. "小数点是逗号
          REPLACE ALL OCCURRENCES OF '.' IN lv_ysje WITH space IN CHARACTER MODE.
          CONDENSE lv_ysje NO-GAPS.
          REPLACE ALL OCCURRENCES OF '.' IN lv_sjsh WITH space IN CHARACTER MODE.
          CONDENSE lv_sjsh NO-GAPS.


          REPLACE ALL OCCURRENCES OF ',' IN lv_ysje WITH '.' IN CHARACTER MODE.
          REPLACE ALL OCCURRENCES OF ',' IN lv_sjsh WITH '.' IN CHARACTER MODE.
      ENDCASE.
      zreturn  = 'S'.
      zmessage = '预算余额取得成功'.
      zmmlog06-datum = sy-datum.
      zmmlog06-uzeit = sy-uzeit.
      zmmlog06-kokrs = zbudget-kokrs.
      zmmlog06-aufnr = zbudget-aufnr.
      zmmlog06-erdat = zbudget-erdat.
      zmmlog06-wkgxxx = lv_ysje - lv_sjsh.
      zmmlog06-zreturn  = zreturn.
      zmmlog06-zmessage = zmessage.
      MODIFY zmmlog06.
      zbudget-wkgxxx = zmmlog06-wkgxxx.
      CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
        CHANGING
          value = zbudget-wkgxxx.
      MODIFY zbudget INDEX 1.




*      lv_tabix = 8.
*      CLEAR: lw_out.
*      READ TABLE lt_out INTO lw_out INDEX lv_tabix.
*      IF sy-subrc = 0.
*        CLEAR zmmlog06.
*        REPLACE ALL OCCURRENCES OF ',' IN lw_out-ktext WITH space IN CHARACTER MODE.
*        CONDENSE lw_out-ktext NO-GAPS.
*        zreturn  = 'S'.
*        zmessage = '预算余额取得成功'.
*        zmmlog06-datum = sy-datum.
*        zmmlog06-uzeit = sy-uzeit.
*        zmmlog06-kokrs = zbudget-kokrs.
*        zmmlog06-aufnr = zbudget-aufnr.
*        zmmlog06-erdat = zbudget-erdat.
*        zmmlog06-wkgxxx = lw_out-ktext.
*        zmmlog06-zreturn  = zreturn.
*        zmmlog06-zmessage = zmessage.
*        MODIFY zmmlog06.
*        zbudget-wkgxxx = lw_out-ktext.
*        CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
*          CHANGING
*            value = zbudget-wkgxxx.
*        MODIFY zbudget INDEX 1.
*          MODIFY zbudget.                         "jiang yu
*      ENDIF.
* upd by sherry at 20180212 end *
*      ENDIF.
    ENDIF.
  ENDLOOP.
  READ TABLE zbudget INDEX 1.
  IF lt_conl[] IS INITIAL.
    CLEAR zmmlog06.
    zreturn  = 'W'.
    zmessage = '预算余额未取得,请检查传入条件'.
    zmmlog06-datum = sy-datum.
    zmmlog06-uzeit = sy-uzeit.
    zmmlog06-kokrs = zbudget-kokrs.
    zmmlog06-aufnr = zbudget-aufnr.
    zmmlog06-erdat = zbudget-erdat.
    zmmlog06-zreturn  = zreturn.
    zmmlog06-zmessage = zmessage.
    MODIFY zmmlog06.
  ENDIF.


ENDFUNCTION.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值