Batch input with table control
Hi,
i have a problem with the batch input of picking window in vl02n transaction. I need to select a row of the bottom table but i don't know how many lines ara available in the program(different than the number of lines i can see) and it's possible that i will have to click the page down button, but i don't know when do this.
I can't find any positioning option or similar.
Any suggestion for doing this?
Thanks
Hi ,
pls use the bi-recorder (ta: shdb)
here's an example for positioning:
*positioning
perform bdc_dynpro using 'SAPMF02D' '0360'.
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAME1(03)'.
perform bdc_field using 'BDC_OKCODE' '=LSDP'.
*page down
perform bdc_field using 'BDC_CURSOR' 'KNVK-NAMEV(04)'.
perform bdc_field using 'BDC_OKCODE' '=P+'.
regards Andreas
Similar Messages
-
Sort up and sort Down push buttons in module pool with table control wizard
hi,
i have created 2 buttons for Sort up and sort Down push buttons in module pool with table control wizard
please any one can help me.
regardsHi
Following code is to enable and disable the tbl control using two buttons. Just alter the code and for each button write the sort code.
REPORT YJAN27_SCREEN .
TABLES: SFLIGHT, YFLIGHT_28.
TYPES: BEGIN OF struct1,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
END OF struct1.
CONTROLS TBL1 TYPE TABLEVIEW USING SCREEN 2700.
DATA: OK_CODE LIKE SY-UCOMM,
CARRID LIKE SFLIGHT-CARRID, "cols in tbl ctrl
CONNID LIKE SFLIGHT-CONNID,
FLDATE LIKE SFLIGHT-FLDATE,
itab TYPE TABLE OF STRUCT1 WITH HEADER LINE,
cols like line of TBL1-COLS,
FLAG TYPE I.
FLAG = 1.
CALL SCREEN 2700.
*& Module STATUS_2700 OUTPUT
* text
MODULE STATUS_2700 OUTPUT.
SET PF-STATUS 'BACK'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_2700 OUTPUT
*& Module USER_COMMAND_2700 INPUT
* text
MODULE USER_COMMAND_2700 INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'DIS'. "write code for sort up
loop AT TBL1-COLS INTO COLS.
COLS-SCREEN-INPUT = 0.
MODIFY TBL1-COLS FROM COLS.
ENDLOOP.
FLAG = 2.
WHEN 'ENA'. "write code for sort down
loop AT TBL1-COLS INTO COLS.
COLS-SCREEN-INPUT = 1.
MODIFY TBL1-COLS FROM COLS.
ENDLOOP.
FLAG = 1.
ENDCASE.
ENDMODULE. " USER_COMMAND_2700 INPUT
*& Module GET_DATA OUTPUT
* text
MODULE GET_DATA OUTPUT.
select carrid connid fldate from SFLIGHT into table itab.
ENDMODULE. " GET_DATA OUTPUT
*& Module POPULATE_TBL OUTPUT
* text
MODULE POPULATE_TBL OUTPUT.
MOVE-CORRESPONDING ITAB TO SFLIGHT.
ENDMODULE. " POPULATE_TBL OUTPUT
*& Module CHANGE_SCREEN OUTPUT
* text
MODULE CHANGE_SCREEN OUTPUT. " use this module if you want to hide the other button
CASE FLAG.
WHEN 1.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_ENA'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_DIS'.
SCREEN-INVISIBLE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
WHEN 2.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_DIS'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
LOOP AT SCREEN.
IF SCREEN-NAME = 'B_ENA'.
SCREEN-INVISIBLE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDCASE.
ENDMODULE. " CHANGE_SCREEN OUTPUT
PROCESS BEFORE OUTPUT.
MODULE STATUS_2700.
MODULE CHANGE_SCREEN. " use this if you want to display one button at a time
MODULE GET_DATA.
loop at itab WITH control TBL1.
MODULE POPULATE_TBL. " populate tbl ctrl
endloop.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_2700. " do the sort operations
loop at itab.
endloop.
Hope this helps
Regards,
Jayanthi.K -
Strange issue with table control in dialog programming! Please help!
Hello everyone:
I have a table control on screen painter and I have atleast 10 rows on display when user calls the screen. If I have 15 columns then ofcourse user has to scroll down to see extra rows. I have line selection set to "single" for table control so that user can select only one row at a time. This works fine when user does not have to scroll to see extra rows. It is tough for me to explain i.e., if the table control displays 10 rows when the screen opens up then they can only select single row at a time (rows 1 -10). For example user selected row 7 and now they scroll down to see extra rows (for example 13) then it lets them select row 13 also even though I set line selection to "single" in the properties for table control! They should be able to select only one row at a time. Is this some limitation with table control in SAP? Please give me any information you have.
Thanks.
MithunHi,
As you suspected, this is a limitation in the table control. You need to take care of the single-selection functionality yourself except for the rows that are actually being displayed. See [Note 588284|https://service.sap.com/sap/support/notes/588284] for the official SAP explanation.
Regards,
Jamie -
Hi,
Exists a standard class to develop a batch input????
Any ideas???
Is it possible to create a batch input with objects??Hi there
Why not
just define your class in the normal way
decide what variables you need to pass
in the methods of your class call the fm modules bdc open, bdc dynpro etc etc.
Incidently the following include will have a decent amount of code for the BDC bits.
include bdcrecx1.
A good way is to start sm35 to record what you are doing on the screen. When you've finished go to your recording in SM35 and click on CREATE PROGRAM - it will create most of the code for you including the screen fields -- you'll need to edit a bit of course as you don't need everything that will be shown.
Debugging in the CREATE PROGRAM might show you a decent generic way of generating BDC's which you could easily do via a class.
Note however using BDC's is the LEAST PREFRERRED WAY of performing work and should only be used as a LAST RESORT if there really is no other way. A lot of new BAPI's and Classes are now available which can do away with the need for BDC's in most cases.
job done.
cheers
jimbo -
ABAP HR How to create infotype with table control in it like Infotype 0008
Hi Experts.
I need help from u guys. My client requirement is to create custom infotype just like 0008 infotype which contain table control to save amount and wage types. I try to create infotype with table control using PM01, but that table control is in display mode only, i almost search every where to create custom infotype with table control but what ever threads in forum all are they unanswered and most of the threads for creating infotype. But i already done with infotype , but my main problem is table control.
If any one have some suggestion for this please share with me.
<removed by moderator> i am looking for positive reply.
Edited by: Thomas Zloch on Aug 30, 2011 12:54 PMHi
I've created several infotypes with a Table Control and it is always the same story. You have to create a custom Z table to store the Table Control data (if you can have unlimited records), so in the PSXXXX structure you need to add a TABNR field to link the PAXXXX table and the Z one, just like the type table OM infotypes.
Then in your code you have to control every possible operation, INS, MOD, DEL... and update the Z table accordingly (the standard code won't do that)
If your TC fields appear in display mode, take a look at the Groups 1 and 3 in your fields, the must be set with the usual values for a PA infotype.
If you have more questions, just ask,
Regards -
How can I work lsmw with table control using mm01 appl?
Hi
How can I work lsmw with table control using mm01 appl?
Is it difefrent the way we handle table control in BDC?
Thank YouHi
How can I work lsmw with table control using mm01 appl?
Is it difefrent the way we handle table control in BDC?
Thank You -
Problem with Table control lines
Hi Friends,
This is the problem with table control lines:
I have screen with table control and I would like change the table control lines dynamicaly.
Exp:
In my PBO the Internal table which I am using to loop the TC is havig 7 records and its displayed with 7 records, now I have added one more record into my ITAB and now ITAB is having 8 records, when I am looping this ITAB with TC its taking the TC lines 7 only.
here is the code:
Initial values in gt_scr400 = 8
Initial values in tc_scr400 = 8
Now added one more recor into gt_scr400 , now gt_scr400 = 9.
LOOP AT gt_scr400
INTO wa_scr400
WITH CONTROL tc_scr400
CURSOR tc_scr400-current_line.
ENDLOOP.
I have used this logic :
DESCRIBE TABLE gt_scr400 LINES g_rec_300 .
tc_scr300-lines = g_rec_300.
but its not modifying the lines in my table control.
How to change the TC lines based on ITAB total records.
Thanks,
Sridharthere is a field in TableViewName-xxx
don't remember the exact field name for (total no of records)
you can check it in debug. when you add records in Internal table, u need to modify this field which is set at the first time when table control is populated. -
How to create bdc with table control
hi all.
please some body tell me how to create bdc with table control
or suggest any www with screen shots
thanks in advance ,
aparnaHi AParna,
Its very Simple.
ALl you have to do is set up a counter based on the number of lines in the tabke. when the counter reaches the number of lines in the table hit the next page button which is at the top of every screen in SAP.
Please refer to the following BDC program I had developed using Table control,
this is for ME01 transaction.
LOOP AT T_EORD_HED.
SELECT SINGLE * FROM MARA WHERE MATNR = T_EORD_HED-MATNR.
IF SY-SUBRC = 0.
PERFORM BDC_DYNPRO USING 'SAPLMEOR' '0200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EORD-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EORD-MATNR'
T_EORD_HED-MATNR. "'58335'.
PERFORM BDC_FIELD USING 'EORD-WERKS'
T_EORD_HED-WERKS. "'0253'.
L_COUNT = 1.
LOOP AT T_EORD WHERE MATNR = T_EORD_HED-MATNR
AND WERKS = T_EORD_HED-WERKS.
SELECT SINGLE * FROM LFA1 WHERE LIFNR = T_EORD-LIFNR.
IF SY-SUBRC = 0.
* Look into the if condition below
IF L_COUNT = 010.
L_COUNT = 1.
PERFORM BDC_DYNPRO USING 'SAPLMEOR' '0205'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EORD-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NS'.
L_COUNT = L_COUNT + 1.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPLMEOR' '0205'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EORD-AUTET(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
CONCATENATE 'EORD-VDATU' '(' L_COUNT ')' INTO OPR_FIELD.
WRITE SY-DATUM TO T_EORD-VDATU.
PERFORM BDC_FIELD USING OPR_FIELD
T_EORD-VDATU.
CONCATENATE 'EORD-BDATU' '(' L_COUNT ')' INTO OPR_FIELD.
WRITE T_EORD-BDATU TO V_BDATU.
PERFORM BDC_FIELD USING OPR_FIELD
V_BDATU.
CONCATENATE 'EORD-LIFNR' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
T_EORD-LIFNR.
CONCATENATE 'EORD-EKORG' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
'0001'.
CONCATENATE 'EORD-RESWK' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
T_EORD-RESWK.
WRITE T_EORD-MEINS TO V_MEINS.
CONCATENATE 'EORD-MEINS' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
V_MEINS.
* CONCATENATE 'EORD-EBELN' '(' L_COUNT ')' INTO OPR_FIELD.
* PERFORM BDC_FIELD USING 'OPR_FIELD'
* T_EORD-EBELN.
CONCATENATE 'EORD-EBELP' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
T_EORD-EBELP.
IF T_EORD-FLIFN NE SPACE OR T_EORD-FRESW NE SPACE OR
T_EORD-FEBEL NE SPACE.
CONCATENATE 'RM06W-FESKZ' '(' L_COUNT ')' INTO OPR1_FIELD.
PERFORM BDC_FIELD USING OPR1_FIELD
'X'.
ENDIF.
IF T_EORD-NOTKZ <> ''.
CONCATENATE 'EORD-NOTKZ' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
'X'.
ENDIF.
CONCATENATE 'EORD-AUTET' '(' L_COUNT ')' INTO OPR_FIELD.
PERFORM BDC_FIELD USING OPR_FIELD
T_EORD-AUTET.
L_COUNT = L_COUNT + 1.
ENDIF.
ENDLOOP.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EORD-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'ME01' USING I_BDCDATA
MODE UP_MODE
* optIONS FROM l_opt
MESSAGES INTO I_BDCMSGCOLL.
PERFORM FORMAT_OUTPUT.
ENDIF.
ENDLOOP. -
BDC program for rebate with table controls
Hi Friends,
Iam Doing bdc program for Rebate(TCODE VBO1) with table controls..
can u give the solutions for table controls...
if anybody having the code..please send me..
Thanks & Advance,
sampathhi,
check this example it may help you.
REPORT ZSR_BDC_TBCTRL
NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES : RF02K,LFA1,LFBK.
DATA : BEGIN OF IT_VEN OCCURS 0,
LIFNR LIKE RF02K-LIFNR,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
BANKS(6) TYPE C,
BANKL(17) TYPE C,
BANKN(19) TYPE C,
END OF IT_VEN.
DATA : BEGIN OF BANKS OCCURS 0,
BANKS LIKE LFBK-BANKS,
END OF BANKS,
BEGIN OF BANKL OCCURS 0,
BANKL LIKE LFBK-BANKL,
END OF BANKL,
BEGIN OF BANKN OCCURS 0,
BANKN LIKE LFBK-BANKN,
END OF BANKN.
DATA : FLD(20) TYPE C,
CNT(2) TYPE N.
DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
INCLUDE BDCRECX1.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'Z:\sr.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_VEN
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.
PERFORM OPEN_GROUP.
LOOP AT IT_VEN.
REFRESH BDCDATA.
REFRESH : BANKS,BANKL,BANKN..
SPLIT IT_VEN-BANKS AT ',' INTO TABLE BANKS.
SPLIT IT_VEN-BANKL AT ',' INTO TABLE BANKL.
SPLIT IT_VEN-BANKN AT ',' INTO TABLE BANKN.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF02K-LIFNR'
IT_VEN-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
IT_VEN-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
IT_VEN-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
IT_VEN-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
IT_VEN-LAND1.
PERFORM BDC_FIELD USING 'LFA1-SPRAS'
IT_VEN-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKN(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'LFBK-BANKS(01)'
'DE'.
*perform bdc_field using 'LFBK-BANKS(02)'
'DE'.
*perform bdc_field using 'LFBK-BANKL(01)'
'10020030'.
*perform bdc_field using 'LFBK-BANKL(02)'
'67270003'.
*perform bdc_field using 'LFBK-BANKN(01)'
'12345'.
*perform bdc_field using 'LFBK-BANKN(02)'
'66666'.
MOVE 1 TO CNT.
LOOP AT BANKS.
CONCATENATE 'LFBK-BANKS(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKS-BANKS.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKL.
CONCATENATE 'LFBK-BANKL(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKL-BANKL.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKN.
CONCATENATE 'LFBK-BANKN(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKN-BANKN.
CNT = CNT + 1.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
PERFORM BDC_TRANSACTION USING 'XK01'.
ENDLOOP.
PERFORM CLOSE_GROUP.&----
*& Report ZSR_BDC_TBCTRL
REPORT ZSR_BDC_TBCTRL
NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES : RF02K,LFA1,LFBK.
DATA : BEGIN OF IT_VEN OCCURS 0,
LIFNR LIKE RF02K-LIFNR,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
BANKS(6) TYPE C,
BANKL(17) TYPE C,
BANKN(19) TYPE C,
END OF IT_VEN.
DATA : BEGIN OF BANKS OCCURS 0,
BANKS LIKE LFBK-BANKS,
END OF BANKS,
BEGIN OF BANKL OCCURS 0,
BANKL LIKE LFBK-BANKL,
END OF BANKL,
BEGIN OF BANKN OCCURS 0,
BANKN LIKE LFBK-BANKN,
END OF BANKN.
DATA : FLD(20) TYPE C,
CNT(2) TYPE N.
DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
INCLUDE BDCRECX1.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'Z:\sr.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_VEN
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.
PERFORM OPEN_GROUP.
LOOP AT IT_VEN.
REFRESH BDCDATA.
REFRESH : BANKS,BANKL,BANKN..
SPLIT IT_VEN-BANKS AT ',' INTO TABLE BANKS.
SPLIT IT_VEN-BANKL AT ',' INTO TABLE BANKL.
SPLIT IT_VEN-BANKN AT ',' INTO TABLE BANKN.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF02K-LIFNR'
IT_VEN-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
IT_VEN-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
IT_VEN-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
IT_VEN-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
IT_VEN-LAND1.
PERFORM BDC_FIELD USING 'LFA1-SPRAS'
IT_VEN-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKN(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'LFBK-BANKS(01)'
'DE'.
*perform bdc_field using 'LFBK-BANKS(02)'
'DE'.
*perform bdc_field using 'LFBK-BANKL(01)'
'10020030'.
*perform bdc_field using 'LFBK-BANKL(02)'
'67270003'.
*perform bdc_field using 'LFBK-BANKN(01)'
'12345'.
*perform bdc_field using 'LFBK-BANKN(02)'
'66666'.
MOVE 1 TO CNT.
LOOP AT BANKS.
CONCATENATE 'LFBK-BANKS(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKS-BANKS.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKL.
CONCATENATE 'LFBK-BANKL(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKL-BANKL.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKN.
CONCATENATE 'LFBK-BANKN(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKN-BANKN.
CNT = CNT + 1.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
PERFORM BDC_TRANSACTION USING 'XK01'.
ENDLOOP.
PERFORM CLOSE_GROUP. -
Dear All .
can you give me some idea how to do BDC with tbale Control . Any documentation on the same or some simple example .Handling Table Control in BDC
An example abap program of handling Table Control during bdc programming.
REPORT zmm_bdcp_purchaseorderkb02
NO STANDARD PAGE HEADING LINE-SIZE 255.
Declaring internal tables *
*-----Declaring line structure
DATA : BEGIN OF it_dummy OCCURS 0,
dummy(255) TYPE c,
END OF it_dummy.
*-----Internal table for line items
DATA : BEGIN OF it_idata OCCURS 0,
ematn(18), "Material Number.
menge(13), "Qyantity.
netpr(11), "Net Price.
werks(4), "Plant.
ebelp(5), "Item Number.
END OF it_idata.
*-----Deep structure for header data and line items
DATA : BEGIN OF it_me21 OCCURS 0,
lifnr(10), "Vendor A/c No.
bsart(4), "A/c Type.
bedat(8), "Date of creation of PO.
ekorg(4), "Purchasing Organisation.
ekgrp(3), "Purchasing Group.
x_data LIKE TABLE OF it_idata,
END OF it_me21.
DATA : x_idata LIKE LINE OF it_idata.
DATA : v_delimit VALUE ','.
DATA : v_indx(3) TYPE n.
DATA : v_fnam(30) TYPE c.
DATA : v_count TYPE n.
DATA : v_ne TYPE i.
DATA : v_ns TYPE i.
*include bdcrecx1.
INCLUDE zmm_incl_purchaseorderkb01.
Search help for file *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
START-OF-SELECTION.
To upload the data into line structure *
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
TABLES
data_tab = it_dummy.
Processing the data from line structure to internal tables *
REFRESH:it_me21.
CLEAR :it_me21.
LOOP AT it_dummy.
IF it_dummy-dummy+0(01) = 'H'.
v_indx = v_indx + 1.
CLEAR it_idata.
REFRESH it_idata.
CLEAR it_me21-x_data.
REFRESH it_me21-x_data.
SHIFT it_dummy.
SPLIT it_dummy AT v_delimit INTO it_me21-lifnr
it_me21-bsart
it_me21-bedat
it_me21-ekorg
it_me21-ekgrp.
APPEND it_me21.
ELSEIF it_dummy-dummy+0(01) = 'L'.
SHIFT it_dummy.
SPLIT it_dummy AT v_delimit INTO it_idata-ematn
it_idata-menge
it_idata-netpr
it_idata-werks
it_idata-ebelp.
APPEND it_idata TO it_me21-x_data.
MODIFY it_me21 INDEX v_indx.
ENDIF.
ENDLOOP.
To open the group *
PERFORM open_group.
To populate the bdcdata table for header data *
LOOP AT it_me21.
v_count = v_count + 1.
REFRESH it_bdcdata.
PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0100',
' ' 'BDC_CURSOR' 'EKKO-LIFNR',
' ' 'BDC_OKCODE' '/00',
' ' 'EKKO-LIFNR' it_me21-lifnr,
' ' 'RM06E-BSART' it_me21-bsart,
' ' 'RM06E-BEDAT' it_me21-bedat,
' ' 'EKKO-EKORG' it_me21-ekorg,
' ' 'EKKO-EKGRP' it_me21-ekgrp,
' ' 'RM06E-LPEIN' 'T'.
PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'RM06E-EBELP',
' ' 'BDC_OKCODE' '/00'.
MOVE 1 TO v_indx.
*-----To populate the bdcdata table for line item data
LOOP AT it_me21-x_data INTO x_idata.
CONCATENATE 'EKPO-EMATN(' v_indx ')' INTO v_fnam.
PERFORM subr_bdc_table USING ' ' v_fnam x_idata-ematn.
CONCATENATE 'EKPO-MENGE(' v_indx ')' INTO v_fnam.
PERFORM subr_bdc_table USING ' ' v_fnam x_idata-menge.
CONCATENATE 'EKPO-NETPR(' v_indx ')' INTO v_fnam.
PERFORM subr_bdc_table USING ' ' v_fnam x_idata-netpr.
CONCATENATE 'EKPO-WERKS(' v_indx ')' INTO v_fnam.
PERFORM subr_bdc_table USING ' ' v_fnam x_idata-werks.
v_indx = v_indx + 1.
PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'RM06E-EBELP',
' ' 'BDC_OKCODE' '/00'.
ENDLOOP.
PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'RM06E-EBELP',
' ' 'BDC_OKCODE' '=BU'.
PERFORM bdc_transaction USING 'ME21'.
ENDLOOP.
PERFORM close_group.
End of selection event *
END-OF-SELECTION.
IF session NE 'X'.
*-----To display the successful records
WRITE :/10 text-001. "Sucess records
WRITE :/10 SY-ULINE(20).
SKIP.
IF it_sucess IS INITIAL.
WRITE :/ text-002.
ELSE.
WRITE :/ text-008, "Total number of Succesful records
35 v_ns.
SKIP.
WRITE:/ text-003, "Vendor Number
17 text-004, "Record number
30 text-005. "Message
ENDIF.
LOOP AT it_sucess.
WRITE:/4 it_sucess-lifnr,
17 it_sucess-tabix CENTERED,
30 it_sucess-sucess_rec.
ENDLOOP.
SKIP.
*-----To display the erroneous records
WRITE:/10 text-006. "Error Records
WRITE:/10 SY-ULINE(17).
SKIP.
IF it_error IS INITIAL.
WRITE:/ text-007. "No error records
ELSE.
WRITE:/ text-009, "Total number of erroneous records
35 v_ne.
SKIP.
WRITE:/ text-003, "Vendor Number
17 text-004, "Record number
30 text-005. "Message
ENDIF.
LOOP AT it_error.
WRITE:/4 it_error-lifnr,
17 it_error-tabix CENTERED,
30 it_error-error_rec.
ENDLOOP.
REFRESH it_sucess.
REFRESH it_error.
ENDIF.
CODE IN INCLUDE.
Include ZMM_INCL_PURCHASEORDERKB01
DATA: it_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: E_GROUP_OPENED.
*-----Internal table to store sucess records
DATA:BEGIN OF it_sucess OCCURS 0,
msgtyp(1) TYPE c,
lifnr LIKE ekko-lifnr,
tabix LIKE sy-tabix,
sucess_rec(125),
END OF it_sucess.
DATA: g_mess(125) type c.
*-----Internal table to store error records
DATA:BEGIN OF it_error OCCURS 0,
msgtyp(1) TYPE c,
lifnr LIKE ekko-lifnr,
tabix LIKE sy-tabix,
error_rec(125),
END OF it_error.
Selection screen
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS session RADIOBUTTON GROUP ctu. "create session
SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.
SELECTION-SCREEN POSITION 45.
PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction
SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.
SELECTION-SCREEN POSITION 25.
PARAMETERS group(12). "group name of session
SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.
SELECTION-SCREEN POSITION 70.
PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.
"A: show all dynpros
"E: show dynpro on error only
"N: do not display dynpro
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.
SELECTION-SCREEN POSITION 70.
PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.
SELECTION-SCREEN POSITION 25.
PARAMETERS: keep AS CHECKBOX. "' ' = delete session if finished
"'X' = keep session if finished
SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.
SELECTION-SCREEN POSITION 70.
PARAMETERS e_group(12). "group name of error-session
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.
SELECTION-SCREEN POSITION 70.
PARAMETERS: e_keep AS CHECKBOX. "' ' = delete session if finished
"'X' = keep session if finished
SELECTION-SCREEN END OF LINE.
PARAMETERS:p_file LIKE rlgrap-filename.
at selection screen *
AT SELECTION-SCREEN.
group and user must be filled for create session
IF SESSION = 'X' AND
GROUP = SPACE. "OR USER = SPACE.
MESSAGE E613(MS).
ENDIF.
create batchinput session *
FORM OPEN_GROUP.
IF SESSION = 'X'.
SKIP.
WRITE: /(20) 'Create group'(I01), GROUP.
SKIP.
*----open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = GROUP
USER = sy-uname.
WRITE:/(30) 'BDC_OPEN_GROUP'(I02),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDIF.
ENDFORM. "OPEN_GROUP
end batchinput session *
FORM CLOSE_GROUP.
IF SESSION = 'X'.
*------close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
(12) 'returncode:'(I05),
SY-SUBRC.
ELSE.
IF E_GROUP_OPENED = 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /.
WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).
ENDIF.
ENDIF.
ENDFORM. "CLOSE_GROUP
Start new transaction according to parameters *
FORM BDC_TRANSACTION USING TCODE TYPE ANY.
DATA: L_SUBRC LIKE SY-SUBRC.
*------batch input session
IF SESSION = 'X'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = it_BDCDATA.
WRITE: / 'BDC_INSERT'(I03),
TCODE,
'returncode:'(I05),
SY-SUBRC,
'RECORD:',
SY-INDEX.
ELSE.
REFRESH it_MESSTAB.
CALL TRANSACTION TCODE USING it_BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO it_MESSTAB.
L_SUBRC = SY-SUBRC.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
ENDIF.
Message handling for Call Transaction *
perform subr_mess_hand using g_mess.
*-----Erzeugen fehlermappe
IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
IF E_GROUP_OPENED = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = E_GROUP
USER = sy-uname
KEEP = E_KEEP.
E_GROUP_OPENED = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = it_BDCDATA.
ENDIF.
REFRESH it_BDCDATA.
ENDFORM. "BDC_TRANSACTION
Form subr_bdc_table *
text
-->P_0220 text *
-->P_0221 text *
-->P_0222 text *
FORM subr_bdc_table USING VALUE(P_0220) TYPE ANY
VALUE(P_0221) TYPE ANY
VALUE(P_0222) TYPE ANY.
CLEAR it_bdcdata.
IF P_0220 = ' '.
CLEAR it_bdcdata.
it_bdcdata-fnam = P_0221.
it_bdcdata-fval = P_0222.
APPEND it_bdcdata.
ELSE.
it_bdcdata-dynbegin = P_0220.
it_bdcdata-program = P_0221.
it_bdcdata-dynpro = P_0222.
APPEND it_bdcdata.
ENDIF.
ENDFORM. " subr_bdc_table
Form subr_mess_hand *
text *
-->P_G_MESS text *
FORM subr_mess_hand USING P_G_MESS TYPE ANY.
LOOP AT IT_MESSTAB.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = it_messtab-msgid
LANG = it_messtab-msgspra
NO = it_messtab-msgnr
v1 = it_messtab-msgv1
v2 = it_messtab-msgv2
IMPORTING
MSG = P_G_MESS
EXCEPTIONS
OTHERS = 0.
CASE it_messtab-msgtyp.
when 'E'.
it_error-error_rec = P_G_MESS.
it_error-lifnr = it_me21-lifnr.
it_error-tabix = v_count.
APPEND IT_ERROR.
when 'S'.
it_sucess-sucess_rec = P_G_MESS.
it_sucess-lifnr = it_me21-lifnr.
it_sucess-tabix = v_count.
APPEND IT_SUCESS.
endcase.
ENDLOOP.
Describe table it_sucess lines v_ns.
Describe table it_error lines v_ne.
ENDFORM. " subr_mess_hand -
MODULE POOLL PROGRAMING WITH TABLE CONTROL
hi all,
in table control update, edit, delete
please give me the solution
in pai
where i can write
module
regards*& Include ZPPCONFI01
*& Module USER_COMMAND_9100 INPUT
text
module USER_COMMAND_9100 input.
CASE OK_CODE.
WHEN 'FCAST'.
*&& CASTING
if sy-uname = 'PTEAM' .
CALL SCREEN 9200.
else.
message 'No Autorization' type 'I'.
endif.
CLEAR OK_CODE.
*&& INSPECTION
WHEN 'FINSP'.
if sy-uname = 'PTEAM' .
CALL SCREEN 9300.
else.
message 'No Autorization' type 'I'.
endif.
CLEAR OK_CODE.
WHEN 'FGLAZ'.
if sy-uname = 'PTEAM' .
CALL SCREEN 9400.
else.
message 'No Autorization' type 'I'.
endif.
CLEAR OK_CODE.
WHEN 'FMOUL'.
if sy-uname = 'PTEAM' .
CALL SCREEN 9500.
else.
message 'No Autorization' type 'I'.
endif.
CLEAR OK_CODE.
when 'BACK'.
CLEAR : I_TAB, I_TAB1.
REFRESH : I_TAB1.
leave program.
ENDCASE.
endmodule. " USER_COMMAND_9100 INPUT
*& Module USER_COMMAND_9200 INPUT
text
module USER_COMMAND_9200 input.
CASE OK_CODE1.
WHEN 'GO'.
*ROUTINE GETDATA
PERFORM GETDATA.
CLEAR OK_CODE1.
*&& BACK
when 'CANCEL'.
leave program.
WHEN 'BACK'.
CLEAR : I_TAB, I_TAB1,AFKO-PLNBEZ,ZMATKL,T001W-WERKS,AFKO-GSTRP,flag,count,qtyflag.
REFRESH : I_TAB1.
LEAVE TO SCREEN 9100.
*&& SAVE INSERT DATA TO ZPPT_CONFIRM
WHEN 'SAVE'.
data : co type C,
del type c.
LOOP AT I_TAB1.
IF I_TAB1-LMNGA IS NOT INITIAL OR
I_TAB1-LMNGA1 IS NOT INITIAL. "OR
I_TAB1-XMNGA IS NOT INITIAL.
if I_TAB1-EMPNO <> space and I_TAB1-EMPNO+0(1) <> 'P'.
MESSAGE I991(ZMESSAGE) with 'ENTER INSPECTOR NUMBER at Line' sy-tabix.
continue.
endif.
clear : v_charg.
SELECT single CHARG FROM MCHB into v_charg
WHERE LGORT = '1080'
AND LVORM <> 'X'
AND CHARG = I_TAB1-CHARG.
if sy-subrc <> 0.
Message 'Enter correct batch' type 'W'.
continue.
endif.
IF I_TAB1-LMNGA IS NOT INITIAL AND
I_TAB1-CHARG IS INITIAL.
MESSAGE 'Enter Batch' TYPE 'S'.
ELSE.
*&& ACTIVITY 10
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '103'. "MRP CONTROLLER
ZPPT_CONFIRM-VORNR = '0010'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR. "ORDER NO
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH23'. "ORDER TYPE
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ. "MATERIAL
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA. "MOULD FILL
ZPPT_CONFIRM-GRUND = I_TAB1-GRUND. "reason for scrap
ZPPT_CONFIRM-ZSUPNAME = SNAME. "supervioser name
ZPPT_CONFIRM-CHARG = I_TAB1-CHARG. "batch
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED. "PRODUCT SCHEDULER
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
sno = sno + 1.
ZPPT_CONFIRM-sno = sno.
INSERT ZPPT_CONFIRM.
CLEAR ZPPT_CONFIRM.
*&& ACTIVITY 20
if I_TAB1-XMNGA1 <> space.
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '103'.
ZPPT_CONFIRM-VORNR = '0020'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR.
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH23'.
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ.
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-XMNGA = I_TAB1-XMNGA1. "SCARP
if I_TAB1-XMNGA1 is NOT INITIAL.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
ZPPT_CONFIRM-GRUND = '0001'. "reason for scrap
CO = 'X'.
endif.
ZPPT_CONFIRM-ZSUPNAME = SNAME.
ZPPT_CONFIRM-CHARG = I_TAB1-CHARG.
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED.
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
sno = sno + 1.
ZPPT_CONFIRM-sno = sno.
INSERT ZPPT_CONFIRM.
CLEAR ZPPT_CONFIRM.
endif.
if I_TAB1-XMNGA2 <> space.
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '103'.
ZPPT_CONFIRM-VORNR = '0020'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR.
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH23'.
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ.
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
ZPPT_CONFIRM-XMNGA = I_TAB1-XMNGA2. "SCARP
if I_TAB1-XMNGA2 is NOT INITIAL.
ZPPT_CONFIRM-GRUND = '0002'. "reason for scrap
if co <> 'X'.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
co = 'X'.
endif.
endif.
ZPPT_CONFIRM-ZSUPNAME = SNAME.
ZPPT_CONFIRM-CHARG = I_TAB1-CHARG.
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED.
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
sno = sno + 1.
ZPPT_CONFIRM-sno = sno.
INSERT ZPPT_CONFIRM.
CLEAR ZPPT_CONFIRM.
endif.
if I_TAB1-XMNGA3 <> space.
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '103'.
ZPPT_CONFIRM-VORNR = '0020'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR.
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH23'.
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ.
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
ZPPT_CONFIRM-XMNGA = I_TAB1-XMNGA3. "SCARP
if I_TAB1-XMNGA3 is NOT INITIAL.
ZPPT_CONFIRM-GRUND = '0003'. "reason for scrap
if co <> 'X'.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
co = 'X'.
endif.
endif.
ZPPT_CONFIRM-ZSUPNAME = SNAME.
ZPPT_CONFIRM-CHARG = I_TAB1-CHARG.
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED.
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
sno = sno + 1.
ZPPT_CONFIRM-sno = sno.
INSERT ZPPT_CONFIRM.
CLEAR ZPPT_CONFIRM.
endif.
if I_TAB1-XMNGA4 <> space.
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '103'.
ZPPT_CONFIRM-VORNR = '0020'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR.
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH23'.
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ.
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
ZPPT_CONFIRM-XMNGA = I_TAB1-XMNGA4. "SCARP
if I_TAB1-XMNGA4 is NOT INITIAL.
ZPPT_CONFIRM-GRUND = '0004'. "reason for scrap
if co <> 'X'.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA1. "CARRYOUT
co = 'X'.
endif.
endif.
ZPPT_CONFIRM-ZSUPNAME = SNAME.
ZPPT_CONFIRM-CHARG = I_TAB1-CHARG.
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED.
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
sno = sno + 1.
ZPPT_CONFIRM-sno = sno.
INSERT ZPPT_CONFIRM.
CLEAR ZPPT_CONFIRM.
endif.
IF SY-SUBRC = 0.
DELETE TABLE I_TAB1 FROM I_TAB1.
ENDIF.
CLEAR ZPPT_CONFIRM.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR OK_CODE1.
ENDCASE.
endmodule. " USER_COMMAND_9200 INPUT
*& Form GETDATA
text
--> p1 text
<-- p2 text
form GETDATA .
refresh i_tab1.
V_DATE = AFKO-GSTRP.
SELECT SINGLE FEVOR ZHODNO FROM ZPP_SUP_MRP INTO (V_PRDSCHED, V_ZHODNO)
WHERE ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
if sy-subrc = 0.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
iv_date = V_DATE
IMPORTING
EV_MONTH_BEGIN_DATE = sdate
EV_MONTH_END_DATE = edate.
SELECT SINGLE ENAME FROM PA0001 INTO SNAME WHERE PERNR = ZPP_SUP_MRP-ZSUPNO
AND ENDDA = '99991231'.
IF AFKO-PLNBEZ IS NOT INITIAL.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AAUFNR = BAUFNR
JOIN AUFK AS C ON
AAUFNR = CAUFNR
JOIN JEST AS D ON
COBJNR = DOBJNR
WHERE A~FEVOR = V_PRDSCHED
AND A~PLNBEZ = AFKO-PLNBEZ
AND A~DISPO = '103'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH23'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'.
IF SY-SUBRC = 0.
ccontrol-lines = sy-dbcnt.
LOOP AT I_TAB1.
SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
WHERE MATKL = I_TAB1-PLNBEZ+0(7)
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
MODIFY I_TAB1 FROM I_TAB1.
CLEAR I_TAB1.
ENDIF.
ENDLOOP.
ENDIF.
ELSE.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AAUFNR = BAUFNR
JOIN AUFK AS C ON
AAUFNR = CAUFNR
JOIN JEST AS D ON
COBJNR = DOBJNR
WHERE A~FEVOR = V_PRDSCHED
AND A~DISPO = '103'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH23'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'.
IF SY-SUBRC = 0.
ccontrol-lines = sy-dbcnt.
LOOP AT I_TAB1.
SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
WHERE MATKL = I_TAB1-PLNBEZ+0(7)
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
MODIFY I_TAB1 FROM I_TAB1.
CLEAR I_TAB1.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
endif.
sort i_tab1 by plnbez.
endform. " GETDATA
*& Module F4HELPONCHARG INPUT
text
module F4HELPONCHARG input.
CLEAR : V_MATNR, V_STEPL, V_STLNR, V_IDNRK.
CLEAR : C_TOPLINE.
C_TOPLINE = CCONTROL-TOP_LINE - 1.
CALL FUNCTION 'DYNP_GET_STEPL'
IMPORTING
POVSTEPL = v_stepl
EXCEPTIONS
STEPL_NOT_FOUND = 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.
v_stepl = v_stepl + C_TOPLINE.
READ TABLE I_TAB1 INDEX v_stepl.
IF SY-SUBRC = 0.
SELECT SINGLE STLNR FROM AFKO INTO V_STLNR
WHERE AUFNR = I_TAB1-AUFNR.
IF SY-SUBRC = 0.
V_MATNR = I_TAB1-PLNBEZ+0(7).
CONCATENATE V_MATNR '%' INTO V_MATNR.
SELECT SINGLE IDNRK FROM STPO INTO V_IDNRK
WHERE STLNR = V_STLNR
AND IDNRK LIKE V_MATNR.
IF SY-SUBRC = 0.
SELECT CHARG FROM MCHB INTO TABLE I_BATCH
WHERE MATNR LIKE V_IDNRK
AND LGORT = '1080'
AND WERKS = T001W-WERKS
AND LVORM <> 'X'.
ENDIF.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
retfield = 'I_TAB-CHARG'
PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'CHARG'
STEPL = 0
WINDOW_TITLE = 'BATCH'
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
tables
value_tab = I_BATCH
FIELD_TAB =
RETURN_TAB =
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 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.
ENDIF.
endmodule. " F4HELPONCHARG INPUT
*& Module F4HELPONGRUND INPUT
text
module F4HELPONGRUND input.
SELECT GRUND GRDTX FROM TRUGT
INTO CORRESPONDING FIELDS OF TABLE I_TRUG
WHERE WERKS = T001W-WERKS
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
retfield = 'I_TAB-GRUND'
PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'GRUND'
STEPL = 1
WINDOW_TITLE = 'Variance'
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
tables
value_tab = I_TRUG
FIELD_TAB =
RETURN_TAB =
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 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.
ENDIF.
endmodule. " F4HELPONGRUND INPUT
*& Module MOVE_DATA_TO_INTERNALTAB INPUT
text
module MOVE_DATA_TO_INTERNALTAB input.
CLEAR I_TAB1.
CLEAR ZWERKS_HR.
IF T001W-WERKS = '1102'.
ZWERKS_HR = '1200'.
ENDIF.
if I_TAB-EMPNO <> space and I_TAB-EMPNO+0(1) <> 'P'.
MESSAGE I991(ZMESSAGE) with 'ENTER POTTER NUMBER'.
***BREAK-POINT.
FLAG = 'X'.
COUNT = ( CCONTROL-CURRENT_LINE - CCONTROL-Top_line ) + 1.
continue.
endif.
IF I_TAB-EMPNO IS NOT INITIAL.
SELECT SINGLE ENAME FROM PA0001 INTO I_TAB-ENAME
WHERE PERNR = I_TAB-EMPNO.
SELECT SINGLE A~ENAME
A~PERNR
A~WERKS
B~USRID
INTO CORRESPONDING FIELDS OF TABLE I_FINAL
INTO (I_TAB-ENAME,I_TAB-pernr)
FROM PA0001 AS A
JOIN PA0105 AS B ON APERNR = BPERNR
WHERE B~USRID <> SPACE
AND B~USRID = I_TAB-EMPNO
AND A~endda = '99991231'
AND A~WERKS = ZWERKS_HR
AND ( B~SUBTY = 'POTT' OR
B~SUBTY = 'INSP' OR
B~SUBTY = 'GLAZ' OR
B~SUBTY = 'STOP' OR
B~SUBTY = 'SORT' ).
IF SY-SUBRC <> 0.
clear : I_TAB-ENAME,I_TAB-pernr.
ENDIF.
ENDIF.
MOVE-CORRESPONDING I_TAB TO I_TAB1.
MODIFY I_TAB1 FROM I_TAB1 INDEX CCONTROL-CURRENT_LINE.
endmodule. " MOVE_DATA_TO_INTERNALTAB INPUT
*& Module USER_COMMAND_9300 INPUT
text
module USER_COMMAND_9300 input.
CASE OK_CODE2.
*&& GET DATA FOR INSPECTION
WHEN 'GO'.
PERFORM GETINSDATA.
CLEAR OK_CODE2.
*&& BACK
WHEN 'BACK'.
CLEAR : I_TAB, I_TAB1,AFKO-PLNBEZ,ZMATKL,T001W-WERKS,
AFKO-GSTRP,PA0105-USRID,FLAG,COUNT,COUNT1.
REFRESH : I_TAB1.
LEAVE TO SCREEN 9100.
*&& SAVE INSERT DATA TO ZPPT_CONFIRM
WHEN 'SAVE'.
LOOP AT I_TAB1.
IF I_TAB1-LMNGA IS NOT INITIAL OR
I_TAB1-XMNGA IS NOT INITIAL.
if I_TAB1-EMPNO <> space and I_TAB1-EMPNO+0(1) <> 'I'.
MESSAGE I991(ZMESSAGE) with 'ENTER INSPECTOR NUMBER at Line' sy-tabix.
continue.
endif.
*&& ACTIVITY 10
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '110'. "MRP CONTROLLER
ZPPT_CONFIRM-VORNR = '0010'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR. "ORDER NO
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH24'. "ORDER TYPE
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ. "MATERIAL
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-rcpts = I_TAB1-rcpts.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA. "MOULD FILL
ZPPT_CONFIRM-XMNGA = I_TAB1-XMNGA. "SCRAP
if I_TAB1-XMNGA is NOT INITIAL.
ZPPT_CONFIRM-GRUND = I_TAB1-GRUND. "reason for scrap
endif.
ZPPT_CONFIRM-ZSUPNAME = SNAME. "supervioser name
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED. "PRODUCT SCHEDULER
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
INSERT ZPPT_CONFIRM.
IF SY-SUBRC = 0.
DELETE TABLE I_TAB1 FROM I_TAB1.
ENDIF.
CLEAR ZPPT_CONFIRM.
ENDIF.
ENDLOOP.
CLEAR : OK_CODE2.
ENDCASE.
endmodule. " USER_COMMAND_9300 INPUT
*& Form GETINSDATA
text
--> p1 text
<-- p2 text
form GETINSDATA .
refresh i_tab1.
V_DATE = AFKO-GSTRP.
SELECT SINGLE FEVOR ZHODNO FROM ZPP_SUP_MRP INTO (V_PRDSCHED, V_ZHODNO)
WHERE ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
if sy-subrc = 0.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
iv_date = V_DATE
IMPORTING
EV_MONTH_BEGIN_DATE = sdate
EV_MONTH_END_DATE = edate.
SELECT SINGLE ENAME FROM PA0001 INTO SNAME WHERE PERNR = ZPP_SUP_MRP-ZSUPNO
AND ENDDA = '99991231'.
IF AFKO-PLNBEZ IS NOT INITIAL.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AAUFNR = BAUFNR
JOIN AUFK AS C ON
AAUFNR = CAUFNR
JOIN JEST AS D ON
COBJNR = DOBJNR
WHERE
A~PLNBEZ = AFKO-PLNBEZ
AND A~DISPO = '110'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH24'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'.
IF SY-SUBRC = 0.
icontrol-lines = sy-dbcnt.
LOOP AT I_TAB1.
SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
WHERE MATKL = I_TAB1-PLNBEZ+0(7)
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
MODIFY I_TAB1 FROM I_TAB1.
CLEAR I_TAB1.
ENDIF.
ENDLOOP.
ENDIF.
ELSE.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AAUFNR = BAUFNR
JOIN AUFK AS C ON
AAUFNR = CAUFNR
JOIN JEST AS D ON
COBJNR = DOBJNR
WHERE
A~FEVOR = V_PRDSCHED
A~DISPO = '110'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH24'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'.
IF SY-SUBRC = 0.
icontrol-lines = sy-dbcnt.
LOOP AT I_TAB1.
SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
WHERE MATKL = I_TAB1-PLNBEZ+0(7)
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
MODIFY I_TAB1 FROM I_TAB1.
CLEAR I_TAB1.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
endif.
sort i_tab1 by plnbez.
endform. " GETINSDATA
*& Module USER_COMMAND_9400 INPUT
text
module USER_COMMAND_9400 input.
CASE OK_CODE3.
*&& GET DATA FOR INSPECTION
WHEN 'GO'.
PERFORM GETGLADATA.
CLEAR OK_CODE3.
*&& BACK
WHEN 'BACK'.
CLEAR : I_TAB, I_TAB1,AFKO-PLNBEZ,ZMATKL,T001W-WERKS,
AFKO-GSTRP,PA0105-USRID,flag,count.
REFRESH : I_TAB1.
LEAVE TO SCREEN 9100.
*&& SAVE INSERT DATA TO ZPPT_CONFIRM
WHEN 'SAVE'.
LOOP AT I_TAB1.
IF I_TAB1-LMNGA IS NOT INITIAL OR
I_TAB1-XMNGA IS NOT INITIAL.
if I_TAB1-EMPNO <> space and I_TAB1-EMPNO+0(1) <> 'G'.
MESSAGE I991(ZMESSAGE) with 'ENTER GLAZER NUMBER at Line' sy-tabix.
continue.
endif.
*&& ACTIVITY 10
ZPPT_CONFIRM-CDATE = SY-DATUM.
ZPPT_CONFIRM-CTIME = SY-UZEIT.
ZPPT_CONFIRM-PDATE = afko-gstrp.
ZPPT_CONFIRM-WERKS = T001W-WERKS.
ZPPT_CONFIRM-DISPO = '104'. "MRP CONTROLLER
ZPPT_CONFIRM-VORNR = '0010'.
ZPPT_CONFIRM-AUFNR = I_TAB1-AUFNR. "ORDER NO
ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
ZPPT_CONFIRM-AUFART = 'ZH24'. "ORDER TYPE
ZPPT_CONFIRM-MATNR = I_TAB1-PLNBEZ. "MATERIAL
ZPPT_CONFIRM-MAKTX = I_TAB1-WGBEZ.
ZPPT_CONFIRM-GAMNG = I_TAB1-GAMNG.
ZPPT_CONFIRM-LMNGA = I_TAB1-LMNGA. "MOULD FILL
ZPPT_CONFIRM-XMNGA = I_TAB1-XMNGA. "SCRAP
if I_TAB1-XMNGA is NOT INITIAL.
ZPPT_CONFIRM-GRUND = I_TAB1-GRUND. "reason for scrap
endif.
ZPPT_CONFIRM-ZSUPNAME = SNAME. "supervioser name
ZPPT_CONFIRM-ZHODNO = V_ZHODNO.
ZPPT_CONFIRM-FEVOR = V_PRDSCHED. "PRODUCT SCHEDULER
ZPPT_CONFIRM-PERNR = I_TAB1-pernr.
ZPPT_CONFIRM-ENAME = I_TAB1-ENAME.
ZPPT_CONFIRM-ZUSER = sy-uname.
INSERT ZPPT_CONFIRM.
IF SY-SUBRC = 0.
DELETE TABLE I_TAB1 FROM I_TAB1.
ENDIF.
CLEAR ZPPT_CONFIRM.
ENDIF.
ENDLOOP.
CLEAR : OK_CODE3.
ENDCASE.
endmodule. " USER_COMMAND_9400 INPUT
*& Form GETGLADATA
text
--> p1 text
<-- p2 text
form GETGLADATA .
refresh i_tab1.
CLEAR : V_MATNR1.
CONCATENATE '%' V_COLOR '%' INTO V_MATNR1.
V_DATE = AFKO-GSTRP.
SELECT SINGLE FEVOR ZHODNO FROM ZPP_SUP_MRP INTO (V_PRDSCHED, V_ZHODNO)
WHERE ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
if sy-subrc = 0.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
iv_date = V_DATE
IMPORTING
EV_MONTH_BEGIN_DATE = sdate
EV_MONTH_END_DATE = edate.
SELECT SINGLE ENAME FROM PA0001 INTO SNAME WHERE PERNR = ZPP_SUP_MRP-ZSUPNO
AND ENDDA = '99991231'.
if ZMATKL <> SPACE and AFKO-PLNBEZ <> SPACE.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AMANDT = BMANDT
AND AAUFNR = BAUFNR
JOIN AUFK AS C ON
AMANDT = CMANDT
AND AAUFNR = CAUFNR
JOIN JEST AS D ON
CMANDT = DMANDT
AND COBJNR = DOBJNR
JOIN MARA AS E ON
AMANDT = EMANDT
AND APLNBEZ = EMATNR
WHERE
A~PLNBEZ = AFKO-PLNBEZ
A~PLNBEZ LIKE V_MATNR1
AND A~DISPO = '104'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH24'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'
AND E~MATKL = ZMATKL.
elseIF ZMATKL <> SPACE and AFKO-PLNBEZ = SPACE.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AMANDT = BMANDT
AND AAUFNR = BAUFNR
JOIN AUFK AS C ON
AMANDT = CMANDT
AND AAUFNR = CAUFNR
JOIN JEST AS D ON
CMANDT = DMANDT
AND COBJNR = DOBJNR
JOIN MARA AS E ON
AMANDT = EMANDT
AND APLNBEZ = EMATNR
WHERE
A~FEVOR = V_PRDSCHED
A~PLNBEZ LIKE V_MATNR1
AND A~DISPO = '104'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH24'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'
AND E~MATKL = ZMATKL.
elseIF ZMATKL = SPACE and AFKO-PLNBEZ <> SPACE.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AMANDT = BMANDT
AND AAUFNR = BAUFNR
JOIN AUFK AS C ON
AMANDT = CMANDT
AND AAUFNR = CAUFNR
JOIN JEST AS D ON
CMANDT = DMANDT
AND COBJNR = DOBJNR
JOIN MARA AS E ON
AMANDT = EMANDT
AND APLNBEZ = EMATNR
WHERE
A~PLNBEZ = AFKO-PLNBEZ
A~PLNBEZ LIKE V_MATNR1
AND A~DISPO = '104'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH24'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'.
AND E~MATKL = ZMATKL.
elseIF ZMATKL = SPACE and AFKO-PLNBEZ = SPACE.
select A~AUFNR
A~PLNBEZ
A~GAMNG
INTO corresponding fields of TABLE I_TAB1
FROM AFKO AS A
JOIN AFPO AS B ON
AMANDT = BMANDT
AND AAUFNR = BAUFNR
JOIN AUFK AS C ON
AMANDT = CMANDT
AND AAUFNR = CAUFNR
JOIN JEST AS D ON
CMANDT = DMANDT
AND COBJNR = DOBJNR
JOIN MARA AS E ON
AMANDT = EMANDT
AND APLNBEZ = EMATNR
WHERE
A~PLNBEZ = AFKO-PLNBEZ
A~PLNBEZ LIKE V_MATNR1
AND A~DISPO = '104'
AND A~GLTRP between sdate and edate
AND B~DAUAT = 'ZH24'
AND B~PWERK = T001W-WERKS
AND D~STAT = 'I0002'
AND D~INACT <> 'X'.
AND E~MATKL = ZMATKL.
endif.
IF SY-SUBRC = 0.
gcontrol-lines = sy-dbcnt.
LOOP AT I_TAB1.
SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
WHERE MATKL = I_TAB1-PLNBEZ+0(7)
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
MODIFY I_TAB1 FROM I_TAB1.
CLEAR I_TAB1.
ENDIF.
ENDLOOP.
ENDIF.
endif.
sort i_tab1 by plnbez.
endform. " GETGLADATA
*& Module MOVE_DATA_TO_INTERNALTAB_INS INPUT
text
module MOVE_DATA_TO_INTERNALTAB_INS input.
CLEAR I_TAB1.
CLEAR ZWERKS_HR.
IF T001W-WERKS = '1102'.
ZWERKS_HR = '1200'.
ENDIF.
if I_TAB-EMPNO <> space and I_TAB-EMPNO+0(1) <> 'I'.
MESSAGE I991(ZMESSAGE) with 'ENTER INSPECTOR NUMBER'.
*BREAK-POINT.
FLAG = 'X'.
COUNT = ICONTROL-CURRENT_LINE.
continue.
endif.
IF I_TAB-EMPNO IS NOT INITIAL.
SELECT SINGLE ENAME FROM PA0001 INTO I_TAB-ENAME
WHERE PERNR = I_TAB-EMPNO.
SELECT SINGLE A~ENAME
A~PERNR
A~WERKS
B~USRID
INTO CORRESPONDING FIELDS OF TABLE I_FINAL
INTO (I_TAB-ENAME,I_TAB-pernr)
FROM PA0001 AS A
JOIN PA0105 AS B ON APERNR = BPERNR
WHERE B~USRID <> SPACE
AND B~USRID = I_TAB-EMPNO
AND A~endda = '99991231'
AND A~WERKS = ZWERKS_HR
AND ( B~SUBTY = 'POTT' OR
B~SUBTY = 'INSP' OR
B~SUBTY = 'GLAZ' OR
B~SUBTY = 'STOP' OR
B~SUBTY = 'SORT' ).
IF SY-SUBRC <> 0.
clear : I_TAB-ENAME,I_TAB-pernr.
ENDIF.
ENDIF.
MOVE-CORRESPONDING I_TAB TO I_TAB1.
MODIFY I_TAB1 FROM I_TAB1 INDEX ICONTROL-CURRENT_LINE.
endmodule. " MOVE_DATA_TO_INTERNALTAB_INS INPUT
*& Module MOVE_DATA_TO_INTERNALTAB_GLA INPUT
text
module MOVE_DATA_TO_INTERNALTAB_GLA input.
CLEAR I_TAB1.
CLEAR ZWERKS_HR. -
Batch Input with transaction ME58
Hello SAP:
We are trying to do a Batch Input Session with transaction ME58
(Creating Service Entry Sheets) by using a FrameWork Order.
After the batch input selects the purchase order and mark all
the requisitions related with that order and confirms the selection,
the system calls program SAPLMLSR dynpro 400, where the tab "Basic
Data" appears and the error "Make an entry in all required fields"
(00 055) is displayed. Althought we had put all the obligatory
fields required by the Batch Input in that particular
screen SAPLMLSR - 400 (we also tried with subscreen 410), the fields
indicated in the Batch Input were lost.
It seems the flow control of the Batch Input is lost because of the
error message 00 055.
Thank You - And we will be waiting for Your answer.
Frinee ParedesHi Christian!!
The error that is displayed is because of a mandatory field, the problem is that it appears before the screen is displayed, I mean the validation occurs before I can input data.
It's very interesting what you said about enjoy transactions and there might be the problem, a few minutes ago, while debugging transaction ME58, I found that it calls function module MS_SERVICE_ENTRY2, which calls transaction ML81N, which I think is an enjoy sap transaction, I guess I'm in a big trouble because I've already looked for a BAPI and it seems there aren't any.
If you like to reproduce the error you could record transaction ME58 with transaction SHDB,you would need a framework order (FO) for the selection screen and purchase requisitions (PO) created asociated to that FO.
What I want to do with ME58 is to run a job periodically which creates service entry sheets with the FO and PR as input.
Thank you very much!!
Frinee -
Screen enhancement with table control
Dears,
I'm using enhancement IWO10018 to add a new tab on IW32 screen. I've added a table control to this tab. The problem is that retreived data from database do not appear on the table and it is appeared as empty fields. When tring to add any other input/output field on the same subscreen the data appear correctly on it! Please advise
PROCESS BEFORE OUTPUT.
MODULE fill_req_itab.
LOOP AT req_itab
WITH CONTROL serv_req_tab.
MODULE move_to_screen.
ENDLOOP.
MODULE fill_req_itab OUTPUT.
CLEAR: req_itab[].
SELECT * FROM zcs_serv_req
INTO CORRESPONDING FIELDS OF TABLE req_itab
WHERE aufnr = order_no.
DESCRIBE TABLE req_itab LINES serv_req_tab-lines.
ENDMODULE. " FILL_REQ_ITAB OUTPUT
MODULE move_to_screen OUTPUT.
MOVE-CORRESPONDING req_itab TO zcs_serv_req.
ENDMODULE. " MOVE_TO_SCREEN OUTPUT
*& Include ZXWOCTOP
DATA: mark TYPE c LENGTH 1.
CONTROLS: serv_req_tab TYPE TABLEVIEW USING SCREEN '0900'.
DATA: req_itab TYPE TABLE OF zcs_serv_req WITH HEADER LINE,
zcs_serv_req LIKE LINE OF req_itab,
order_no TYPE aufnr.Thanks a lot for your reply...
I've added the below code on the mentioned include and I've commented it on the PBO but I still have the same problem. On debug mode I can see that required data retreived correctly till end.
*& Include ZXWOCU15
order_no = sap_caufvd_imp-aufnr.
CLEAR: req_itab[].
SELECT * FROM zcs_serv_req
INTO CORRESPONDING FIELDS OF TABLE req_itab
WHERE aufnr = order_no. -
Take input from table control using wizard
Dear experts,
I am trying to take data from table control into internal table using wizard.
In main report program i defined the internal table and used wizard after that.
I could see internal table there and i picked the fields i wanted.
Also i defined a workarea of same time.Further i made a push button.
In PAI user command module i specified
loop at itab. (one used for table control data)
endloop.
Here i put break point and find that no data is coming from grid.
With wizard what additional i have to do ?Hi
PROCESS AFTER INPUT.
MODULE USER_COMMAND_2209. "do processing
loop at itab.
module UPDATE. "read from tbl ctl into db table using wa.
endloop.
DATA: itab TYPE TABLE OF YSTUDENT WITH HEADER LINE,
WA LIKE LINE OF ITAB.
MODULE UPDATE INPUT.
WA-ID = YSTUDENT-ID.
WA-NAME = YSTUDENT-NAME.
INSERT YSTUDENT FROM WA.
ENDMODULE.
Instead of Insert into table, you can write: APPEND WA TO ITAB.
Also YSTUDENT-ID is the name of the column in your tbl ctrl.
Make sure your PBO also loops thro the itab:
loop at itab with control tab1.
endloop.
Hope this helps
Regards,
Jayanthi.K -
Error when displaying a field on Screen with Table Control
Hi,
It is going to 'Dump' when I am trying to display data on the screen with the help of Table Control. From the dump, What I have observed is , there is a field 'ZTSV_FSRDATA-ANZFEHLER'. If this field has negative value, then it is going to 'Dump' saying that the length is not enough. If it has a positive value then it is working fine. But the type of the field in the Internal table & on the screen are same.
Please help me to resolve this error.
I am posting here the Dump message also:
A conversion error occurred while the program was trying todisplay data on the screen.
The ABAP output field and the screen field may not have the same format.
Some field types require more characters on the screen thanin the ABAP program. For example, a date field on a screen needstwo characters more than it would in the program. When attempting to display the date on the screen, an error will occur that triggers the error message.
Thanks,
Sreenivas Reddy Maddi.Hi Sreenivas,
Refer this thread:
how to display negative values in a screen field of a screen
Re: negative values not allowed
Regards,
Sampath
Maybe you are looking for
-
Dear All, When we try to publish a Web Service using Service Registry, following error appears, even though my user has the roles UDDI_Admin and SERVICE_REGISTRY_READ_WRITE com.sap.esi.uddi.sr.api.exceptions.SRExceptionerror code: null detail message
-
Control delivery type for mvt type 313
Hi Regarding SLOC to SLOC transfer postings, I have a couple of questions: Using movement type 313 (unr. use stock SLOC to SLOC) in our SAP system automatically creates a delivery in the background. Where can I configure what delivery type I would li
-
Apache FOP getClassLoader problem
I have loaded Apache FOP 1.1 into an 11g database, and a driver class to retrieve XML/XSLT and save PDF as CLOBs. When I try to execute this in the DB, I get ORA-29532: Java call terminated by uncaught Java exception: javax.xml.transform.TransformerE
-
Faster Full-Name Viewing in List View - does not always work
A little while ago I discovered the Tip (from the Apple Pro tips page) on how one can view the entire file name when in List View and the name is too long to view without widening the column. One can just roll the mouse over it and wait. But, one can
-
Keeping ur libary sraight...
Has anyone else had problems with itunes seperating your CD's that u import into 2 or more different albums with the same album i.e all same artist same album title. Songs 1-8 under 1 album artwork then song 9 on different album but same album artwor