私は現在、fmを呼び出すカスタムプログラムの作成に取り組んでいます。 'sd_salesdocument_create'。sap - abap 'sd_salesdocument_create'
プログラムの目的は、細部がいっぱいになった.csvファイルからse38を介して大規模なセールスオーダーを作成することです。
プログラムが正常に動作しているように見えますが、注文書が作成されますが、salesdocument_exフィールドに保持されている販売伝票番号を書き込もうとすると、27行の空白行とメッセージ文字列が印刷されます。
すでに空白を設定してみましたが、何も起こりませんでした。 私の同僚の一人が、行と位置のコマンドにスキップすることで問題を解決しましたが、出力を強制することなく、別の方法があるかどうかを知りたいと思います。
私はすでに公式のSAPウェブサイトを調べようとしていたので、この問題を解決する方法を見つけることができなかったので、私はあなたに尋ねています。私はあなたが「行と位置指令にスキップ」によって何を意味するかわからないんだけど
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
* skip to lineとpositionコマンド*はどういう意味ですか? – Suncatcher