Re: please give me some sample program releated BOM (2024)

Hi,

*& Module : PP |

*& Application : The program loads the Bill of Material |

*& |

----

*| Modification Log |

*| -

|

*| Programmer |

*| Change |

*| -

-

-

-

-

|

REPORT zpp0120 NO STANDARD PAGE HEADING

MESSAGE-ID z0

LINE-SIZE 132

LINE-COUNT 65(2).

----

  • Internal Tables *

----

*Internal table for the BOM file.

DATA: BEGIN OF i_bom OCCURS 0,

matnr(18),

werks(4),

stlan(1),

stlal(2),

stktx(40),

bmeng(16),

menge(16),

posnr(4),

postp(1),

meins(3),

datuv(10),

fmeng(1),

idnrk(18),

potx1(40),

ausch(7),

END OF i_bom.

  • Extracting Document and Doc type for POSTP = D.

DATA : BEGIN OF i_stpo OCCURS 1,

doknr(25),

dokar(3),

posnr(4),

stlnr LIKE mast-stlnr,

END OF i_stpo.

  • Local work area

DATA: g_my_rec_in LIKE i_bom.

    • Declare internal table for Call Transaction and BDC Session

DATA: i_bdc_table LIKE bdcdata OCCURS 0 WITH HEADER LINE.

----

  • Global Variables *

----

DATA: g_counter(2) TYPE n,

g_field_name(18) TYPE c,

zc_yes TYPE syftype VALUE 'X'.

----

  • Selection Screen *

----

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.

PARAMETERS: p_fname1 TYPE localfile .

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.

PARAMETERS: p_rloc1 AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-005.

PARAMETERS p_group(12) OBLIGATORY DEFAULT 'ZBOM'.

SELECTION-SCREEN END OF BLOCK c.

SELECTION-SCREEN END OF BLOCK b.

SELECTION-SCREEN END OF BLOCK a.

**WRITE the report header

TOP-OF-PAGE.

INCLUDE zheading.

----

  • Start of selection *

----

START-OF-SELECTION.

  • Load Input file

PERFORM f_load_input_file.

  • Create BDC records.

PERFORM create_bdc_records .

&----

*& Form Create_BDC_records

&----

  • text:* perform the BDC for the records in the internal table

----

  • --> p1 text

  • <-- p2 text

----

FORM create_bdc_records .

DATA: v_stlnr LIKE mast-stlnr.

DATA: v_postp(1) VALUE 'D'.

IF NOT i_bom[] IS INITIAL.

    • Open BDC session

PERFORM open_bdc_session.

SORT i_bom BY matnr werks posnr.

SELECT SINGLE stlnr INTO v_stlnr

FROM mast

WHERE matnr = i_bom-matnr

AND werks = i_bom-werks.

SELECT doknr dokar posnr stlnr

INTO TABLE i_stpo

FROM stpo

FOR ALL ENTRIES IN i_bom

WHERE postp = v_postp

AND posnr = i_bom-posnr

AND stlnr = v_stlnr.

SORT i_stpo BY posnr stlnr.

LOOP AT i_bom.

g_my_rec_in = i_bom.

READ TABLE i_stpo WITH KEY posnr = i_bom-posnr

stlnr = v_stlnr

BINARY SEARCH.

AT NEW matnr.

CLEAR i_bdc_table[].

PERFORM insert_screen_header.

ENDAT.

  • Setting up counter for 20 line items

IF g_counter = 20.

g_counter = 1.

ENDIF.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

*next screen

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-FMENG(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

CONCATENATE 'RC29P-POSNR(' g_counter ')' INTO g_field_name.

PERFORM bdc_field USING g_field_name i_bom-posnr.

CONCATENATE 'RC29P-IDNRK(' g_counter ')' INTO g_field_name.

PERFORM bdc_field USING g_field_name i_bom-idnrk.

CONCATENATE 'RC29P-MENGE(' g_counter ')' INTO g_field_name.

PERFORM bdc_field USING g_field_name i_bom-menge.

CONCATENATE 'RC29P-MEINS(' g_counter ')' INTO g_field_name.

PERFORM bdc_field USING g_field_name i_bom-meins.

CONCATENATE 'RC29P-POSTP(' g_counter ')' INTO g_field_name.

PERFORM bdc_field USING g_field_name i_bom-postp.

CONCATENATE 'RC29P-FMENG(' g_counter ')' INTO g_field_name.

PERFORM bdc_field USING g_field_name i_bom-fmeng.

*next screen

PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

  • Check the Item category to direct the screen flow accordingly.

CASE i_bom-postp.

WHEN 'B'.

PERFORM item_text_insert.

WHEN 'Z'.

PERFORM item_text_insert.

WHEN 'T'.

PERFORM item_text_insert.

WHEN 'N'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-AUSCH'.

PERFORM bdc_field USING 'RC29P-AUSCH' i_bom-ausch.

  • next screen

PERFORM item_text_insert.

*next screen

PERFORM bdc_dynpro USING 'SAPLCSDI' '0133'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'RC29P-EKORG' ' '.

WHEN 'D'.

PERFORM bdc_field USING 'RC29P-DOKNR' i_stpo-doknr.

PERFORM bdc_field USING 'RC29P-DOKAR' i_stpo-dokar.

  • next screen

PERFORM item_text_insert.

  • When POSTP = X, L.

WHEN OTHERS.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-AUSCH'.

PERFORM bdc_field USING 'RC29P-AUSCH' i_bom-ausch.

  • next screen

PERFORM item_text_insert.

ENDCASE.

g_counter = g_counter + 1.

  • next screen

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-POSNR(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=FCBU'.

AT END OF matnr.

PERFORM insert_bdc_new.

ENDAT.

ENDLOOP.

CLEAR i_bom[].

PERFORM close_bdc_session.

    • Release the BDC sessions created

PERFORM release_bdc.

ENDIF.

ENDFORM. " open_group

&----

*& Form bdc_dynpro_start

&----

  • Initialize the screen

----

  • -->P_G_PROGRAM_1

  • -->P_G_SCREEN

----

FORM bdc_dynpro USING p_g_program_1

p_g_screen.

CLEAR i_bdc_table.

i_bdc_table-program = p_g_program_1.

i_bdc_table-dynpro = p_g_screen.

i_bdc_table-dynbegin = 'X'.

APPEND i_bdc_table.

ENDFORM. " bdc_dynpro_start

&----

*& Form bdc_field

----

  • Insert field *

----

FORM bdc_field USING f_name f_value.

CLEAR i_bdc_table.

i_bdc_table-fnam = f_name.

i_bdc_table-fval = f_value.

APPEND i_bdc_table.

ENDFORM. "bdc_insert_field

&----

*& Form open_bdc_session

&----

  • Open the BDC session

----

FORM open_bdc_session .

    • Open BDC session and creat and update condition records

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

  • DEST = FILLER8

group = p_group

  • HOLDDATE = FILLER8

keep = 'X'

user = sy-uname

  • RECORD = FILLER1

  • PROG = SY-CPROG

  • IMPORTING

  • QID =

EXCEPTIONS

client_invalid = 1

destination_invalid = 2

group_invalid = 3

group_is_locked = 4

holddate_invalid = 5

internal_error = 6

queue_error = 7

running = 8

system_lock_error = 9

user_invalid = 10

OTHERS = 11

.

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. " create_bdc_session

&----

*& Form insert_screen_header

&----

  • Insert the Header data into the screens

----

FORM insert_screen_header .

g_counter = 1.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29N-STLAL'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'RC29N-MATNR' g_my_rec_in-matnr.

PERFORM bdc_field USING 'RC29N-WERKS' g_my_rec_in-werks.

PERFORM bdc_field USING 'RC29N-STLAN' g_my_rec_in-stlan.

PERFORM bdc_field USING 'RC29N-STLAL' g_my_rec_in-stlal.

PERFORM bdc_field USING 'RC29N-DATUV' g_my_rec_in-datuv.

  • next screen

PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-BMENG'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'RC29K-STKTX' g_my_rec_in-stktx.

PERFORM bdc_field USING 'RC29K-BMENG' g_my_rec_in-bmeng.

*next screen

PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-LABOR'.

ENDFORM. " insert_screen_header

&----

*& Form insert_bdc

&----

  • Insert the BDC session

----

FORM insert_bdc_new .

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = 'CS01'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

dynprotab = i_bdc_table

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3

tcode_invalid = 4

printing_invalid = 5

posting_invalid = 6

OTHERS = 7

.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CLEAR i_bdc_table[].

ENDFORM. " insert_bdc

&----

*& Form close_bdc_session

&----

  • Close the BDC session

----

FORM close_bdc_session .

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

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. " close_bdc_session

&----

*& Form f_load_input_file

&----

  • Load the file into the Internal table

----

FORM f_load_input_file.

IF p_rloc1 = zc_yes.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = p_fname1

filetype = 'DAT'

TABLES

data_tab = i_bom

EXCEPTIONS

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

STOP.

ENDIF.

ENDIF.

ENDFORM. " f_load_input_file

&----

*& Form release_bdc

&----

  • Release BDC session

----

FORM release_bdc.

SUBMIT rsbdcsub WITH mappe EQ p_group

WITH von EQ sy-datum

WITH bis EQ sy-datum

WITH fehler EQ '.'

EXPORTING LIST TO MEMORY

AND RETURN.

ENDFORM. " release_bdc

&----

*& Form item_text_insert

&----

  • Repetitive code in the screen flow

----

FORM item_text_insert.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-POTX1'.

PERFORM bdc_field USING 'RC29P-POTX1' i_bom-potx1.

ENDFORM. " item_text_insert

Re: please give me some sample program releated BOM (2024)
Top Articles
Latest Posts
Article information

Author: Kareem Mueller DO

Last Updated:

Views: 5476

Rating: 4.6 / 5 (46 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Kareem Mueller DO

Birthday: 1997-01-04

Address: Apt. 156 12935 Runolfsdottir Mission, Greenfort, MN 74384-6749

Phone: +16704982844747

Job: Corporate Administration Planner

Hobby: Mountain biking, Jewelry making, Stone skipping, Lacemaking, Knife making, Scrapbooking, Letterboxing

Introduction: My name is Kareem Mueller DO, I am a vivacious, super, thoughtful, excited, handsome, beautiful, combative person who loves writing and wants to share my knowledge and understanding with you.