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

sample programs

Former Member
0 Likes
460

hi experts,

can anybody pls tell me the all sample program codes (MODULE , BDC, REPORTS, SCRIPTS, SMARTFORMS, AND CROSS APPS) programs

1 REPLY 1
Read only

Former Member
0 Likes
325

Report Sample program:

REPORT ZMM_KITCHEN_COST no standard page heading

line-size 255

message-id zwave .

  • type-pools

type-pools : slis.

  • Tables

tables : mara,

makt,

mbew,

konp,

pgmi,

marc,

RMCP3,

sscrfields,

mvke.

  • Internal Table for MARC and MARA

data : begin of i_join occurs 0,

matnr like mara-matnr, " Material #

meins like mara-meins, " Unit of Measure

werks like marc-werks, " Plant

zzdept like marc-zzdept," Department

end of i_join.

  • Internal table for PGMI

data : begin of i_pgmi occurs 0,

werks like pgmi-werks, " Plant,

nrmit like pgmi-nrmit, " Material #

wemit like pgmi-wemit, " Plant

end of i_pgmi.

  • Internal Table for MBEW

data i_mbew like mbew occurs 0 with header line.

  • Internal Table for Output

data : begin of i_output occurs 0 ,

matnr like mara-matnr, " Material #

maktx like makt-maktx, " Material Desc

VPRSV like mbew-VPRSV, " Price Control Indicator

VERPR like mbew-VERPR, " Moving Avg Price

meins like mara-meins, " Base Unit of Measure

STPRS like mbew-STPRS, " Standard Price

LPLPR like mbew-LPLPR, " Current Planned Price

ZPLPR like mbew-ZPLPR, " Future Planned Price

VPLPR like mbew-VPLPR, " Previous Planned Price

kbetr like konp-kbetr, " Sales Price

KMEIN like konp-KMEIN, " Sales Unit

margin(5) type p decimals 2,

vmsta like mvke-vmsta, " Material Status.

end of i_output.

  • Internal Table for A004

data : i_a004 like a004 occurs 0 with header line.

  • Variables

data : wa_lines type i,

wa_maktx type makt-maktx,

v_flag type c.

  • ALV Function Module Variables

DATA: g_repid like sy-repid,

gs_layout type slis_layout_alv,

g_exit_caused_by_caller,

gs_exit_caused_by_user type slis_exit_by_user.

DATA: gt_fieldcat type slis_t_fieldcat_alv,

gs_print type slis_print_alv,

gt_events type slis_t_event,

gt_list_top_of_page type slis_t_listheader,

g_status_set type slis_formname value 'PF_STATUS_SET',

g_user_command type slis_formname value 'USER_COMMAND',

g_top_of_page type slis_formname value 'TOP_OF_PAGE',

g_top_of_list type slis_formname value 'TOP_OF_LIST',

g_end_of_list type slis_formname value 'END_OF_LIST',

g_variant LIKE disvariant,

g_save(1) TYPE c,

g_tabname_header TYPE slis_tabname,

g_tabname_item TYPE slis_tabname,

g_exit(1) TYPE c,

gx_variant LIKE disvariant.

data : gr_layout_bck type slis_layout_alv.

  • Selection-screen

selection-screen : begin of block blk with frame title text-001.

parameters : p_werks like marc-werks default '1000' obligatory.

select-options : s_dept for marc-zzdept obligatory,

s_matnr for mara-matnr,

s_mtart for mara-mtart,

s_vprsv for mbew-VPRSV,

s_PRGRP for RMCP3-PRGRP MATCHCODE OBJECT MAT2 ,

s_vmsta for mvke-vmsta.

selection-screen: end of block blk.

*SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.

*PARAMETERS: p_vari LIKE disvariant-variant.

*SELECTION-SCREEN END OF BLOCK b3.

*

----


  • At slection screen events *

----


*-- Process on value request

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

  • PERFORM f4_for_variant.

*

----


  • Initialization *

----


Initialization.

g_repid = sy-repid.

sscrfields-functxt_01 = 'Clear Selection'.

selection-screen function key 1.

AT SELECTION-SCREEN.

case sscrfields-ucomm.

when 'Clear Selection' or 'FC01'.

clear: s_matnr,

p_werks.

refresh: s_matnr,

s_dept,

s_mtart,

s_vprsv,

s_PRGRP,

s_vmsta.

endcase.

----


  • Start-of-selection.

----


start-of-selection.

  • Clear the all data.

perform clear_data.

  • Get the data from PGMI Table

perform get_pgmi.

  • Get the data from MARC and MARA Table

perform get_mara_marc.

  • Get the data from MBEW Table

perform get_mbew.

  • Move the data into OUTPUT Table

perform move_output_internal.

*end-of-selection.

end-of-selection.

if not i_output[] is initial.

  • ALV Function Module

perform print_alv.

endif.

&----


*& Form get_pgmi

&----


  • Select the data from PGMI Table

----


FORM get_pgmi.

clear v_flag.

  • If Product group has a value at Selection-screen.

if not s_prgrp is initial.

select werks nrmit wemit from pgmi into table i_pgmi

where prgrp in s_prgrp

and werks = p_werks

and wemit = p_werks.

v_flag = 'X'.

endif.

ENDFORM. " get_pgmi

&----


*& Form get_mara_marc

&----


  • Select the data from MARA and MARC

----


FORM get_mara_marc.

if v_flag = 'X'.

select amatnr ameins bwerks bzzdept into table i_join

from mara as a inner join marc as b on amatnr = bmatnr

for all entries in i_pgmi

where a~matnr in s_matnr

and b~werks = p_werks

and b~zzdept in s_dept

and a~mtart in s_mtart

and a~matnr = i_pgmi-nrmit

and b~werks = i_pgmi-werks.

else.

  • Get the data from MARA and MARC Table

select amatnr ameins bwerks bzzdept into table i_join

from mara as a inner join marc as b on amatnr = bmatnr

where a~matnr in s_matnr

and b~werks = p_werks

and b~zzdept in s_dept

and a~mtart in s_mtart.

endif.

clear wa_lines.

describe table i_join lines wa_lines.

if wa_lines is initial.

message i000(zwave) with 'List contains no data'.

stop.

endif.

sort i_join by matnr werks zzdept.

ENDFORM. " get_mara_marc

&----


*& Form get_mbew

&----


  • Select the data from MBEW Table

----


FORM get_mbew.

  • Get the data from MBEW.

select * from mbew into table i_mbew

for all entries in i_join

where matnr = i_join-matnr.

clear wa_lines.

describe table i_mbew lines wa_lines.

if wa_lines is initial.

message i000(zwave) with 'List contains no data'.

stop.

endif.

sort i_mbew by matnr bwkey.

ENDFORM. " get_mbew

&----


*& Form move_output_internal

&----


  • Final Results

----


FORM move_output_internal.

loop at i_join.

clear wa_maktx.

  • Compare the data with MVKE Table

select single vmsta from mvke into mvke-vmsta

where matnr = i_join-matnr

and vkorg = '0001'

and vtweg = '01'

and vmsta in s_vmsta.

if sy-subrc ne 0.

continue.

else.

i_output-vmsta = mvke-vmsta.

endif.

read table i_mbew with key matnr = i_join-matnr

bwkey = i_join-werks

binary search.

if sy-subrc eq 0.

  • Price Control Indicator

i_output-VPRSV = i_mbew-VPRSV.

  • Moving Average Price

i_output-VERPR = i_mbew-VERPR / i_mbew-peinh.

  • Standard Price

i_output-STPRS = i_mbew-STPRS / i_mbew-peinh.

  • Current Planned Price

i_output-LPLPR = i_mbew-LPLPR / i_mbew-peinh.

  • Future Planned Price

i_output-ZPLPR = i_mbew-ZPLPR / i_mbew-peinh.

  • Previous Planned Price

i_output-VPLPR = i_mbew-VPLPR / i_mbew-peinh.

  • Base Unit of Measure - Added by Seshu 01/09/2007

i_output-meins = i_join-meins.

else.

continue.

endif.

  • Get the sales Price.

perform get_sales_data.

if i_mbew-VPRSV = 'V'.

  • Get the Percentage of Margin

if i_output-kbetr ne '0.00'.

i_output-margin = ( ( i_output-kbetr - i_mbew-VERPR )

/ i_output-kbetr ) * 100 .

endif.

else.

  • Get the Percentage of Margin

if i_output-kbetr ne '0.00'.

i_output-margin = ( ( i_output-kbetr - i_output-stprs )

/ i_output-kbetr ) * 100 .

endif.

endif.

  • Get the material Description from MAKT Table

select single maktx from makt into wa_maktx

where matnr = i_join-matnr

and spras = 'E'.

if sy-subrc eq 0.

i_output-matnr = i_join-matnr.

i_output-maktx = wa_maktx.

endif.

append i_output.

clear : i_output,

i_join,

i_mbew.

endloop.

ENDFORM. " move_output_internal

&----


*& Form get_sales_data

&----


  • Get the Sales Price for each material

----


FORM get_sales_data.

  • Get the data from A004 table to get KNUMH

  • Added new field Sales Unit - Seshu 01/09/2006

refresh : i_a004.

clear : i_a004.

data : lv_kbetr like konp-kbetr," Condition value

lv_KPEIN like konp-kpein , "per

lv_KMEIN like konp-KMEIN. " Sales Unit

select * from a004 into table i_a004

where matnr = i_join-matnr

and vkorg = '0001'

and vtweg = '01'.

if sy-subrc eq 0.

sort i_a004 by DATAB descending.

  • Get the Latetest Date

read table i_a004 with key matnr = i_join-matnr

vkorg = '0001'

vtweg = '01'

binary search.

  • Get the Sales Value

select single kbetr KPEIN KMEIN from konp

into (lv_kbetr,lv_KPEIN, lv_KMEIN)

where knumh = i_a004-knumh

and kappl = i_a004-kappl

and kschl = i_a004-kschl.

if sy-subrc eq 0.

i_output-kbetr = lv_kbetr / lv_KPEIN.

i_output-KMEIN = lv_KMEIN.

endif.

endif.

clear : lv_kbetr,

lv_kpein,

lv_KMEIN.

ENDFORM. " get_sales_data

&----


*& Form print_alv

&----


  • ALV Function Module

----


FORM print_alv.

  • Fill the Fiedlcat

PERFORM fieldcat_init using gt_fieldcat[].

gr_layout_bck-edit_mode = 'D'.

gr_layout_bck-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = g_repid

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = g_user_command

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = gr_layout_bck

IT_FIELDCAT = gt_fieldcat[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = g_save

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IT_EXCEPT_QINFO =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = i_output

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

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

&----


*& Form fieldcat_init

&----


  • Fieldcat

----


FORM fieldcat_init USING e01_lt_fieldcat type slis_t_fieldcat_alv.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  • Material #

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MATNR'.

LS_FIELDCAT-ref_fieldname = 'MATNR'.

LS_FIELDCAT-ref_tabname = 'MARA'.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Material'.

ls_fieldcat-seltext_M = 'Material'.

ls_fieldcat-seltext_S = 'Material'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Material Description

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MAKTX'.

LS_FIELDCAT-OUTPUTLEN = 35.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Description'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Price Indicator

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VPRSV'.

LS_FIELDCAT-OUTPUTLEN = 7.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Price Control Indicator'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Moving Avg Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VERPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Moving Avg Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Base Unit of Measure

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MEINS'.

LS_FIELDCAT-OUTPUTLEN = 7.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Base Unit'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Standard Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'STPRS'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Standard Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Current Planned Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'LPLPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Current Planned Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Future Planned Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZPLPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Future Planned Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Previous Planned Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VPLPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Previous Planned Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Sales Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'KBETR'.

LS_FIELDCAT-OUTPUTLEN = 13.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Sales Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Sales Unit

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'KMEIN'.

LS_FIELDCAT-OUTPUTLEN = 7.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Sales Unit'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • % of Gross Margin

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MARGIN'.

LS_FIELDCAT-OUTPUTLEN = 13.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = '% of Gross Margin'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Material Status

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VMSTA'.

LS_FIELDCAT-OUTPUTLEN = 13.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Material Status'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

ENDFORM. " fieldcat_init

**&----


*

**& Form f4_for_variant

**&----


*

    • text

**----


*

*FORM f4_for_variant.

*

  • CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

  • EXPORTING

  • is_variant = g_variant

  • i_save = g_save

  • i_tabname_header = g_tabname_header

  • i_tabname_item = g_tabname_item

    • it_default_fieldcat =

  • IMPORTING

  • e_exit = g_exit

  • es_variant = gx_variant

  • EXCEPTIONS

  • not_found = 2.

  • IF sy-subrc = 2.

  • MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

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

  • ELSE.

  • IF g_exit = space.

  • p_vari = gx_variant-variant.

  • ENDIF.

  • ENDIF.

*

*

*ENDFORM. " f4_for_variant

&----


*& Form clear_data

&----


  • Clear the Internal table

----


FORM clear_data.

clear : i_output,

i_join,

i_mbew,

i_a004,

i_pgmi.

refresh : i_output,

i_join,

i_mbew,

i_a004,

i_pgmi.

ENDFORM. " clear_data

----


  • FORM USER_COMMAND *

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield. "#EC CALLED

CASE R_UCOMM.

WHEN '&IC1'.

read table i_output index rs_selfield-tabindex.

SET PARAMETER ID 'MAT' FIELD i_output-matnr.

SET PARAMETER ID 'WRK' FIELD p_werks.

if not i_output-matnr is initial.

call transaction 'MD04' and skip first screen.

endif.

ENDCASE.

ENDFORM.

BDC Sample Program :

************************************************************************

  • Report : ZMPPC010

  • Type : Data upload

  • Author : Chetan Shah

  • Date : 05/05/2005

  • Transport : DV3K919472

  • Transaction: ??

  • Description: This ABAP/4 Program creates new Routings (CA21) for SMI

  • plants. It accepts tab-delimited spreadsheet input and

  • creates BDC sessions.

*

************************************************************************

  • Modification Log

  • Date Programmer Request # Description

************************************************************************

  • 05/05/2005 Chetan Shah DV3K919472 Initial coding

************************************************************************

REPORT zmppc010 NO STANDARD PAGE HEADING LINE-SIZE 120 LINE-COUNT 55

MESSAGE-ID zz.

  • pool of form routines

INCLUDE ZMPPN001.

  • Define BDC Table Structure

DATA: BEGIN OF itab_bdc_tab OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF itab_bdc_tab.

  • Input record layout of Leagcy File

DATA: BEGIN OF itab_xcel OCCURS 0,

matnr(18) TYPE c,

werks(4) TYPE c,

datuv(10) TYPE c,

verwe(3) TYPE c,

statu(3) TYPE c,

slwbez(3) TYPE c,

vornr(4) TYPE n,

arbpl(8) TYPE c,

steus(4) TYPE c,

ltxa1(40) TYPE c,

bmsch LIKE PLPOD-BMSCH,

meinh(3) TYPE c,

lar01(6) TYPE c,

vgw01 LIKE PLPOD-VGW01,

vge01(3) TYPE c,

lar02(6) TYPE c,

vgw02 LIKE PLPOD-VGW02,

vge02(3) TYPE c,

lar03(6) TYPE c,

vgw03 LIKE PLPOD-VGW03,

vge03(3) TYPE c,

lar04(6) TYPE c,

vgw04 LIKE PLPOD-VGW04,

vge04(3) TYPE c,

lar05(6) TYPE c,

vgw05 LIKE PLPOD-VGW05,

vge05(3) TYPE c,

lar06(6) TYPE c,

vgw06 LIKE PLPOD-VGW06,

vge06(3) TYPE c,

anzma LIKE PLPOD-ANZMA,

zlmax LIKE PLPOD-ZLMAX,

zeilm(3) TYPE c,

zwnor LIKE PLPOD-ZWNOR,

zeiwn(3) TYPE c,

ztnor LIKE PLPOD-ZTNOR,

zeitn(3) TYPE c,

sortl(10) TYPE c,

lifnr(10) TYPE c,

plifz LIKE PLPOD-PLIFZ,

preis LIKE PLPOD-PREIS,

peinh LIKE PLPOD-PEINH,

sakto(10) TYPE c,

waers(5) TYPE c,

infnr(10) TYPE c,

ekorg(4) TYPE c,

ekgrp(3) TYPE c,

matkl(9) TYPE c,

ebeln(10) TYPE c,

ebelp(5) TYPE c,

qpart(8) TYPE c,

ckselkz(1) TYPE c,

rsanz LIKE PLPOD-RSANZ,

END OF itab_xcel.

DATA: v_ssnnr(4) TYPE n,

v_lines_in_xcel LIKE sy-tabix,

v_ssnname LIKE apqi-groupid,

v_trans_in_ssn TYPE i,

wa_xcel LIKE itab_xcel,

l_tabix like sy-tabix,

v_tcode LIKE sy-tcode VALUE 'CA21'.

  • Parameters

SELECTION-SCREEN: SKIP 3.

SELECTION-SCREEN: BEGIN OF BLOCK 1 WITH FRAME.

*

PARAMETERS: p_name LIKE rlgrap-filename

DEFAULT 'C:\My Documents\InputFile.txt'

OBLIGATORY,

  • bdc session name prefix

p_bdcpfx(6) DEFAULT 'ZRTCRT'

OBLIGATORY,

  • number for transction per BDC session

p_trnssn TYPE i

DEFAULT 2000 OBLIGATORY,

  • retain the BDC session after successfull execution

p_keep LIKE apqi-qerase

DEFAULT 'X',

  • user who will be executing BDC session

p_uname LIKE apqi-userid

DEFAULT sy-uname

OBLIGATORY.

*

SELECTION-SCREEN: END OF BLOCK 1.

*

********************************************************

********************************************************

*

  • possible entry list (F4 dropdown) for input file name

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_name.

*-SELECT FILE FROM USERS LOCAL PC

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

  • DEF_FILENAME = ' '

def_path = 'C:\Temp\'

mask = ',.,..'

mode = 'O'

title = 'Select File '(007)

IMPORTING

filename = p_name

  • RC =

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 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.

*

********************************************************

********************************************************

*

  • begin the show

*

START-OF-SELECTION.

  • read data from input file

PERFORM transfer_xcel_to_itab.

*

*

LOOP AT itab_xcel.

  • load data in work area, used inside 'at new' block

wa_xcel = itab_xcel.

l_tabix = sy-tabix.

  • each unique part-plant combn marks begining of new routing defn

AT NEW werks.

  • if num-of-trnas-in-session = 0, create new BDC session

IF v_trans_in_ssn IS INITIAL.

PERFORM BDC_SESSION_OPEN.

ENDIF.

  • begin new bdc script for rtg create trans

  • fill in bdc-data for rtg header screens

PERFORM BDC_BUILD_SCRIPT_FOR_HDR.

ENDAT.

  • fill in bdc-data for each opertion in the routing

PERFORM BDC_BUILD_SCRIPT_FOR_OPS.

  • end of all recs corresponding to the unique part-plant combn, marks

  • the end of routing defn.

AT END OF werks.

  • fill in the bdc-data to save the routing defn

PERFORM BDC_BUILD_SCRIPT_FOR_TEND.

  • insert the bdc script as a BDC transaction

PERFORM BDC_SUBMIT_TRANSACTION.

  • keep track of how many BDC transactions were inserted in the BDC

  • session

ADD 1 TO v_trans_in_ssn.

  • if the user-specified num of trans in BDC session is reached OR

  • if end of input file is reached, close the BDC session

IF v_trans_in_ssn = p_trnssn or

l_tabix = v_lines_in_xcel.

PERFORM BDC_SESSION_CLOSE.

CLEAR v_trans_in_ssn.

ENDIF.

ENDAT.

ENDLOOP.

Top-of-page.

CALL FUNCTION 'Z_HEADER'

  • EXPORTING

  • FLEX_TEXT1 =

  • FLEX_TEXT2 =

  • FLEX_TEXT3 =

.

----


  • FORM TRANSFER_XCEL_TO_ITAB *

----


  • Transfer Xcel Spreadsheet to SAP Internal Table *

----


FORM transfer_xcel_to_itab.

*

  • Read the tab-delimited file into itab

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = p_name

filetype = 'DAT'

  • IMPORTING

  • filelength = flength

TABLES

data_tab = itab_xcel

EXCEPTIONS

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_table_width = 4

invalid_type = 5

no_batch = 6

unknown_error = 7

OTHERS = 8.

*

if sy-subrc = 0.

  • sort the data

SORT itab_xcel BY matnr werks.

CLEAR v_lines_in_xcel.

  • if no data in the file - error out

DESCRIBE TABLE itab_xcel LINES v_lines_in_xcel.

IF v_lines_in_xcel IS INITIAL.

WRITE: / 'No data in input file'.

STOP.

ENDIF.

else.

  • if file upload failed - error out

WRITE: / 'Error reading input file'.

STOP.

endif.

ENDFORM.

----


  • FORM BDC_SESSION_OPEN *

----


  • Open BDC Session *

----


FORM BDC_SESSION_OPEN.

  • create bdc session name = prefix-from-selectn-screen + nnnn

ADD 1 TO v_ssnnr.

CONCATENATE p_bdcpfx v_ssnnr INTO v_ssnname.

  • open new bdc session

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = v_ssnname

keep = p_keep

user = p_uname

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.

ENDFORM.

----


  • FORM BDC_BUILD_SCRIPT_FOR_HDR *

----


  • Build BDC *

----


FORM bdc_build_script_for_hdr.

DATA: l_sttag LIKE rc271-sttag,

l_matnr LIKE rc27m-matnr,

l_mapl LIKE mapl.

  • clear bdc-data itab - begin of new bdc transaction

CLEAR itab_bdc_tab.

REFRESH itab_bdc_tab.

*

  • read material cross reference tables to determine sap part#

PERFORM read_matnr_cross_ref USING wa_xcel-matnr

wa_xcel-werks

CHANGING l_matnr.

*

  • read any existing rtg group counters from MAPL table

clear l_mapl.

select * into l_mapl

from mapl up to 1 rows

where matnr = l_matnr and

werks = wa_xcel-werks and

plnty = 'R' and

loekz = space.

endselect.

*

  • bdc script for routing header screens

PERFORM BDC_BUILD_SCRIPT_RECORD

*

  • initial screen

USING: 'X' 'SAPLCPDI' '1010',

' ' 'BDC_OKCODE' '/00',

' ' 'RC27M-MATNR' l_matnr,

' ' 'RC27M-WERKS' wa_xcel-werks,

' ' 'RC271-VBELN' space,

' ' 'RC271-POSNR' space,

' ' 'RC271-PSPNR' space,

' ' 'RC271-PLNNR' space,

' ' 'RC271-AENNR' space,

' ' 'RC271-STTAG' wa_xcel-datuv,

' ' 'RC271-REVLV' space,

' ' 'RC271-PROFIDNETZ' space.

  • overview screen (lists all existing group counters)

  • the following screen will be included in bdc only if there was atleast

  • one good group counter defined already for this part-plant combn

if not l_mapl is initial.

PERFORM BDC_BUILD_SCRIPT_RECORD

USING: 'X' 'SAPLCPDI' '5200',

' ' 'BDC_OKCODE' '=ANLG'.

endif.

  • header details screen

PERFORM BDC_BUILD_SCRIPT_RECORD

USING: 'X' 'SAPLCPDA' '1200',

' ' 'BDC_OKCODE' '/00',

' ' 'PLKOD-VERWE' wa_xcel-VERWE,

' ' 'PLKOD-STATU' wa_xcel-STATU,

' ' 'PLKOD-SLWBEZ' wa_xcel-SLWBEZ,

  • header details screen, goto operations overview screen

'X' 'SAPLCPDA' '1200',

' ' 'BDC_OKCODE' '=VOUE'.

*

ENDFORM.

----


  • FORM BDC_BUILD_SCRIPT_FOR_OPS *

----


  • Build BDC *

----


FORM BDC_BUILD_SCRIPT_FOR_OPS.

  • bdc script for routing operations

PERFORM BDC_BUILD_SCRIPT_RECORD

  • operaions overview screen, insert new line for the operaion

USING: 'X' 'SAPLCPDI' '5400',

' ' 'BDC_CURSOR' 'PLPOD-VORNR(01)',

' ' 'BDC_OKCODE' '=EINF',

  • operation overview screen, goto operation detail screen

'X' 'SAPLCPDI' '5400',

' ' 'BDC_CURSOR' 'PLPOD-VORNR(01)',

' ' 'BDC_OKCODE' '=PICK',

' ' 'PLPOD-VORNR(01)' wa_xcel-VORNR,

' ' 'PLPOD-ARBPL(01)' wa_xcel-ARBPL,

  • operation detail screen,

'X' 'SAPLCPDO' '1200',

' ' 'BDC_OKCODE' '/00',

' ' 'PLPOD-STEUS' wa_xcel-STEUS,

' ' 'PLPOD-LTXA1' wa_xcel-LTXA1,

' ' 'PLPOD-BMSCH' wa_xcel-BMSCH,

' ' 'PLPOD-MEINH' wa_xcel-MEINH,

' ' 'PLPOD-VGW01' wa_xcel-VGW01,

' ' 'PLPOD-VGE01' wa_xcel-VGE01,

' ' 'PLPOD-VGW02' wa_xcel-VGW02,

' ' 'PLPOD-VGE02' wa_xcel-VGE02,

' ' 'PLPOD-VGW03' wa_xcel-VGW03,

' ' 'PLPOD-VGE03' wa_xcel-VGE03,

' ' 'PLPOD-VGW04' wa_xcel-VGW04,

' ' 'PLPOD-VGE04' wa_xcel-VGE04,

' ' 'PLPOD-VGW05' wa_xcel-VGW05,

' ' 'PLPOD-VGE05' wa_xcel-VGE05.

*

  • if no fields in the inputfile for activity#6 (on the screen)

  • are given then do not include it in the bdc script as they

  • MIGHT NOT be available on the operation detail screen at all

if not wa_xcel-VGW06 is initial or

not wa_xcel-VGE06 is initial or

not wa_xcel-LAR06 is initial.

PERFORM BDC_BUILD_SCRIPT_RECORD

USING: ' ' 'PLPOD-VGW06' wa_xcel-VGW06,

' ' 'PLPOD-VGE06' wa_xcel-VGE06.

endif.

*

  • continue with operation detail screen,

PERFORM BDC_BUILD_SCRIPT_RECORD

*

USING: ' ' 'PLPOD-ZLMAX' wa_xcel-ZLMAX,

' ' 'PLPOD-ZEILM' wa_xcel-ZEILM,

' ' 'PLPOD-ZWNOR' wa_xcel-ZWNOR,

' ' 'PLPOD-ZEIWN' wa_xcel-ZEIWN,

' ' 'PLPOD-ZTNOR' wa_xcel-ZTNOR,

' ' 'PLPOD-ZEITN' wa_xcel-ZEITN,

' ' 'PLPOD-RSANZ' wa_xcel-RSANZ,

' ' 'PLPOD-ANZMA' wa_xcel-ANZMA,

' ' 'PLPOD-CKSELKZ' wa_xcel-CKSELKZ,

' ' 'PLPOD-INFNR' wa_xcel-INFNR,

' ' 'PLPOD-EKORG' wa_xcel-EKORG,

' ' 'PLPOD-EBELN' wa_xcel-EBELN,

' ' 'PLPOD-EBELP' wa_xcel-EBELP,

' ' 'PLPOD-SORTL' wa_xcel-SORTL,

' ' 'PLPOD-MATKL' wa_xcel-MATKL,

' ' 'PLPOD-EKGRP' wa_xcel-EKGRP,

' ' 'PLPOD-LIFNR' wa_xcel-LIFNR,

' ' 'PLPOD-PLIFZ' wa_xcel-PLIFZ,

' ' 'PLPOD-PEINH' wa_xcel-PEINH,

' ' 'PLPOD-SAKTO' wa_xcel-SAKTO,

' ' 'PLPOD-PREIS' wa_xcel-PREIS,

' ' 'PLPOD-WAERS' wa_xcel-WAERS,

' ' 'PLPOD-QPART' wa_xcel-QPART,

  • operation detail screen, go to the op overview scrn to add another op

'X' 'SAPLCPDO' '1200',

' ' 'BDC_OKCODE' '=BACK'.

ENDFORM.

----


  • FORM BDC_BUILD_SCRIPT_FOR_TEND *

----


  • Build BDC *

----


FORM BDC_BUILD_SCRIPT_FOR_TEND.

  • operatin detail screen, save the routing defn

PERFORM BDC_BUILD_SCRIPT_RECORD

*

USING: 'X' 'SAPLCPDI' '5400',

' ' 'BDC_OKCODE' '=BU'.

ENDFORM.

----


  • FORM BDC_SUBMIT_TRANSACTION *

----


  • Submit BDC Session *

----


FORM BDC_SUBMIT_TRANSACTION.

    • Load BDC script as a trqansction in BDC session

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = v_tcode

TABLES

dynprotab = itab_bdc_tab

EXCEPTIONS

internal_error = 01

not_open = 02

queue_error = 03

tcode_invalid = 04.

ENDFORM.

----


  • FORM BDC_BUILD_SCRIPT_RECORD *

----


FORM BDC_BUILD_SCRIPT_RECORD USING dynbegin name value.

CLEAR itab_bdc_tab.

IF dynbegin = 'X'.

MOVE: name TO itab_bdc_tab-program,

value TO itab_bdc_tab-dynpro,

'X' TO itab_bdc_tab-dynbegin.

ELSE.

MOVE: name TO itab_bdc_tab-fnam,

value TO itab_bdc_tab-fval.

SHIFT itab_bdc_tab-fval LEFT DELETING LEADING SPACE.

ENDIF.

APPEND itab_bdc_tab.

ENDFORM.

----


  • FORM BDC_SESSION_CLOSE *

----


  • Close BDC Session *

----


FORM BDC_SESSION_CLOSE.

  • close the session

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

SKIP 2.

IF sy-subrc NE 0.

WRITE: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.

ELSE.

WRITE : / 'Session created:', v_ssnname,

50 '# of transactions:', v_trans_in_ssn.

ENDIF.

ENDFORM.

************************************************************************

  • Report : ZMPPN001

  • Type : Include

  • Author : Chetan Shah

  • Date : 05/05/2005

  • Transport : DV3K919472

  • Transaction: ??

  • Description: Common miscelleneous form routines used in more then

  • one program

*

************************************************************************

  • Modification Log

  • Date Programmer Request # Description

************************************************************************

  • 05/05/2005 Chetan Shah DV3K919472 Initial coding

************************************************************************

----


  • INCLUDE ZMPPN001 *

----


&----


*& Form read_matnr_cross_ref

&----


FORM read_matnr_cross_ref USING pi_matnr "SMI legacy part#

pi_werks "SMI plant

CHANGING pe_matnr. "SAP part#

DATA: l_tablename(20) TYPE c.

  • pi_matnr = SMI legacy part#

  • pi_werks = SMI plant

  • pe_matnr = SAP part#

  • based in given plant#, decide which cross-reference

  • table is to be used

CASE pi_werks.

WHEN '0101'.

l_tablename = 'ZMSMI_SIMP_RAW'.

WHEN '0103'.

l_tablename = 'ZMSMI_FERR_RAW'.

WHEN OTHERS.

  • this is basically snapper plant (0102) and all its related

  • warehouse-plants. Plant 0110 which is a warehouse-plant for

  • snapper can have production parts.

l_tablename = 'ZMSMI_SNAP_RAW'.

ENDCASE.

  • read the cross-reference

CLEAR pe_matnr.

SELECT SINGLE cmatnr INTO pe_matnr

FROM (l_tablename)

WHERE matnr = pi_matnr.

  • if the cross-reference table had SAP-part# as blank OR

  • if the cross-reference read failed,

  • return back the SMI part#

IF pe_matnr IS INITIAL OR

sy-subrc NE 0.

pe_matnr = pi_matnr.

ENDIF.

ENDFORM. " read_matnr_cross_ref

ALE Sample program :

look at BD10 Transaction to send materials

Reward Points if it is helpful

Thanks

Seshu