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

Table BKPF dependency on PPDIT

Former Member
0 Likes
765

Hi

I need to fetch data from table BKPF by checking fields in table PPDIT, hw do we relate both these tables....

Please provide inputs

Hi

I need to fetch data from table BKPF by checking fields in table PPDIT, hw do we relate both these tables....

Please provide inputs

2 REPLIES 2
Read only

Former Member
0 Likes
542

Hi,

The relationship is with docnum with awkey and bukrs with bukrs.

Hope this logic is helpful to you....

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.

PARAMETER: p_laufi TYPE REGUH-LAUFI OBLIGATORY,

p_bukrs TYPE t001-bukrs OBLIGATORY,

p_abkrs TYPE pa0001-abkrs,

p_lifnrs TYPE lfa1-lifnr,

p_lifnrd TYPE lfa1-lifnr,

p_BKREF TYPE LFBK-BKREF,

p_MONAT TYPE bsik-MONAT OBLIGATORY,

p_GJAHR TYPE bsik-GJAHR OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

at SELECTION-SCREEN on p_bukrs.

SELECT SINGLE abkrs FROM table1 into p_abkrs WHERE bukrs = p_bukrs.

at SELECTION-SCREEN on p_bukrs.

SELECT SINGLE lifnrs FROM table1 into p_lifnrs WHERE bukrs = p_bukrs.

at SELECTION-SCREEN on p_bukrs.

IF p_bukrs = '1100'

or p_bukrs = '1500'.

ELSE.

SELECT SINGLE lifnrd FROM table1 into p_lifnrd WHERE bukrs = p_bukrs.

ENDIF.

at SELECTION-SCREEN on p_bukrs.

IF p_bukrs = '1100'

or p_bukrs = '1500'.

SELECT SINGLE BKREF FROM table1 into p_BKREF WHERE bukrs = p_bukrs

AND lifnrd = p_lifnrd.

ENDIF.

at SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF screen-name = 'P_ABKRS'

AND p_abkrs IS NOT INITIAL.

screen-input = 0.

MODIFY SCREEN.

ELSEIF screen-name = 'P_LIFNRS'

AND P_LIFNRS IS NOT INITIAL.

screen-input = 0.

MODIFY SCREEN.

ELSEIF screen-name = 'P_LIFNRD'

AND P_LIFNRS IS NOT INITIAL.

IF p_bukrs = '1100'

or p_bukrs = '1500'.

ELSE.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ELSEIF screen-name = 'P_BKREF'

AND P_BKREF IS NOT INITIAL.

IF p_bukrs = '1100'

or p_bukrs = '1500'.

screen-input = 0.

MODIFY SCREEN.

endif.

ENDIF.

ENDLOOP.

AT SELECTION-SCREEN on VALUE-REQUEST FOR p_lifnrd.

IF p_bukrs = '1100'

or p_bukrs = '1500'.

select lifnrd FROM table1 INTO TABLE it_lifnrd WHERE bukrs = p_bukrs.

IF sy-subrc = 0.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

retfield = 'p_lifnrd'

  • PVALKEY = ' '

DYNPPROG = sy-repid

  • DYNPNR = ' '

DYNPROFIELD = 'p_lifnrd'

  • STEPL = 0

  • WINDOW_TITLE =

  • VALUE = ' '

VALUE_ORG = 'S'

  • MULTIPLE_CHOICE = ' '

  • DISPLAY = ' '

  • CALLBACK_PROGRAM = ' '

  • CALLBACK_FORM = ' '

  • MARK_TAB =

  • IMPORTING

  • USER_RESET =

TABLES

value_tab = it_lifnrd

  • FIELD_TAB = it_fieldtab

RETURN_TAB = it_select

  • DYNPFLD_MAPPING =

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3 .

ENDIF.

IF it_select IS NOT INITIAL.

READ TABLE it_select INTO wa_select INDEX 1.

p_lifnrd = wa_select-FIELDVAL.

ENDIF.

ENDIF.

SELECT * FROM bsik into table it_bsik

WHERE bukrs in s_bukrs AND lifnr in s_lifnr

AND gjahr IN s_gjahr AND monat in s_monat.

IF sy-subrc NE 0.

MESSAGE 'No data selected for the selection made' TYPE 'E'.

ELSE.

IF '1100' in s_companycode

or '1500' in s_companycode .

SELECT * FROM BKPF

INTO TABLE it_bkpf FOR ALL ENTRIES IN it_bsik

WHERE bukrs = it_bsik-bukrs AND belnr = it_bsik-belnr

AND gjahr = it_bsik-gjahr.

IF sy-subrc = 0.

SELECT * FROM PPDIT

INTO TABLE it_ppdit FOR ALL ENTRIES IN it_bkpf

WHERE docnum = it_bkpf-awkey AND bukrs = it_bkpf-bukrs.

  • Fill range table with docnum and Get PERNR data from report RPCIPD00 into it_pernr

ENDIF.

endif.

SELECT * FROM Z_TABLE2

INTO TABLE it_table2

FOR ALL ENTRIES IN it_bsik

WHERE belnr = it_bsik-belnr.

IF sy-subrc = 0.

sort it_bsik by belnr.

sort it_table2 by belnr.

it_bsik1 = it_bsik.

it_table2_2 = it_table2.

delete ADJACENT DUPLICATES FROM it_bsik1 COMPARING belnr.

delete ADJACENT DUPLICATES FROM it_table2_2 COMPARING belnr.

DESCRIBE TABLE it_bsik LINES v_lines1.

DESCRIBE TABLE it_table2 LINES v_lines2.

IF v_lines1 = v_lines2.

MESSAGE 'Data already transferred for the given selection' TYPE 'E'.

ELSE.

LOOP AT it_bsik INTO wa_bsik WHERE augdt = space

AND augbl = space

AND blart = 'AB'.

IF '1100' in s_companycode

or '1500' in s_companycode .

READ TABLE it_bkpf INTO wa_bkpf with key bukrs = wa_bsik-bukrs belnr = wa_bsik-belnr

gjahr = wa_bsik-gjahr.

IF sy-subrc = 0.

READ TABLE it_ppdit INTO wa_ppdit with key docnum = wa_bkpf-awkey bukrs = wa_bkpf-bukrs.

IF sy-subrc = 0.

  • Calculate Amount

IF wa_bsik-belnr NE v_belnr.

  • Call Function module / BAPI

ENDIF.

ENDIF.

ENDIF.

ELSE.

v_wrbtr = v_wrbtr + wa_bsik-wrbtr.

IF wa_bsik-belnr NE v_belnr.

  • Call Function module / BAPI

ENDIF.

ENDIF.

v_belnr = wa_bsik=belnr.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

Read only

Former Member
0 Likes
542

Thanks for all...solved myself

Below is the code for reference


SELECTION-SCREEN  BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.

PARAMETERS: p_laufi  TYPE reguh-laufi OBLIGATORY,
            p_bukrs  TYPE t001-bukrs  OBLIGATORY,
            p_abkrs  TYPE pa0001-abkrs MODIF ID g1,
            p_lifnrs TYPE lfa1-lifnr   MODIF ID g1,
            p_lifnrd TYPE lfa1-lifnr   MODIF ID g1,
            p_bkref  TYPE lfbk-bkref   MODIF ID g1,
            p_monat  TYPE bsik-monat  OBLIGATORY,
            p_gjahr  TYPE bsik-gjahr  OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.