2007 May 17 9:46 AM
hi all
i have a requirement such that in BDC recording i need to take valuse from a file and put it up in the recording that was created by me in the se35 transaction...please help
vijay
2007 May 17 10:20 AM
HI Vijay ,
This program is for updating the text in MM02 Transaction... can refer the whole code..
&----
*& Report Z8JAYANT_ALV_TRANSACTION_MM02 *
*& *
&----
*& *
*& *
&----
REPORT Z8JAYANT_ALV_TRANSACTION_MM02 message-id z8jayant.
Name- Jayant kumar Sahu.
Description- Alv on transaction mm02 ; passing material no and entering the old material as legacy material, specifying the views in the alv itself.
Date- 06/10/2006.
Package- $tmp.
***************************************Type Pool.
type-pools: slis.
***************************************Defining the tables used.
tables: mara,makt.
**************************************Internal Table Declaration.
****Structure for material info.
types: begin of i_material,
matnr type matnr,
mtart type mtart,
maktx type maktx,
bismt type bismt,
matkl type matkl,
spart type spart,
pstat type pstat_d,
end of i_material.
****Internal table for material info.
data: it_material type standard table of i_material with header line.
****Internal table of type MBILDTAB.
data: it_mbildtab type standard table of mbildtab with header line.
****Structure for the Sequence of the views.
types: begin of i_sequence,
guifunc type guifunc,
idxbd type BILDTIDXBD,
end of i_sequence.
****Internal table for the Sequence.
data: it_sequence type standard table of i_sequence with header line.
****Internal table of type BDCDATA for BDC.
data: it_bdcdata like bdcdata occurs 0 with header line.
***************************************Data Declaration.
For the field Catalog.
data: it_fieldcat type slis_t_fieldcat_alv.
For the Event Catalog.
data: it_event type slis_t_event.
For material with 0's concatenated.
data: jay_matnR(18).
For material with legacy appended in it's front.
data: temp_matnr(30).
Data for temporary variable.
data: temp1(20),
temp2(20),
temp3(20),
temp4(20),
temp5(20),
temp6(20),
ok_account(1),
ok_basic(1),
ok_sales(1),
ok_purchase(1),
ok_atleastone(1).
****************************************Select Options.
select-options: s_matnr for mara-matnr.
start-of-selection.
*************************************Perform Statements.
*Perform for the Catalog.
perform zf_catalog using it_fieldcat.
*Perform For fetching data.
perform zf_select.
*Perform Event Include.
perform zf_event using it_event.
*Perform For the List Display.
perform zf_diplay.
&----
*& Form zf_catalog
&----
text
----
-->P_IT_FIELDCAT text
----
form zf_catalog using p_it_fieldcat type slis_t_fieldcat_alv.
data: l_fieldcat type slis_fieldcat_alv.
clear l_fieldcat.
*IT_MATERIAL-MATNR ======= MATERIAL NUMBER =======
L_FIELDCAT-COL_POS = '1'.
L_FIELDCAT-FIELDNAME = 'MATNR'.
L_FIELDCAT-TABNAME = 'IT_MATERIAL'.
L_FIELDCAT-OUTPUTLEN = 18.
L_FIELDCAT-KEY = 'X'.
L_FIELDCAT-REF_TABNAME = 'MARA'.
L_FIELDCAT-LZERO = 'X'.
L_FIELDCAT-JUST = 'C'.
L_FIELDCAT-SELTEXT_L = 'MATERIAL NUBMBER'.
L_FIELDCAT-SELTEXT_M = 'MATERIAL No.'.
L_FIELDCAT-SELTEXT_S = 'MATR. NO.'.
APPEND L_FIELDCAT TO P_IT_FIELDCAT.
clear l_fieldcat.
*IT_MATERIAL-MAKTX ======= MATERIAL DESCRIPTION =======
L_FIELDCAT-COL_POS = '2'.
L_FIELDCAT-FIELDNAME = 'MAKTX'.
L_FIELDCAT-TABNAME = 'IT_MATERIAL'.
L_FIELDCAT-OUTPUTLEN = 40.
L_FIELDCAT-REF_TABNAME = 'MAKT'.
L_FIELDCAT-LZERO = 'X'.
L_FIELDCAT-JUST = 'C'.
L_FIELDCAT-SELTEXT_L = 'MATERIAL DESCRIPTION'.
L_FIELDCAT-SELTEXT_M = 'MATERIAL DESC.'.
L_FIELDCAT-SELTEXT_S = 'MATR. DESC.'.
APPEND L_FIELDCAT TO P_IT_FIELDCAT.
CLEAR L_FIELDCAT.
endform. " zf_catalog
&----
*& Form zf_select
&----
text
----
--> p1 text
<-- p2 text
----
form zf_select.
SELECTING THE MATERIAL INFO FROM THE MARA TABLE.
SELECT MATNR
MTART
BISMT
MATKL
SPART
PSTAT INTO CORRESPONDING FIELDS OF TABLE IT_MATERIAL FROM MARA
WHERE MATNR IN S_MATNR.
SELECTING THE MATERIAL DESCRIPTION FROM MAKT TABLE.
LOOP AT IT_MATERIAL.
SELECT MAKTX INTO (IT_MATERIAL-MAKTX)
FROM MAKT WHERE MATNR = IT_MATERIAL-MATNR.
MODIFY IT_MATERIAL.
ENDSELECT.
ENDLOOP.
endform. " zf_select
&----
*& Form zf_event
&----
text
----
-->P_IT_EVENT text
----
form zf_event using p_it_event TYPE SLIS_T_EVENT.
DATA: IT_EVENT TYPE SLIS_T_EVENT WITH HEADER LINE.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_IT_EVENT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR IT_EVENT.
READ TABLE P_IT_EVENT WITH KEY NAME = SLIS_EV_USER_COMMAND INTO IT_EVENT.
IF SY-SUBRC = 0.
MOVE 'Z8_USER_COMMAND' TO IT_EVENT-FORM.
MODIFY P_IT_EVENT FROM IT_EVENT INDEX SY-TABIX TRANSPORTING FORM.
ENDIF.
endform. " zf_event
&----
*& Form zf_diplay
&----
text
----
--> p1 text
<-- p2 text
----
form zf_diplay .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'Z8_USER_COMMAND'
I_STRUCTURE_NAME = 'I_MATERIAL'
IS_LAYOUT =
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = IT_EVENT
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
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = IT_MATERIAL
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. " zf_diplay
*******************************************************************************************************
*
*******************************************************************************************************
*
*******************************************************************************************************
FORM USER COMMAND
FORM Z8_USER_COMMAND USING JAY_COMM TYPE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
CLEAR it_mbildtab.
REFRESH it_mbildtab.
CASE JAY_COMM.
EVENT ON DOUBLE CLICK.
WHEN '&IC1'.
IF P_SELFIELD-FIELDNAME = 'MATNR'. " TAKING MATERIAL NUMBER ON THE FIELD FOR DOUBLE CLICKING.
CLEAR JAY_MATNR.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = P_SELFIELD-VALUE
IMPORTING
OUTPUT = JAY_MATNR
EXCEPTIONS
LENGTH_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.
READ TABLE IT_MATERIAL WITH KEY MATNR = JAY_MATNR. " READING FROM THE INTERNAL TABLE WITH NEW MATERIAL NUMBER.
CLEAR TEMP_MATNR.
CONCATENATE 'LEGACY-' IT_MATERIAL-MATNR INTO TEMP_MATNR. " CONCATINATING LEGACY INFORMATION INTO TEMP FOR THE SCREEN INPUT IN THE MM02 TRANSACTION.
IF MATERIAL TYPE IS FINISHED PRODUCT.
IF IT_MATERIAL-MTART = 'FERT'.
CLEAR it_mbildtab.
REFRESH it_mbildtab.
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
bildsequenz = '21'
pflegestatus = IT_MATERIAL-PSTAT
tables
bildtab = it_mbildtab
EXCEPTIONS
CALL_WRONG = 1
EMPTY_SELECTION = 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.
clear it_sequence.
refresh it_sequence.
loop at it_mbildtab.
if it_mbildtab-guifu = 'SP01' OR it_mbildtab-guifu = 'SP04' OR it_mbildtab-guifu = 'SP24'.
it_sequence-guifunc = it_mbildtab-guifu.
it_sequence-idxbd = it_mbildtab-idxbd.
append it_sequence.
endif.
endloop.
clear: temp1, temp2, temp3, temp4, temp5, temp6.
ok_basic = 'N'.
ok_sales = 'N'.
ok_account = 'N'.
ok_atleastone = 'N'.
loop at it_sequence. " Views to be passed when transaction mm02 is passed.
if it_sequence-guifunc = 'SP01'.
concatenate 'MSICHTAUSW-KZSEL(' it_sequence-idxbd into temp1.
concatenate temp1 ')' into temp2.
ok_basic = 'Y'.
ok_atleastone = 'Y'.
elseif it_sequence-guifunc = 'SP04'.
concatenate 'MSICHTAUSW-KZSEL(' it_sequence-idxbd into temp3.
concatenate temp3 ')' into temp4.
ok_basic = 'Y'.
ok_atleastone = 'Y'.
elseif it_sequence-guifunc = 'SP24'.
concatenate 'MSICHTAUSW-KZSEL(' it_sequence-idxbd into temp5.
concatenate temp5 ')' into temp6.
ok_basic = 'Y'.
ok_atleastone = 'Y'.
endif.
endloop.
if ok_atleastone = 'Y'.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using
'RMMG1-MATNR'
P_SELFIELD-VALUE.
PERFORM BDC_FIELD USING 'MARA-MATNR'
P_SELFIELD-VALUE.
*
*
perform bdc_field using 'BDC_OKCODE'
'=AUSW'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
if ok_basic = 'Y'.
perform bdc_field using temp2 'X'.
endif.
if ok_sales = 'Y'.
perform bdc_field using temp4 'X'.
endif.
if ok_account = 'Y'.
perform bdc_field using temp6 'X'.
endif.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0080'. "POP-UP WINDOW ASKING FOR ORGANIZATION-LEVEL DETAILS--
PERFORM BDC_FIELD USING 'BDC_CURSOR' " -- ( WHEN SALES VIEW IS SELECTED)
'RMMG1-WERKS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_CURSOR'
'MAKT-MAKTX'.
*
*
perform bdc_field using 'MAKT-MAKTX'
it_material-maktx.
perform bdc_field using 'MARA-BISMT'
TEMP_MATNR.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SP04'.
IF ok_sales = 'Y'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4000'. "SALES SCREEN
PERFORM BDC_FIELD USING 'MARA-MATKL'
IT_Material-MATKL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SP24'.
ENDIF.
IF ok_account = 'Y'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'. "POP-UP WINDOW ASKING FOR SOME DETAILS --
PERFORM BDC_FIELD USING 'BDC_CURSOR' " -- ( WHEN ACCOUNTING VIEW IS SELECTED)
'RMMG1-WERKS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'RMMG1-WERKS'
'ABC1'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4000'. "ACCOUNTING SCREEN
PERFORM BDC_FIELD USING 'MARA-SPART'
IT_Material-SPART.
ENDIF.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
perform bdc_transaction using 'MM02'.
ENDIF.
endif.
endif.
ENDCASE.
ENDFORM. "Z8_USER_COMMAND.
&----
*& Form bdc_dynpro
&----
text
----
-->P_0661 text
-->P_0662 text
----
form bdc_dynpro using PROGRAM DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO = DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
endform. " bdc_dynpro
&----
*& Form BDC_FIELD
&----
text
----
-->P_0786 text
-->P_0787 text
----
form BDC_FIELD using fnam fval.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
endform. " BDC_FIELD
&----
*& Form bdc_transaction
&----
text
----
-->P_0821 text
----
form bdc_transaction using TCODE.
CALL TRANSACTION TCODE USING IT_BDCDATA MODE 'N' UPDATE 'L'.
endform. " bdc_transaction
Regards,
Jayant
hi all
i have a requirement such that in BDC recording i need to take valuse from a file and put it up in the recording that was created by me in the se35 transaction...please help
vijay
2007 May 17 9:51 AM
Hi Vijay,
You can upload the file in the Application layer first thru
Transaction :
CG3Z is the transaction to upload data from Presentation server to Application server.
CG3Y is the transaction to upload data from Application server toPresentation server.
And then perform ,,, Open Dataset and Close dataset for bringing it in the internal table and then pass the internal table value to the recording that you have done ....by looping at that internal tabel...
Regards,
Jayant.
2007 May 17 9:53 AM
2007 May 17 9:53 AM
Hi Vijay,
Use FM 'GUI_UPLOAD' to upload file into an internal table.
Loop at itab.
write ur recording code.
In place of hard code data.write fields of table like
itab-matnr............
endloop.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:\Documents and Settings\hgoyal\Desktop\Z8MARC_DATA.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = IT_MATPLANT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
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 IT_MATPLANT
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'=AUSW'.
perform bdc_field using 'RMMG1-MATNR'
IT_MATPLANT-MATNR.
perform bdc_transaction using 'MM02'.
endloop.
Regards,
Hemant
2007 May 17 10:11 AM
HI HEMANT
can u pkease give me the code within the loop at itab.....please
vijay
2007 May 17 9:54 AM
hi Vijay ...
This is how you upload from the Application layer to INternal table ... please change the extension according to you file extension..
u have to open the application server file for reading, and then read the file into an internal table
OPEN DATASET W_FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
DO.
READ DATASET W_FILENAME INTO W_CSV.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
SPLIT W_CSV AT ',' INTO TABLE T_CSV.
ENDDO.
CLOSE DATASET W_FILENAME.
Also can refer to this site...
http://www.howforge.com/how-to-read-data-from-application-server-to-internal-table-in-abap-4
Regards,
Jayant
2007 May 17 10:20 AM
HI Vijay ,
This program is for updating the text in MM02 Transaction... can refer the whole code..
&----
*& Report Z8JAYANT_ALV_TRANSACTION_MM02 *
*& *
&----
*& *
*& *
&----
REPORT Z8JAYANT_ALV_TRANSACTION_MM02 message-id z8jayant.
Name- Jayant kumar Sahu.
Description- Alv on transaction mm02 ; passing material no and entering the old material as legacy material, specifying the views in the alv itself.
Date- 06/10/2006.
Package- $tmp.
***************************************Type Pool.
type-pools: slis.
***************************************Defining the tables used.
tables: mara,makt.
**************************************Internal Table Declaration.
****Structure for material info.
types: begin of i_material,
matnr type matnr,
mtart type mtart,
maktx type maktx,
bismt type bismt,
matkl type matkl,
spart type spart,
pstat type pstat_d,
end of i_material.
****Internal table for material info.
data: it_material type standard table of i_material with header line.
****Internal table of type MBILDTAB.
data: it_mbildtab type standard table of mbildtab with header line.
****Structure for the Sequence of the views.
types: begin of i_sequence,
guifunc type guifunc,
idxbd type BILDTIDXBD,
end of i_sequence.
****Internal table for the Sequence.
data: it_sequence type standard table of i_sequence with header line.
****Internal table of type BDCDATA for BDC.
data: it_bdcdata like bdcdata occurs 0 with header line.
***************************************Data Declaration.
For the field Catalog.
data: it_fieldcat type slis_t_fieldcat_alv.
For the Event Catalog.
data: it_event type slis_t_event.
For material with 0's concatenated.
data: jay_matnR(18).
For material with legacy appended in it's front.
data: temp_matnr(30).
Data for temporary variable.
data: temp1(20),
temp2(20),
temp3(20),
temp4(20),
temp5(20),
temp6(20),
ok_account(1),
ok_basic(1),
ok_sales(1),
ok_purchase(1),
ok_atleastone(1).
****************************************Select Options.
select-options: s_matnr for mara-matnr.
start-of-selection.
*************************************Perform Statements.
*Perform for the Catalog.
perform zf_catalog using it_fieldcat.
*Perform For fetching data.
perform zf_select.
*Perform Event Include.
perform zf_event using it_event.
*Perform For the List Display.
perform zf_diplay.
&----
*& Form zf_catalog
&----
text
----
-->P_IT_FIELDCAT text
----
form zf_catalog using p_it_fieldcat type slis_t_fieldcat_alv.
data: l_fieldcat type slis_fieldcat_alv.
clear l_fieldcat.
*IT_MATERIAL-MATNR ======= MATERIAL NUMBER =======
L_FIELDCAT-COL_POS = '1'.
L_FIELDCAT-FIELDNAME = 'MATNR'.
L_FIELDCAT-TABNAME = 'IT_MATERIAL'.
L_FIELDCAT-OUTPUTLEN = 18.
L_FIELDCAT-KEY = 'X'.
L_FIELDCAT-REF_TABNAME = 'MARA'.
L_FIELDCAT-LZERO = 'X'.
L_FIELDCAT-JUST = 'C'.
L_FIELDCAT-SELTEXT_L = 'MATERIAL NUBMBER'.
L_FIELDCAT-SELTEXT_M = 'MATERIAL No.'.
L_FIELDCAT-SELTEXT_S = 'MATR. NO.'.
APPEND L_FIELDCAT TO P_IT_FIELDCAT.
clear l_fieldcat.
*IT_MATERIAL-MAKTX ======= MATERIAL DESCRIPTION =======
L_FIELDCAT-COL_POS = '2'.
L_FIELDCAT-FIELDNAME = 'MAKTX'.
L_FIELDCAT-TABNAME = 'IT_MATERIAL'.
L_FIELDCAT-OUTPUTLEN = 40.
L_FIELDCAT-REF_TABNAME = 'MAKT'.
L_FIELDCAT-LZERO = 'X'.
L_FIELDCAT-JUST = 'C'.
L_FIELDCAT-SELTEXT_L = 'MATERIAL DESCRIPTION'.
L_FIELDCAT-SELTEXT_M = 'MATERIAL DESC.'.
L_FIELDCAT-SELTEXT_S = 'MATR. DESC.'.
APPEND L_FIELDCAT TO P_IT_FIELDCAT.
CLEAR L_FIELDCAT.
endform. " zf_catalog
&----
*& Form zf_select
&----
text
----
--> p1 text
<-- p2 text
----
form zf_select.
SELECTING THE MATERIAL INFO FROM THE MARA TABLE.
SELECT MATNR
MTART
BISMT
MATKL
SPART
PSTAT INTO CORRESPONDING FIELDS OF TABLE IT_MATERIAL FROM MARA
WHERE MATNR IN S_MATNR.
SELECTING THE MATERIAL DESCRIPTION FROM MAKT TABLE.
LOOP AT IT_MATERIAL.
SELECT MAKTX INTO (IT_MATERIAL-MAKTX)
FROM MAKT WHERE MATNR = IT_MATERIAL-MATNR.
MODIFY IT_MATERIAL.
ENDSELECT.
ENDLOOP.
endform. " zf_select
&----
*& Form zf_event
&----
text
----
-->P_IT_EVENT text
----
form zf_event using p_it_event TYPE SLIS_T_EVENT.
DATA: IT_EVENT TYPE SLIS_T_EVENT WITH HEADER LINE.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_IT_EVENT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR IT_EVENT.
READ TABLE P_IT_EVENT WITH KEY NAME = SLIS_EV_USER_COMMAND INTO IT_EVENT.
IF SY-SUBRC = 0.
MOVE 'Z8_USER_COMMAND' TO IT_EVENT-FORM.
MODIFY P_IT_EVENT FROM IT_EVENT INDEX SY-TABIX TRANSPORTING FORM.
ENDIF.
endform. " zf_event
&----
*& Form zf_diplay
&----
text
----
--> p1 text
<-- p2 text
----
form zf_diplay .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'Z8_USER_COMMAND'
I_STRUCTURE_NAME = 'I_MATERIAL'
IS_LAYOUT =
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = IT_EVENT
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
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = IT_MATERIAL
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. " zf_diplay
*******************************************************************************************************
*
*******************************************************************************************************
*
*******************************************************************************************************
FORM USER COMMAND
FORM Z8_USER_COMMAND USING JAY_COMM TYPE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
CLEAR it_mbildtab.
REFRESH it_mbildtab.
CASE JAY_COMM.
EVENT ON DOUBLE CLICK.
WHEN '&IC1'.
IF P_SELFIELD-FIELDNAME = 'MATNR'. " TAKING MATERIAL NUMBER ON THE FIELD FOR DOUBLE CLICKING.
CLEAR JAY_MATNR.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = P_SELFIELD-VALUE
IMPORTING
OUTPUT = JAY_MATNR
EXCEPTIONS
LENGTH_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.
READ TABLE IT_MATERIAL WITH KEY MATNR = JAY_MATNR. " READING FROM THE INTERNAL TABLE WITH NEW MATERIAL NUMBER.
CLEAR TEMP_MATNR.
CONCATENATE 'LEGACY-' IT_MATERIAL-MATNR INTO TEMP_MATNR. " CONCATINATING LEGACY INFORMATION INTO TEMP FOR THE SCREEN INPUT IN THE MM02 TRANSACTION.
IF MATERIAL TYPE IS FINISHED PRODUCT.
IF IT_MATERIAL-MTART = 'FERT'.
CLEAR it_mbildtab.
REFRESH it_mbildtab.
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
bildsequenz = '21'
pflegestatus = IT_MATERIAL-PSTAT
tables
bildtab = it_mbildtab
EXCEPTIONS
CALL_WRONG = 1
EMPTY_SELECTION = 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.
clear it_sequence.
refresh it_sequence.
loop at it_mbildtab.
if it_mbildtab-guifu = 'SP01' OR it_mbildtab-guifu = 'SP04' OR it_mbildtab-guifu = 'SP24'.
it_sequence-guifunc = it_mbildtab-guifu.
it_sequence-idxbd = it_mbildtab-idxbd.
append it_sequence.
endif.
endloop.
clear: temp1, temp2, temp3, temp4, temp5, temp6.
ok_basic = 'N'.
ok_sales = 'N'.
ok_account = 'N'.
ok_atleastone = 'N'.
loop at it_sequence. " Views to be passed when transaction mm02 is passed.
if it_sequence-guifunc = 'SP01'.
concatenate 'MSICHTAUSW-KZSEL(' it_sequence-idxbd into temp1.
concatenate temp1 ')' into temp2.
ok_basic = 'Y'.
ok_atleastone = 'Y'.
elseif it_sequence-guifunc = 'SP04'.
concatenate 'MSICHTAUSW-KZSEL(' it_sequence-idxbd into temp3.
concatenate temp3 ')' into temp4.
ok_basic = 'Y'.
ok_atleastone = 'Y'.
elseif it_sequence-guifunc = 'SP24'.
concatenate 'MSICHTAUSW-KZSEL(' it_sequence-idxbd into temp5.
concatenate temp5 ')' into temp6.
ok_basic = 'Y'.
ok_atleastone = 'Y'.
endif.
endloop.
if ok_atleastone = 'Y'.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using
'RMMG1-MATNR'
P_SELFIELD-VALUE.
PERFORM BDC_FIELD USING 'MARA-MATNR'
P_SELFIELD-VALUE.
*
*
perform bdc_field using 'BDC_OKCODE'
'=AUSW'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
if ok_basic = 'Y'.
perform bdc_field using temp2 'X'.
endif.
if ok_sales = 'Y'.
perform bdc_field using temp4 'X'.
endif.
if ok_account = 'Y'.
perform bdc_field using temp6 'X'.
endif.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0080'. "POP-UP WINDOW ASKING FOR ORGANIZATION-LEVEL DETAILS--
PERFORM BDC_FIELD USING 'BDC_CURSOR' " -- ( WHEN SALES VIEW IS SELECTED)
'RMMG1-WERKS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_CURSOR'
'MAKT-MAKTX'.
*
*
perform bdc_field using 'MAKT-MAKTX'
it_material-maktx.
perform bdc_field using 'MARA-BISMT'
TEMP_MATNR.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SP04'.
IF ok_sales = 'Y'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4000'. "SALES SCREEN
PERFORM BDC_FIELD USING 'MARA-MATKL'
IT_Material-MATKL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SP24'.
ENDIF.
IF ok_account = 'Y'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'. "POP-UP WINDOW ASKING FOR SOME DETAILS --
PERFORM BDC_FIELD USING 'BDC_CURSOR' " -- ( WHEN ACCOUNTING VIEW IS SELECTED)
'RMMG1-WERKS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'RMMG1-WERKS'
'ABC1'.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4000'. "ACCOUNTING SCREEN
PERFORM BDC_FIELD USING 'MARA-SPART'
IT_Material-SPART.
ENDIF.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
perform bdc_transaction using 'MM02'.
ENDIF.
endif.
endif.
ENDCASE.
ENDFORM. "Z8_USER_COMMAND.
&----
*& Form bdc_dynpro
&----
text
----
-->P_0661 text
-->P_0662 text
----
form bdc_dynpro using PROGRAM DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO = DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
endform. " bdc_dynpro
&----
*& Form BDC_FIELD
&----
text
----
-->P_0786 text
-->P_0787 text
----
form BDC_FIELD using fnam fval.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
endform. " BDC_FIELD
&----
*& Form bdc_transaction
&----
text
----
-->P_0821 text
----
form bdc_transaction using TCODE.
CALL TRANSACTION TCODE USING IT_BDCDATA MODE 'N' UPDATE 'L'.
endform. " bdc_transaction
Regards,
Jayant
2007 May 17 11:51 AM
hi alll
i need to crerate the program from SHDB...but anyways ur answers very helpful thank u....please look into my post as i have a problem again
vijay
2007 May 17 11:52 AM
2007 May 17 11:52 AM