Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Home arrow Sample Code arrow ABAP Reports arrow ALV Aged Trial Balance Report
ALV Aged Trial Balance Report PDF Print E-mail
User Rating: / 0
PoorBest 
Written by Keshav Goel   
Saturday, 20 January 2007
Aged Trial balance report using select-options for Sales Group and Pricing Group. The logic is copied from Aged trial balance Print program which already exists. Output is displayed using ALV. *----------------------------------------------------------------------*
 * Report       : ZARAGEDTB                                             *
 * Author       : Keshav Goel                                           *
 * Application  : FINANCIAL ACCOUNTING
 * Date created : Nov 2001                                              *
 * Description  : Aged Trial balance report using select-options for
 *                Sales Group and Pricing Group. The logic is copied from
 *                Aged trial balance Print program which already exists.
 *                Output is displayed using ALV.
 *----------------------------------------------------------------------*
 REPORT ZARAGEDTB  NO STANDARD PAGE  HEADING
                               LINE-SIZE 132
                               LINE-COUNT 65.
 *----------------------------------------------------------------------*
 * Tables
 *----------------------------------------------------------------------*
 TABLES: BSID,          "open items (Accounting: Secondary Index for Customers)
         KNA1,          "customer master
         RF140,         "temp stru (Work Fields for Correspondence (SAPF140*))
         BSAD,          "cleared items (Accounting: Secondary Index for Customers (Cleared Items))
         KNVV,          "sales data (Customer Master Sales Data)
         KNKK.          "credit mgt (
 
 *----------------------------------------------------------------------*
 * constants and variables
 *----------------------------------------------------------------------*
 TYPE-POOLS: SLIS.
 
 DATA: FIELDCAT             TYPE SLIS_T_FIELDCAT_ALV,
       FIELDCAT1             TYPE SLIS_T_FIELDCAT_ALV,
       FIELDCAT_LN          LIKE LINE OF FIELDCAT,
       LAYOUT_IN            TYPE SLIS_LAYOUT_ALV,
       LAYOUT_IN1           TYPE SLIS_LAYOUT_ALV,
       SORTCAT              TYPE SLIS_T_SORTINFO_ALV,
       SORTCAT1              TYPE SLIS_T_SORTINFO_ALV,
       SORTCAT_LN           LIKE LINE OF SORTCAT,
       EVENTCAT1             TYPE SLIS_T_EVENT,
       EVENTCAT             TYPE SLIS_T_EVENT,
       EVENTCAT_LN          LIKE LINE OF EVENTCAT,
       COL_POS              TYPE I.
 
 DATA:  TARG_MONTH(2)         TYPE N,                        "0001
        TARG_YEAR(4)          TYPE N,                        "0001
        TARG_MTH_ABS          TYPE P,                        "0001
        DOC_MONTH(2)          TYPE N,                        "0001
        DOC_YEAR(4)           TYPE N,                        "0001
        DOC_MTH_ABS           TYPE P,                        "0001
        MTH_RESULT            TYPE P,                        "0001
        EXT_DAYS              TYPE P,
        V_DAYS(3)             TYPE C,
        v_kkber               like knkk-kkber.
 
 DATA:
       BEGIN OF INREC OCCURS 1000,                           "0001
         KUNNR    LIKE BSID-KUNNR,
         BELNR    LIKE BSID-BELNR,
         GJAHR    LIKE BSID-GJAHR,
         BLDAT    LIKE BSID-BLDAT,
         XBLNR    LIKE BSID-XBLNR,
         BLART    LIKE BSID-BLART,
         SGTXT    LIKE BSID-SGTXT,
         SHKZG    LIKE BSID-SHKZG,
         DMBTR    LIKE BSID-DMBTR,
         ZFBDT    LIKE BSID-ZFBDT,
         ZBD1T    LIKE BSID-ZBD1T,
         ZBD2T    LIKE BSID-ZBD2T,
         ZBD3T    LIKE BSID-ZBD3T,
         VBELN    LIKE BSID-VBELN,                           " 0001
         ZUONR    LIKE BSID-ZUONR,
       END OF INREC,
       BEGIN OF T_ITEM OCCURS 1000,                          " 0001
         KUNNR LIKE BSID-KUNNR,
         BELNR LIKE BSID-BELNR,
         GJAHR LIKE BSID-GJAHR,
         BLDAT LIKE BSID-BLDAT,
         XBLNR LIKE BSID-XBLNR,
         BLART LIKE BSID-BLART,
         SGTXT LIKE BSID-SGTXT,
         VBELN LIKE BSID-VBELN,
         ZFBDT LIKE BSID-ZFBDT,
         DMBTR LIKE BSID-DMBTR,
         DAYS(3)  TYPE C,
         ZUONR    LIKE BSID-ZUONR,
       END OF T_ITEM,
       T_LINE LIKE T_ITEM OCCURS 1000 WITH HEADER LINE,      " 0001
       BEGIN OF ITAB OCCURS 1000,
         KUNNR    LIKE KNA1-KUNNR,
         TOTAL    TYPE P DECIMALS 2,
         ZFUTURE  TYPE P DECIMALS 2,
         ZCURRENT TYPE P DECIMALS 2,
         30DAYS   TYPE P DECIMALS 2,
         60DAYS   TYPE P DECIMALS 2,
         90DAYS   TYPE P DECIMALS 2,
         99DAYS   TYPE P DECIMALS 2,
         VKBUR    LIKE KNVV-VKBUR,
         VWERK    LIKE KNVV-VWERK,
         VKGRP    LIKE KNVV-VKGRP,
         KLIMK    LIKE KNKK-KLIMK,
         CASHD    LIKE KNKK-CASHD,
         GRUPP    LIKE KNKK-GRUPP,
         ERDAT    LIKE KNA1-ERDAT,
         NAME1    LIKE KNA1-NAME1,
         NAME2    LIKE KNA1-NAME2,
         STRAS    like kna1-STRAS,
         ORT01    like kna1-ORT01,
         TELF1    LIKE KNA1-TELF1,
         PSORT(10),
       END OF ITAB.
 DATA: SEL_TAB     TYPE TABLE OF RSPARAMS with header line..
 data: t_variant like DISVARIANT occurs 0 with header line.
 *----------------------------------------------------------------------*
 * parameters and select-options
 *----------------------------------------------------------------------*
 SELECTION-SCREEN BEGIN OF BLOCK BLCK0 WITH FRAME TITLE TEXT-001.
 
 PARAMETERS: STIDA LIKE SY-DATUM DEFAULT SY-DATUM OBLIGATORY,
             P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY.
 *           P_BUKRS LIKE T001-BUKRS DEFAULT 'CC01' OBLIGATORY.  "0003
 SELECT-OPTIONS: S_VKBUR FOR KNVV-VKBUR,
                 S_KUNNR   FOR BSID-KUNNR MATCHCODE OBJECT DEBI,
                 S_VKGRP FOR KNVV-VKGRP,
                 s_bzirk for knvv-bzirk,
                 S_KONDA FOR KNVV-KONDA,
                 S_KDGRP FOR KNVV-KVGR2,
                 s_kvgr2 for knvv-kvgr2,
                 S_KKBER FOR KNKK-KKBER,
                 S_GRUPP FOR KNKK-GRUPP,
                 S_CTLPC FOR KNKK-CTLPC,
                 S_KTOKD FOR KNA1-KTOKD,
                 s_blart for bsid-blart.
 PARAMETERS: P_FUTURE AS CHECKBOX DEFAULT 'X'.
 SELECTION-SCREEN END OF BLOCK BLCK0.
 *----------------------------------------------------------------------*
 * start-of-selection.
 *----------------------------------------------------------------------*
 START-OF-SELECTION.
 *  PERFORM BUILD_EVENTCAT.
 *-----------------
   PERFORM GET_CUSTOMER_INVOICES.
 * filter records based on selection criteria
   PERFORM FILTER_RECORDS.
 
 END-OF-SELECTION.
 *---------------
   PERFORM ADD_SORT_FIELD.
   PERFORM WRITE_REPORT.
 *&---------------------------------------------------------------------*
 *&      Form  FILTER_RECORDS
 *&---------------------------------------------------------------------*
 *       To collect all the required data from DB and store them in
 *       internal table.
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM FILTER_RECORDS.
 *
 * delete records based on selection criteria
   LOOP AT ITAB.
     SELECT VKBUR VKGRP VWERK ERDAT KONDA KDGRP bzirk kvgr2
       INTO (ITAB-VKBUR, ITAB-VKGRP, ITAB-VWERK, KNVV-ERDAT,
             KNVV-KONDA, KNVV-KDGRP,knvv-bzirk,knvv-kvgr2)
       FROM KNVV WHERE KUNNR =  ITAB-KUNNR
                 ORDER BY ERDAT DESCENDING.
       CASE ITAB-VKBUR.
         WHEN 'SA1'.
           ITAB-VKBUR = 'SF25'.
         WHEN 'QLD1'.
           ITAB-VKBUR = 'SF23'.
         WHEN 'WA1'.
           ITAB-VKBUR = 'SF26'.
       ENDCASE.
       EXIT.
     ENDSELECT.
     IF ITAB-VKBUR IN S_VKBUR AND
        ITAB-VKGRP IN S_VKGRP AND
        KNVV-KONDA IN S_KONDA AND
        KNVV-KDGRP IN S_KDGRP and
        knvv-bzirk in s_bzirk and
        knvv-kvgr2 in s_kvgr2.
     ELSE.
       DELETE ITAB.
       CONTINUE.
     ENDIF.
     SELECT SINGLE KLIMK GRUPP CASHD
       INTO (ITAB-KLIMK, ITAB-GRUPP, ITAB-CASHD)
       FROM KNKK WHERE KUNNR =  ITAB-KUNNR
                 AND   KKBER IN S_KKBER
                 AND   CTLPC IN S_CTLPC
                 AND   GRUPP IN S_GRUPP.
     IF SY-SUBRC NE 0.
       DELETE ITAB.
       CONTINUE.
     ENDIF.
     SELECT SINGLE NAME1 NAME2 TELF1 ERDAT stras ORT01
          INTO (ITAB-NAME1, ITAB-NAME2, ITAB-TELF1,
                  ITAB-ERDAT, itab-stras, itab-ORT01)
            FROM KNA1
            WHERE KUNNR =  ITAB-KUNNR
            AND   KTOKD IN S_KTOKD.
     IF SY-SUBRC NE 0.
       DELETE ITAB.
       CONTINUE.
     ENDIF.
     MODIFY ITAB.
   ENDLOOP.
 ENDFORM.                               " FILTER_RECORDS
 
 *&---------------------------------------------------------------------*
 *&      Form  GET_CUSTOMER_INVOICES
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM GET_CUSTOMER_INVOICES.
 
   MOVE STIDA             TO RF140-STIDA.
   MOVE RF140-STIDA+4(2)  TO TARG_MONTH.
   MOVE RF140-STIDA+0(4)  TO TARG_YEAR.
   TARG_MTH_ABS           =  ( TARG_YEAR * 12 ) + TARG_MONTH.
 
 * select open items.
   SELECT KUNNR BELNR GJAHR BLDAT XBLNR BLART SGTXT          " 0001
          SHKZG DMBTR ZFBDT ZBD1T ZBD2T ZBD3T VBELN
          zuonr
     FROM BSID INTO TABLE INREC
     WHERE BUKRS =  P_BUKRS
     AND   BUDAT LE STIDA
     AND   KUNNR IN S_KUNNR
     and   blart in s_blart.
 
   LOOP AT INREC.
     IF INREC-SHKZG = 'H'.
       INREC-DMBTR  = INREC-DMBTR * -1.
     ENDIF.
     MOVE-CORRESPONDING INREC TO T_ITEM.                     " 0001
     PERFORM COLLECT_INVOICE USING   INREC-KUNNR    INREC-DMBTR
                                     INREC-ZFBDT    INREC-ZBD1T
                                     INREC-ZBD2T    INREC-ZBD3T.
     APPEND T_ITEM.
     CLEAR T_ITEM.
   ENDLOOP.
 
 * select cleared items
   REFRESH INREC.  CLEAR INREC.
   SELECT KUNNR BELNR GJAHR BLDAT XBLNR BLART SGTXT
          SHKZG DMBTR ZFBDT ZBD1T ZBD2T ZBD3T VBELN
          zuonr
     FROM BSAD INTO TABLE INREC
     WHERE BUKRS =  P_BUKRS
     AND   BUDAT LE STIDA
     AND   AUGDT >  STIDA
     AND   KUNNR IN S_KUNNR
     and   blart in s_blart.
   LOOP AT INREC.
     IF INREC-SHKZG = 'H'.
       INREC-DMBTR  = INREC-DMBTR * -1.
     ENDIF.
     MOVE-CORRESPONDING INREC TO T_ITEM.                     " 0001
     PERFORM COLLECT_INVOICE USING   INREC-KUNNR    INREC-DMBTR
                                     INREC-ZFBDT    INREC-ZBD1T
                                     INREC-ZBD2T    INREC-ZBD3T.
     APPEND T_ITEM.
     CLEAR T_ITEM.                                           " 0001
   ENDLOOP.
 
 ENDFORM.                    " GET_CUSTOMER_INVOICES
 
 *&---------------------------------------------------------------------*
 *&      Form  COLLECT_INVOICE
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *      -->P_BSID_KUNNR  text
 *      -->P_BSID_DMBTR  text
 *      -->P_BSID_ZFBDT  text
 *      -->P_BSID_ZFBDT1  text
 *      -->P_BSID_ZFBDT2  text
 *      -->P_BSID_ZFBDT3  text
 *----------------------------------------------------------------------*
 FORM COLLECT_INVOICE USING    PP_KUNNR
                               PP_DMBTR
                               PP_ZFBDT
                               PP_ZBD1T
                               PP_ZBD2T
                               PP_ZBD3T.
 
   DOC_MONTH            =  PP_ZFBDT+4(2).
   DOC_YEAR             =  PP_ZFBDT+0(4).
   DOC_MTH_ABS          =  ( DOC_YEAR * 12 ) + DOC_MONTH.
   MTH_RESULT           =  ( TARG_MTH_ABS    - DOC_MTH_ABS ).
 
   IF NOT PP_ZBD3T IS INITIAL.
     MOVE PP_ZBD3T TO EXT_DAYS.
   ELSEIF NOT PP_ZBD2T IS INITIAL.
     MOVE PP_ZBD2T TO EXT_DAYS.
   ELSEIF NOT PP_ZBD1T IS INITIAL.
     MOVE PP_ZBD1T TO EXT_DAYS.
   ELSE.
     CLEAR EXT_DAYS.
   ENDIF.
 * CHECK with Andrew whether this is working or not
 * if extended payment terms exist, subtract no of mths from mth_result
 *  IF NOT EXT_DAYS IS INITIAL.
 *    CASE EXT_DAYS.
 *      WHEN 30.
 *        SUBTRACT 1 FROM MTH_RESULT.
 *      WHEN 60.
 *        SUBTRACT 2 FROM MTH_RESULT.
 *      WHEN 90.
 *        SUBTRACT 3 FROM MTH_RESULT.
 *      WHEN 120.
 *        SUBTRACT 4 FROM MTH_RESULT.
 *    ENDCASE.
 *  ENDIF.
 * change to key date
   IF P_FUTURE = 'X'.                                        " 0001
     IF MTH_RESULT      <= 0.
       ITAB-ZCURRENT    =  PP_DMBTR.
       T_ITEM-DAYS       = 'CUR'.
     ELSEIF MTH_RESULT  =  1.
       ITAB-30DAYS      =  PP_DMBTR.
       T_ITEM-DAYS       = '30D'.
     ELSEIF MTH_RESULT  =  2.
       ITAB-60DAYS      =  PP_DMBTR.
       T_ITEM-DAYS        = '60D'.
     ELSEIF MTH_RESULT  =  3.
       ITAB-90DAYS      =  PP_DMBTR.
       T_ITEM-DAYS        = '90D'.
     ELSEIF MTH_RESULT  >  3.
       ITAB-99DAYS      =  PP_DMBTR.
       T_ITEM-DAYS        = '99D'.
     ENDIF.
   ELSE.
     IF MTH_RESULT      < 0.
       ITAB-ZFUTURE     =  PP_DMBTR.
       T_ITEM-DAYS       = 'FUT'.
     ELSEIF MTH_RESULT  = 0.
       ITAB-ZCURRENT = PP_DMBTR.
       T_ITEM-DAYS       = 'CUR'.
     ELSEIF MTH_RESULT  =  1.
       ITAB-30DAYS      =  PP_DMBTR.
       T_ITEM-DAYS       = '30D'.
     ELSEIF MTH_RESULT  =  2.
       ITAB-60DAYS      =  PP_DMBTR.
       T_ITEM-DAYS       = '60D'.
     ELSEIF MTH_RESULT  =  3.
       ITAB-90DAYS      =  PP_DMBTR.
       T_ITEM-DAYS       = '90D'.
     ELSEIF MTH_RESULT  >  3.
       ITAB-99DAYS      =  PP_DMBTR.
       T_ITEM-DAYS       = '99D'.
     ENDIF.
   ENDIF.                                                    " 0001
   ITAB-KUNNR         = PP_KUNNR.
   ITAB-TOTAL         = PP_DMBTR.
   COLLECT ITAB.
   CLEAR ITAB.
 ENDFORM.                    " COLLECT_INVOICE
 *&---------------------------------------------------------------------*
 *&      Form  ADD_SORT_FIELD
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM ADD_SORT_FIELD.
   DATA: L_AMOUNT(9)  TYPE N.
   IF P_FUTURE = 'X'.
     LOOP AT ITAB.
       L_AMOUNT = 999999999.
       IF     ITAB-99DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-99DAYS.
         CONCATENATE 'A' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-90DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-90DAYS.
         CONCATENATE 'B' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-60DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-60DAYS.
         CONCATENATE 'C' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-30DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-30DAYS.
         CONCATENATE 'D' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-ZCURRENT > 0.
         L_AMOUNT = L_AMOUNT - ITAB-ZCURRENT.
         CONCATENATE 'E' L_AMOUNT INTO ITAB-PSORT.
 *     ELSEif itab-zfuture > 0.
 *       L_AMOUNT = L_AMOUNT - ITAB-zfuture.
 *       CONCATENATE 'F' L_AMOUNT INTO ITAB-PSORT.
       ELSE.
         L_AMOUNT = ABS( ITAB-TOTAL ).
         CONCATENATE 'G' L_AMOUNT INTO ITAB-PSORT.
       ENDIF.
       MODIFY ITAB.
     ENDLOOP.
   ELSE.
     LOOP AT ITAB.
       L_AMOUNT = 999999999.
       IF     ITAB-99DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-99DAYS.
         CONCATENATE 'A' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-90DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-90DAYS.
         CONCATENATE 'B' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-60DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-60DAYS.
         CONCATENATE 'C' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-30DAYS > 0.
         L_AMOUNT = L_AMOUNT - ITAB-30DAYS.
         CONCATENATE 'D' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-ZCURRENT > 0.
         L_AMOUNT = L_AMOUNT - ITAB-ZCURRENT.
         CONCATENATE 'E' L_AMOUNT INTO ITAB-PSORT.
       ELSEIF ITAB-ZFUTURE > 0.
         L_AMOUNT = L_AMOUNT - ITAB-ZFUTURE.
         CONCATENATE 'F' L_AMOUNT INTO ITAB-PSORT.
       ELSE.
         L_AMOUNT = ABS( ITAB-TOTAL ).
         CONCATENATE 'G' L_AMOUNT INTO ITAB-PSORT.
       ENDIF.
       MODIFY ITAB.
     ENDLOOP.
   ENDIF.
 
 ENDFORM.                    " ADD_SORT_FIELD
 *&---------------------------------------------------------------------*
 *&      Form  WRITE_REPORT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM WRITE_REPORT.
   PERFORM BUILD_FIELDCAT.
   PERFORM BUILD_SORTCAT.
   PERFORM BUILD_EVENTCAT.
   PERFORM BUILD_LAYOUT.
   PERFORM START_LIST_VIEWER.
 ENDFORM.                    " WRITE_REPORT
 
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_FIELDCAT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM BUILD_FIELDCAT.
 * KUNNR
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNA1'.
   FIELDCAT_LN-FIELDNAME          = 'KUNNR'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   fieldcat_ln-emphasize = 'C41'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Name1
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNA1'.
   FIELDCAT_LN-FIELDNAME          = 'NAME1'.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Credit Limit
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNKK'.
   FIELDCAT_LN-FIELDNAME          = 'KLIMK'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   fieldcat_ln-emphasize = 'C41'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Total Amount
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = 'TOTAL'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   FIELDCAT_LN-SELTEXT_L          = 'Out.St.Amount'.
   FIELDCAT_LN-SELTEXT_M          = 'Out.St.Amount'.
   FIELDCAT_LN-SELTEXT_S          = 'Out.St.Amount'.
   APPEND FIELDCAT_LN TO FIELDCAT.
   IF P_FUTURE NE 'X'.
 * Future
     ADD 1 TO COL_POS.
     CLEAR FIELDCAT_LN.
     FIELDCAT_LN-REF_TABNAME        = 'BSID'.
     FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
     FIELDCAT_LN-FIELDNAME          = 'ZFUTURE'.
     FIELDCAT_LN-COL_POS            = COL_POS.
     FIELDCAT_LN-DO_SUM             = 'X'.
     FIELDCAT_LN-HOTSPOT            = 'X'.
     fieldcat_ln-emphasize = 'C41'.
     FIELDCAT_LN-SELTEXT_L          = 'Future'.
     FIELDCAT_LN-SELTEXT_M          = 'Future'.
     FIELDCAT_LN-SELTEXT_S          = 'Future'.
     APPEND FIELDCAT_LN TO FIELDCAT.
   ENDIF.
 * Current
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = 'ZCURRENT'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-SELTEXT_L          = 'Current'.
   FIELDCAT_LN-SELTEXT_M          = 'Current'.
   FIELDCAT_LN-SELTEXT_S          = 'Current'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * 30 Days
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = '30DAYS'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-SELTEXT_L          = '30 Days'.
   FIELDCAT_LN-SELTEXT_M          = '30 Days'.
   FIELDCAT_LN-SELTEXT_S          = '30 Days'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * 60 Days
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = '60DAYS'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-SELTEXT_L          = '60 Days'.
   FIELDCAT_LN-SELTEXT_M          = '60 Days'.
   FIELDCAT_LN-SELTEXT_S          = '60 Days'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * 90 Days
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = '90DAYS'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-SELTEXT_L          = '90 Days'.
   FIELDCAT_LN-SELTEXT_M          = '90 Days'.
   FIELDCAT_LN-SELTEXT_S          = '90 Days'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * 99 Days
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = '99DAYS'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   fieldcat_ln-emphasize = 'C41'.
   FIELDCAT_LN-SELTEXT_L          = '120 Days'.
   FIELDCAT_LN-SELTEXT_M          = '120 Days'.
   FIELDCAT_LN-SELTEXT_S          = '120 Days'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 
 * Last Payment Date
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNKK'.
   FIELDCAT_LN-FIELDNAME          = 'CASHD'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 
 * Street Name
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNA1'.
   FIELDCAT_LN-FIELDNAME          = 'STRAS'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 
 * City Details
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNA1'.
   FIELDCAT_LN-FIELDNAME          = 'ORT01'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 
 
 * Telephone
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNA1'.
   FIELDCAT_LN-FIELDNAME          = 'TELF1'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Credit Group
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNKK'.
   FIELDCAT_LN-FIELDNAME          = 'GRUPP'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Sales Office
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNVV'.
   FIELDCAT_LN-FIELDNAME          = 'VKBUR'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Cust Creat Date
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNA1'.
   FIELDCAT_LN-FIELDNAME          = 'ERDAT'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Del Plant
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNVV'.
   FIELDCAT_LN-FIELDNAME          = 'VWERK'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Sales Group
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'KNVV'.
   FIELDCAT_LN-FIELDNAME          = 'VKGRP'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT.
 * Sort Criteria
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'KUNNR'.
   FIELDCAT_LN-FIELDNAME          = 'PSORT'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-SELTEXT_L          = 'Sort Field'.
   FIELDCAT_LN-SELTEXT_M          = 'Sort Field'.
   FIELDCAT_LN-SELTEXT_S          = 'Sort Field'.
   APPEND FIELDCAT_LN TO FIELDCAT.
 
 ENDFORM.                    " BUILD_FIELDCAT
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_SORTCAT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM BUILD_SORTCAT.
 *  SORTCAT_LN-SPOS          = '1'.
   SORTCAT_LN-SPOS          = '2'.                           " 0001
   SORTCAT_LN-FIELDNAME     = 'PSORT'.
   SORTCAT_LN-UP            = 'X'.                           " 0001
 *  sortcat_ln-subtot        = 'X'.
   APPEND SORTCAT_LN TO SORTCAT.
 
   CLEAR SORTCAT_LN.
 *  SORTCAT_LN-SPOS          = '2'.
 *  SORTCAT_LN-FIELDNAME     = 'KUNNR'.
   SORTCAT_LN-SPOS          = '1'.                           " 0001
   SORTCAT_LN-FIELDNAME     = 'NAME1'.                       " 0001
   SORTCAT_LN-UP            = 'X'.
   APPEND SORTCAT_LN TO SORTCAT.
 
 ENDFORM.                    " BUILD_SORTCAT
 
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_EVENTCAT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM BUILD_EVENTCAT.
   EVENTCAT_LN-NAME = 'TOP_OF_PAGE'.
   EVENTCAT_LN-FORM = 'PAGE_HEADER'.
   APPEND EVENTCAT_LN TO EVENTCAT.
 ENDFORM.                    " BUILD_EVENTCAT
 
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_LAYOUT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM BUILD_LAYOUT.
    LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.
 *  layout_in-no_hotspot        = 'X'.
   LAYOUT_IN-ZEBRA             = 'X'.
   LAYOUT_IN-GET_SELINFOS      = 'X'.
 ENDFORM.                    " BUILD_LAYOUT
 
 *&---------------------------------------------------------------------*
 *&      Form  START_LIST_VIEWER
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*
 FORM START_LIST_VIEWER.
   DATA: PGM LIKE SY-REPID.
   PGM = SY-REPID.
 *  if t_variant[] is initial.
 *    t_variant-report = pgm.
 *    t_variant-variant = '/ATB'.
 *    t_variant-TEXT = '/ATB'.
 *    t_variant-DEPENDVARS = 'S'.
 *    append t_variant.
 *    clear t_variant.
 *  endif.
   CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
             I_CALLBACK_PROGRAM      = PGM
             I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
             IT_FIELDCAT             = FIELDCAT
             IT_SORT                 = SORTCAT
             IS_LAYOUT               = LAYOUT_IN
             I_SAVE                  = 'A'
 *            IS_VARIANT              = t_variant
             IT_EVENTS               = EVENTCAT
        TABLES
             T_OUTTAB                = ITAB
        EXCEPTIONS
             OTHERS                  = 2.
 
 ENDFORM.                    " START_LIST_VIEWER
 *-----------------------------------------------------------------------
 FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
                         SELFIELD TYPE SLIS_SELFIELD.
   data l_kunnr(10) type n.
   READ TABLE ITAB INDEX SELFIELD-TABINDEX.
   CHECK SY-SUBRC = 0.
   CASE UCOMM.
     WHEN '&IC1'.
       CASE SELFIELD-SEL_TAB_FIELD.
         WHEN 'ITAB-KUNNR'.
 *          SET PARAMETER ID 'KUN' FIELD ITAB-KUNNR.
 *          SET PARAMETER ID 'BUK' FIELD P_BUKRS.
           if itab-kunnr co '0123456789 '.
             l_kunnr = itab-kunnr.
             itab-kunnr = l_kunnr.
           endif.
           select single kkber into knkk-kkber
                               from knkk where kunnr = itab-kunnr.
           if sy-subrc eq 0.
             v_kkber = knkk-kkber.
           else.
             clear v_kkber.
           endif.
           refresh sel_tab[].
           MOVE: 'KUNNR' TO SEL_TAB-SELNAME,
                 'P'     TO SEL_TAB-KIND,      " PARAMETER
                 itab-kunnr   TO SEL_TAB-LOW.
           APPEND SEL_TAB.
           clear sel_tab.
           MOVE: 'KKBER' TO SEL_TAB-SELNAME,
                 'P'     TO SEL_TAB-KIND,      " PARAMETER
                 v_kkber  TO SEL_TAB-LOW.
           APPEND SEL_TAB.
           clear sel_tab.
 
           SUBMIT RFDKLI41
                  USING SELECTION-SET 'VAR1'
                  WITH SELECTION-TABLE SEL_TAB
                  AND  RETURN.
 *          CALL TRANSACTION 'XD03'.
         WHEN 'ITAB-ZCURRENT'.                               " 0001
           V_DAYS = 'CUR'.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.
         WHEN 'ITAB-ZFUTURE'.
           V_DAYS = 'FUT'.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.
         WHEN 'ITAB-30DAYS'.
           V_DAYS = '30D'.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.
         WHEN 'ITAB-60DAYS'.
           V_DAYS = '60D'.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.
         WHEN 'ITAB-90DAYS'.
           V_DAYS = '90D'.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.
         WHEN 'ITAB-99DAYS'.
           V_DAYS = '99D'.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.
         WHEN 'ITAB-TOTAL'.
           V_DAYS = ' '.
           PERFORM DISPLAY_LINE_ITEM_LEVEL.                  " 0001
       ENDCASE.
   ENDCASE.
 ENDFORM.
 *----------------------------------------------------------------------*
 * PAGE_HEADER
 *----------------------------------------------------------------------*
 FORM PAGE_HEADER.
 
   WRITE:/02 'Report:',SY-REPID,
         115 'Time:', SY-TIMLO.
 
   WRITE: /02 'User:', (10) SY-UNAME,
          115 'Date:', SY-DATUM.
 
 
   WRITE: /52 'Customer Aged Trial Balance List',            "0002
          115 'Page:', SY-PAGNO.
   SKIP.
   ULINE /(132).
 
 ***
   WRITE: /02 'Open Items as of:', STIDA.
 
   IF NOT S_VKGRP[] IS INITIAL.
     IF S_VKGRP-HIGH IS INITIAL.
       WRITE: 52 'Sales Group        :',S_VKGRP-LOW.
     ELSE.
       WRITE: 52 'Sales Group        :',S_VKGRP-LOW,'to',S_VKGRP-HIGH.
     ENDIF.
   ELSE.
     WRITE: 52 'Sales Group        : All'.
   ENDIF.
 
   IF NOT S_GRUPP[] IS INITIAL.
     IF S_GRUPP-HIGH IS INITIAL.
       WRITE: 107 'Credit group :',S_GRUPP-LOW.
     ELSE.
       WRITE: 107 'Credit group :',S_GRUPP-LOW,' to',S_GRUPP-HIGH.
     ENDIF.
   ELSE.
     WRITE: 107 'Credit Group : All'.
   ENDIF.
 ***
   WRITE: /02 'Comapany Code   :', P_BUKRS.
   IF NOT S_KONDA[] IS INITIAL.
     IF S_KONDA-HIGH IS INITIAL.
       WRITE: 52 'Price group        :',S_KONDA-LOW.
     ELSE.
       WRITE: 52 'Price group        :',S_KONDA-LOW,' to',S_KONDA-HIGH.
     ENDIF.
   ELSE.
     WRITE: 52 'Price Group        : All'.
   ENDIF.
 
   IF NOT S_CTLPC[] IS INITIAL.
     IF S_CTLPC-HIGH IS INITIAL.
       WRITE: 107 'Risk category:',S_CTLPC-LOW.
     ELSE.
       WRITE: 107 'Risk category:',S_CTLPC-LOW,' to',S_CTLPC-HIGH.
     ENDIF.
   ELSE.
     WRITE: 107 'Risk category: All'.
   ENDIF.
 ***
   IF NOT S_VKBUR[] IS INITIAL.
     IF S_VKBUR-HIGH IS INITIAL.
       WRITE:/02 'Sales Office    :',S_VKBUR-LOW.
     ELSE.
       WRITE:/02 'Sales Office    :',S_VKBUR-LOW,' to',S_VKBUR-HIGH.
     ENDIF.
   ELSE.
     WRITE:/02 'Sales Office    : All'.
   ENDIF.
 
   IF NOT S_KDGRP[] IS INITIAL.
     IF S_KDGRP-HIGH IS INITIAL.
       WRITE: 52 'Customer group     :',S_KDGRP-LOW.
     ELSE.
       WRITE: 52 'Customer group     :',S_KDGRP-LOW,' to',S_KDGRP-HIGH.
     ENDIF.
   ELSE.
     WRITE: 52 'Customer group     : All'.
   ENDIF.
 
   IF NOT S_KTOKD[] IS INITIAL.
     IF S_KTOKD-HIGH IS INITIAL.
       WRITE: 107 'Account Group:',S_KTOKD-LOW.
     ELSE.
       WRITE: 107 'Account Group:',S_KTOKD-LOW,' to',S_KTOKD-HIGH.
     ENDIF.
   ELSE.
     WRITE: 107 'Account Group: All'.
   ENDIF.
 ***
   IF NOT S_KUNNR[] IS INITIAL.
     IF S_KUNNR-HIGH IS INITIAL.
       WRITE: /02 'Customer No     :',S_KUNNR-LOW.
     ELSE.
       WRITE: /02 'Customer No     :',S_KUNNR-LOW,' to',S_KUNNR-HIGH.
     ENDIF.
   ELSE.
     WRITE: /02 'Customer No     : All'.
   ENDIF.
 
   IF NOT S_KKBER[] IS INITIAL.
     IF S_KKBER-HIGH IS INITIAL.
       WRITE: 52 'Credit Control Area:',S_KKBER-LOW.
     ELSE.
       WRITE: 52 'Credit Control Area:',S_KKBER-LOW,' to',S_KKBER-HIGH.
     ENDIF.
   ELSE.
     WRITE: 52 'Credit Control Area: All'.
   ENDIF.
   SKIP.
 ENDFORM.
 *&---------------------------------------------------------------------*
 *&      Form  display_line_item_level
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 FORM DISPLAY_LINE_ITEM_LEVEL.
   REFRESH T_LINE[].
   IF V_DAYS EQ SPACE.
     LOOP AT T_ITEM WHERE KUNNR = ITAB-KUNNR.
       MOVE-CORRESPONDING T_ITEM TO T_LINE.
       APPEND T_LINE.
       CLEAR T_LINE.
     ENDLOOP.
   ELSE.
     LOOP AT T_ITEM WHERE KUNNR = ITAB-KUNNR
                    AND   DAYS = V_DAYS.
       MOVE-CORRESPONDING T_ITEM TO T_LINE.
       APPEND T_LINE.
       CLEAR T_LINE.
     ENDLOOP.
   ENDIF.
   PERFORM BUILD_FIELDCAT_ITEM.
   PERFORM BUILD_SORTCAT_ITEM.
   PERFORM BUILD_EVENTCAT_ITEM.
   PERFORM BUILD_LAYOUT_ITEM.
   PERFORM START_LIST_VIEWER_ITEM.
 
 ENDFORM.                    " display_line_item_level
 
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_FIELDCAT_item
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 FORM BUILD_FIELDCAT_ITEM.
   REFRESH FIELDCAT1.
 * DOCU TYPE
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME          = 'BLART'.
   FIELDCAT_LN-FIELDNAME          = 'BLART'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 * REF dOCU
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME          = 'XBLNR'.
   FIELDCAT_LN-FIELDNAME          = 'XBLNR'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 
 * BILLING dOCU
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME          = 'VBELN'.
   FIELDCAT_LN-FIELDNAME          = 'VBELN'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 * Belnr
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-FIELDNAME          = 'BELNR'.
   FIELDCAT_LN-FIELDNAME          = 'BELNR'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-HOTSPOT            = 'X'.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 * Budat
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-FIELDNAME          = 'BLDAT'.
   FIELDCAT_LN-FIELDNAME          = 'BLDAT'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 
 * Total Amount
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'DMBTR'.
   FIELDCAT_LN-FIELDNAME          = 'DMBTR'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   FIELDCAT_LN-DO_SUM             = 'X'.
   FIELDCAT_LN-SELTEXT_L          = 'Amount'.
   FIELDCAT_LN-SELTEXT_M          = 'Amount'.
   FIELDCAT_LN-SELTEXT_S          = 'Amount'.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 
 * zfbdt
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-FIELDNAME          = 'ZFBDT'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 * Total Amount
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-REF_FIELDNAME      = 'SGTXT'.
   FIELDCAT_LN-FIELDNAME          = 'SGTXT'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 
   ADD 1 TO COL_POS.
   CLEAR FIELDCAT_LN.
   FIELDCAT_LN-REF_TABNAME        = 'BSID'.
   FIELDCAT_LN-FIELDNAME          = 'ZUONR'.
   FIELDCAT_LN-COL_POS            = COL_POS.
   APPEND FIELDCAT_LN TO FIELDCAT1.
 
 
 
 ENDFORM.                    " BUILD_FIELDCAT_item
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_SORTCAT_item
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 FORM BUILD_SORTCAT_ITEM.
   REFRESH SORTCAT1.
   SORTCAT_LN-SPOS          = '1'.
   SORTCAT_LN-FIELDNAME     = 'BLDAT'.
   SORTCAT_LN-UP            = 'X'.
 *  sortcat_ln-subtot        = 'X'.
   APPEND SORTCAT_LN TO SORTCAT1.
 
   CLEAR SORTCAT_LN.
   SORTCAT_LN-SPOS          = '2'.
   SORTCAT_LN-FIELDNAME     = 'BELNR'.
   SORTCAT_LN-UP            = 'X'.
   APPEND SORTCAT_LN TO SORTCAT1.
 
 ENDFORM.                    " BUILD_SORTCAT_item
 
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_EVENTCAT_item
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 FORM BUILD_EVENTCAT_ITEM.
   REFRESH EVENTCAT1.
 *  EVENTCAT_LN-NAME = 'TOP_OF_PAGE'.
 *  EVENTCAT_LN-FORM = 'PAGE_HEADER'.
 *  APPEND EVENTCAT_LN TO EVENTCAT1.
 ENDFORM.                    " BUILD_EVENTCAT_item
 
 *&---------------------------------------------------------------------*
 *&      Form  BUILD_LAYOUT_item
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 FORM BUILD_LAYOUT_ITEM.
   LAYOUT_IN1-COLWIDTH_OPTIMIZE = 'X'.
 *  layout_in-no_hotspot        = 'X'.
   LAYOUT_IN1-ZEBRA             = 'X'.
   LAYOUT_IN1-GET_SELINFOS      = 'X'.
 ENDFORM.                    " BUILD_LAYOUT_item
 
 *&---------------------------------------------------------------------*
 *&      Form  START_LIST_VIEWER_item
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 FORM START_LIST_VIEWER_ITEM.
   DATA: PGM LIKE SY-REPID.
   PGM = SY-REPID.
   CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
             I_CALLBACK_PROGRAM      = PGM
             I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'
             IT_FIELDCAT             = FIELDCAT1
             IT_SORT                 = SORTCAT1
             IS_LAYOUT               = LAYOUT_IN1
             I_SAVE                  = 'A'
             IT_EVENTS               = EVENTCAT1
        TABLES
             T_OUTTAB                = T_LINE
        EXCEPTIONS
             OTHERS                  = 2.
 
 ENDFORM.                    " START_LIST_VIEWER_item
 *---------------------------------------------------------------------*
 *       FORM USER_COMMAND1                                            *
 *---------------------------------------------------------------------*
 *       ........                                                      *
 *---------------------------------------------------------------------*
 *  -->  UCOMM                                                         *
 *  -->  SELFIELD                                                      *
 *---------------------------------------------------------------------*
 FORM USER_COMMAND1 USING UCOMM LIKE SY-UCOMM
                         SELFIELD TYPE SLIS_SELFIELD.
   IF SY-LSIND = 0.
   ENDIF.
   READ TABLE T_LINE INDEX SELFIELD-TABINDEX.
   CHECK SY-SUBRC = 0.
   CASE UCOMM.
     WHEN '&IC1'.
       CASE SELFIELD-SEL_TAB_FIELD.
         WHEN 'T_LINE-KUNNR'.
           SET PARAMETER ID 'KUN' FIELD ITAB-KUNNR.
           SET PARAMETER ID 'BUK' FIELD P_BUKRS.
           CALL TRANSACTION 'XD03' and skip first screen.
         WHEN 'T_LINE-BELNR'.
           SET PARAMETER ID 'BLN' FIELD T_LINE-BELNR.
           SET PARAMETER ID 'BUK' FIELD P_BUKRS.
           SET PARAMETER ID 'GJR' FIELD T_LINE-GJAHR.
           CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
         WHEN 'T_LINE-VBELN'.
           SET PARAMETER ID 'VF' FIELD T_LINE-VBELN.
           CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
       ENDCASE.
   ENDCASE.
 ENDFORM.
 
< Prev   Next >

Google Search

Google Ads

Shared Bottom Border