‎2008 Apr 23 6:44 AM
Hi,
In my code..i want to change invoice date format from 20080415 to 15.04.2008...
plz check my code......
*******************
REPORT ZSD06_TEST1
NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID ZBDC.
TABLES : T100,
BKPF,
LIKP,
NASE.
DATA: L_MSTRING(480).
RANGES SELTAB FOR VBRK-VBELN.
RANGES SEL_RG_KSCHL FOR NASE-KSCHL.
RANGES RG_VBELN FOR VBRK-VBELN.
RANGES RG_KSCHL FOR NASE-KSCHL.
DATA: PM_VERMO LIKE NASE-VERMO.
DATA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE LIKP-VBELN,
BOLNR LIKE LIKP-BOLNR,
BELNR LIKE RF05L-BELNR,
GJAHR LIKE RF05L-GJAHR,
ZFBDT(10) TYPE C,
END OF ITAB.
***********************************************************
DATA: INVOICE_DATE TYPE VBRK-FKDAT.
DATA : L_DATE(8) TYPE D VALUE '20080415',
L_DATE2(10) TYPE C.
***********************************************************
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA LD_ANSWER.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION = 'N'
TEXTLINE1 = 'BDC to enter LR.NO & DATE in delivery,accounting doc.'
TEXTLINE2 = 'Do you want to continue ?'
TITEL = SY-TITLE
START_COLUMN = 25
START_ROW = 6
CANCEL_DISPLAY = ' '
IMPORTING
ANSWER = LD_ANSWER
EXCEPTIONS
OTHERS = 0.
IF LD_ANSWER NE 'J'.
MESSAGE S001.
LEAVE PROGRAM.
ENDIF.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\LRDETAIL.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 = ITAB
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 ITAB.
CONCATENATE '00' ITAB-VBELN INTO ITAB-VBELN.
SELECT SINGLE * FROM LIKP WHERE VBELN = ITAB-VBELN.
IF SY-SUBRC <> 0.
MESSTAB-TCODE = 'VL02N'.MESSTAB-DYNAME = 'SAPMV50A'.MESSTAB-DYNUMB = '4004'.
MESSTAB-MSGTYP = 'E'. MESSTAB-MSGSPRA = 'E'.MESSTAB-MSGID = 'VL'.
MESSTAB-MSGNR = '302'. MESSTAB-MSGV1 = ITAB-VBELN. MESSTAB-MSGV2 = ''.
MESSTAB-MSGV3 = ''. MESSTAB-ENV = 'CTU'. MESSTAB-FLDNAME = 'LIKP-VBELN'.
APPEND MESSTAB.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '4004'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'LIKP-VBELN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'LIKP-VBELN' ITAB-VBELN.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=HTRA_T'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'LIPS-MATNR(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '2000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH_T'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'LIKP-BOLNR'.
PERFORM BDC_FIELD USING 'LIKP-BOLNR' ITAB-BOLNR.
CALL TRANSACTION 'VL02N' USING BDCDATA MODE 'A' MESSAGES INTO MESSTAB.
REFRESH BDCDATA.
ENDIF.
***
IF ITAB-BELNR <> ' '.
**********************************************************************************************************
SELECT SINGLE FKDAT FROM VBRK INTO INVOICE_DATE WHERE VBELN = ITAB-BELNR.
IF ITAB-ZFBDT LT INVOICE_DATE.
MESSAGE 'invalid data' TYPE 'S'.
ENDIF.
CONCATENATE L_DATE6(2) L_DATE4(2) L_DATE+0(4) INTO L_DATE2 SEPARATED BY '.' .
WRITE: L_DATE2.
**********************************************************************************************************
SELECT SINGLE * FROM BKPF WHERE BELNR = ITAB-BELNR
AND GJAHR = ITAB-GJAHR.
IF SY-SUBRC = 0.
MESSTAB-TCODE = 'FB02'.MESSTAB-DYNAME = 'SAPMF05L'.MESSTAB-DYNUMB = '0100'.
MESSTAB-MSGTYP = 'E'. MESSTAB-MSGSPRA = 'E'.MESSTAB-MSGID = 'F5'.
MESSTAB-MSGNR = '238'. MESSTAB-MSGV1 = ITAB-BELNR. MESSTAB-MSGV2 = '1000'.
MESSTAB-MSGV3 = ITAB-GJAHR. MESSTAB-ENV = 'CTU'. MESSTAB-FLDNAME = 'RF05L-BELNR'.
APPEND MESSTAB.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMF05L' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05L-BELNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RF05L-BELNR' ITAB-BELNR.
PERFORM BDC_FIELD USING 'RF05L-BUKRS' '1000'.
PERFORM BDC_FIELD USING 'RF05L-GJAHR' ITAB-GJAHR.
PERFORM BDC_DYNPRO USING 'SAPMF05L' '0700'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05L-ANZDT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PK'.
PERFORM BDC_DYNPRO USING 'SAPMF05L' '0301'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BSEG-ZFBDT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=AE'.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT' ITAB-ZFBDT.
CALL TRANSACTION 'FB02' USING BDCDATA MODE 'A' MESSAGES INTO MESSTAB.
***
REFRESH BDCDATA.
ENDIF.
ENDIF.
*ENDIF.
ENDLOOP.
DATA: SPOOLID TYPE TSP01-RQIDENT. " Spool ID no.
NEW-PAGE PRINT ON
DESTINATION 'LOCL'
IMMEDIATELY ''
NO DIALOG.
LOOP AT MESSTAB WHERE MSGTYP EQ 'E'.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
IF MESSTAB-TCODE EQ 'FB02'.
DELETE ITAB WHERE BELNR = MESSTAB-MSGV1.
ENDIF.
ENDLOOP.
LOOP AT ITAB WHERE BELNR <> ' '.
SELTAB-SIGN = 'I'.
SELTAB-OPTION = 'EQ'.
SELTAB-LOW = ITAB-BELNR.
APPEND SELTAB.
ENDLOOP.
DESCRIBE TABLE SELTAB LINES SY-TABIX.
IF SY-TABIX IS INITIAL.
WRITE 'NO DATA EXIST for output(VF31)'.
ELSE.
SEL_RG_KSCHL-LOW = 'ZD00'.
APPEND SEL_RG_KSCHL.
SUBMIT SD70AV3A
WITH RG_VBELN IN SELTAB
WITH RG_KSCHL IN SEL_RG_KSCHL
WITH PM_VERMO EQ '2'
AND RETURN.
ENDIF.
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD
******************************************************************
Plz tell me...
Thanks..
‎2008 Apr 23 6:47 AM
ZDD = ZTEMP+3(2).
ZMMM = ZTEMP+0(3).
ZYYYY = ZTEMP+5(4).
concatenate zdd zmmm zyyyy into date_fiels seperated by '.'
‎2008 Apr 23 6:51 AM
Hi,
use the following code.
And '.' is not necessary since it automatically converts that date with '.'
* Change date format
old_date(2) = new_date+6(2).
old_date+2(2) = new_date+4(2).
old_date+4(4) = new_date(4).
‎2008 Apr 23 6:52 AM
Hi,
data:v_date like sy-datum,
v_date1(10) type c.
Concatenate v_date6(2) v_date4(2) date+0(4) into vdate1.
RESULT = V_DATE1
Regards,
Raj.
‎2008 Apr 23 6:52 AM
hi,
do this.
data: lc_date(8) type c,
lc_op(10) type c.
move sy-datum to lc_date.
concatenate lcdate(2) lcdate+2(3) lcdate+5(4) into lc_op seperated by '.'.
write: lc_op.Regards,
Anversha
‎2008 Apr 23 6:53 AM
simply go to user settings ..SU01 tcode...select format tab...and choose whatever date format you want..
Reward if useful.
Dara.
‎2008 Apr 23 6:57 AM
Hi Kumar,
Use below lines of code.
WRITE l_date to l_date2 DD/MM/YYYY.
Regards,Pranav
‎2008 Apr 23 7:02 AM
Hi Pranav,
Do this way.
Regards,
Venkat.O
data:l_date type char10.
write '20080415' to l_date.
write l_date.
‎2008 Apr 23 7:39 AM
Hi All,
Plz let me know, where i change in my code and what...
Plz mention, from all reply i cann't pick the right one...
Thanks...
‎2008 Apr 23 8:14 AM
Hi Prince,
You may use the function module "CONVERSION_EXIT_PDATE_INPUT".
Pass the the variable in which date is stored in format yyyymmdd.
In the importing parameter take input in any variable with type "BLADT"
CALL FUNCTION 'CONVERSION_EXIT_PDATE_INPUT'
EXPORTING
input = sy-datum
IMPORTING
output = l_v_date.
Please reward points if helpful.
‎2008 Apr 23 8:56 AM
‎2008 Apr 23 8:18 AM
MY apologies... the FM name is "CONVERSION_EXIT_PDATE_OUTPUT" for your requirement.
‎2008 Apr 23 10:49 AM
BLDAT is a standard data type. You may use other data type as well.
‎2008 Apr 23 10:56 AM
Hi,
But is not working.... when i execute it..it shows "invalid date" as an error...
‎2008 Apr 23 11:02 AM
Hi,
Just move the value into a variable of character data type and of size 10.Say for example.
data :var(10),
date like sy-datum.
date = '20080415'
concatenate date6(2) '.' date4(2) '.' date+0(4) into var.
write : /1 var.
Output will be,
15.04.2008.
Note :
Friend, Please do not reveal the entire program for any reasons and seasons. It can be misused.
Regards,
Sankar.