Wednesday, March 24, 2010

VA01 Screen Exit Link

http://wiki.sdn.sap.com/wiki/display/SI/Implementation+of+SAPV45A+User-exit+Screen

Wednesday, March 17, 2010

MULTIPLE SELECTION in F4

PARAMETERS carrid TYPE sflight-carrid.
DATA : BEGIN OF itab OCCURS 0,
carrid TYPE sflight-carrid,
END OF itab.
DATA : rtab TYPE TABLE OF ddshretval WITH HEADER LINE,
ptab TYPE TABLE OF ddshretval WITH HEADER LINE.
REFRESH rtab.
rtab-fieldname = 'CARRID'.
APPEND rtab.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR carrid.
SELECT carrid FROM sflight INTO TABLE itab.
IF sy-subrc = 0.
SORT itab BY carrid.
DELETE ADJACENT DUPLICATES FROM itab COMPARING carrid.
ENDIF.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'CARRID'
* PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
* DYNPROFIELD = ' '
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
multiple_choice = 'X' " Allows to select multiple records
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = itab
* FIELD_TAB =
return_tab = rtab " This holds multiple records
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 2
* OTHERS = 3
.


IF sy-subrc = 0.
ptab[] = rtab[]. " After F4 event rtab holds one value
* only so store them in other internal table
ENDIF.

START-OF-SELECTION. " Press F8 to see the output

LOOP AT ptab.
WRITE :/ ptab-fieldval. " This is a test program
ENDLOOP.

Monday, March 8, 2010

Smarform Driver Program for Displaying Vouchers from a Report

*----------------------------------------------------------------------*
* DATABASE TABLES *
*----------------------------------------------------------------------*
TABLES : BKPF. "Billing Document: Header Data
*----------------------------------------------------------------------*
* INTERNAL TABLE DECLARATIONS *
*----------------------------------------------------------------------*
*---- Internal table to hold Quality Notification data
DATA: IT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for printing
IT_BSIS LIKE BSIS OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for printing
IT_PRINT_DOC LIKE IT_BKPF OCCURS 0 WITH HEADER LINE.
*--- Internal table to hold the data for Accounting Document Segment
DATA: IT_BSEG TYPE FAGL_T_BSEG,
*--- Internal table to hold the data for Accounting Document Segment
IT_BSEG1 LIKE BSEG OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Accounting Document Segment
T_BSEG LIKE IT_BSEG1 OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Document Types
IT_T003 LIKE T003 OCCURS 0 WITH HEADER LINE.
DATA: WA_BKPF LIKE IT_BKPF OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Accounting Document Segment
WA_BSEG LIKE IT_BSEG1 OCCURS 0 WITH HEADER LINE.
*--- Internal table to hold the data for Company Codes
DATA: IT_T001 LIKE T001 OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Accounting: Secondary Index for Vendors
IT_BSIK LIKE BSIK OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Vendor Master (General Section)
IT_LFA1 LIKE LFA1 OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Texts for Profit Center Master Data
IT_CEPCT LIKE CEPCT OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for Texts for Profit Center Master Data
IT_VBKPF LIKE VBKPF OCCURS 0 WITH HEADER LINE,
*--- Internal table to hold the data for General Data in Customer Master
IT_KNA1 LIKE KNA1 OCCURS 0 WITH HEADER LINE,
*--- Internal table
IT_EENO_DYNP LIKE EENO_DYNP OCCURS 0 WITH HEADER LINE,
IT_TLINE LIKE TLINE OCCURS 0 WITH HEADER LINE,
IT_TCJ_POSITIONS LIKE TCJ_POSITIONS OCCURS 0 WITH HEADER LINE.

*--- Internal table to hold the function codes.
DATA: BEGIN OF IT_FCODE OCCURS 0,
FCODE(5),
END OF IT_FCODE.
**---------------------------------------------------------------------*
** DATA DECLARATIONS *
**---------------------------------------------------------------------*
DATA : LF_FORMNAME(30),
LF_FM_NAME(30),
V_MESG(500) TYPE C, " Message
V_NAME LIKE THEAD-TDNAME. " Object Name

DATA: F_COLOR, " For color
V_SELKZ, " To select the Check Box
V_TXT(50).
*----------------------------------------------------------------------*
* FLAGS *
*----------------------------------------------------------------------*
DATA: F_STOP.

*----------------------------------------------------------------------*
* CONSTANTS *
*----------------------------------------------------------------------*
CONSTANTS: C_X TYPE C VALUE 'X'.
*---------------------------------------------------------------------*
* SELECTION SCREEN
*---------------------------------------------------------------------*
*------ Selection Block for Date,Notification Type And Plant
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_BUKRS LIKE BKPF-BUKRS OBLIGATORY, " Company code
P_GJAHR LIKE BKPF-GJAHR OBLIGATORY. " Fiscal Year
SELECT-OPTIONS: S_BUDAT FOR BKPF-BUDAT, "OBLIGATORY, " Posting date
S_BELNR FOR BKPF-BELNR, " Document Number
S_BLART FOR BKPF-BLART NO-DISPLAY. " DOCUMENT TYPE

SELECTION-SCREEN END OF BLOCK BLK1.

SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
*--- Radio Buttons for selecting REPORT
PARAMETERS: P_RAD1 RADIOBUTTON GROUP GRP1 DEFAULT 'X', " Vendor Invoice
P_RAD2 RADIOBUTTON GROUP GRP1, " Customer Incoming Payment
P_RAD3 RADIOBUTTON GROUP GRP1, " Customer Incoming Payment
P_RAD4 RADIOBUTTON GROUP GRP1, " Journal Document
P_RAD5 RADIOBUTTON GROUP GRP1, " Receipts Voucher
P_RAD6 RADIOBUTTON GROUP GRP1, " Payments Voucher
P_RAD7 RADIOBUTTON GROUP GRP1. " Vendor Outgoing Payment
SELECTION-SCREEN END OF BLOCK BLK2.
*---------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON P_BUKRS.
*--- Perform to validate the company code
PERFORM VALIDATE_COMPANY_CODE.
*---------------------------------------------------------------------*
* START-OF-SELECTION *
*---------------------------------------------------------------------*
START-OF-SELECTION.
SET PF-STATUS 'LITL'.
*--- Perform to get Accounting Document Header data
PERFORM GET_BKPF_DATA.
*--- Perform to get Document Types Document Types
PERFORM GET_T003_DATA.
*--- Perform to get Document Types printing Company Codes
PERFORM GET_T001_DATA.
*--- Perform to get Document Types Accounting: Secondary Index for Vendors
PERFORM GET_BSIK_DATA.
*--- Perform to get Document Types
PERFORM GET_VBKPF_DATA.
*--- Perform to display the report
PERFORM DISPLAY_REPORT.
*----------------------------------------------------------------------*
* AT USER-COMMAND *
*----------------------------------------------------------------------*
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'SALL'.
V_SELKZ = 'X'.
*--- Perform to select all the PO'S
PERFORM SET_CHKBOXES USING V_SELKZ.
WHEN 'DSALL'.
CLEAR V_SELKZ.
*--- Perform to select all the PO'S
PERFORM SET_CHKBOXES USING V_SELKZ.
WHEN 'DISP'.
CLEAR IT_PRINT_DOC. REFRESH IT_PRINT_DOC.
*--- Perform to get the PO's
PERFORM GET_SELECTED_DOCS_TOPRINT.
*--- Perform to get The Accounting Document Segment
PERFORM GET_BSEG_DATA.
IF IT_PRINT_DOC[] IS INITIAL.
MESSAGE S001(ZLITL_MSGCLASS) WITH 'Select atleast one document'.
ELSE.
*--- Perform to call the Smart Form
PERFORM GET_SFORM.
CLEAR: T_BSEG[], T_BSEG.
ENDIF.

ENDCASE.
*&---------------------------------------------------------------------*
*& Form GET_BKPF_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_BKPF_DATA .

DATA: LV_RAD(3).
S_BLART-OPTION = 'EQ'.
S_BLART-SIGN = 'I'.
*--- Selection Screen Radiobuttions
IF P_RAD1 = 'X'.
S_BLART-LOW = 'KR'.
APPEND S_BLART.
ELSEIF P_RAD2 = 'X' .
S_BLART-LOW = 'DZ'.
APPEND S_BLART.
S_BLART-LOW = 'BR'.
APPEND S_BLART.
ELSEIF P_RAD3 = 'X' .
S_BLART-LOW = 'DR'.
APPEND S_BLART.
ELSEIF P_RAD4 = 'X' .
S_BLART-LOW = 'SA'.
APPEND S_BLART.
S_BLART-LOW = 'IB'.
APPEND S_BLART.
S_BLART-LOW = 'K'.
APPEND S_BLART.
S_BLART-LOW = 'DA'.
APPEND S_BLART.
S_BLART-LOW = 'KA'.
APPEND S_BLART.
S_BLART-LOW = 'AB'.
APPEND S_BLART.
S_BLART-LOW = 'D1'.
APPEND S_BLART.
S_BLART-LOW = 'K1'.
*Start changes by Harini as on 14-11-07
APPEND S_BLART.
S_BLART-LOW = 'S1'.
*End changes by Harini as on 14-11-07
*Start changes by Harini as on 21-11-07
APPEND S_BLART.
S_BLART-LOW = 'KG'.
APPEND S_BLART.
S_BLART-LOW = 'DG'.
APPEND S_BLART.
*End changes by Harini as on 21-11-07
*Start changes by Harini as on 28-12-07
S_BLART-LOW = 'AA'.
APPEND S_BLART.
*Start changes by Harini as on 28-12-07
ELSEIF P_RAD5 = 'X' .
S_BLART-LOW = 'SK'.
APPEND S_BLART.
ELSEIF P_RAD6 = 'X' .
S_BLART-LOW = 'SK'.
APPEND S_BLART.
ELSEIF P_RAD7 = 'X' .
S_BLART-LOW = 'KZ'.
APPEND S_BLART.
S_BLART-LOW = 'BP'.
APPEND S_BLART.
ENDIF.

SELECT * FROM BKPF
INTO TABLE IT_BKPF
WHERE BUKRS = P_BUKRS AND
BELNR IN S_BELNR AND
BLART IN S_BLART AND
GJAHR = P_GJAHR AND
BUDAT IN S_BUDAT.
IF SY-SUBRC = 0.
SORT IT_BKPF BY BELNR.
IF P_RAD5 = 'X' OR P_RAD6 = 'X'.
PERFORM GET_TCJ_POSITIONS.
ENDIF.
ELSE.
MESSAGE S002(ZLITL_MSGCLASS) WITH 'No Data Exists For The Selection Criteria'(001).
F_STOP = 'X'.
STOP.
ENDIF.

ENDFORM. " GET_BKPF_DATA
*&---------------------------------------------------------------------*
*& Form GET_BSIS_DATA
*&---------------------------------------------------------------------*
FORM GET_BSEG_DATA .
*--- Getting BSEG DATA
LOOP AT IT_PRINT_DOC.
CALL FUNCTION 'FAGL_GET_BSEG'
EXPORTING
I_BUKRS = IT_PRINT_DOC-BUKRS
I_BELNR = IT_PRINT_DOC-BELNR
I_GJAHR = IT_PRINT_DOC-GJAHR
I_BSTAT = ' '
IMPORTING
ET_BSEG = IT_BSEG
EXCEPTIONS
NOT_FOUND = 1.

APPEND LINES OF IT_BSEG TO IT_BSEG1.
ENDLOOP.
*--- PERFROM TO GET PROFITCENTER TEXT
PERFORM GET_CEPCT_DATA.
*--- Perfrom to Get General Data in Customer Master
PERFORM GET_KNA1_DATA.
**--- Perform to get Document Types Vendor Master (General Section)
PERFORM GET_LFA1_DATA.

ENDFORM. " GET_BSEG_DATA
*&---------------------------------------------------------------------*
*& Form GET_SFORM
*&---------------------------------------------------------------------*
FORM GET_SFORM .
*--Smart Form name
LF_FORMNAME = 'Z_FI_SF_VOUCHER_PRINT'.

*--Determine smartform function module for invoice
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING FORMNAME = LF_FORMNAME
* variant = ' '
* direct_call = ' '
IMPORTING FM_NAME = LF_FM_NAME
EXCEPTIONS NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* error handling
ENDIF.

CALL FUNCTION LF_FM_NAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
P_RAD5 = P_RAD5
P_RAD6 = P_RAD6
IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
WA_BKPF = WA_BKPF
WA_BSEG = WA_BSEG

TABLES
IT_BSEG1 = IT_BSEG1
IT_BKPF = IT_BKPF
IT_PRINT_DOC = IT_PRINT_DOC
IT_BSEG = IT_BSEG
IT_T003 = IT_T003
IT_T001 = IT_T001
IT_BSIK = IT_BSIK
IT_LFA1 = IT_LFA1
IT_CEPCT = IT_CEPCT
IT_VBKPF = IT_VBKPF
IT_KNA1 = IT_KNA1
IT_TLINE = IT_TLINE
IT_EENO_DYNP = IT_EENO_DYNP
IT_TCJ_POSITIONS = IT_TCJ_POSITIONS
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* USER_CANCELED = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " GET_SFORM
*&---------------------------------------------------------------------*
*& Form GET_LIST_DATA
*&---------------------------------------------------------------------*
FORM GET_LIST_DATA .
LOOP AT IT_BKPF.
PERFORM COLOR_FILL.
WRITE: /1(1) SY-VLINE,
* 2 V_CKBOX AS CHECKBOX,
4(1) SY-VLINE,
5(10) IT_BKPF-BELNR,
15(01) SY-VLINE,
16(04) IT_BKPF-GJAHR,
20(01) SY-VLINE,
21(02) IT_BKPF-BLART,
23(01) SY-VLINE,
24(10) IT_BKPF-BUDAT,
34(01) SY-VLINE,
35(10) IT_BKPF-XBLNR,
45(01) SY-VLINE.
ENDLOOP.

ENDFORM. " GET_LIST_DATA
*&---------------------------------------------------------------------*
*& Form COLOR_FILL
*&---------------------------------------------------------------------*
FORM COLOR_FILL .
IF F_COLOR = SPACE.
FORMAT INTENSIFIED OFF.
FORMAT COLOR 2.
F_COLOR = 'X'.
ELSE.
FORMAT INTENSIFIED ON.
FORMAT COLOR 2.
CLEAR F_COLOR.
ENDIF.

ENDFORM. " COLOR_FILL
*&---------------------------------------------------------------------*
*& Form DISPLAY_REPORT
*&---------------------------------------------------------------------*
FORM DISPLAY_REPORT .
DATA: V_CKBOX.
IF NOT IT_BKPF[] IS INITIAL.
WRITE: 1(45) SY-ULINE.
FORMAT COLOR 5.
FORMAT COLOR INTENSIFIED OFF.
FORMAT COLOR 3.
WRITE: /1(1) SY-VLINE,
2(2) 'Ck',
4(1) SY-VLINE,
5(10)'Acc.Doc.No',
15(01) SY-VLINE,
16(04)'Year',
20(01) SY-VLINE,
21(04) 'Type',
23(01) SY-VLINE,
24(10) 'Post. Date',
34(01) SY-VLINE,
35(10) 'Ref. Doc',
45(01) SY-VLINE,
/1(45) SY-ULINE.

LOOP AT IT_BKPF.

IF P_RAD5 = 'X' OR P_RAD6 = 'X'.
CLEAR IT_TCJ_POSITIONS.
READ TABLE IT_TCJ_POSITIONS WITH KEY COMP_CODE = IT_BKPF-BUKRS
POSTING_NUMBER = IT_BKPF-AWKEY+0(10).
IF SY-SUBRC = 0.
IF IT_TCJ_POSITIONS-P_RECEIPTS IS INITIAL AND P_RAD5 = 'X'.
CONTINUE.
ELSEIF IT_TCJ_POSITIONS-P_PAYMENTS IS INITIAL AND P_RAD6 = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
PERFORM COLOR_FILL.
WRITE: /1(1) SY-VLINE,
2 V_CKBOX AS CHECKBOX,
4(1) SY-VLINE,
5(10) IT_BKPF-BELNR,
15(01) SY-VLINE,
16(04) IT_BKPF-GJAHR,
20(01) SY-VLINE,
21(02) IT_BKPF-BLART,
23(01) SY-VLINE,
24(10) IT_BKPF-BUDAT,
34(01) SY-VLINE,
35(10) IT_BKPF-XBLNR,
45(01) SY-VLINE.
ENDLOOP.
WRITE: /1(45) SY-ULINE.
ENDIF.

ENDFORM. " DISPLAY_REPORT
*&---------------------------------------------------------------------*
*& Form GET_SELECTED_DOCS_TOPRINT
*&---------------------------------------------------------------------*
FORM GET_SELECTED_DOCS_TOPRINT .
DATA: LV_BELNR LIKE BKPF-BELNR,
LV_FLAG,
LV_CHK,
LV_TABIX LIKE SY-TABIX,
LV_INDEX LIKE SY-INDEX.
DO.
READ LINE SY-INDEX.
IF SY-SUBRC = 0.
LV_BELNR = SY-LISEL+4(10).
LV_CHK = SY-LISEL+1(1).
IF LV_CHK = C_X.
*--- Padding zeros for ebeln
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LV_BELNR
IMPORTING
OUTPUT = LV_BELNR.

READ TABLE IT_BKPF WITH KEY BELNR = LV_BELNR.
IF SY-SUBRC = 0.
LV_TABIX = SY-TABIX.
IT_PRINT_DOC = IT_BKPF.
APPEND IT_PRINT_DOC.
CLEAR IT_PRINT_DOC.
ENDIF.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.

ENDFORM. " GET_SELECTED_DOCS_TOPRINT
*&---------------------------------------------------------------------*
*& Form EXCLUDE_PF_STATUS
*&---------------------------------------------------------------------*
FORM EXCLUDE_PF_STATUS .

IT_FCODE-FCODE = 'SALL'.
APPEND IT_FCODE.
IT_FCODE-FCODE = 'DSALL'.
APPEND IT_FCODE.
IT_FCODE-FCODE = 'DISP'.
APPEND IT_FCODE.
SET PF-STATUS 'LITL' EXCLUDING IT_FCODE.


*--- Perform to exclude the pf-status
PERFORM EXCLUDE_PF_STATUS.

ENDFORM. " DISPLAY_VOUCHERS

*&---------------------------------------------------------------------*
*& Form SET_CHKBOXES
*&---------------------------------------------------------------------*
FORM SET_CHKBOXES USING F_SELKZ.
DATA: LV_BELNR LIKE BKPF-BELNR,
LV_FLAG,
LV_INDEX LIKE SY-INDEX.
CLEAR IT_BKPF.
DO.
READ LINE SY-INDEX.
IF SY-SUBRC = 0.
LV_BELNR = SY-LISEL+4(10).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LV_BELNR
IMPORTING
OUTPUT = LV_BELNR.

IF LV_FLAG = SPACE.
READ TABLE IT_BKPF WITH KEY BELNR = LV_BELNR.
IF SY-SUBRC = 0.
LV_FLAG = 'X'.
ENDIF.
ENDIF.
IF LV_FLAG = 'X'.
SY-LISEL+1(1) = F_SELKZ.
MODIFY LINE SY-INDEX.
ENDIF.
ELSE.
SY-LISEL+1(1) = '-'.
LV_INDEX = SY-INDEX - 1.
MODIFY LINE LV_INDEX.
EXIT.
ENDIF.
ENDDO.

ENDFORM. " SET_CHKBOXES
*&---------------------------------------------------------------------*
*& Form get_T003_data
*&---------------------------------------------------------------------*
FORM GET_T003_DATA .
IF NOT IT_BKPF[] IS INITIAL.
SELECT * FROM T003 INTO TABLE IT_T003
FOR ALL ENTRIES IN IT_BKPF
WHERE BLART = IT_BKPF-BLART.
ENDIF.

ENDFORM. " get_T003_data
*&---------------------------------------------------------------------*
*& Form get_t001_data
*&---------------------------------------------------------------------*
FORM GET_T001_DATA .
IF NOT IT_BKPF[] IS INITIAL.
SELECT * FROM T001 INTO TABLE IT_T001
FOR ALL ENTRIES IN IT_BKPF
WHERE BUKRS = IT_BKPF-BUKRS.
ENDIF.

ENDFORM. " get_t001_data
*&---------------------------------------------------------------------*
*& Form get_bsik_data
*&---------------------------------------------------------------------*
FORM GET_BSIK_DATA .
IF NOT IT_BKPF[] IS INITIAL.
SELECT * FROM BSIK INTO TABLE IT_BSIK
FOR ALL ENTRIES IN IT_BKPF
WHERE BUKRS = IT_BKPF-BUKRS.
ENDIF.

ENDFORM. " get_bsik_data
*&---------------------------------------------------------------------*
*& Form get_lfa1_data
*&---------------------------------------------------------------------*
FORM GET_LFA1_DATA .
IF NOT IT_BSEG1[] IS INITIAL.
SELECT * FROM LFA1 INTO TABLE IT_LFA1
FOR ALL ENTRIES IN IT_BSEG1 "IT_BSIK
WHERE LIFNR = IT_BSEG1-LIFNR." IT_BSIK-LIFNR.
ENDIF.

ENDFORM. " get_lfa1_data
*&---------------------------------------------------------------------*
*& Form get_cepct_data
*&---------------------------------------------------------------------*
FORM GET_CEPCT_DATA .
IF NOT IT_BSEG1[] IS INITIAL.
SELECT * FROM CEPCT INTO TABLE IT_CEPCT
FOR ALL ENTRIES IN IT_BSEG1
WHERE PRCTR = IT_BSEG1-PRCTR
AND SPRAS = 'EN'.
ENDIF.

ENDFORM. " get_cepct_data
*&---------------------------------------------------------------------*
*& Form GET_VBKPF_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_VBKPF_DATA .
IF NOT IT_BKPF[] IS INITIAL.
SELECT * FROM VBKPF INTO TABLE IT_VBKPF
FOR ALL ENTRIES IN IT_BKPF
WHERE BUKRS = IT_BKPF-BUKRS
AND BELNR = IT_BKPF-BELNR.
ENDIF.

ENDFORM. " GET_VBKPF_DATA
*&---------------------------------------------------------------------*
*& Form GET_KNA1_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_KNA1_DATA .
IF NOT IT_BSEG1[] IS INITIAL.
SELECT * FROM KNA1 INTO TABLE IT_KNA1
FOR ALL ENTRIES IN IT_BSEG1
WHERE KUNNR = IT_BSEG1-KUNNR.
ENDIF.

ENDFORM. " GET_KNA1_DATA
*&---------------------------------------------------------------------*
*& Form VALIDATE_COMPANY_CODE
*&---------------------------------------------------------------------*
FORM VALIDATE_COMPANY_CODE .
DATA: L_BUKRS LIKE BKPF-BUKRS. " Company code
*--- Select construct against the check table for a valid Company Code
SELECT SINGLE BUKRS
INTO L_BUKRS
FROM T001
WHERE BUKRS = P_BUKRS.
IF SY-SUBRC <> 0.
*--- Display Message if invalid Company Code has been entered
MESSAGE S001(ZLITL_MSGCLASS) WITH 'Enter a valid Company Code'(002).
ENDIF.

ENDFORM. " VALIDATE_COMPANY_CODE
*&---------------------------------------------------------------------*
*& Form get_tcj_positions
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_TCJ_POSITIONS .
* Local table to hold AWKEY values
DATA:
BEGIN OF LT_TEMP OCCURS 10,
BUKRS LIKE BKPF-BUKRS,
AWKEY LIKE BKPF-AWKEY,
LV_AWKEY LIKE TCJ_POSITIONS-POSTING_NUMBER,
END OF LT_TEMP.

IF NOT IT_BKPF[] IS INITIAL.
* Populating the local table
LOOP AT IT_BKPF.
LT_TEMP-BUKRS = IT_BKPF-AWKEY+14(4).
LT_TEMP-LV_AWKEY = IT_BKPF-AWKEY+0(10).
CONCATENATE IT_BKPF-BELNR IT_BKPF-GJAHR INTO LT_TEMP-AWKEY.
APPEND LT_TEMP.
CLEAR LT_TEMP.
ENDLOOP.

SELECT * FROM TCJ_POSITIONS INTO TABLE IT_TCJ_POSITIONS
FOR ALL ENTRIES IN LT_TEMP
WHERE COMP_CODE = LT_TEMP-BUKRS
AND POSTING_NUMBER = LT_TEMP-LV_AWKEY.
ENDIF.

ENDFORM. " get_tcj_positions