2008 Dec 25 11:13 AM
Hi all
I joined like fresher could you help me how to write the abap code
structure of the abap code
Hi all
I joined like fresher could you help me how to write the abap code
structure of the abap code
2008 Dec 25 12:08 PM
CHECK THIS
I HOPE IT WILL HELP YOU.
&----
*& Report ZDTK_FI_CRDB
*&
&----
*&
&----
*& DESCRIPTION : CREDIT DEBIT NOTE FOR CUSTOMER OR VENDOR.
&----
REPORT ZDTK_FI_CRDB NO STANDARD PAGE HEADING
LINE-COUNT 65(5)
LINE-SIZE 80
MESSAGE-ID ZTAR_FI
.
&----
*& STRUCTURE DECLARATION
&----
TYPES : BEGIN OF TY_ADDR,
BUKRS TYPE BUKRS, "COMPANY CODE
LIFNR TYPE LIFNR, "VENDOR NO
KUNNR TYPE KUNNR, "CUSTOMJER NO
NAME1 TYPE NAME1, "NAME1
NAME2 TYPE NAME2, "NAME2
ORT01 TYPE ORT01, "CITY
ORT02 TYPE ORT02,
PSTLZ TYPE PSTLZ, "POSTAL CODE
STRAS TYPE STRAS, "STREET
ADRNR TYPE ADRNR, "ADDRESS NO
TELF1 TYPE TELF1, "TELEFHONE NO
TELF2 TYPE TELF2, "TELEFHONE NO 2
TELFX TYPE TELFX, "FAX
END OF TY_ADDR,
BEGIN OF TY_LFA1,
KUNNR TYPE KUNNR, "CUSTOMJER NO
NAME1 TYPE NAME1, "NAME1
NAME2 TYPE NAME2, "NAME2
ORT01 TYPE ORT01, "CITY
ORT02 TYPE ORT02,
PSTLZ TYPE PSTLZ, "POSTAL CODE
STRAS TYPE STRAS, "STREET
ADRNR TYPE ADRNR, "ADDRESS NO
TELF1 TYPE TELF1, "TELEFHONE NO
TELF2 TYPE TELF2, "TELEFHONE NO 2
TELFX TYPE TELFX, "FAX
END OF TY_LFA1,
BEGIN OF TY_DOCM,
GJAHR TYPE GJAHR,
BELNR TYPE BELNR_D,
BUDAT TYPE BUDAT,
BLDAT TYPE BLDAT,
BLART TYPE BLART,
BSCHL TYPE BSCHL,
SHKZG TYPE SHKZG,
XBLNR TYPE XBLNR,
DMBTR TYPE DMBTR,
SGTXT TYPE SGTXT,
REBZG TYPE REBZG,
REBZJ TYPE REBZJ,
KUNNR TYPE KUNNR,
LIFNR TYPE LIFNR,
END OF TY_DOCM.
&----
*& TABLE DECLARATION
&----
DATA : T_ADDR TYPE STANDARD TABLE OF TY_ADDR,
&----
*& WORK AREA DECLARATION
&----
W_ADDR TYPE TY_ADDR,
W_DOCM TYPE TY_DOCM,
W_LFA1 TYPE TY_LFA1,
&----
*& GLOBLE VARIABLE DECLARATION
&----
G_KUNNR TYPE KUNNR,
G_LIFNR TYPE LIFNR,
DCAMT TYPE DMBTR.
&----
*& INITIALIZATION
&----
INITIALIZATION.
CLEAR :
*REFRESH :
&----
*& SELECTION SCREEN DECLARATION
&----
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS : S_BUKRS TYPE BSID-BUKRS OBLIGATORY DEFAULT '1000'.
PARAMETERS : S_BELNR TYPE BELNR_D OBLIGATORY DEFAULT '1600000070'.
PARAMETERS : S_GJAHR TYPE GJAHR OBLIGATORY DEFAULT '2008'.
PARAMETERS : ASON TYPE BUDAT OBLIGATORY DEFAULT SY-DATUM.
PARAMETERS : S_KUNNR TYPE KUNNR MODIF ID GP1.
PARAMETERS : S_LIFNR TYPE LIFNR MODIF ID GP2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN : END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS R1 RADIOBUTTON GROUP RAO DEFAULT 'X' USER-COMMAND hit.
SELECTION-SCREEN COMMENT (50) TEXT-003 FOR FIELD R1.
PARAMETERS R2 RADIOBUTTON GROUP RAO.
SELECTION-SCREEN COMMENT (50) TEXT-004 FOR FIELD R2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK B2.
*SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-005.
*SELECTION-SCREEN SKIP 1.
*SELECTION-SCREEN BEGIN OF LINE.
*PARAMETERS R3 RADIOBUTTON GROUP RAJ DEFAULT 'X' USER-COMMAND hit.
*SELECTION-SCREEN COMMENT (50) TEXT-006 FOR FIELD R1.
*PARAMETERS R4 RADIOBUTTON GROUP RAJ.
*SELECTION-SCREEN COMMENT (50) TEXT-007 FOR FIELD R2.
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN SKIP 1.
*SELECTION-SCREEN : END OF BLOCK B3.
&----
*& AT SELECTION SCREEN
&----
AT SELECTION-SCREEN.
PERFORM VALIDATE_SELECTION.
&----
*& AT SELECTION SCREEN OUTPUT
&----
AT SELECTION-SCREEN OUTPUT.
PERFORM SCREEN_OUTPUT.
&----
*& START OF SELECTION
&----
START-OF-SELECTION.
IF R1 = 'X'.
PERFORM GET_DOCUMENT_L.
ELSEIF R2 = 'X'.
PERFORM GET_DOCUMENT_K.
ENDIF.
&----
*& END OF SELECTION
&----
END-OF-SELECTION.
PERFORM DISPLAY.
&----
*& TOP OF PAGE
&----
*TOP-OF-PAGE.
PERFORM PAGE_HEADER.
&----
*& Form VALIDATE_SELECTION
&----
text
----
form VALIDATE_SELECTION .
DATA : L_BUKRS TYPE BSID-BUKRS.
SELECT SINGLE BUKRS FROM KNB1
INTO L_BUKRS
WHERE BUKRS = S_BUKRS.
*IF SY-SUBRC <> 0.
*MESSAGE E001.
*LEAVE LIST-PROCESSING.
*ENDIF.
DATA : L_KUNNR TYPE BSID-KUNNR.
SELECT SINGLE KUNNR FROM BSID
INTO L_KUNNR
WHERE KUNNR = S_KUNNR.
*IF SY-SUBRC <> 0.
*MESSAGE E002.
*LEAVE LIST-PROCESSING.
*ENDIF.
endform. " VALIDATE_SELECTION
&----
*& Form SCREEN_OUTPUT
&----
text
----
form SCREEN_OUTPUT .
IF R1 = 'X'.
LOOP AT SCREEN.
if screen-group1 = 'GP1'.
SCREEN-active = '0'.
*SCREEN-INTENSIFIED = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-group1 = 'GP2'.
SCREEN-active = '0'.
*SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
endform. " SCREEN_OUTPUT
&----
*& Form GET_DOCUMENT_L
&----
text
----
FORM GET_DOCUMENT_L .
DATA : MESSG(60).
SELECT SINGLE BUKRS
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSIK
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSIK INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_LFA1.
ELSE.
SELECT SINGLE BUKRS
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSAK
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSAK INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_LFA1.
ELSE.
CONCATENATE 'THERE IS NO DOCUMENT NO' S_BELNR S_GJAHR 'FOR VENDOR' INTO MESSG
SEPARATED BY SPACE.
MESSAGE I011 WITH MESSG.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " GET_DOCUMENT_L
&----
*& Form GET_LFA1
&----
text
----
FORM GET_LFA1 .
SELECT SINGLE LIFNR
NAME1
NAME2
ORT01
ORT02
PSTLZ
STRAS
ADRNR
TELF1
TELF2
TELFX FROM LFA1 INTO CORRESPONDING FIELDS OF W_ADDR
WHERE LIFNR = W_DOCM-LIFNR.
ENDFORM. " GET_LFA1
&----
*& Form GET_DOCUMENT_K
&----
text
----
FORM GET_DOCUMENT_K .
DATA : MESSG(60).
SELECT SINGLE BUKRS
KUNNR
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSID
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSID INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_KNA1.
ELSE.
SELECT SINGLE BUKRS
KUNNR
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSAD
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSAD INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_KNA1.
ELSE.
CONCATENATE 'THERE IS NO DOCUMENT NO' S_BELNR S_GJAHR 'FOR CUSTOMER' INTO MESSG
SEPARATED BY SPACE.
MESSAGE I011 WITH MESSG.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " GET_DOCUMENT_K
&----
*& Form GET_KNA1
&----
text
----
FORM GET_KNA1 .
SELECT SINGLE KUNNR
NAME1
NAME2
ORT01
ORT02
PSTLZ
STRAS
ADRNR
TELF1
TELF2
TELFX FROM KNA1 INTO CORRESPONDING FIELDS OF W_ADDR
WHERE KUNNR = W_DOCM-KUNNR.
ENDFORM. " GET_KNA1
&----
*& Form DISPLAY
&----
text
----
FORM DISPLAY .
LONG TEXT *************************
*DATA : BEGIN OF inline OCCURS 0,
*
*END OF inline.
*TYPES: BEGIN OF TY_LONGT,
tdformat TYPE tdformat,
tdline TYPE tdline,
END OF TY_LONGT.
*
*DATA : TLONGT TYPE STANDARD TABLE OF TY_LONGT,
WLONGT TYPE TY_LONGT.
DATA: BEGIN OF DTEXT OCCURS 50.
*DATA: MATNR LIKE PBIM-MATNR.
INCLUDE STRUCTURE TLINE.
DATA: END OF DTEXT.
DATA: BEGIN OF HTEXT.
INCLUDE STRUCTURE THEAD.
DATA: END OF HTEXT.
DATA: BEGIN OF LTEXT OCCURS 50.
INCLUDE STRUCTURE TLINE.
DATA: END OF LTEXT.
DATA: TNAME LIKE THEAD-TDNAME.
CONCATENATE S_BUKRS W_DOCM-BELNR S_GJAHR '002' INTO TNAME.
*SEPARATED BY SPACE.
DATA : W_STXL TYPE STXL.
SELECT SINGLE * FROM STXL INTO W_STXL
WHERE TDNAME = TNAME.
IF NOT W_STXL IS INITIAL.
*SELECT * FROM PBIM WHERE WERKS IN S_WERKS.
*MOVE PBIM-BDZEI TO TNAME.
*
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = W_STXL-TDID
LANGUAGE = W_STXL-TDSPRAS
NAME = TNAME
OBJECT = W_STXL-TDOBJECT
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER = HTEXT
TABLES
LINES = LTEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT LTEXT.
IF LTEXT-TDLINE NE ''.
MOVE LTEXT-TDLINE TO DTEXT-TDLINE.
APPEND DTEXT.
ENDIF.
ENDLOOP.
ENDIF.
LONG TEXT *************************
CUSTOMER / VENDOR NO *************************
DATA : CUVE(10).
IF R1 = 'X'.
CUVE = W_ADDR-LIFNR.
ELSEIF R2 = 'X'.
CUVE = W_ADDR-KUNNR.
ENDIF.
CUSTOMER / VENDOR NO *************************
CR / DR DATA *************************
IF DCAMT IS INITIAL.
SELECT SINGLE DMBTR FROM BSIS INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ .
( KOART = 'D' OR KOART = 'K' ).
ENDIF.
CR / DR DATA *************************
DATA: CNAME TYPE BUTXT.
SELECT SINGLE BUTXT FROM T001 INTO CNAME
WHERE BUKRS = S_BUKRS.
DATA : NAME(60),
STREET(60),
TELFX(60).
CONCATENATE W_ADDR-NAME1 W_ADDR-NAME2 INTO NAME
SEPARATED BY SPACE.
CONCATENATE W_ADDR-ORT01 W_ADDR-ORT02 'POSTAL CODE :' W_ADDR-PSTLZ INTO STREET
SEPARATED BY SPACE.
CONCATENATE 'Tel No.:' W_ADDR-TELF1 W_ADDR-TELF2 'FAX :' W_ADDR-TELFX INTO TELFX
SEPARATED BY SPACE.
DATA : CRDB(20),
CRDBA(16),
BALC TYPE DMBTR.
IF W_DOCM-SHKZG = 'S'.
CRDB = 'Debit Note No. :'.
CRDBA = 'DEBIT'.
BALC = DCAMT + W_DOCM-DMBTR.
ELSEIF W_DOCM-SHKZG = 'H'.
CRDB = 'Credit Note No. :'.
CRDBA = 'CREDIT'.
BALC = DCAMT - W_DOCM-DMBTR.
ENDIF.
SKIP 5.
*FORMAT INVERSE.
ULINE 03(77).
WRITE : 03 SY-VLINE, 80 '|',
/03 SY-VLINE, NAME, 54 'Party No.:' COLOR 7, CUVE COLOR 7, 80 '|',
/03 SY-VLINE, W_ADDR-STRAS, 80 '|',
/03 SY-VLINE, STREET, 80 '|',
/03 SY-VLINE, TELFX, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 05 CNAME COLOR 2, 80 '|',
/03 SY-VLINE, 36 CRDB RIGHT-JUSTIFIED, 59 W_DOCM-BELNR, 71 W_DOCM-GJAHR, 80 '|',
/03 SY-VLINE, 58 'DATE :', W_DOCM-BUDAT, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 80 '|'.
IF NOT DTEXT IS INITIAL.
LOOP AT DTEXT.
WRITE : /03 SY-VLINE, 05 DTEXT-TDLINE COLOR 1, 80 '|'.
ENDLOOP.
ELSEIF W_DOCM-SGTXT NE ''.
WRITE : /03 SY-VLINE, 05 W_DOCM-SGTXT COLOR 1, 80 '|'.
ELSE.
WRITE : /03 SY-VLINE, 80 '|'.
ENDIF.
WRITE : /03 SY-VLINE, 80 '|',
*WRITE : /03 SY-VLINE, TNAME, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 08 'WORKING OF INTEREST CALCULATION AS ON ' COLOR 4,
47 ASON COLOR 4, ' [ 360 DAYS BASIS ]' COLOR 4, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 11 'DATE', 23 'INVOICE', 41 CRDBA, 55 'BALANCE', 64 'DAYS', 70 'INTEREST', 80 '|',
/03 SY-VLINE, 23 ' AMOUNT', 41 'AMOUNT', 55' AMOUNT', 70 ' @ 8.00% ', 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 80 '|',
/03 SY-VLINE, 06 W_DOCM-BUDAT, 15 DCAMT, 32 W_DOCM-DMBTR, 47 BALC, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 10 'PREPARED BY', 35 'ACCOUNTANT', 60 'MANAGER', 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
ENDFORM. " DISPLAY