Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

how to perform sorting in sap script without an internal table .?

Former Member
0 Likes
1,833

hello all,

i want to display data in sap script without using internal table and subroutine pool. my value directly comes in sap script  form.

how i can sort it.

and also see the attachment. for printing currency . is it right code?

Any one knows.

Thanks And Regards,

Nilesh Yalij

hello all,

i want to display data in sap script without using internal table and subroutine pool. my value directly comes in sap script  form.

how i can sort it.

and also see the attachment. for printing currency . is it right code?

Any one knows.

Thanks And Regards,

Nilesh Yalij

7 REPLIES 7
Read only

Former Member
0 Likes
1,645

You cannot sort data in sapscript alone. You should sort it in your driver program.

For printing currency, you can use &G_CURR& directly.

Read only

0 Likes
1,645

is it write which is i,m writed code.

i just assign like

if g_curr = '  '

g_curr = mhnd-waers.

g_curr is display in header also.

is it correct.

Read only

0 Likes
1,645

the value is not comes into driver program(subroutine pool).and also it doesnt have internal table in program

*&---------------------------------------------------------------------*

*& Subroutine Pool   Z_FI_DUNNING_SUBROUT

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& This is subroutine program to print script ZF150_BE_DUNN_01

*& for dunning letter.

*&---------------------------------------------------------------------*

PROGRAM  Z_FI_DUNNING_SUBROUT.

*&---------------------------------------------------------------------*

*&      Form  GET_PO_DETAILS

*&---------------------------------------------------------------------*

* To get PO or ref and PO DATE

*----------------------------------------------------------------------*

*      -->INPUT      text

*      -->OUTPUT     text

*----------------------------------------------------------------------*

FORM GET_PO_DETAILS TABLES INPUT STRUCTURE ITCSY

                             OUTPUT STRUCTURE ITCSY.

  DATA: L_BELNR(10), " billing doc/sales inv

        L_VBELV TYPE VBELN_VON, " to get sales order no

        L_BSTKD(15), "TYPE bstkd

        L_BSTDK TYPE BSTDK,

        EINDT2 TYPE STRING,

        D1 TYPE STRING,

        D2 TYPE STRING,

        D3 TYPE STRING,

        L_GJAHR(4),

        L_BLART TYPE BLART,

        L_REBZG TYPE REBZG,

        V_AWKEY LIKE BKPF-AWKEY.

  CLEAR : L_BELNR,L_VBELV,L_BSTKD,L_BSTDK,EINDT2,D1,D2,D3,L_BLART,L_REBZG.

  READ TABLE INPUT WITH KEY NAME = 'MHND-BELNR'. " READ THE billling no

  L_BELNR = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-GJAHR'.

  L_GJAHR = INPUT-VALUE.

  CLEAR INPUT.

  SELECT SINGLE BLART

  INTO L_BLART

  FROM BKPF

  WHERE BELNR EQ L_BELNR

  AND GJAHR EQ L_GJAHR.

  IF L_BLART NE 'RV'.

*checking for credit value

    SELECT SINGLE REBZG

    INTO L_REBZG

    FROM BSEG

    WHERE BELNR EQ L_BELNR

    AND GJAHR EQ L_GJAHR

    AND KOART EQ 'D'

    AND SHKZG EQ 'H'.

    MOVE L_REBZG TO L_BSTKD.

    MOVE SPACE TO EINDT2.

  ELSE.

*to get sales order number

    SELECT SINGLE VBELV INTO L_VBELV

      FROM VBFA

      WHERE VBELN EQ L_BELNR

      AND VBTYP_V EQ 'C'.

    IF L_VBELV = ' '.

      SELECT SINGLE AWKEY FROM BKPF

              INTO V_AWKEY

              WHERE BELNR = L_BELNR

                AND GJAHR = L_GJAHR.

      L_BELNR = V_AWKEY+0(10).

*to get sales order number

      SELECT SINGLE VBELV INTO L_VBELV

        FROM VBFA

        WHERE VBELN EQ L_BELNR

        AND VBTYP_V EQ 'C'.

    ENDIF.

*to get PO number and date

    IF SY-SUBRC EQ 0.

      SELECT SINGLE BSTKD BSTDK

      INTO (L_BSTKD , L_BSTDK)

      FROM VBKD

      WHERE VBELN EQ L_VBELV.

    ENDIF.

    MOVE L_BSTDK TO EINDT2.

    D3 = EINDT2+0(4).

    D2 = EINDT2+4(2).

    D1 = EINDT2+6(2).

    CONCATENATE D1 '.' D2 '.' D3 INTO EINDT2.

  ENDIF.

  READ TABLE OUTPUT WITH KEY NAME = 'G_PONO'.

  OUTPUT-VALUE = L_BSTKD.

  MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PONO'.

  READ TABLE OUTPUT WITH KEY NAME = 'G_PODAT'.

  OUTPUT-VALUE = EINDT2.

  MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PODAT'.

ENDFORM.                    "GET_PO_DETAILS

*&---------------------------------------------------------------------*

*&      Form  GET_BILL_AMOUNT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->INPUT      text

*      -->OUTPUT     text

*----------------------------------------------------------------------*

FORM GET_BILL_AMOUNT TABLES INPUT STRUCTURE ITCSY

                             OUTPUT STRUCTURE ITCSY.

  DATA: L_BELNR1(10), " billing doc/sales inv

        L_WRBTR TYPE SUFPF_F150,

        L_GJAHR(4),

        L_WRBTR1 TYPE STRING,

        L_BLART TYPE BLART,

        L_REBZG TYPE REBZG.

  CLEAR : L_BELNR1,L_WRBTR,L_REBZG,L_BLART.

  READ TABLE INPUT WITH KEY NAME = 'MHND-BELNR'. " READ THE billling no

  L_BELNR1 = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-GJAHR'.

  L_GJAHR = INPUT-VALUE.

  CLEAR INPUT.

  SELECT SINGLE BLART

  INTO L_BLART

  FROM BKPF

  WHERE BELNR EQ L_BELNR1

  AND GJAHR EQ L_GJAHR.

  IF L_BLART NE 'RV'.

*checking for credit value

    SELECT SINGLE REBZG

    INTO L_REBZG

    FROM BSEG

    WHERE BELNR EQ L_BELNR1

    AND GJAHR EQ L_GJAHR

    AND KOART EQ 'D'

    AND SHKZG EQ 'H'.

    MOVE SPACE TO L_WRBTR1.

  ELSE.

*to get invoice amount

    SELECT SINGLE WRBTR INTO L_WRBTR

      FROM BSEG

      WHERE BELNR EQ L_BELNR1

      AND BUZEI EQ '001'

      AND GJAHR EQ L_GJAHR.

    MOVE L_WRBTR TO L_WRBTR1.

  ENDIF.

  IF SY-SUBRC EQ 0.

    READ TABLE OUTPUT WITH KEY NAME = 'G_BILLAMT'.

    OUTPUT-VALUE = L_WRBTR1.

    MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_BILLAMT'.

  ENDIF.

ENDFORM.                    "GET_BILL_AMOUNT

*&---------------------------------------------------------------------*

*&      Form  GET_TERMDAYS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->INPUT      text

*      -->OUTPUT     text

*----------------------------------------------------------------------*

FORM GET_TERMDAYS TABLES INPUT STRUCTURE ITCSY

                             OUTPUT STRUCTURE ITCSY.

  DATA: L_KUNNR TYPE KUNNR, " billing doc/sales inv

        L_ZTERM(4),

        L_ZTAG1 TYPE DZTAGE,

        L_ZTAG TYPE STRING.

  CLEAR : L_KUNNR,L_ZTERM,L_ZTAG1.

  READ TABLE INPUT WITH KEY NAME = 'F150D-KTONR'. " READ THE billling no

  L_KUNNR = INPUT-VALUE.

  CLEAR INPUT.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

    EXPORTING

      INPUT  = L_KUNNR

    IMPORTING

      OUTPUT = L_KUNNR.

*to get invoice amount

  SELECT SINGLE ZTERM INTO L_ZTERM

  FROM KNB1

  WHERE KUNNR EQ L_KUNNR.

  IF SY-SUBRC EQ 0.

    SELECT SINGLE ZTAG1 INTO L_ZTAG1

    FROM T052

    WHERE ZTERM EQ L_ZTERM.

  ENDIF.

  IF L_ZTAG1+0(1) = '0'.

    MOVE L_ZTAG1+1(2) TO L_ZTAG.

  ELSE.

    MOVE L_ZTAG1 TO L_ZTAG.

  ENDIF.

  IF SY-SUBRC EQ 0.

    READ TABLE OUTPUT WITH KEY NAME = 'G_TERMDAY'.

    OUTPUT-VALUE = L_ZTAG.

    MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_TERMDAY'.

  ENDIF.

ENDFORM.                    "GET_TERMDAYS

*&---------------------------------------------------------------------*

*&      Form  GET_CONTACT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->INPUT      text

*      -->OUTPUT     text

*----------------------------------------------------------------------*

FORM GET_CONTACT TABLES INPUT STRUCTURE ITCSY

                             OUTPUT STRUCTURE ITCSY.

  DATA: L_KUNNR TYPE KUNNR, " billing doc/sales inv

        L_TELF1(16),

        L_TELFX(31).

  CLEAR : L_KUNNR,L_TELF1,L_TELFX.

  READ TABLE INPUT WITH KEY NAME = 'F150D-KTONR'. " READ THE billling no

  L_KUNNR = INPUT-VALUE.

  CLEAR INPUT.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

    EXPORTING

      INPUT  = L_KUNNR

    IMPORTING

      OUTPUT = L_KUNNR.

*to get telephone number and fax

  SELECT SINGLE TELF1 TELFX

  INTO (L_TELF1 , L_TELFX)

  FROM KNA1

  WHERE KUNNR EQ L_KUNNR.

  IF SY-SUBRC EQ 0.

    READ TABLE OUTPUT WITH KEY NAME = 'G_TELNO'.

    OUTPUT-VALUE = L_TELF1.

    MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_TELNO'.

  ENDIF.

  IF SY-SUBRC EQ 0.

    READ TABLE OUTPUT WITH KEY NAME = 'G_FAXNO'.

    OUTPUT-VALUE = L_TELFX.

    MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_FAXNO'.

  ENDIF.

ENDFORM.                    "GET_CONTACT

*&---------------------------------------------------------------------*

*&      Form  GET_CONTACTPERSON

*&---------------------------------------------------------------------*

*       To get contact person

*----------------------------------------------------------------------*

*      -->INPUT      text

*      -->OUTPUT     text

*----------------------------------------------------------------------*

FORM GET_CONTACTPERSON TABLES INPUT STRUCTURE ITCSY

                             OUTPUT STRUCTURE ITCSY.

  DATA: L_KUNNR TYPE KUNNR, " billing doc/sales inv

        L_PNAME(35).

  CLEAR : L_KUNNR,L_PNAME.

  READ TABLE INPUT WITH KEY NAME = 'F150D-KTONR'. " READ THE billling no

  L_KUNNR = INPUT-VALUE.

  CLEAR INPUT.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

    EXPORTING

      INPUT  = L_KUNNR

    IMPORTING

      OUTPUT = L_KUNNR.

*to get telephone number and fax

  SELECT SINGLE NAME1

  INTO (L_PNAME)

  FROM KNVK

  WHERE KUNNR EQ L_KUNNR.

  IF SY-SUBRC EQ 0.

    READ TABLE OUTPUT WITH KEY NAME = 'G_PNAME'.

    OUTPUT-VALUE = L_PNAME.

    MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PNAME'.

  ENDIF.

ENDFORM.                    "GET_CONTACTPERSON

*&---------------------------------------------------------------------*

*&      Form  GET_FORMPAGE

*&---------------------------------------------------------------------*

* To get form page

*----------------------------------------------------------------------*

*      -->INPUT      text

*      -->OUTPUT     text

*----------------------------------------------------------------------*

FORM GET_FORMPAGE TABLES INPUT STRUCTURE ITCSY

                             OUTPUT STRUCTURE ITCSY.

  DATA: L_PAGE TYPE TDFORMPAGS, " form page

        L_TOTPAGE TYPE STRING. " string

  CLEAR : L_PAGE,L_TOTPAGE.

  READ TABLE INPUT WITH KEY NAME = 'SAPSCRIPT-FORMPAGES'. " READ THE billling no

  L_PAGE = INPUT-VALUE.

  CLEAR INPUT.

  MOVE L_PAGE TO L_TOTPAGE.

  READ TABLE OUTPUT WITH KEY NAME = 'G_PAGE'.

  OUTPUT-VALUE = L_TOTPAGE.

  MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PAGE'.

ENDFORM.                    "GET_PO_DETAILS

* Commented by AGT, for Retreving the No. Days in payment term and adding to Over Due Days.

**&---------------------------------------------------------------------*

**&      Form  GET_ARREARS

**&---------------------------------------------------------------------*

** To get outstanding days

**----------------------------------------------------------------------*

**      -->INPUT      text

**      -->OUTPUT     text

**----------------------------------------------------------------------*

*FORM GET_ARREARS TABLES input STRUCTURE itcsy

*                             output STRUCTURE itcsy.

*

*  DATA: l_WRSHB type string,

*        l_verzn type verzn,

*        l_verzn1 type string value ' '.

*

*  CLEAR : l_WRSHB,l_verzn.

*

*  READ TABLE input WITH KEY name = 'MHND-WRSHB'.

*  l_WRSHB = input-value.

*  CLEAR input.

*

*  READ TABLE input WITH KEY name = 'MHND-VERZN'.

*  l_VERZN = input-value.

*  CLEAR input.

*

* FIND FIRST OCCURRENCE OF '-' IN l_WRSHB.

*

* if sy-subrc = 0.

*   move space to l_verzn1.

* else.

*   move l_verzn to l_verzn1.

* ENDIF.

*

*  READ TABLE output WITH KEY name = 'G_VERZN'.

*  output-value = l_verzn1.

*  MODIFY output TRANSPORTING value WHERE name = 'G_VERZN'.

*

*ENDFORM.

* Commented by AGT, for Retreving the No. Days in payment term and adding to Over Due Days.

*&---------------------------------------------------------------------*

*&      Form  GET_ARREARS

*&---------------------------------------------------------------------*

* To get outstanding days

*----------------------------------------------------------------------*

FORM GET_ARREARS TABLES INPUT STRUCTURE ITCSY

                       OUTPUT STRUCTURE ITCSY.

  DATA: L_WRSHB TYPE STRING,

        L_VERZN TYPE VERZN,

        L_VERZN1 TYPE STRING VALUE ' ',

        LGJAHR(4),

        LBELNR(10),

        LBUKRS(4),

        LZBD1T TYPE DZBD1T,

        LZBD2T TYPE DZBD3T,

        LZBD3T TYPE DZBD3T,

        LBUZEI TYPE BUZEI.

  CLEAR : L_WRSHB,L_VERZN,LGJAHR,LBELNR,LBUKRS,LZBD1T,LZBD2T,LZBD3T,LBUZEI.

  READ TABLE INPUT WITH KEY NAME = 'MHND-WRSHB'.

  L_WRSHB = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-VERZN'.

  L_VERZN = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-BELNR'.

  LBELNR = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-GJAHR'.

  LGJAHR = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-BUKRS'.

  LBUKRS = INPUT-VALUE.

  CLEAR INPUT.

  READ TABLE INPUT WITH KEY NAME = 'MHND-BUZEI'.

  LBUZEI = INPUT-VALUE.

  CLEAR INPUT.

  FIND FIRST OCCURRENCE OF '-' IN L_WRSHB.

  IF SY-SUBRC = 0.

    MOVE SPACE TO L_VERZN1.

  ELSE.

    MOVE L_VERZN TO L_VERZN1.

  ENDIF.

  SELECT ZBD1T ZBD2T ZBD3T

                FROM BSID

                INTO (LZBD1T,LZBD2T,LZBD3T)

                WHERE BELNR = LBELNR

                AND   GJAHR = LGJAHR

                AND   BUKRS = LBUKRS

                AND   BUZEI = LBUZEI.

    IF LZBD3T IS NOT INITIAL.

      L_VERZN1 = L_VERZN1 + LZBD3T.

    ELSEIF LZBD3T IS INITIAL AND LZBD2T IS NOT INITIAL.

      L_VERZN1 = L_VERZN1 + LZBD2T.

    ELSEIF LZBD2T IS INITIAL AND LZBD1T IS NOT INITIAL.

      L_VERZN1 = L_VERZN1 + LZBD1T.

    ENDIF.

  ENDSELECT.

  READ TABLE OUTPUT WITH KEY NAME = 'G_VERZN'.

  OUTPUT-VALUE = L_VERZN1.

  MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_VERZN'.

ENDFORM.                    "GET_ARREARS

Read only

0 Likes
1,645

So, which internal table contains the data that is printed (and you'd like to see sorted)?

Read only

Former Member
0 Likes
1,645

Hello patrik.



in dunning report , can i sort it?

the field which is comes from mhnd-belnr and mhnd-bldat.

Read only

Clemenss
Active Contributor
0 Likes
1,645

Hi Nilesh,

what is your expected result? What data are to be sorted? Where in the form does output occur?

In most cases, sapscript lists are created by triggering a forms element (i.e. /E 531 ) repeatedly in a loop. Any sorting must occur in the driver program.

If you don't know the driver program (probably SAP standard), you can turn on sapscript debugger, set a breakpoint at the element you are interested in. Stoppimg ther, enter ABAP debugger ( /h ), check call hierarchy. Here you may find where function WRITE_FORM is called.

As you did not mention the FORM and/or the REPORT/TRANSACTION name, I can't help you more.If you are lucky, you can place an implicit enhancement and sort the internal table according to your needs.

Regards Clemens

Read only

Former Member
0 Likes
1,645

Hello Guys issue is resolved.\

By using dunning report is sorted through OBMD tcode.