현재 fm을 호출하는 사용자 정의 프로그램을 만드는 중입니다. 'sd_salesdocument_create'.sap - abap 'sd_salesdocument_create'
프로그램 목표는 세부 사항이 채워진 .csv 파일에서 시작하여 se38을 통해 대량으로 셀 항목을 만드는 것입니다.
프로그램이 제대로 작동하고 주문이 만들어졌지만 판매 문서 번호 (salesdocument_ex 필드에 있음)를 쓸 때 프로그램에서 27 개의 빈 줄과 메시지 문자열을 인쇄합니다.
이미 빈 줄을 설정하여 사용했지만 아무 일도 없었습니다. 동료 중 한 명은 줄 및 위치 건너 뛰기 명령을 사용하여 문제를 해결했지만 그 방법으로 출력을 강요하지 않으면 다른 방법이 있는지 알고 싶습니다.
나는 이미 공식 수액 웹 사이트를 찾아 보았으므로이 문제를 해결하는 방법에 대한 단서를 찾지 못했기 때문에 나는 당신에게 묻습니다.
나는 아래의 코드를 복사하고, 사전에 감사합니다 :FORM BAPI .
data: COUNTER1 TYPE N VALUE 0,
COUNTER2 TYPE N VALUE 0,
NUM_CLI like KNA1-KUNNR.
SORT TESTATA BY N_ORDINE.
LOOP AT TESTATA.
AT NEW N_ORDINE.
READ TABLE TESTATA INDEX 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = TESTATA-N_CLIENTE
IMPORTING
OUTPUT = TESTATA-N_CLIENTE.
SELECT single KUNNR INTO NUM_CLI FROM KNA1
WHERE KUNNR = TESTATA-N_CLIENTE.
IF SY-SUBRC = 0.
COUNTER1 = COUNTER1 + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = TESTATA-N_DESTINATARIO
IMPORTING
OUTPUT = TESTATA-N_DESTINATARIO.
SALES_HEADER_IN-DOC_TYPE = TESTATA-TIPO_DOC.
SALES_HEADER_IN-SALES_ORG = 'ZCOM'.
SALES_HEADER_IN-DISTR_CHAN = '01'.
SALES_HEADER_IN-DIVISION = '01'.
SALES_HEADER_IN-REQ_DATE_H = testata-data_comsegna.
SALES_HEADER_IN-PURCH_DATE = testata-data_or_acq_cli.
APPEND SALES_HEADER_IN.
* COUNTER = 0.
SORT CORPO BY N_ORDINE.
LOOP AT CORPO WHERE N_ORDINE = TESTATA-N_ORDINE.
COUNTER = COUNTER + 10.
SELECT SINGLE MATNR INTO MAT_COD FROM MARA WHERE EAN11 =
CORPO-EAN_MAT.
SALES_ITEMS_IN-ITM_NUMBER = COUNTER.
SALES_ITEMS_IN-MATERIAL = MAT_COD.
SALES_ITEMS_IN-PLANT = 'ZDIV'.
SALES_ITEMS_IN-STORE_LOC = 'ZMAG'.
APPEND SALES_ITEMS_IN.
SALES_PARTNERS-PARTN_ROLE = 'AG'.
SALES_PARTNERS-PARTN_NUMB = TESTATA-N_CLIENTE.
APPEND SALES_PARTNERS.
SALES_PARTNERS-PARTN_ROLE = 'WE'.
SALES_PARTNERS-PARTN_NUMB = TESTATA-N_DESTINATARIO.
APPEND SALES_PARTNERS.
SALES_SCHEDULES_IN-ITM_NUMBER = COUNTER.
SALES_SCHEDULES_IN-REQ_QTY = CORPO-QTA.
APPEND SALES_SCHEDULES_IN.
REPLACE ALL OCCURRENCES OF ',' IN CORPO-PREZZO WITH '.'.
SALES_CONDITIONS_IN-ITM_NUMBER = COUNTER.
SALES_CONDITIONS_IN-COND_TYPE = 'PR00'.
SALES_CONDITIONS_IN-COND_VALUE = CORPO-PREZZO.
SALES_CONDITIONS_IN-CURRENCY = TESTATA-VALUTA.
APPEND SALES_CONDITIONS_IN.
ENDLOOP.
CLEAR COUNTER.
PERFORM CALL_FUNCTION.
COMMIT WORK AND WAIT.
WRITE:/ 'COUNTER TESTATA', COUNTER1.
WRITE:/ 'DOCUMENTO', SALESDOCUMENT_EX, 'SCRITTO'.
ENDIF.
ENDAT.
CLEAR SALES_HEADER_IN.
CLEAR SALES_PARTNERS.
CLEAR SALES_ITEMS_IN.
CLEAR SALES_SCHEDULES_IN.
CLEAR SALES_CONDITIONS_IN.
CLEAR NUM_CLI.
LOOP AT RETURN.
WRITE:/ RETURN-MESSAGE.
ENDLOOP.
ENDLOOP.
CLEAR COUNTER1.
ENDFORM. " BAPI
this is the bapi form in which is nested the call function:
FORM CALL_FUNCTION .
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
* SALESDOCUMENT = SALESDOCUMENT_EX
SALES_HEADER_IN = SALES_HEADER_IN
*
** SALES_HEADER_INX =
** SENDER =
** BINARY_RELATIONSHIPTYPE = ' '
INT_NUMBER_ASSIGNMENT = 'X'
** BEHAVE_WHEN_ERROR = ' '
** LOGIC_SWITCH = ' '
BUSINESS_OBJECT = 'BUS2032'
TESTRUN = ' '
* CONVERT_PARVW_AUART = ' '
* STATUS_BUFFER_REFRESH = 'X'
IMPORTING
SALESDOCUMENT_EX = SALESDOCUMENT_EX
* SALES_HEADER_OUT =
* SALES_HEADER_STATUS =
TABLES
RETURN = RETURN
SALES_ITEMS_IN = SALES_ITEMS_IN
* SALES_ITEMS_INX =
SALES_PARTNERS = SALES_PARTNERS
SALES_SCHEDULES_IN = SALES_SCHEDULES_IN
* SALES_SCHEDULES_INX =
SALES_CONDITIONS_IN = SALES_CONDITIONS_IN
* SALES_CONDITIONS_INX =
* SALES_CFGS_REF =
* SALES_CFGS_INST =
* SALES_CFGS_PART_OF =
* SALES_CFGS_VALUE =
* SALES_CFGS_BLOB =
* SALES_CFGS_VK =
* SALES_CFGS_REFINST =
* SALES_CCARD =
* SALES_TEXT = testi e liìni
* SALES_KEYS =
* SALES_CONTRACT_IN =
* SALES_CONTRACT_INX =
* EXTENSIONIN =
* PARTNERADDRESSES =
* SALES_SCHED_CONF_IN =
* ITEMS_EX =
* SCHEDULE_EX =
* BUSINESS_EX =
* INCOMPLETE_LOG =
* EXTENSIONEX =
* CONDITIONS_EX =
* PARTNERS_EX =
* TEXTHEADERS_EX =
* TEXTLINES_EX =
* BATCH_CHARC =
* CAMPAIGN_ASGN =
* CONDITIONS_KONV_EX =
.
ENDFORM. " CALL_FUNCTION
정규식을 사용하여 비슷한 문제를 해결했습니다. 유스 케이스에서는 적절하지 않을 수도 있지만 (결과를 많이 읽지는 못했지만) 출력에 예측 가능한 패턴이있는 경우 해당 방법을 조사하고 싶을 수 있습니다. – gkubed
무엇을 의미합니까 * 줄 건너 뛰고 위치 명령 *? – Suncatcher