‎2006 Sep 04 10:09 AM
Hi,
How can i get one Screen Value from a Table Control while running a BDC? i need this Screen Value for selecting a row which need to be updated through that BDC.
Regards,
Anoop R.S
Message was edited by: ANOOP R.S
‎2006 Sep 04 10:24 AM
‎2006 Sep 04 10:59 AM
Hai Anoop,
Try this sample code.
TABLES: ZPRODUCT.
CALL SCREEN 9000.
DATA: BEGIN OF WA_PRODUCT,
ZZPCODE TYPE ZPRODUCT-ZZPCODE,
ZZPNAME TYPE ZPRODUCT-ZZPNAME,
ZZPRICE TYPE ZPRODUCT-ZZPRICE,
ZZCAT TYPE ZPRODUCT-ZZCAT,
ZZQTY TYPE ZPRODUCT-ZZQTY,
END OF WA_PRODUCT.
***********************************************************************
DATA: BEGIN OF WA_BDC,
ZZPCODE(6),
ZZPNAME(30),
ZZCAT(25),
ZZQTY(3),
ZZPRICE(5),
END OF WA_BDC.
DATA: IT_BDC LIKE TABLE OF BDCDATA WITH HEADER LINE.
DATA: L_INDEX(2) TYPE C.
DATA: L_ZZPCODE(30), L_ZZPNAME(30), L_ZZCAT(25), L_ZZQTY(30),
L_ZZPRICE(30).
DATA: FILENAME TYPE STRING VALUE 'C:\PRODUCTNEW.TXT'.
************************************************************************
DATA : V_PAGE_LENGTH TYPE I VALUE 0.
DATA : IT_PRODUCT LIKE TABLE OF WA_PRODUCT WITH HEADER LINE.
CONTROLS : TCPROD TYPE TABLEVIEW USING SCREEN 9000.
&----
*& Module USER_COMMAND_9000 INPUT
&----
text
----
MODULE USER_COMMAND_9000 INPUT.
CASE SY-UCOMM.
WHEN 'E1'.
LEAVE PROGRAM.
WHEN 'D1'.
TCPROD-TOP_LINE = TCPROD-TOP_LINE + 1.
WHEN 'U1'.
TCPROD-TOP_LINE = TCPROD-TOP_LINE - 1.
WHEN 'PU1'.
TCPROD-TOP_LINE = TCPROD-TOP_LINE - V_PAGE_LENGTH.
WHEN 'PD1'.
TCPROD-TOP_LINE = TCPROD-TOP_LINE + V_PAGE_LENGTH.
WHEN 'UPLOAD'.
PERFORM BDC_UPLOAD.
WHEN 'SAVE'.
LOOP AT IT_PRODUCT.
ZPRODUCT-ZZPCODE = IT_PRODUCT-ZZPCODE.
ZPRODUCT-ZZPNAME = IT_PRODUCT-ZZPNAME.
ZPRODUCT-ZZCAT = IT_PRODUCT-ZZCAT.
ZPRODUCT-ZZQTY = IT_PRODUCT-ZZQTY.
ZPRODUCT-ZZPRICE = IT_PRODUCT-ZZPRICE.
INSERT ZPRODUCT.
ENDLOOP.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
&----
*& Module STATUS_9000 OUTPUT
&----
text
----
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_9000 OUTPUT
&----
*& Module M_FIND_LENGTH OUTPUT
&----
text
----
MODULE M_FIND_LENGTH OUTPUT.
V_PAGE_LENGTH = SY-STEPL.
ENDMODULE. " M_FIND_LENGTH OUTPUT
&----
*& Form BDC_FIELD
&----
text
----
--> p1 text
<-- p2 text
----
FORM BDC_UPLOAD.
DATA L_NO(2) TYPE N VALUE '1'.
OPEN DATASET FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
DO.
READ DATASET FILENAME INTO WA_BDC.
IF SY-SUBRC = 0.
L_INDEX = L_NO.
PERFORM BDC_HEADER USING 'ZSAK_TABLE_SCROLL' 9000.
L_ZZPCODE = 'IT_PRODUCT-ZZPCODE(*)'.
L_ZZPNAME = 'IT_PRODUCT-ZZPNAME(*)'.
L_ZZCAT = 'IT_PRODUCT-ZZCAT(*)'.
L_ZZQTY = 'IT_PRODUCT-ZZQTY(*)'.
L_ZZPRICE = 'IT_PRODUCT-ZZPRICE(*)'.
REPLACE '*' WITH L_INDEX INTO L_ZZPCODE.
REPLACE '*' WITH L_INDEX INTO L_ZZPNAME.
REPLACE '*' WITH L_INDEX INTO L_ZZCAT.
REPLACE '*' WITH L_INDEX INTO L_ZZQTY.
REPLACE '*' WITH L_INDEX INTO L_ZZPRICE.
IF L_NO < V_PAGE_LENGTH.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'SAVE'.
L_NO = L_NO + 1.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'D1'.
ENDIF.
PERFORM BDC_FIELD USING L_ZZPCODE WA_BDC-ZZPCODE.
PERFORM BDC_FIELD USING L_ZZPNAME WA_BDC-ZZPNAME.
PERFORM BDC_FIELD USING L_ZZCAT WA_BDC-ZZCAT.
PERFORM BDC_FIELD USING L_ZZQTY WA_BDC-ZZQTY.
PERFORM BDC_FIELD USING L_ZZPRICE WA_BDC-ZZPRICE.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET FILENAME.
PERFORM BDC_PROCESS USING 'ZTRANSPROD'.
ENDFORM.
----
FORM BDC_HEADER
----
*
----
--> PROGRAMNAME
--> SCREENNO
----
FORM BDC_HEADER USING PROGRAMNAME SCREENNO.
IT_BDC-PROGRAM = PROGRAMNAME.
IT_BDC-DYNPRO = SCREENNO.
IT_BDC-DYNBEGIN = 'X'.
APPEND IT_BDC.
ENDFORM. "BDC_HEADER
FORM BDC_FIELD USING FNAME FVALUE.
CLEAR IT_BDC.
IT_BDC-FNAM = FNAME.
IT_BDC-FVAL = FVALUE.
APPEND IT_BDC.
ENDFORM. "BDC_FIELD
FORM BDC_PROCESS USING TRANSCODE.
CALL TRANSACTION TRANSCODE
USING IT_BDC
MODE 'A' " PROCESSING MODE: A, E & N.
UPDATE 'S'. " UPDATE MODE:S, A & L.
ENDFORM. "BDC_PROCESS
&----
*& Module M_HOLD_DATA INPUT
&----
text
----
MODULE M_HOLD_DATA INPUT.
DATA : L_LINES TYPE I.
MODIFY IT_PRODUCT INDEX TCPROD-CURRENT_LINE.
IF SY-SUBRC <> 0.
APPEND IT_PRODUCT.
ENDIF.
DESCRIBE TABLE IT_PRODUCT LINES L_LINES.
TCPROD-LINES = L_LINES + 1.
ENDMODULE. " M_HOLD_DATA INPUT