科目余额辅助表

type-POOLs :slis .
TABLES :bkpf ,bseg ,faglflext .

DATA : BEGIN  OF get_tab_result  OCCURS  0 ,
  bukrs  like bseg -bukrs , "公司代码
  hkont  LIKE bseg -hkont , "总账科目
  txt20  LIKE skat -txt20 , "总账科目文本
  kunnr  LIKE bseg -kunnr , "客户编号
  lifnr  LIKE bseg -lifnr , "供应商编号
  matnr  LIKE bseg -matnr , "物料
  anln1  LIKE bseg -anln1 , "资产
  kostl  LIKE bseg -kostl , "成本中心
  name1  TYPE  LENGTH  100 , "对应的项目文本
  dmbtr  LIKE bseg -dmbtr , "金额
  dmbtr1  LIKE bseg -dmbtr ,
  dmbtr2  LIKE bseg -dmbtr ,
  dmbtr3  LIKE bseg -dmbtr ,
  dmbtr4  LIKE bseg -dmbtr ,
  dmbtr5  LIKE bseg -dmbtr ,
  dmbtr6  LIKE bseg -dmbtr ,
  dmbtr7  LIKE bseg -dmbtr ,
   END  OF get_tab_result .

SELECTION-SCREEN  BEGIN  OF  BLOCK blk1  WITH  FRAME  TITLE tt1 .
SELECT-OPTIONS :s_bukrs  FOR bkpf -bukrs  no -EXTENSION  no INTERVALS OBLIGATORY ,
               s_gjahr  FOR bkpf -gjahr  NO -EXTENSION  NO INTERVALS OBLIGATORY ,
               s_rpmax  FOR faglflext -rpmax  no -EXTENSION OBLIGATORY ,
               s_hkont  FOR bseg -hkont .
SELECTION-SCREEN  END  OF  BLOCK blk1 .

AT  SELECTION-SCREEN  ON  VALUE-REQUEST  FOR s_hkont -low .
   PERFORM frm_onf4_hkont  USING  'S_HKONT-LOW' .

AT  SELECTION-SCREEN  ON  VALUE-REQUEST  FOR s_hkont -high .
   PERFORM frm_onf4_hkont  USING  'S_HKONT-HIGH' .

AT  SELECTION-SCREEN .
   PERFORM frm_auth_check .

START-OF-SELECTION .
*获取数据
   PERFORM frm_get_data .

end-OF-SELECTION .
   PERFORM frm_output_data .
*&---------------------------------------------------------------------*
*&      Form  FRM_ONF4_HKONT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0150   text
*----------------------------------------------------------------------*
FORM FRM_ONF4_HKONT   USING  p_field .
   TYPES : BEGIN  OF ty_skat ,
    saknr  TYPE skat -saknr ,
    txt20  TYPE skat -txt20 ,
     END  OF ty_skat .

   DATA :lt_skat  TYPE  TABLE  OF ty_skat  WITH  HEADER  LINE .

   SELECT
    saknr
    txt20
     FROM skat
     INTO  TABLE lt_skat
     WHERE spras  sy -langu  AND ktopl  '1000' .

   CALL  FUNCTION  'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
*         DDIC_STRUCTURE         = ' '
      RETFIELD                'SAKNR'
*         PVALKEY                = ' '
      DYNPPROG                SY -REPID
      DYNPROFIELD             P_FIELD
      DYNPNR                  SY -DYNNR
*         STEPL                  = 0
*         WINDOW_TITLE           =
*         VALUE                  = ' '
      VALUE_ORG               'S'
*         MULTIPLE_CHOICE        = ' '
*         DISPLAY                = ' '
      CALLBACK_PROGRAM        SY -REPID
*         CALLBACK_FORM          = ' '
*         CALLBACK_METHOD        =
*         MARK_TAB               =
*       IMPORTING
*         USER_RESET             =
     TABLES
      VALUE_TAB               lt_skat[]
*         FIELD_TAB              =
*         RETURN_TAB             =
*         DYNPFLD_MAPPING        =
     EXCEPTIONS
      PARAMETER_ERROR         1
      NO_VALUES_FOUND         2
       OTHERS                  3
             .
   IF SY -SUBRC <>  0 .
* Implement suitable error handling here
   ENDIF .


ENDFORM .                     " FRM_ONF4_HKONT
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA  .
   DATA : BEGIN  OF L_T_BSEG  OCCURS  0 ,
    BUKRS  LIKE BSEG -BUKRS , "公司号
    BELNR  LIKE BSEG -BELNR , "凭证号
    GJAHR  LIKE BSEG -GJAHR , "年度
    BUZEI  LIKE BSEG -BUZEI , "行项目
    SHKZG  LIKE BSEG -SHKZG , "借贷
    HKONT  LIKE BSEG -HKONT , "总账
    KUNNR  LIKE BSEG -KUNNR , "客户
    LIFNR  LIKE BSEG -LIFNR , "供应商
    MATNR  LIKE BSEG -MATNR , "物料
    ANLN1  LIKE bseg -ANLN1 , "成本中心
    KOSTL  LIKE BSEG -KOSTL ,
    DMBTR  LIKE BSEG -DMBTR ,
    BUDAT  LIKE BKPF -BUDAT ,
    XNEGP  LIKE BSEG -XNEGP , "标识:反记账
    XREVERSAL  LIKE BKPF -XREVERSAL , "指定是否凭证被冲销或已被冲销
    STGRD  LIKE BKPF -STGRD , "冲销原因
    EBELN  LIKE BSEG -EBELN , "采购凭证号
     END  OF L_T_BSEG .

   TYPES : BEGIN  OF L_S_BKPF ,
    BUKRS  LIKE BKPF -BUKRS ,
    BELNR  LIKE BKPF -BELNR ,
    GJAHR  LIKE BKPF -GJAHR ,
    BUDAT  LIKE BKPF -BUDAT ,
    STGRD  LIKE BKPF -STGRD ,
    XREVERSAL  LIKE BKPF -XREVERSAL ,
     END  OF L_S_BKPF .

   DATA L_T_BKPF  TYPE  HASHED  TABLE  OF L_S_BKPF  WITH  UNIQUE  KEY BUKRS BELNR GJAHR  WITH  HEADER  LINE .
   SELECT
    BUKRS
    BELNR
    GJAHR
    BUZEI
    SHKZG
    HKONT
    KUNNR
    LIFNR
    MATNR
    ANLN1
    KOSTL
    dmbtr
    XNEGP
    EBELN
     INTO CORRESPONDING  FIELDS  OF  TABLE L_T_BSEG
     FROM BSEG
     WHERE BUKRS  IN S_BUKRS
     AND   GJAHR  IN S_GJAHR
     AND   hkont  IN s_hkont .

   IF L_T_BSEG[]  IS  NOT  INITIAL .
     SELECT
      BUKRS
      BELNR
      GJAHR
      BUDAT
      STGRD
      XREVERSAL
       INTO CORRESPONDING  FIELDS  OF  TABLE L_T_BKPF
       FROM BKPF
       FOR  ALL ENTRIES  IN L_T_BSEG
       WHERE bukrs  L_T_BSEG -BUKRS
       AND   BELNR  L_T_BSEG -BELNR
       AND   GJAHR  L_T_BSEG -GJAHR .

   ENDIF .

   LOOP  AT L_T_BSEG .
     READ  TABLE L_T_Bkpf  WITH  TABLE  KEY BUKRS  L_T_BSEG -BUKRS
                                       BELNR  L_T_BSEG -BELNR
                                       GJAHR  L_T_BSEG -GJAHR .
     IF SY -SUBRC  0 .
      L_T_BSEG -BUDAT  L_T_BKPF -BUDAT .
      L_T_BSEG -XREVERSAL  L_T_BKPF -XREVERSAL .
      L_T_BSEG -STGRD  L_T_BKPF -STGRD .
       MODIFY L_T_BSEG  TRANSPORTING BUDAT XREVERSAL STGRD .
     ELSE .
       DELETE L_T_BSEG .
     ENDIF .
   ENDLOOP .
***************************************************处理反记账
   LOOP  AT L_T_BSEG  WHERE HKONT  BETWEEN  '100100000'  AND  '100900000'  AND XREVERSAL  NE  ''  AND XNEGP  'X' .
     IF L_T_BSEG -SHKZG  'H' .
      L_T_BSEG -SHKZG  'S' .
     ELSEIF L_T_BSEG -SHKZG  'S' .
      L_T_BSEG -SHKZG  'H' .
     ENDIF .
    L_T_BSEG -DMBTR  L_T_BSEG -dmbtr .
     MODIFY L_T_BSEG  TRANSPORTING SHKZG dmbtR .
   ENDLOOP .
*处理同时出现的供应商编码和物料编码的情况
   LOOP  AT L_T_BSEG  WHERE hkont  BETWEEN  141  AND  147 .
     CLEAR L_T_BSEG -LIFNR  L_T_BSEG -KUNNR .
     MODIFY L_T_BSEG  TRANSPORTING lifnr KUNNR .
   ENDLOOP .

   LOOP  AT  L_T_BSEG  WHERE HKONT  EQ  222 .
     SELECT  SINGLE LIFNR  INTO L_T_BSEG -lifnr  FROM EKKO  WHERE EBELN  L_T_BSEG -EBELN .
     IF SY -SUBRC  0 .
       MODIFY L_T_BSEG  TRANSPORTING LIFNR .
     ENDIF .
   ENDLOOP .

   DATA :L_F_DATE  TYPE SY -DATUM ,
       L_T_DATE  TYPE SY -DATUM .

   DATA :L_MONTH ( 3 TYPE  C .
  L_MONTH  s_rpmax -LOW .
   SHIFT L_MONTH  LEFT DELETING  LEADING  '0' .

   IF L_MONTH <  10 .
     CONCATENATE  '0' L_MONTH  INTO L_MONTH .
   ENDIF .
   CONCATENATE S_GJAHR -LOW L_MONTH  '01'  INTO L_F_DATE .
   CLEAR L_MONTH .
  L_MONTH  s_rpmax -HIGH .
   IF L_MONTH  EQ  '000' .
    L_MONTH  s_rpmax -LOW .
   ENDIF .

   SHIFT L_MONTH  LEFT DELETING  LEADING  '0' .
   IF L_MONTH <  10 .
     CONCATENATE  '0' L_MONTH  INTO L_MONTH .
   ENDIF .

   CONCATENATE S_GJAHR -LOW L_MONTH  '01'  INTO L_T_DATE .
   CALL  FUNCTION  'FIMA_DATE_CREATE'
     EXPORTING
      I_DATE                   L_T_DATE
      I_FLG_END_OF_MONTH       ' '
*     I_YEARS                 = 0
*     I_MONTHS                = 0
*     I_DAYS                  = 0
      I_CALENDAR_DAYS          0
      I_SET_LAST_DAY_OF_MONTH  'X'
     IMPORTING
      E_DATE                   L_T_DATE
*     E_FLG_END_OF_MONTH      =
*     E_DAYS_OF_I_DATE        =
     .

   DATA L_T_BSEG_BEG  LIKE  TABLE  OF L_T_BSEG  WITH  HEADER  LINE .
   DATA L_T_BSEG_END  LIKE  TABLE  OF L_T_BSEG  WITH  HEADER  LINE .

   APPEND  LINES  OF L_T_BSEG  TO L_T_BSEG_BEG .
   APPEND  LINES  OF L_T_BSEG  TO L_T_BSEG_END .

   DELETE L_T_BSEG  WHERE BUDAT > L_T_DATE .
   DELETE L_T_BSEG  WHERE BUDAT < L_F_DATE .
   DELETE L_T_BSEG  WHERE BUDAT  >= L_F_DATE .
   DELETE L_T_BSEG  WHERE BUDAT > L_T_DATE .

   LOOP  AT L_T_BSEG .
    get_tab_result -BUKRS  L_T_BSEG -BUKRS .
    get_tab_result -HKONT  L_T_BSEG -HKONT .
    get_tab_result -KUNNR  L_T_BSEG -KUNNR .
    get_tab_result -LIFNR  L_T_BSEG -LIFNR .
    get_tab_result -MATNR  L_T_BSEG -MATNR .
    get_tab_result -ANLN1  L_T_BSEG -ANLN1 .
    get_tab_result -KOSTL  L_T_BSEG -KOSTL .

     IF L_T_BSEG -SHKZG  'H' .
      get_tab_result -dmbtr3  L_T_BSEG -dmbtr .
      get_tab_result -dmbtr5  L_T_BSEG -dmbtr .
     ELSE .
      get_tab_result -dmbtr2  L_T_BSEG -dmbtr .
      get_tab_result -dmbtr4  L_T_BSEG -dmbtr .

     ENDIF .
     COLLECT get_tab_result .
     CLEAR get_tab_result .


   ENDLOOP .

   LOOP  AT L_T_BSEG_BEG .
    get_tab_result -bukrs  L_T_BSEG_BEG -bukrs .
    get_tab_result -HKONT  L_T_BSEG_BEG -HKONT .
    get_tab_result -KUNNR  L_T_BSEG_BEG -KUNNR .
    get_tab_result -LIFNR  L_T_BSEG_BEG -LIFNR .
    get_tab_result -MATNR  L_T_BSEG_BEG -MATNR .
    get_tab_result -ANLN1  L_T_BSEG_BEG -ANLN1 .
    get_tab_result -KOSTL  L_T_BSEG_BEG -KOSTL .

     IF L_T_BSEG_BEG -SHKZG  'H' .
      get_tab_result -dmbtr1  L_T_BSEG_BEG -dmbtr .
     ELSE .
      get_tab_result -dmbtr  L_T_BSEG_BEG -dmbtr .
     ENDIF .

     COLLECT get_tab_result .
     CLEAR get_tab_result .

   ENDLOOP .

   LOOP  AT  L_T_BSEG_END .
    get_tab_result -BUKRS  L_T_BSEG_END -BUKRS .
    get_tab_result -HKONT  L_T_BSEG_END -HKONT .
    get_tab_result -KUNNR  L_T_BSEG_END -KUNNR .
    get_tab_result -LIFNR  L_T_BSEG_END -LIFNR .
    get_tab_result -MATNR  L_T_BSEG_END -MATNR .
    get_tab_result -ANLN1  L_T_BSEG_END -ANLN1 .
    get_tab_result -KOSTL  L_T_BSEG_END -KOSTL .

     IF L_T_BSEG_END -SHKZG  'H' .
      get_tab_result -dmbtr7  L_T_BSEG_END -dmbtr .
     ELSE .
      get_tab_result -dmbtr6  L_T_BSEG_END -dmbtr .
     ENDIF .
     COLLECT get_tab_result .
     CLEAR get_tab_result .

   ENDLOOP .

   LOOP  AT get_tab_result .
     IF get_tab_result -KUNNR  IS  NOT  INITIAL .
       SELECT  SINGLE NAME1  INTO get_tab_result -NAME1  FROM KNA1  WHERE kunnr  get_tab_result -KUNNR .
     ENDIF .

     IF get_tab_result -LIFNR  IS  NOT  INITIAL .
       SELECT  SINGLE NAME1  INTO get_tab_result -NAME1  FROM LFA1  WHERE LIFNR  get_tab_result -LIFNR .
     ENDIF .

     IF get_tab_result -matnr  IS  NOT  INITIAL .
       SELECT  SINGLE MAKTX  INTO get_tab_result -NAME1  FROM MAKT  WHERE MATNR  get_tab_result -MATNR .
     ENDIF .

     IF get_tab_result -ANLN1  IS  NOT  INITIAL .
       SELECT  SINGLE ANLHTXT  INTO get_tab_result -NAME1  FROM ANLH  WHERE ANLN1  get_tab_result -ANLN1 .
     ENDIF .

     IF get_tab_result -KOSTL  IS  NOT  INITIAL .
       SELECT  SINGLE KTEXT  INTO get_tab_result -NAME1  FROM CSKT  WHERE spras  '1'
         AND KOSTL  get_tab_result -KOSTL .

     ENDIF .

     SELECT  SINGLE TXT20  INTO get_tab_result -TXT20  FROM skat  WHERE spras  '1'
       AND saknr  get_tab_result -HKONT .

     IF get_tab_result -dmbtr  get_tab_result -dmbtr1 >=  0 .
      get_tab_result -dmbtr  get_tab_result -dmbtr  get_tab_result -dmbtr1 .
      get_tab_result -dmbtr1  0 .
     ELSE .
      get_tab_result -dmbtr1  get_tab_result -dmbtr1  get_tab_result -dmbtr .
      get_tab_result -dmbtr  0 .
     ENDIF .

     IF get_tab_result -dmbtr6  get_tab_result -dmbtr7 >=  0 .
      get_tab_result -dmbtr6  get_tab_result -dmbtr6  get_tab_result -dmbtr7 .
      get_tab_result -dmbtr7  0 .
     ELSE .
      get_tab_result -dmbtr7  get_tab_result -dmbtr7  get_tab_result -dmbtr6 .
      get_tab_result -dmbtr6  0 .
     ENDIF .

     IF get_tab_result -LIFNR <>  '' .
      get_tab_result -matnr  get_tab_result -LIFNR .
     ELSEIF get_tab_result -kunnr <>  '' .
      get_tab_result -matnr  get_tab_result -KUNNR .
     ELSEIF get_tab_result -ANLN1 <>  '' .
      get_tab_result -matnr  get_tab_result -anln1 .
     ELSEIF get_tab_result -kostL <>  '' .
      get_tab_result -matnr  get_tab_result -kostl .
     ENDIF .

     MODIFY get_tab_result  TRANSPORTING NAME1 TXT20 MATNR DMBTR DMBTR1 DMBTR6 DMBTR7 .

   ENDLOOP .

   SORT get_tab_result  BY BUKRS HKONT MATNR .


ENDFORM .                     " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_AUTH_CHECK  .
   DATA LT_T001  LIKE  TABLE  OF T001  WITH  HEADER  LINE .
   SELECT
    bukrs
     INTO CORRESPONDING  FIELDS  OF  TABLE LT_T001
     FROM T001
     WHERE BUKRS  IN S_BUKRS .

   LOOP  AT LT_T001 .

     CALL  FUNCTION  'ZZ_CHECK_REPAUTH'
       EXPORTING
        I_MODULE       'FC'
        I_BUKRS        LT_T001 -BUKRS
       EXCEPTIONS
        NO_AUTHORIZED  1
        NO_MODULE      2
         OTHERS         3 .
     IF SY -SUBRC <>  0 .

     ENDIF .

   ENDLOOP .

ENDFORM .                     " FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
*&      Form  FRM_OUTPUT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_OUTPUT_DATA  .
   DATA :PROGNAME  LIKE SY -REPID ,
         TITLE  TYPE LVC_TITLE .
  PROGNAME  SY -REPID .
   TITLE  '总账科目余额辅助表' .
   DATA :gt_fieldcat  TYPE slis_t_fieldcat_alv  WITH  HEADER  LINE ,
       gs_layout  TYPE slis_layout_alv ,
       gt_sort  TYPE slis_t_sortinfo_alv .
   DATA :gt_events  TYPE slis_t_event  WITH  HEADER  LINE . "ALV事件

  gs_layout -zebra  'X' .
  gs_layout -colwidth_optimize  'X' .
  gs_layout -detail_popup  'X' .

  gt_fieldcat -fieldname  'BUKRS' .
  gt_fieldcat -seltext_m  '公司代码' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'HKONT' .
  gt_fieldcat -seltext_m  '总账科目' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'txt20' .
  gt_fieldcat -seltext_m  '总账科目描述' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'MATNR' .
  gt_fieldcat -seltext_m  '辅助核算编码' .
  gt_fieldcat -no_zero  'X' .
  gt_fieldcat - hotspot  'X' .
   Append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'NAME1' .
  gt_fieldcat -seltext_m  '辅助核算名称' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR' .
  gt_fieldcat -seltext_m  '期初借方' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR1' .
  gt_fieldcat -seltext_m  '期初贷方' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR2' .
  gt_fieldcat -seltext_m  '本期借方' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR3' .
  gt_fieldcat -seltext_m  '本期贷方' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR4' .
  gt_fieldcat -seltext_m  '借方累计' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR5' .
  gt_fieldcat -seltext_m  '贷方累计' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR6' .
  gt_fieldcat -seltext_m  '期末借方' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .

  gt_fieldcat -fieldname  'DMBTR7' .
  gt_fieldcat -seltext_m  '期末贷方' .
  gt_fieldcat -no_zero  'X' .
   append gt_fieldcat .
   CLEAR gt_fieldcat .


   CALL  FUNCTION  'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                 progname
*   I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND            'FRM_USER_COMMAND' "处理用户双击事件
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                       TITLE
*   I_GRID_SETTINGS                   =
      IS_LAYOUT                          GS_LAYOUT
      IT_FIELDCAT                        gt_fieldcat[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
      IT_SORT                            GT_SORT
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
      I_SAVE                             'A'
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
     TABLES
      T_OUTTAB                           get_tab_result
     EXCEPTIONS
      PROGRAM_ERROR                      1
       OTHERS                             2
             .
   IF SY -SUBRC <>  0 .
* Implement suitable error handling here
   ENDIF .

ENDFORM .                     " FRM_OUTPUT_DATA

FORM FRM_USER_COMMAND  USING r_ucomm  LIKE sy -ucomm
                                         rs_selfield  TYPE slis_selfield .
  rs_selfield -col_stable  'X' .
  rs_selfield -row_stable  'X' .
  rs_selfield - refresh  'X' . "自动刷新
******参考标准报表QA33之后,发现只要这3行就可以实现自动刷新,并且返回时鼠标回到原来的位置

   DATA :bdcdata_wa  TYPE bdcdata ,
       bdcdata_tab  TYPE  TABLE  OF bdcdata .

   DATA :opt  TYPE ctu_params .

   CASE r_ucomm .
     WHEN  '&IC1' .
       READ  TABLE get_tab_result  INDEX rs_selfield -tabindex .
       IF sy -subrc  0 .
         IF get_tab_result -hkont  eq  222 .
           CLEAR bdcdata_wa .
          bdcdata_wa - program  'FAGL_ACCOUNT_ITEMS_GL' .
          bdcdata_wa - dYNPRO  '1000' .
          bdcdata_wa -DYNBEGIN  'X' .
           APPEND bdcdata_wa  TO bdcdata_TAB .

           CLEAR bdcdata_wa .
          bdcdata_wa -FNAM  'BDC_CURSOR' .
          bdcdata_wa -FVAL  'SD_BUKRS-LOW' .
           APPEND bdcdata_wa  TO bdcdata_TAB .

           CLEAR bdcdata_wa .
          bdcdata_wa -FNAM  'BDC_OKCODE' .
          bdcdata_wa -FVAL  '=ONLI' .
           APPEND bdcdata_wa  TO bdcdata_TAB .

           CLEAR bdcdata_wa .
          bdcdata_wa -FNAM  'SD_SAKNR-LOW' .
          bdcdata_wa -FVAL  get_tab_result -HKONT .
           APPEND bdcdata_wa  TO bdcdata_TAB .

           CLEAR bdcdata_wa .
          bdcdata_wa -FNAM  'SD_BUKRS-LOW' .
          bdcdata_wa -FVAL  get_tab_result -BUKRS .
           APPEND bdcdata_wa  TO bdcdata_TAB .

           CLEAR bdcdata_wa .
          bdcdata_wa -FNAM  'X_OPSEL' .
          bdcdata_wa -FVAL  '' .
           APPEND bdcdata_wa  TO bdcdata_TAB .

           CLEAR bdcdata_wa .
          bdcdata_wa -FNAM  'X_AISEL' .
          bdcdata_wa -FVAL  'X' .
           APPEND bdcdata_wa  TO bdcdata_TAB .

          OPT -DISMODE  'E' .
           call  TRANSACTION  'FAGLL03'  USING bdcdata_tab OPTIONS  FROM opt .
         elseif  get_tab_result -kunnr  IS  NOT  INITIAL .
           set  PARAMETER  ID  'KUN'  FIELD get_tab_result -kunnr .
           set  PARAMETER  ID  'BUK'  FIELD get_tab_result -bukrs .
           call  TRANSACTION  'FD10N'  AND  SKIP  FIRST  SCREEN .

         ELSEIF get_tab_result -lifnr  IS  NOT  INITIAL .
           SET  PARAMETER  ID  'LIF' FIELD get_tab_result -lifnr .
           SET  PARAMETER  ID  'BUK'  FIELD get_tab_result -BUKRS .
           CALL  TRANSACTION  'FK10N'  AND  SKIP  FIRST  SCREEN .

         ELSEIF get_tab_result -matnr  IS  NOT  INITIAL .

           CLEAR bdcdata_wa .
          bdcdata_wa - program   'FAGL_ACCOUNT_ITEMS_GL' .
          bdcdata_wa - dynpro    '1000' .
          bdcdata_wa -dynbegin  'X' .
           APPEND bdcdata_wa  TO bdcdata_tab .

           CLEAR bdcdata_wa .
          bdcdata_wa -fnam  'BDC_CURSOR' .
          bdcdata_wa -fval  'SD_BUKRS-LOW' .
           APPEND bdcdata_wa  TO bdcdata_tab .

           CLEAR bdcdata_wa .
          bdcdata_wa -fnam  'BDC_OKCODE' .
          bdcdata_wa -fval  '=ONLI' .
           APPEND bdcdata_wa  TO bdcdata_tab .

           CLEAR bdcdata_wa .
          bdcdata_wa -fnam  'SD_SAKNR-LOW' .
          bdcdata_wa -fval  GET_TAB_RESULT -HKONT .
           APPEND bdcdata_wa  TO bdcdata_tab .

           CLEAR bdcdata_wa .
          bdcdata_wa -fnam  'SD_BUKRS-LOW' .
          bdcdata_wa -fval  GET_TAB_RESULT -BUKRS .
           APPEND bdcdata_wa  TO bdcdata_tab .

           CLEAR bdcdata_wa .
          bdcdata_wa -fnam  'X_OPSEL' .
          bdcdata_wa -fval  '' .
           APPEND bdcdata_wa  TO bdcdata_tab .

           CLEAR bdcdata_wa .
          bdcdata_wa -fnam  'X_AISEL' .
          bdcdata_wa -fval  'X' .
           APPEND bdcdata_wa  TO bdcdata_tab .


          opt -DISMODE  'E' .
           call  TRANSACTION  'FAGLL03'  USING bdcdata_tab OPTIONS  FROM opt .
         ELSE .
           set  PARAMETER  ID  'SAK'  FIELD get_tab_result -hkont .
           set  PARAMETER  ID  'BUK'  FIELD get_tab_result -bukrs .
           call  TRANSACTION  'FS10N'  AND  SKIP  FIRST  SCREEN .

         ENDIF .

       ENDIF .

   ENDCASE .
ENDFORM .
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值